我想将Ctrl- N/ Ctrl-重新映射P到Up和Down键。我发现了这个邮政并做了这样的事情:
! add Mode_switch
keycode 66 = NoSymbol NoSymbol
keycode 66 = Mode_switch
keycode 57 = n N Down
keycode 33 = p P Up
这确实有效。但有一个问题——我实际上想Caps Lock成为Ctrl并且也这样做。我似乎找不到办法。
答案1
最后两行中 Ctrl+N 和 Ctrl+P 的重新映射很好。问题在于尝试重新映射 Caps_Lock 按钮(十进制键码 66 或十六进制 0x42)。
大写锁定是其中之一修饰语键,以及 Shift 和 Control (Ctrl)。 X.org 维护了一个修饰符映射表以及熟悉的键映射。xmodmap -pm
将显示您当前的修改器图。您需要更新该映射以及键盘映射,正如我在下面解释的那样:
(Caps) Lock 修饰符提供锁定大写字母的特征行为,除非您明确告知它,否则不会出于其他目的释放物理键。就我个人而言,我总是用螺丝刀撬开我的 Caps Lock 键,这让我很恼火,所以我很高兴用clear Lock
.
(我还看到人们通过用
remove MODIFIERNAME = KEYSYMNAME ...
和 包围他们的 Lock 绑定来启用更改add MODIFIER = KEYSYMNAME
。查看man xmodmap
详细信息。)
clear Lock
keycode 66 = Control_L
add Control = Control_L
在通知 Lock 修饰符释放 Caps_Lock 键后,您可以将该键(keycode 66
在代码片段的第 2 行中)重新映射到其中一个 Ctrl 键 - 在本例中,我选择了左侧的键,因此_L
,但哪个并不重要。现在 Caps_Lock 键“认为”它是 Ctrl 键,但修饰符表还不知道我们要将它用作修饰符。
我的清单中的最后一行声明 Control_L 是一个新的 Control 修饰符,因此应该行为就像 Ctrl 键一样。查看修改器映射之前/之后的比较(来自xmodmap -pm
下面):
后:标识物理 Caps_Lock 键 (66/0x42) 的键码现在标识为附加的左 Control 键,仍具有 Caps_Lock 的原始键码,并且现在已从修改器映射中的 Lock 修改器移至 Control 修改器。原来的左侧控制键也仍然存在。