Какова функция клавиш-модификаторов в xmodmap?

Когда я запускаю xmodmap, я получаю что-то вроде этого

shift       shift_l (0x32),  shift_r (0x3e)
lock      
control     control_l (0x25),  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)

Я получаю смену и контрольные группы. Но для чего нужны другие mod1, mod2, mod3, mod4?

В любом случае, вы можете использовать только два модификатора следующим образом:

keysym <keysymname> = <key> <shift+key> <mode_switch+key> <mode_switch+shift+key>

Почему я не могу установить что-то <mod4+key>?

1 ответ

X11 предоставляет 8 модификаторов для любого нажатия клавиши. Кажется, у вас довольно обычный набор, где shift, control а также lock имеют очевидные отображения.

mod1 обычно представляет собой Meta или Alt, и mod2 в mod5 доступны для любых других клавиш-модификаторов на клавиатуре, часто помеченных как Super или Hyper. Обычно они не используются для ввода символов, но интерпретируются приложениями - например, в Emacs я делаю Super+TAB эквивалентным Meta+TAB:

(define-key function-key-map (read-kbd-macro "s-<tab>") (read-kbd-macro "ESC TAB"))

Если вы хотите, чтобы ваша клавиатура генерировала символы с использованием этих модификаторов, то xmodmap не достаточно способный, и вы захотите посмотреть setxkbmap вместо. Это тема, которая слишком велика для этого ответа.

Другие вопросы по тегам