Linuxでキーボードのマッピングを変更するときは Xmodmap を使います。 xmodmap コマンドは有名なディストリビューションなら基本的にデフォルトで入っていると思います。 xmodmapの設定を修正して起動時に適用させる方法について説明します。
まず、変更したいキーのキーコードを確認するために、xev コマンドでウィンドウを起動します。
xev
ウィンドウにフォーカスがある状態で例えば「\」キーを押下すると、keycode 132 (keysym 0x0, NoSymbol)
と表示され、キーコードが132であることが確認できます。
本来であれば \
が入力されるはずですが、MacのParallelsのKali Linuxではバックスラッシュが入力されませんでした。
そこで、keycode 132に対してバックスラッシュ \
とShift押下時はパイプ |
が入力されるようにします。
まずは、現在のキーマッピングの設定を xmodmap -pke でダンプします。
xmodmap -pke > "$HOME/.Xmodmap"
.Xmodmap ファイルに保存したらvimで開いて、/132
で検索すると、keycode 132 =
で何も設定されていないのが確認できたため、ここに自分の設定を追加していきます。
/slash
で検索すると、keycode 51でbackslashとbarを含む行を見つけました。入力方法は Mode_switch + ] でバックスラッシュを入力できるようですが、Mode_switch は普通のキーボードにはありません。今回はキーコード132でバックスラッシュを入力できるようにするので、51を参考に132を修正します。
...
keycode 51 = bracketright braceright backslash bar
...
keycode 132 = backslash bar
...
設定ファイルを適用させて、正しく入力できるか確認します。
xmodmap "$HOME/.Xmodmap"
最後に、ターミナル起動時に自動でXmodmapの設定が読み込まれるように .bashrc または .zshrc の末尾に上記を追加します。
以上です。
補足
MacのParallelsのKali Linuxでは日本語キーボードで「~」「`」「_」「\」「|」に対応させるために以下の設定を使いました。
keycode 21 = asciicircum asciitilde
keycode 34 = at grave
keycode 97 = underscore underscore
keycode 132 = backslash bar