- Published on
macでターミナルを開いたときに自動で英字入力に切り替える(Hammerspoon)
- Authors
- Name
- s1m4ne
- @s1m4ne
はじめに
本記事ではmacでターミナルを開いたときに自動で英字入力に切り替える方法について紹介します。
前回の記事ではKeyboard Maestroを使用しましたが、実は有料ソフトだったらしく2週間のトライアルで使えなくなりました。代わりにHammerspoonを使って同じことを実現していきたいと思います。
HammerspoonとはmacOS 専用の自動化・拡張フレームワークです。Luaという軽量スクリプト言語でmacのあらゆる機能を操作できます。
手順
1. Hammerspoon のインストール
Homebrewを使ってアプリケーションをインストールします。
brew install --cask hammerspoon
2. Hammerspoonの初期設定
インストール後アプリケーション「Hammerspoon」を開いてください。手順通りに進み、設定のアクセシビリティから「Hammerspoon」の制御を許可してください。
3. スクリプト作成
設定ファイルを作成してinit.lua
に自動化したい処理を記述します。以下のコマンドでディレクトリとスクリプトを作成します。
mkdir -p ~/.hammerspoon
nano ~/.hammerspoon/init.lua
nanoエディタが開くので以下のスクリプトをコピペしてください。このスクリプトはmac標準のターミナルに対して英字切り替えを自動的に行います。ターミナルが前面になったタイミングで英字入力に切り替わります。
スクリプトをペーストしたらControl + X
からのY
で変更を保存します。
function appWatcher(name, event, app)
if event == hs.application.watcher.activated and name == "ターミナル" then
if not hs.keycodes.currentSourceID("com.apple.keylayout.US") then
hs.keycodes.currentSourceID("com.apple.keylayout.ABC")
end
end
end
appWatcher = hs.application.watcher.new(appWatcher)
appWatcher:start()
自分の場合は Alacritty というターミナルを使用しているので、Alacrittyとターミナルに対して設定しています。以下のスクリプトを使用しました。
function appWatcher(name, event, app)
if event == hs.application.watcher.activated then
if name == "Alacritty" or name == "Terminal" then
if not hs.keycodes.currentSourceID("com.apple.keylayout.US") then
hs.keycodes.currentSourceID("com.apple.keylayout.ABC")
end
end
end
end
appWatcher = hs.application.watcher.new(appWatcher)
appWatcher:start()
4. 反映
macのメニュバー(上のバー)からハンマーのマークをクリックして「Reload Config」をクリックします。エラー等なければこれで反映されるはずです。

5. 動作確認
ターミナルを開いて英字入力に変わるか確認してみてください。
うまく動かない場合は「Console」からログをコピペしてChatGPTに聞いてみてください。
