如何将大写锁定映射到箭头键?

杰瑞德海滩

我正在尝试将Caps Lock映射到向下箭头键,并将Caps Lock与Shift修饰符映射到向上箭头键。

我尝试将xmodmap与以下输入文件一起使用:

remove Lock = Caps_Lock
keycode 66 = Down Up

按下大写锁定确实可以发送向下箭头键,但是按下大写锁定+ Shift则不发送向上键。

我究竟做错了什么?

乌科斯

该解决方案的技术细节很多。如果您不关心问题,而只关注解决方案,请随意跳至布局文件部分。

xmodmap

通过CAPSand Shift+CAPS在给定的给定条件下在我的系统上上下移动.Xmodmap

您可以通过致电来检查您的设置是否真正生效

$ xmodmap -pk | grep ^\\s*66
     66     0xffe5 (Caps_Lock)  0x0000 (NoSymbol)   0xffe5 (Caps_Lock)
$ setxkbmap -layout us && xmodmap ~/.Xmodmap
$ xmodmap -pk | grep ^\\s*66
     66     0xff54 (Down)   0xff52 (Up)

LEVEL2修饰符

接下来是您的问题的另一个(实际)问题:

<SHIFT>通过按下Shift按钮激活的LEVEL2修饰符,可以在使用箭头键在各行中移动时在文本编辑器中直观地标记字符。如果您指定<UP> 到的第二级<CAPS>,则您实际上要执行的操作是按Shift+ 您仅需针对该场景停用Shift修改器。Afaik您无法使用xmodmap执行此操作。

重定向LEVEL2修饰符

修改键映射的“实际方法”是使用xkb我在旧的xorg邮件列表中找到了解决方案LEVEL2的Caps必须重定向到<UP>)键(Up-Key btw只有一个级别。)在X.org上,您可以Shift使用内置函数在重定向期间停用修饰符RedirectKey(key=<UP>, clearmods=Shift)在实际“按下”键之前,clearmods“释放” Shift修饰符。

布局文件

激活行为的最简单方法是创建一个新的布局文件:

/ usr / share / X11 / xkb / symbols / capslockarrow

default partial xkb_symbols "basic" {

    include "de(basic)"
    include "shift(both_capslock_cancel)"

    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Down, NoSymbol ],
        actions[Group1] = [ NoAction(), RedirectKey(key=<UP>, clearmods=Shift) ]
    };
 };

激活新的布局

setxkbmap capslockarrow

关于布局文件的注意事项

  • 新的布局文件源自de(basic)这就是标准德语键盘的布局您可以在此处添加任何其他布局,例如us(basic)us(euro)/usr/share/X11/xkb/symbols/一眼什么是可能的。两个字母代码是文件名,括号中是xkb_symbols文件的相应定义。

  • 您将不再具有Caps键修饰符。因此,我添加了一种替代品Capsshift(both_capslock_cancel)通过同时按LSHIFTRSHIFT,可以激活CAPS Lock并用其他任何按键来再次释放Lock Shift

  • 如果有人想知道为什么我没有为此使用新的类型定义:在触发向上键操作之前,我根本无法释放Shift修饰符。不过,应该可以通过显式调用preserve[Shift] = Nonespearated释放Shift键xkb_types

  • 如以下评论中所述,Wayland也将依赖XKB,但不允许重定向。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章