我在 MacBook Pro 上的 virtualbox 下运行 Ubuntu,并尝试将 Caps-Lock 键重新映射到 mod3,以便我可以使用它来替代 Xmonad 中的 Alt 键。我可以重新映射键符,但我遇到的问题是,如果我按下 Caps-Lock 键,它会立即生成一个按键按下事件,然后紧接着生成一个按键释放事件。我该如何防止这种行为?我希望释放事件在实际释放按键时发生(其他按键也是如此)。这是 OSX 正在做的事情,还是与 X 中的特定键码绑定的某种秘密属性?
我使用 xmodmap 取消映射 Super_R,将键代码 66 映射到 Super_R,然后将 Super_R 分配给 mod3 修饰符。
更新:
我通过使用来解决这个问题赛尔在 OSX 中将 Caps-Lock 重新映射到键代码 110 (PC_APPLICATION)。由于某种原因,X 将其重新映射到 135,但我可以将 Super_R 重新映射到 135,使用“xset -r 135”关闭 135 的按键重复,然后将 Super_R 分配给 mod3。
选择 PC_APPLICATION 和 Super_R 只是因为我没有将它们用于其他任何用途,我认为这应该适用于大多数或所有密钥代码和密钥符号。
我已经写了一篇(更长的)关于如何做到这一点的解释这里。
我非常确定 Caps-Lock 键的向上/向下行为是 X 所为。