キーマップの変更方法

  1. コンソールでのキーマップ変更
  2. Xkb を使った変更
  3. .xmodmaprc を使った変更

1. コンソールでのキーマップ変更

ブート時のキーマップ設定スクリプト(/etc/init.d/keymap.sh)確認する. debian 3.1 (sarge)では /etc/console/boottime.kmap.gz を loadkeys で読み込んでいた.

例) Caps Lock キーと左 Control キーを交換する場合

オリジナルの boottime.kmap 設定

keycode  29 = Control     
	:
keycode  58 = Caps_Lock      

変更後の boottime.kmap 設定

keycode  29 = Caps_Lock 
	:
keycode  58 = Control  

2. Xkb でのキーマップ変更

良く行われるキーマップの変更は /etc/X11/XF86Config (あるいは XF86Config-4) のキーボード設定に XkbOptions を追記すればよい. 特殊な変更は /etc/X11/xkb/keycodes/ 内のファイルを編集すれば可能. 変更後, X を再起動することを忘れずに...

例) Caps Lock キーと左 Control キーを交換する場合

XF86Config の keybord 設定
Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "keyboard"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xfree86"
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp"
        Option          "XkbOptions"    "ctrl:swapcaps"
EndSection

例) F1 キーも Esc にする. O

上記 Xkb 設定(XkbRules の値が "xfree86")の場合 /etc/X11/xkb/keycodes/xfree86 を編集

変更前の設定
	<FK01> =  67; 
	<ESC>  =  9; 

変更後の設定
	<ESC> =  67; 
	<ESC> =  9; 

キーコードの確認は xev (1) (:X Event View の略かな?) というコマンドを実行し, を知りたい キーを押すことで確認できる. 例えばゲイツキー(Win印のキー)は 以下の情報から "115" と "116" に割り当てられていることがわかる. /etc/X11/xkb/keycodes/xfree86 等を編集することで これらのキーに何らかの役割を与えることも可能.

KeyRelease event, serial 27, synthetic NO, window 0x1c00001,
    root 0x38, subw 0x0, time 53904022, (12,-6), root:(41,80),
    state 0x0, keycode 115 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:  ""

KeyRelease event, serial 27, synthetic NO, window 0x1c00001,
    root 0x38, subw 0x0, time 53904150, (12,-6), root:(41,80),
    state 0x0, keycode 115 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:  ""

KeyPress event, serial 27, synthetic NO, window 0x1c00001,
    root 0x38, subw 0x0, time 53904395, (12,-6), root:(41,80),
    state 0x0, keycode 116 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:  ""

KeyRelease event, serial 27, synthetic NO, window 0x1c00001,
    root 0x38, subw 0x0, time 53904566, (12,-6), root:(41,80),
    state 0x0, keycode 116 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:  ""

3. .xmodmaprc を使った変更

ユーザレベルで X 上のキーマップの割当を変更する場合, xmodmap (1) を利用すると良い. 次に記す例も含め, 良く行われる変更の例は xmodmap (1) のマニュアルページに 紹介されているので参照のこと.

例) Caps Lock キーと左 Control キーを交換する場合

ホームディレクトリに以下の内容で .xmodmaprc というファイルを作成.
!
! Caps_Lock と Control_L の入れ換え
!
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

.bash_profile に以下の行を追加
xmodmap ~/.xmodmaprc

X 再起動.


Copyright and beyond by whw. All rights reserved.

whw@u01.gate01.com