Hammerspoon + iTerm2 で HotKey Window を開いた時に自動的に英数入力モードに切り替える

2025-10-23 01:31 公開

Hammerspoon + iTerm2 で HotKey Window を開いた時に自動的に英数入力モードに切り替え、閉じた時に元の入力モードに戻すコードを紹介します。

概要

やや表示が小さいですが、以下のように動作します。

英数入力モードの状態で iTerm2 を開く場合はそのまま、かな入力モードの状態で開く場合は、自動的に英数入力モードに切り替わり、閉じるとまたかな入力モードに戻るようになっています。

設定方法

Hammerspoon と iTerm2 の設定はできているものとします。

以下のコードを Hammerspoon の init.lua に追加してください。

-- iTerm2 の Hotkey Window で英数入力に切り替える
local lastInputSourceBeforeITerm = nil

local iTermWatcher = hs.window.filter.new('iTerm2')

iTermWatcher:subscribe(hs.window.filter.windowFocused, function(window, appName)
    if window then
        lastInputSourceBeforeITerm = hs.keycodes.currentSourceID()
        hs.eventtap.keyStroke({}, 'eisu')
    end
end)

iTermWatcher:subscribe(hs.window.filter.windowUnfocused, function(window, appName)
    if window and lastInputSourceBeforeITerm then
        if lastInputSourceBeforeITerm == "com.apple.keylayout.ABC" then
            hs.eventtap.keyStroke({}, 'eisu')
        else
            hs.eventtap.keyStroke({}, 'kana')
        end
    end
end)

まとめ

iTerm2 を使った作業が多い方には便利かと思うので、ぜひ導入してみてください。

どなたかの参考になれば幸いです。

ご覧いただきありがとうございました!