在 X11 中将“Caps Lock”键重新映射为“Ctrl”

在 X11 中将“Caps Lock”键重新映射为“Ctrl”

我想将Ctrl- N/ Ctrl-重新映射PUpDown键。我发现了这个邮政并做了这样的事情:

! 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 键属于 Lock 修饰符。 前:Caps_Lock 键属于 Lock 修饰符。

之后:标识物理 Caps_Lock 键 (66/0x42) 的键码现在标识为附加的左 Control 键,仍具有 Caps_Lock 的原始键码,并且现在已从修改器映射中的 Lock 修改器移至 Control 修改器。原来的左侧控制键也仍然存在。 后:标识物理 Caps_Lock 键 (66/0x42) 的键码现在标识为附加的左 Control 键,仍具有 Caps_Lock 的原始键码,并且现在已从修改器映射中的 Lock 修改器移至 Control 修改器。原来的左侧控制键也仍然存在。

相关内容