ページ

2012年4月12日木曜日

Debian squeeze キーバインドの変更

キーボードに Happy Hacking Lite を使っているのですが、Emacs を使う時に Meta にあたる Esc キーや ALT キーの位置がどうも使いづらいので、Space キーのすぐ左にある 無変換 キーを Meta に変更しました。

xmodmap でやればコマンド一発だし簡単、でもいいですが、無変換 キーは普段使用しないので、キーマップ自体を変更しています。

Keycode <--> Keysym のマッピングを変更して、無変換 キーの Keycode に対して、Meta の Keysym を返すようにするということですね。

まず、 自分の環境で 無変換 キーがどの Keycode になっているのかを xev コマンドで確認します。
KeyRelease event, serial 34, synthetic NO, window 0x1000001,
    root 0x101, subw 0x0, time 89541208, (-103,502), root:(640,520),
    state 0x0, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
Keycode は 102 であることが分かります。

Debian 6 squeeze のキーマップ設定 で書きましたが、私の環境では Keycode に関するテンプレートは、
  •  keycodes :  evdev+aliases(qwerty)
ですので、/usr/share/X11/xkb/keycodes/evdev を見ると、Keycode 102 <MUHE> キーが割り当てられています。
default xkb_keycodes "evdev" {
         ・
         ・
        // Keys that are generated on Japanese keyboards

        //<HZTG> =  93; // Hankaku/Zenkakau toggle - not actually used
        alias <HZTG> = <TLDE>;
        <HKTG> = 101;   // Hiragana/Katakana toggle
        <AB11> = 97;    // backslash/underscore
        <HENK> = 100;   // Henkan
        <MUHE> = 102;   // Muhenkan
        <AE13> = 132;   // Yen
        <KATA> =  98;   // Katakana
        <HIRA> =  99;   // Hiragana
        <JPCM> = 103;   // KPJPComma
        //<RO>   =  97; // Romaji
};

次に Keysym に関するテンプレートは以下になっていますので、
  •  symbols :  pc+jp+inet(evdev)
<MUHE> キーの Keysym は、/usr/share/X11/xkb/symbols/inetevdev セクションを見ると Muhenkan に割り当てられています。
これを Meta_L に変更します。
xkb_symbols "evdev" {
     ・
     ・
    key <HKTG>   {      [ Hiragana_Katakana     ]       };
    key <HENK>   {      [ Henkan                ]       };
    //key <MUHE>   {      [ Muhenkan              ]       };
    key <MUHE>   {      [ Meta_L              ]       };
     ・
};

最後に Xserver を再起動して、xev コマンドで Keycode 102 の Keysym が Meta_L になっていることを確認します。
KeyPress event, serial 34, synthetic NO, window 0x1a00001,
    root 0x101, subw 0x0, time 88590427, (549,-233), root:(550,622),
    state 0x0, keycode 102 (keysym 0xffe7, Meta_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

0 件のコメント:

コメントを投稿