iTerm2でAquaSKKが使えるようにhammerspoonの設定をする

OSを上げると何か動かなくなるものなので、ついつい上げることが億劫になりますね。社内の大きなイベント*1がひと段落したので、やっと重い腰を上げてOSをSierraにしました。

すでにwebに色々情報が流れてますが、karabinnerがSierraでは使えません。普段AquaSKKを使っていますが、iterm2ではC-jが改行として取られてしまい、日本語入力がまともにできません。itermではemacsを立ち上げたり、weechatでslackへの書き込みをするので、影響範囲が大きいです。karabinner-elementとhammerspoonで解決するのがよくやられている方法だったので、メモ的に書いておきます。itermでC-jが効かないので設定を書いてごまかす作戦です。

local function keyCode(key, modifiers)
   modifiers = modifiers or {}
   return function()
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post()
      hs.timer.usleep(1000)
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post()      
   end
end

local function remapKey(modifiers, key, keyCode)
   hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode)
end

remapKey({'ctrl'}, 'j', keyCode('kana'))

luaは分からんので、コードは適当…。

余談

AquaSKKがitermでそのままでは使えないとなった時にGoogle日本語入力に切り替えようとしばらく頑張ってみました。しかし、自分が今、かな入力/直接入力(英数)のどちらのモードに入るのかがぱっと見で分かりづらいこと、分かったとして、変換キーがSKKと比べると打鍵が多いことが非常にストレスとなり、脱出に失敗しました…(N年ぶりM度目)。日本語のみ/英語のみの文書だと問題ないのでしょうが、両方が入り混じったものだと難しいですね。ac-mozcでモードレスとかも試してみたけど、これはこれで難しかった…。

*1:インターンなどなど