我正在尝试使用 Caps Lock 来生成 Left,使用 Shift+Caps Lock 来生成 Right。我希望其他修饰符(不是 Shift)不变地传递。
我有一台新笔记本电脑,带有很难按的小箭头键。这使得使用键盘返回浏览器变得困难。通过我试图实现的重新映射,Alt+Caps Lock 会转换为 Alt+Left,这非常棒。我希望能够通过 Alt+Shift+Caps Lock 前进。
这是我尝试过的setxkbmap
:
default partial xkb_symbols "basic" {
include "us(basic)"
include "shift(both_capslock_cancel)"
key <CAPS> { [ Left, Right ] };
};
这对左有效,但对右无效。 EmacsC-h c
报告说,当我键入 Caps Lock+Right 时,我正在发送 Shift+Right。 Emacs 处理得很好,但 Chrome 似乎对 Shift 修饰符感到困惑。
在这种情况下如何删除 Shift 修饰符?我已经尝试了上述的各种变体,但没有成功。
谢谢。
答案1
我想出了如何做到这一点。我输入以下内容/usr/share/X11/xkb/symbols/capslockarrow
并运行setxkbmap capslockarrow
:
default partial xkb_symbols "basic" {
include "us(basic)"
include "shift(both_capslock_cancel)"
key <CAPS> {
type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Left, Right ],
actions[Group1] = [ NoAction(), RedirectKey(key=<RGHT>, clearmods=Shift) ]
};
}
请注意,这也使得同时按住两个 Shift 键相当于按下 Caps Lock 键,即切换 Shift 状态。