标签: xmodmap

如何使用 xkb [and|or] xmodmap 使 Control-j 在没有设置控制位(!)的情况下作为 Return 工作

在 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 映射 …

keyboard-shortcuts keyboard-layout xmodmap xkb

5
推荐指数
1
解决办法
1115
查看次数

xmodmap - 将 Caps_Lock 重新映射为 Escape,将 Shift+Caps_Lock 重新映射为 Caps_Lock

我在使用xmodmap时遇到了奇怪的行为。我想重新映射Caps_Lock,使其充当EscapeShift+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)

重启后它仍然会锁定大写字母。所以它同时充当EscapeCaps_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开始按预期运行,只是 …

linux keyboard xmodmap

5
推荐指数
1
解决办法
3971
查看次数

Xmodmap 无法重新映射修饰键

当我尝试移动键,以便我在转义时使用 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)

linux keyboard xorg xmodmap

3
推荐指数
1
解决办法
4524
查看次数

tmux 和 xf86 键(“Fn”键、xf86WakeUp)

我有兴趣劫持笔记本电脑上的 Fn 键并将其用作 tmux 的 mod 键,但在对 xmodmap 和 tmux.config 进行了一系列修改之后,我并没有进一步让它发挥作用。

  • xev 显示它们的密钥名称是 XF86WakeUp,但这在 tmux.config 中不起作用。
  • 我尝试在 tmux 中设置 XF86WakeUP (0xF8) 的十六进制代码,但这也不起作用。
  • 我知道 Fn 键发送自己的代码有点侥幸,但我想现在利用它并担心以后的后果(这是一个有价值的空间中的宝贵钥匙!)

keyboard keyboard-shortcuts xmodmap tmux

1
推荐指数
1
解决办法
2421
查看次数