web-dev-qa-db-ja.com

Xmodmap構成

私のDebianLinuxマシンで Ctrl+Alt+F1 仮想端末にバインドされています。 xmodmap -pkeを実行すると、対応するエントリが表示されます。

keycode 67 = F1 XF86_Switch_VT_1 F1 XF86_Switch_VT_1

このスレッド ごとに、私が追加する可能性があるのは、他の場所で読んだものと一致しています。=の右側の列は key、 Shift+key、 AltGr+key そして Shift+AltGr+key

それを考えると、私はキーコードマッピングがどのように F1 (上記)のために働く Ctrl+Alt+F1。本当にどちらかである必要があるようです Shift+F1 または Shift+AltGr+F1

これが私のマシンでのxmodmap -pmの出力です:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x25)
control     Control_L (0x42),  Control_R (0x69)
mod1        Alt_L (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)

誰かがそれを説明できますか?

5
Krishna S

それはもう少し複雑です、 Fn キーには通常、通常の4ではなく5つのレベルがあります。5番目のレベルには、 ctrl+alt。これにより、~/.Xmodmapファイルで適切なキーバインディングを指定できます。以下は、xkbファイルからの抜粋です。それらの詳細については、 http://www.charvolant.org/~doug/xkb/html/node5.html を参照してください。

type "CTRL+ALT" {
    modifiers = Control+Alt+Shift+LevelThree;
    map[None] = Level1;
    map[Shift] = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level4;
    map[Control+Alt] = Level5;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
    level_name[Level5] = "Ctrl+Alt";
};
xkb_symbols "fkey2vt" {
  key <FK01> {
    type="CTRL+ALT",
    symbols[Group1]= [ F1, F1, F1, F1, XF86_Switch_VT_1 ]
  };
  ...
};
2
Ulrich Dangel