.Xmodmap - キー割り当ての変更


xmodmap コマンドでキー割り当ての変更を行うことが可能です。 設定ファイルのファイル名はなんでもよいのですが、 .Xmodmap とでもしておくとよいと思います。

Table of Contents

xmodmap コマンドについて Edit

xmodmap コマンドについての説明をしていきます。

まず、キー割り当てを変更するための基礎知識として、 そのキーボードのキーコード、およびキーシムを知る必要があります。

% xmodmap -pke | less 

と実行しましょう。

略
keycode 34 = z Z
略
keycode 45 = 4 dollar
略

このような出力があるはずです。 34 や 45 がキーコード、z, Z や 4, dollar などがキーシム(keysym)です。 1つのキーコードには「普通にキーを押した場合」、「 Shift キーを押しながらキーを押した場合」の二つキーシムを設定することができます。 上の例では、z, 4 が普通に押した場合で、Z, dollor が Shift キーを押しながらキーを押した場合です。

% xmodmap -e 'keycode 34 = s S' 

とすることで、keycode 34 に s S を割り当てられます。つまり z を s に Z を S に変更したことになります。これは、

% xmodmap -e 'keysym z Z = s S' 

のようにキーシム自体を変更しても同じです。また、ファイル(ここでは ~/.Xmodmap とします)に

keycode 34 = s S 

のように記述しておいて

% xmodmap ~/.Xmodmap

とすることでも可能です。ファイル中にコメントを書く場合には

! comment

のように ! を使います。

Ctrl キーと Caps_Lock キーなどは修飾キー (Modifier)とよばれ、 押している間に他のキーを押すことで特別な動作をさせるものであるため、 keycode および keysymを変更するだけでは効果がありません。 修飾キーの削除、割り当てという特別な処理をしてはじめて変更したということができます。

Ctrl と Caps_Lock の交換 Edit

A キーのとなりに Ctrl キーではなく、Caps_Lock キーのあるキーボードがあります(日本語キーボードの場合ほとんど)。 その場合、Ctrl と Caps_Lock キーを交換したい時が多々あります。

!
! Swap Ctrl and Caps_Lock
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

という記述をファイル(.Xmodmap とします)に書いておき

% xmodmap .Xmodmap

と実行することで、Ctrl と Caps_Lock を交換することができます。 これは交換なので、もう一度 xmodmap を実行するとさらに交換して戻ってしまいます。 あしからず。

Caps_Lock だけを Ctrl に変更 Edit

自分はむしろ Caps_Lock が不要なので、

!
! Change Caps_Lock to Ctrl
!
remove Lock = Caps_Lock
!remove Control = Control_L
!keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
!add Lock = Caps_Lock
add Control = Control_L

のようにして、Caps_Lock キーを Ctrl の効果に変更するだけにしています。 そのまま Ctrl キーが残っていますので、 他の人が使用する場合にも間違うことがなくなると思います。


xrea