Windowsのキーマッピング2

前回設定したキーマッピングだと問題があることがわかり、ゼロからやり直した。

TL;DR

  • KeySwapを使ってCtrlとCapsLockを入れ替えた。
  • alt-ime-ahkを使ってAltの空打ちでIMEを切り替えられるようにした。
  • AutoHotKeyを使ってCtrlによるカーソル移動や、コロンとセミコロンの入れ替えなど細かいキーマッピングを設定した。

AutoHotKey

; カーソル移動
^h::Send '{Left}'
^j::Send '{Down}'
^k::Send '{Up}'
^l::Send '{Right}'
^a::Send '{Home}'
^e::Send '{End}'

; セミコロンとコロンを入れ替える
VKBA::+VKBA
+VKBA::VKBA

独自のスクリプト言語を使っているということもあり、メンテナンスのことを考えるとあまり気が乗らなかったのだけど、歴史とユーザーコミュニティの大きさを踏まえてAutoHotKeyを使うことにした。さいわい、上のような簡単な設定だけならシンプルな記述で済んだ。

alt-ime-ahk

前回書いたとおり、MacのKarabinerと同じようにaltの空打ちでIMEの切り替えができ、大変便利。実体としてはAutoHotKeyのスクリプトなので、上のスクリプトと合わせて2つのスクリプトをAutoHotKeyで動かしているということになる。

他に試したもの

keyhac

AutoHotKeyのようなキーマッピングをPythonで記述できるため、メンテナンスしやすさ、学習コストの低さが魅力的に感じたが、セミコロンとコロンを入れ替える設定がどうやらできなさそうということが分かり断念した。

キーボードのマクロ機能

Mistel Barocco MD770にはマクロ機能が備わっており、物理的なレイヤーでマッピングが可能なので試してみたが、修飾キーを伴うマッピングができないということが分かり断念した。

Ctrl押しっぱなし問題

AutoHotKeyやkeyhac、そして前回使っていたKeyboard ManagerでCtrlとCapsLockの入れ替えを設定すると、時々Ctrlが押しっぱなしになり、なにも入力できなくなってしまう現象がおきることがある。Windowsキー+Lでロック画面にいき、復帰すると復旧できるのだけど、そこそこの頻度で発生するため、AutoHotKeyやkeyhacでCtrlをいじるのを断念した。

調べていくと、どうやらWindowsのIMEに問題があるらしいことが分かり、レジストリを編集することで解決するという話があった。とはいえ、直接レジストリを編集するのはリスクもあるため、KeySwapを使いレジストリを低いリスクで変更することにした。