[AHK] Shift キー単打で IME を切り替える

目次

背景

ついに HHKB(HHKB Professional HYBRID Type-S 英語配列/墨)を買ってしまいました。メカニカルのスイッチ感も好きですが、HHKB Type-S の静かさは癖になります。

しかし、HHKB はそのコンパクトさ故、一般的なキーボードとは少し異なる配置です。

特に気になるのが、「`(バッククォート)」の場所です。US 配列のキーボードで直接入力と日本語入力を切り替える際に「Alt + `」を使うので、このショートカットが押しやすいかどうかは非常に重要です。

HHKB では、バッククォートはキーボードの右上にあります。そのため、「Alt + `」を押すために、右手を大きく右に動かす必要があります。できるだけ手をホームポジションから動かしたくないから HHKB を導入したのに、これでは意味がありません。

そこで、できるだけホームポジションから手を動かさずに直接入力と日本語入力を切り替えるために、AutoHotKey を使うことにしました。

その設定で少してこずったので、ここにメモしておきます。

方法

どのキーを切り替えに割り当てるかは好みによると思いますが、私は

  • 左 Shift:直接入力に切り替え
  • 右 Shift:日本語入力に切り替え

とすることにしました。

※キーを押すごとに直接入力/日本語入力を切り替えるトグル式ではなく、現在のモードによらず、左 Shift を押すと直接入力、右 Shift を押すとひらがな入力モードにするということです

しかし、大文字を入力したい場合や Shift を使ったショートカットを使いたい場合に、毎回入力モードを切り替えてしまってはたまりません。

いろいろ調べた結果、次のようなスクリプトに落ち着きました。

; 左Shiftが単体で押されたら、直接入力
~LShift Up::
if (A_PriorKey = "LShift") {
    Send, {vkF2sc070B}{vkF3sc029}
}
Return

; 右Shiftが単体で押されたら、ひらがな入力
~RShift Up::
if (A_PriorKey = "RShift") {
    Send, {vkF2sc070B}
}
Return

あとは、このスクリプトをコンパイルして、スタートアップに登録しておけば良いでしょう。

スクリプトの中身の解説

vkF2sc070B は「ひらがな・カタカナ」キーのことで、vkF3sc029 は「半角英数」キーのことです。

現在のモードによらず、

  • 左 Shift 単打:「ひらがな・カタカナ」でひらがな入力 →「半角英数」で直接入力に切り替わる
  • 右 Shift 単打:「ひらがな・カタカナ」でひらがな入力に切り替わる

のようになります。

IME の状態をより厳密に管理したい場合は、IME.ahk を使うと良いと思います。

VirtualBox 上の仮想環境で無効化する方法

私の環境では、このスクリプトを動かしたまま VirtualBox 上の Ubuntu や CentOS で Shift キーを押すと、「`」が勝手に入力されてしまいました。

どうやら、左 Shift を離したときに、バッククォートが入力されてしまうようです。

仮想環境では「Ctrl+Space」を使っているので、VirtualBox を使っているときにはこのスクリプトを無効化するために、先頭に以下を追加しました。

#IfWinNotActive ahk_exe VirtualBoxVM.exe
; 左Shiftが単体で押されたら、直接入力
~LShift Up::
;
; 以下略
;

これで、VirtualBox がアクティブのときにキーバインドを無効化できました。

まとめ

慣れるまでは間違えて入力方法を切り替えてしまうことが多かったですが、慣れると結構快適です。

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

(ところで、最近は SKK 日本語入力 FEP や CorvusSKK を使っているので、このスクリプトを使っていません。SKK、かなり便利です)

fiore
fiore

自称C++er。

関連項目