xmodmap中修饰键的作用是什么?

use*_*063 8 linux keyboard xorg xmodmap xkb

当我运行 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)
Run Code Online (Sandbox Code Playgroud)

我得到了轮班和控制组。但是其他的 mod1、mod2、mod3、mod4 是做什么用的?

似乎无论如何您只能使用以下两个修饰符:

keysym <keysymname> = <key> <shift+key> <mode_switch+key> <mode_switch+shift+key>
Run Code Online (Sandbox Code Playgroud)

为什么我不能设置一些东西<mod4+key>

Tob*_*ght 3

X11 为任何按键提供 8 个修饰符。您似乎有一个相当传统的集合,其中和shift具有明显的映射。controllock

mod1通常代表MetaAlt,并且mod2tomod5可用于键盘上具有的任何其他修饰键,通常标记为SuperHyper。通常这些不用于输入字符,而是由应用程序解释 - 例如,在 Emacs 中,我使Super+TAB等同于Meta+ TAB

(define-key function-key-map (read-kbd-macro "s-<tab>") (read-kbd-macro "ESC TAB"))
Run Code Online (Sandbox Code Playgroud)

如果您希望键盘使用这些修饰符生成字符,那么它的xmodmap能力还不够,您需要研究一下setxkbmap。不过,对于这个答案来说,这个话题太大了。