Ubuntu で WinKey / Fn / Ctrl / Tab キーを Esc キーに置き換える方法
Ubuntu では xmodmap を使ってキー割り当てを変更し、あまり使わないキーを Esc にマッピングできます。これは Vim ユーザーにとくに便利です。Esc は押しにくい位置にありますが、WinKey、Fn、右 Ctrl、Tab は比較的押しやすいことが多いからです。
まず keycode を確認する
最初に、各キーに対応する keycode を知る必要があります。キーボード layout が同じコンピューター上で xev を使って確認できます。
xev
実行後、対象のキーを押し、端末出力の中から次のような内容を探します。
keycode 9 (keysym 0xff1b, Escape)
私の環境では次のように確認できました。
Escのkeycodeは9、keysym はEscape。- WinKey の
keycodeは115で、通常はSuper_Lに対応します。 - 右 Ctrl の
keycodeは105で、Control_Rに対応します。 - 一部のキーボードでは Fn / WakeUp キーの
keycodeが151で、XF86WakeUpに対応します。 - Tab の
keycodeは通常23で、Tabに対応します。
キーボードやシステムのバージョンによって完全には一致しない場合があるため、必ず xev の実際の出力を基準にしてください。
.Xmodmap に書き込む
ユーザーのホームディレクトリに .Xmodmap ファイルを作成、または編集します。
nano ~/.Xmodmap
必要なマッピングを書き込み、保存してから再ログインすれば反映されます。先に手動で読み込んでテストすることもできます。
xmodmap ~/.Xmodmap
WinKey を Esc に置き換える
WinKey を Esc にし、元の Esc を WinKey にしたい場合は、次のように書きます。
keycode 9 = Super_L
keycode 115 = Escape
WinKey だけを Esc にして、元の Esc は変更しない場合は、2 行目だけを残します。
keycode 115 = Escape
Fn / WakeUp キーを Esc に置き換える
一部のキーボードでは、Fn キー自体がシステムに直接認識されません。もし xev で XF86WakeUp または類似のキー値が出力される場合は、次のように設定できます。
keycode 9 = XF86WakeUp
keycode 151 = Escape
そのキーだけを Esc に変更したい場合は、次の行だけを書きます。
keycode 151 = Escape
右 Ctrl を Esc に置き換える
右 Ctrl は Control modifier に属しているため、キー変更の前後でいったん Control の組み合わせから外し、必要なキーを戻すのが無難です。右 Ctrl を Esc に変更するには、次のように書けます。
remove Control = Control_R
keycode 105 = Escape
さらに元の Esc を右 Ctrl にしたい場合は、次も追加します。
keycode 9 = Control_R
add Control = Control_R
完全な例は次のとおりです。
remove Control = Control_R
keycode 9 = Control_R
keycode 105 = Escape
add Control = Control_R
Tab を Esc に置き換える
Tab を Esc に変更したい場合は、次のようにします。
keycode 23 = Escape
Tab と Esc を入れ替えたい場合は、次のようにします。
keycode 9 = Tab
keycode 23 = Escape
デフォルト設定に戻す
設定を間違えた場合は、現在のユーザーのカスタムマッピングを一時的に無効化できます。
mv ~/.Xmodmap ~/.Xmodmap.bak
その後、再ログインするか X セッションを再起動します。再度変更する前に、xev で keycode を確認し直すことをおすすめします。
