UbuntuでWinKey/Fn/Ctrl/TabキーをEscキーに置き換える方法

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)

私の環境では次のように確認できました。

  • Esckeycode9、keysym は Escape
  • WinKey の keycode115 で、通常は Super_L に対応します。
  • 右 Ctrl の keycode105 で、Control_R に対応します。
  • 一部のキーボードでは Fn / WakeUp キーの keycode151 で、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 キー自体がシステムに直接認識されません。もし xevXF86WakeUp または類似のキー値が出力される場合は、次のように設定できます。

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 を確認し直すことをおすすめします。

Leave a Reply