keymap 変更

vimとvimperatorでESCを打鍵するときは Ctrl+[ を使っていたのだが両小指を伸ばさなければいけないのはつらい。


と言うわけで、Spaceキーの横に右に位置していてなおかつ、(僕にとって)Spaceキーと同じ使用用途しかない「変換」キーをESCに変えることにした。

設定は以下を参照
http://d.hatena.ne.jp/ykmbpp/20100101/1262340766
僕のubuntuは10.10だが.Xmodmapの内容を
keycode 100 = Escape NoSymbol Escape NoSymbol Escape
とすると望みどおりのキーマップに変更された。

-

  • -

<- 補足 ->
「変換」キーとESCキーのマッピングを知るには
$ xev
コマンドを実行し、「変換」キーを打鍵、次にESCを打鍵した結果、

KeyPress event, serial 36, synthetic NO, window 0x4c00001,
root 0x10d, subw 0x0, time 16851768, (158,635), root:(1601,690),
state 0x0, keycode 100 (keysym 0xff1b, Escape), same_screen YES,
XKeysymToKeycode returns keycode: 9
XLookupString gives 1 bytes: (1b) "e"
XmbLookupString gives 1 bytes: (1b) "e"
XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4c00001,
root 0x10d, subw 0x0, time 16851840, (158,635), root:(1601,690),
state 0x0, keycode 100 (keysym 0xff1b, Escape), same_screen YES,
XKeysymToKeycode returns keycode: 9
XLookupString gives 1 bytes: (1b) "e"
XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4c00001,
root 0x10d, subw 0x0, time 16855392, (158,635), root:(1601,690),
state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) "e"
XmbLookupString gives 1 bytes: (1b) "e"
XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4c00001,
root 0x10d, subw 0x0, time 16855464, (158,635), root:(1601,690),
state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) "e"
XFilterEvent returns: False

となっていたので、「変換」キーの番号「100」をESCに変更した。

実は、
keycode 100 = Escape NoSymbol Escape NoSymbol Escape
代入している右辺の意味はよく分かりません。
→Escape NoSymbol Escape NoSymbol Escape は、KeySymの名前
詳しくは、↓参照
http://twonine.exblog.jp/13100618/

追記 2011/06/26
xmodmap の初期起動
http://d.hatena.ne.jp/inouetakuya/20090917/1253158013

追々記 2012/03/01
変換キーをインプットメソッドの入れ替えに使うだけなら、
1.右上にあるインプットメソッドの設定アイコンをクリック
2.設定(P)をクリック
3.IBusの設定ウィンドウの一般タブをクリック
4.キーボードショートカットの「切り替え」の右のボタンをクリック
5.適当なキーボードショートカットをクリック(使いそうにないHungle(スペル怪しい)とか)
6.キーコードに表示されている文字が変わったことを確認し、その右のボタンをクリック
7.割り当てたいキーをモディファイヤーキーと共に打鍵(今回の場合は変換キーのみを打鍵)
8.OKをマウスでクリック

追々記 2013/10/20 ubuntu 13.10 で確認
capslockをctrlで置き換えるときは、↓が詳しい。
http://linuxserver.jp/linux/デスクトップ用途/x-windowのキーバインドをカスタマイズ.php

ただし、capslockのKeySymの取得は、
# xmodmap -pm
のlockの左に書かれている文字で行う。
shift Shift_L (0x32), Shift_R (0x3e)
lock Eisu_toggle
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
mod1 BadKey (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)

注)ネット上を見てみるとlock のKeySymは Caps_Lock である場合がほとんど。
owltechのキーボードをつかっているので、私の場合は、Eisu_toggleだった。

結局、.Xmodmapは↓の設定


! capslock -> left ctrl
remove Lock = Eisu_toggle
keysym Eisu_toggle = Control_L
add Control = Control_L

! henkan -> Zenkaku hankaku
keycode 100 = Zenkaku_Hankaku Kanji Zenkaku_Hankaku Kanji

! muhenkan -> Esc
keycode 102 = Escape NoSymbol Escape