Cambia tastiera ogni volta che iTerm è selezionato

3

Usando Applescript o Automator è possibile cambiare la tastiera software (Input Source) su una determinata tastiera (fonte di input) ogni volta che iTerm diventa in primo piano?

Lo scenario è il seguente

  • Faccio clic sulla finestra di iTerm
  • La finestra di iTerm passa in primo piano
  • Uno script cambia la tastiera (sorgente di input) in una che specifichi
posta Heartinpiece 17.02.2014 - 07:20
fonte

1 risposta

2

Ad esempio, potresti salvare questo plist come ~/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>

Esegui launchctl load ~/Library/LaunchAgents/itermchangeinput.plist .

Potresti anche usare uno script di shell come questo:

while sleep 1;do cur=$(lsappinfo find ASN=$(lsappinfo front)|cut -d\" -f2);[[ $cur = iTerm && $prev != iTerm ]]&&changeInput U.S.;prev=$cur;done

Potrebbe essere meno efficiente perché esegue due nuovi processi ogni secondo.

Il post del blog originale su changeInput è stato eliminato dall'autore, ma ho caricato il file binario su link .

Se passi sempre a iTerm con una scorciatoia da tastiera (come F7), puoi usare un private.xml come questo con 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>

Puoi vedere gli ID delle sorgenti di input con EventViewer ( /Applications/KeyRemap4MacBook.app/Contents/Applications/EventViewer.app/ ).

    
risposta data 17.02.2014 - 08:03
fonte

Leggi altre domande sui tag