在 xterm 和 vim 中使用 Control-j 而不是 Return 对我来说看起来非常方便,我想对所有 X 应用程序使用这个序列。
通过将 ISO_Level5_Shift 重新映射到 Control 键,并将 Return 设置为 j 键的第 5 级符号,可以使用 xkb 轻松完成,但在此之后,vim 和 xterm 中的所有其他 Control 组合停止工作(因为 xterm 和 vim 无法理解Mod键),这是绝对不能接受的。
我通过在 xkb_symbols 部分使用“LOCAL_EIGHT_LEVEL”键类型,在不重新映射 ISO_Level5_Shift 的情况下做到了这一点,它使用 Control(而不是 ISO_Level5_Shift)作为 Level5 修饰符:
key <AC07> { [ j, J, plusminus, NoSymbol, Return ], type[Group1]= "LOCAL_EIGHT_LEVEL" };
Run Code Online (Sandbox Code Playgroud)
这个解决方案的问题——xkb 设置了 Control 位,Control-j 返回 Control-Return 而不仅仅是 Return。有时(很多时候,顺便说一句)这种组合不能作为返回。
所以,我需要的是修改这些解决方案之一,以取消 Control-j 组合的控制位。
根据这个链接:Arch Wiki article about XKB可以做到,但我不知道如何做到这一点。所以,这就是我的问题。
也许我必须为 Return+Control 或类似的东西添加一些 xkb_compatibility 规则,或者添加一些 xmodmap 映射 …
我在使用xmodmap时遇到了奇怪的行为。我想重新映射Caps_Lock,使其充当Escape,Shift+Caps_Lock因此它充当Caps_Lock。在我的例子中,~/.Xmodmap我尝试了以下命令的所有可能的组合,总是得到相同的结果:
clear Lock
remove Lock = Caps_Lock
keycode 66 =
keycode 66 = Escape Caps_Lock
keysym Caps_Lock = Escape Caps_Lock
Run Code Online (Sandbox Code Playgroud)
被Caps_Lock正确地重新映射到Escape
$ xmodmap -pke | grep Caps
keycode 66 = Escape Caps_Lock Escape Caps_Lock
Run Code Online (Sandbox Code Playgroud)
但重启后它仍然会锁定大写字母。所以它同时充当Escape和Caps_Lock。运行xev我可以看到在和state之间切换。虽然按预期工作(如)。如果我登录后在终端中运行,我会像以前一样得到:0x100x12Shift+Caps_LockCaps_Lockxmodmap ~/.Xmodmap
$ xmodmap -pke | grep Caps
keycode 66 = Escape Caps_Lock Escape Caps_Lock
Run Code Online (Sandbox Code Playgroud)
BUT Caps_Lock开始按预期运行,只是 …
当我尝试移动键,以便我在转义时使用 CapsLock、CapsLock 上的 Control 和左侧控件上的 Escape 时,我收到以下错误:
% xmodmap ~/.Xmodmap
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 15
Current serial number in output stream: 15
Run Code Online (Sandbox Code Playgroud)
那是失败的代码:
remove Lock = Caps_Lock
! ESC
keycode 9 = Caps_Lock
add Lock = Caps_Lock
remove Control = Control_L
! CapsLock
keycode 66 = Control_L
add control = Control_L
! Control_R
keycode …Run Code Online (Sandbox Code Playgroud) 我有兴趣劫持笔记本电脑上的 Fn 键并将其用作 tmux 的 mod 键,但在对 xmodmap 和 tmux.config 进行了一系列修改之后,我并没有进一步让它发挥作用。