ターミナル(ターミナル.app
または iTerm2.app
)や指定したアプリに切り替えたとき、自動で IMEを英数(com.apple.keylayout.ABC) に切り替える。
- macOS(日本語環境)
- Homebrew がインストール済み
- Hammerspoon アプリがインストール済み
- ターミナル使用時に英数に自動で戻したい
brew tap daipeihust/tap
brew install im-select
インストール後、以下で英数モードの ID を確認:
im-select
# => com.apple.keylayout.ABC(英数入力中の場合)
brew install --cask hammerspoon
- インストール後、
/Applications/Hammerspoon.app
に配置されます - 初回起動時にアクセシビリティの許可を求められたら「許可」する
(システム設定 > プライバシーとセキュリティ > アクセシビリティ)
mkdir -p ~/.hammerspoon
open ~/.hammerspoon/init.lua
以下の内容を貼り付けて保存:
local imSelectPath = "/opt/homebrew/bin/im-select" -- im-select のパス
local eisuuInputSource = "com.apple.keylayout.ABC" -- 英数IMEのID
-- IMEを英数に切り替える関数
local function switchToEisuu()
hs.execute(imSelectPath .. " " .. eisuuInputSource)
end
-- アクティブアプリ監視
local function appWatcherFn(appName, eventType, appObject)
if eventType == hs.application.watcher.activated then
if appName == "ターミナル" or appName == "iTerm2" then
switchToEisuu()
end
end
end
appWatcher = hs.application.watcher.new(appWatcherFn)
appWatcher:start()
Hammerspoon のメニューバーアイコンから:
- 「Reload Config」をクリック
または ⌘ + R
- 日本語入力にしておく(かな入力など)
- 他のアプリから
ターミナル
やiTerm2
に切り替える - 自動で英数(ABC)に戻れば成功!
appName == "ターミナル"
は日本語環境でのTerminal.app
に対応していますcom.apple.keylayout.ABC
はim-select
で確認した英数IDです(環境により異なる可能性あり)hs.alert.show()
などのデバッグ表示を入れると挙動確認に便利です
-- Terminal(日本語表示に対応)で英数に自動切り替え
local imSelectPath = "/opt/homebrew/bin/im-select"
local eisuuInputSource = "com.apple.keylayout.ABC"
-- 英数入力に切り替える関数
local function switchToEisuu()
hs.execute(imSelectPath .. " " .. eisuuInputSource)
end
-- 英数に戻す対象のアプリ一覧(日本語表示にも対応)
local targetApps = {
["ターミナル"] = true,
["iTerm2"] = true,
["goneovim"] = true,
-- ["VS Code"] = true, -- 必要に応じて追加
}
-- アプリ切り替え時の処理
local function appWatcherFn(appName, eventType, appObject)
if eventType == hs.application.watcher.activated then
if targetApps[appName] then
switchToEisuu()
end
end
end
appWatcher = hs.application.watcher.new(appWatcherFn)
appWatcher:start()
これで、ターミナルに切り替えるたびに自動で英数入力に戻る快適な開発環境が構築できました。