キーボードの設定は様々なレイヤがあってややこしいのだが,今回は X server というか Windows 版 X server である VcXsrv + WSL 環境での話.もっとハードウェアに近いところでの変更は当然 Windows 任せになるので(udev 使えない),X 上でキーマップを変更する.具体的には日本語キーボードをむりやり英語配列として使う場合に効かなくなる以下のいわゆる dead keys をなんとかしたいということ.
- ¥ キー(バックスラッシュ
\,Shift の場合はバー|).日本語キーボードの]がこれの代替になるが,もとのキーも使いたい. - \ キー(バックスラッシュ
\,Shift の場合はバー_)._は日本語キーボードで Shift +-がこれの代替になるが,もとのキーも使いたい.
xev でまず keycode を調べる.よりハードウェアに近いレイヤに依存するので環境によっていろいろ変わる.手元(Windows を英語キーボードモードにした状態で VcXsrv を起動) では以下だった.
- ¥ キー: 133
- \ キー: 211
あとは以下実行するだけ.
% xmodmap -e "keycode 133 = backslash bar"
% xmodmap -e 'keycode 211 = backslash underscore'