Quindi so che posso usare open /System/Library/PreferencePanes/Keyboard.prefPane
per aprire le preferenze della tastiera. Ma come posso aprire la scheda "Scorciatoie" in particolare?
Puoi usare AppleScript da Terminal usando osascript:
osascript -e "tell application \"System Preferences\"" -e "set the current pane to pane id \"com.apple.preference.keyboard\"" -e "reveal anchor \"shortcutsTab\" of pane id \"com.apple.preference.keyboard\"" -e "activate" -e "end tell"
Sostituisci "shortcutsTab" con uno di "keyboardTab", "InputSources", "shortcutsTab", "Text", "Dictation" o "keyboardTab_ModifierKeys" per cambiare la scheda che apre.
Per trovare l'elenco delle schede disponibili in altri riquadri delle preferenze, usa
osascript -e "tell application \"System Preferences\"" -e "set the current pane to pane id \"com.apple.preference.name\"" -e "get the name of every anchor of pane id \"com.apple.preference.name\"" -e "end tell"
dove "nome" è il nome del pannello delle preferenze.
Per selezionare una categoria specifica di collegamento, puoi utilizzare Eventi di sistema per selezionare una riga dalla tabella di sinistra.
osascript -e "tell application \"System Preferences\"" \ -e "set the current pane to pane id \"com.apple.preference.keyboard\"" \ -e "reveal anchor \"shortcutsTab\" of pane id \"com.apple.preference.keyboard\"" \ -e "end tell" \ -e "tell application \"System Events\"" \ -e "tell application process \"System Preferences\"" \ -e "repeat while not (window 1 exists)" \ -e "end repeat" \ -e "tell window 1" \ -e "repeat while not (row 1 of table 1 of scroll area 1 of splitter group 1 of tab group 1 exists)" \ -e "end repeat" \ -e "select row i of table 1 of scroll area 1 of splitter group 1 of tab group 1" \ -e "end tell" \ -e "end tell" \ -e "end tell" \ -e "tell application \"System Preferences\"" \ -e "activate" \ -e "end tell"
'i' è l'indice (contando da 1) della riga nella colonna sinistra della scheda del pannello delle preferenze. Le nuove linee (usando '\' sulla riga precedente) e lo spazio bianco al di fuori dei segni del parlato sono solo per la formattazione e possono essere omesse.
Fai attenzione all'uso di "repeat while not" che aspetta che System Preferences si apra alla pagina necessaria, tuttavia questo congela il codice fino a quel punto, e se le Preferenze di Sistema sono preoccupate di qualcos'altro come l'accesso ad iCloud che non può essere interrotto, questo si blocca fino a quando non si esce manualmente.
Oltre alla risposta di @grgarside (non ho una reputazione sufficiente per postare questo come commento, scusa) non tutti gli ID corrispondono al modello com.apple.preference.name
(che mi ha fatto inciampare per un po ').
A partire da macOS Sierra (10.12.2) ci sono 19 ID del riquadro delle preferenze che corrispondono a quel modello, 8 che corrispondono al modello com.apple.preferences.name
(si noti la s) e due valori anomali ( com.apple.prefs.backup
e com.apple.Localization
).
Per ottenere l'ID del riquadro corrente (che hai già aperto in Preferenze di Sistema) usa:
osascript -e "tell application \"System Preferences\"" -e "get the ID of the current pane" -e "end tell"
Per utilizzare tutti gli ID disponibili:
osascript -e "tell application \"System Preferences\"" -e "get the ID of every pane" -e "end tell"
Leggi altre domande sui tag command-line macos terminal