Vous pouvez par exemple enregistrer cette liste sous la forme suivante ~/Library/LaunchAgents/itermchangeinput.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>itermchangeinput</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>-e</string>
<string>set prev to missing value
repeat
set cur to name of application (path to frontmost application as text)
if cur is "iTerm" and prev is not "iTerm" then do shell script "changeInput U.S."
delay 1
set prev to cur
end repeat</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Exécutez ensuite launchctl load ~/Library/LaunchAgents/itermchangeinput.plist
.
Vous pouvez également utiliser un shell script comme ceci :
while sleep 1;do cur=$(lsappinfo find ASN=$(lsappinfo front)|cut -d\" -f2);[[ $cur = iTerm && $prev != iTerm ]]&&changeInput U.S.;prev=$cur;done
Il peut cependant être moins efficace car il exécute deux nouveaux processus par seconde.
En article de blog original sur changeInput a été supprimé par l'auteur, mais j'ai téléchargé le binaire sur http://19a5b0.s3-website-us-west-2.amazonaws.com/changeInput.tgz .
Si vous passez toujours à iTerm à l'aide d'un raccourci clavier (comme F7), vous pouvez utiliser un fichier private.xml comme ceci avec KeyRemap4MacBook :
<?xml version="1.0"?>
<root>
<vkopenurldef>
<name>KeyCode::VK_OPEN_URL_ITERM</name>
<url>file:///Applications/iTerm.app</url>
</vkopenurldef>
<inputsourcedef>
<name>US</name>
<inputsourceid_prefix>com.apple.keylayout.US</inputsourceid_prefix>
</inputsourcedef>
<item>
<name>test</name>
<identifier>test</identifier>
<autogen>__KeyToKey__ KeyCode::F7, ModifierFlag::NONE, VK_OPEN_URL_ITERM, VK_CHANGE_INPUTMODE_US</autogen>
</item>
</root>
Vous pouvez voir les identifiants des sources d'entrée avec EventViewer ( /Applications/KeyRemap4MacBook.app/Contents/Applications/EventViewer.app/
).