我可以使用以下命令成功更新我的键盘映射:
/usr/bin/setxkbmap -option "ctrl:swapcaps"
这似乎并没有改变我的修改器地图。
[OP@localhost ~]$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
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)
然而,一切似乎都有效。我的问题是:为什么这不会改变修改器映射,如果它有效,修改器映射有什么用?
答案1
修改器贴图不会改变,因为没有什么可以改变的;)
发生的情况是,xkb
将Control_L键符号归因于该键符号所在的键代码 66 CapsLock。
CapsLockkeysym 仍然是大写锁定修饰符,即使它不再受到任何键码的影响。
Control_Lkeysym 已经在 Modmap 中,不需要添加。
事实上,您可能想添加另一个选项:当您同时按下两个 Shift 时,shift:both_capslock
该选项将激活/停用。CapsLock由于 CapsLock 并未从 Modmap 中删除,因此它仍然可以工作。
现在,这个 modmap 是做什么用的?还有其他修饰符需要考虑:
⮱ISO_Level5_shift适用于多语言、Unicode 符号,使用“EIGTH_LEVEL”键扩展键盘。
⮱ISO_Prev_Group适用于多个组。
⮱Hyper深受Emacs
用户欢迎。
...等等,xkb
每个修饰符都有许多变体(shift、latch、lock),但要注意这些功能并不全部与Xmodmap
.
不管怎样,使用起来真是太棒了setxkbmap
,里面的内容比大多数用户知道的还要多。
man Xkeyboard-config
请注意,您可以使用localectl
相同的选项永久应用更改(注意轻微的语义更改)。