Edited at

macOS Sierra で入力ソースをキーボードショートカット一発で切り替える

More than 1 year has passed since last update.

多数の入力ソースを使っている場合、標準の切り替え方法だと非常に面倒。特定のキーボードショートカット一発で切り替えたい。

たぶん High Sierra でも動く気がする。


hammerspoon を使う

簡単にできた。順々に切り替える場合、もうちょっと実装しなくちゃだけど普通に出来ると思う。

-- ~/.hammerspoon/init.lua

hs.hotkey.bind({"ctrl", "shift"}, ',', function()
hs.keycodes.currentSourceID("com.justsystems.inputmethod.atok30.Roman")
end)

hs.hotkey.bind({"ctrl", "shift"}, '.', function()
hs.keycodes.currentSourceID("com.justsystems.inputmethod.atok30.Japanese")
end)

hs.hotkey.bind({"ctrl", "shift"}, '/', function()
hs.keycodes.currentSourceID("com.apple.inputmethod.SCIM.ITABC")
end)


currentSourceID の取得

でできた、大変便利でありがたい。なお InputSourceSelector は引数で入力ソースの切り替え自体できるので、コマンド呼び出しで切り替えも普通に出来ると思う。

$ ./InputSourceSelector list-enabled

com.apple.keylayout.US (U.S.)
com.apple.inputmethod.Kotoeri.Roman (Romaji)
com.apple.inputmethod.Kotoeri.Japanese (Hiragana)
com.apple.inputmethod.Kotoeri.Japanese.Katakana (Katakana)
com.apple.inputmethod.Kotoeri (Japanese)
com.apple.50onPaletteIM (Japanese Kana Palette)
com.apple.CharacterPaletteIM (Emoji & Symbols)
com.apple.KeyboardViewer (Keyboard Viewer)
com.apple.inputmethod.SCIM.ITABC (Pinyin - Simplified)
com.apple.inputmethod.SCIM (Chinese, Simplified)
com.justsystems.inputmethod.atok30.Japanese (ひらがな(ATOK))
com.justsystems.inputmethod.atok30.Japanese.HalfWidthEiji (半角英字(ATOK))
com.justsystems.inputmethod.atok30.Roman (英字  (ATOK))
com.justsystems.inputmethod.atok30.Japanese.Katakana (カタカナ(ATOK))
com.justsystems.inputmethod.atok30.Japanese.FullWidthRoman (全角英字(ATOK))
com.justsystems.inputmethod.atok30 (ATOK 2017)
com.apple.inputmethod.ChineseHandwriting (Trackpad Handwriting)
com.apple.inputmethod.EmojiFunctionRowItem (EmojiFunctionRowIM_Extension)


追記

Kawa.app で GUI から設定して簡単にできた!Kawa.app 知らなかった…。


A better input source switcher for OS X

Kawa helps users to switch between keyboard input sources by user-defined shortcuts.