X上でのキーバインドの変更
Xでのキーバインドの変更はxmodmapコマンドで行えます。
ここでは例としてCtrlとCaps Lockを入れ替えてみます。
まず、下記のようにホームディレクトリに設定ファイルを作成します。
[user@centos ~]$ vi ~/.xmodmaprc 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コマンドで読み込むとキーバインドの変更が反映されます。
[user@centos ~]$ xmodmap ~/.xmodmaprc
元に戻すときはもう一度xmodmapコマンドで同じソースファイルを読み込みます。
[user@centos ~]$ xmodmap ~/.xmodmaprc
設定ファイルの編集
keycode(キーコード)とkeysym(キーシンボル)
上記で作成した設定ファイルを自分に合ったキーバインドになるようにカスタマイズします。
例えば、設定ファイルに下記のように記述すると、"カタカナひらがな"キーに"半角/全角"キーを割り当てることができます。
[user@centos ~]$ vi ~/.xmodmaprc keycode 208 = Zenkaku_Hankaku
keycode(キーコード)というのは、キーボード上のキーに一意に割り当てられた番号のことです。
また、上記の"Zenkaku_Hankaku"の部分は、keysym(キーシンボル)となっています。
keysymは、そのキーがどういう役割を持つのかを表すIDのようなものです。
つまり、特定のキーに任意のキーを割り当てるといった設定を行うには、上記のように、
keycode = keysym
という形式で定義するため、設定したいキーのkeycodeとkeysymを知る必要があります。
keycodeとkeysymは、xevというツールで調べることができます。
[user@centos ~]$ xev
xevコマンドを実行すると下図のように"Event Tester"というウィンドウが現れます。
そして、何らかのキーを押すと多数のメッセージが表示されます。
ここで、keycodeを調べたいキーを押せば、keycodeが表示されます。
また、keycodeに割り当てられたkeysymも同時に確認できます。
また、xmodmapコマンドに-pkeというオプションを付けて実行すると、現在のkeycodeとkeysymの対応表が表示されるので便利です。
[user@centos ~]$ xmodmap -pke keycode 8 = keycode 9 = Escape keycode 10 = 1 exclam kana_NU keycode 11 = 2 quotedbl kana_FU keycode 12 = 3 numbersign kana_A kana_a keycode 13 = 4 dollar kana_U kana_u keycode 14 = 5 percent kana_E kana_e keycode 15 = 6 ampersand kana_O kana_o keycode 16 = 7 apostrophe kana_YA kana_ya keycode 17 = 8 parenleft kana_YU kana_yu keycode 18 = 9 parenright kana_YO kana_yo keycode 19 = 0 asciitilde kana_WA kana_WO keycode 20 = minus equal kana_HO - 略 -
keycode 10 = 1 exclam kana_NU
のように3つのkeysymが設定されているものがあります。
これは、それぞれ「普通にキーを押した場合の keysym」、「Shiftキーを押しながらキーを押した場合の keysym」、「モディファイヤキーを押しながらキーを押した場合のkeysym」を意味しています。
設定ファイルの文法・ディレクティブ
設定ファイル内では行頭に!をつけるとその行はコメントとなります。
! この行はコメント行
keycode 数字 = keysym
で左辺で指定したkeycodeを持つキーに右辺で指定したkeysymの役割を割り当てることができます。
下記はkeycode49(半角/全角キー)にEscapeキーを割り当てる場合
! 半角/全角にEscapeを割り当て keycode 49 = Escape
clear モディファイヤ名
で指定したモディファイヤ名のキーエントリをすべて無効することができます。
"clear Shift"とすると、Shiftキーとあるキーの組み合わせがすべて無効になります。
例えば、通常ならShiftキー+アルファベットで大文字アルファベットの入力ができるものが"clear Shift"により無効化されるようになります。
なお、モディファイア名は大文字小文字の区別がされません。
! Shiftキーとその他のキーの組み合わせを無効化する clear shift ! ※モディファイヤ名の大文字小文字は区別されないため、下記でも同様の設定ができる clear SHIFT ! 下記は元に戻す場合 add shift = Shift_L add shift = Shift_R
有効なモディファイヤ名はShift/Lock/Control/Mod1/Mod2/Mod3/Mod4/Mod5です。
現在のモディファイヤマッピングの状態はxmodmapコマンドを-pmオプションを付けて実行することで確認できます。
[user@centos ~]$ xmodmap -pm xmodmap: up to 3 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x25) control Control_L (0x42), Control_R (0x6d) mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x7f), Hyper_L (0x80) mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c), Mode_switch (0x81)
remove モディファイヤ名 = keysym
で指定したkeysymを含む全てのキーを指定されたモディファイヤマップから消去します。
! 右Shiftキーをモディファイア「Shift」から削除 remove shift = Shift_R ! 元に戻す場合 add shift = Shift_R
add モディファイヤ名 = keysym
で指定したkeysymを含む全てのキーを指定されたモディファイヤマップに追加します。
! 右Altキーをモディファイア「Shift」に追加 add shift = Alt_R ! 元に戻す場合 remove shift = Alt_R

この記事へのコメント
まだコメントは投稿されていません。