重新映射大写锁定生成左和右

重新映射大写锁定生成左和右

我正在尝试使用 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 状态。

相关内容