我正在尝试将Caps Lock映射到向下箭头键,并将Caps Lock与Shift修饰符映射到向上箭头键。
我尝试将xmodmap与以下输入文件一起使用:
remove Lock = Caps_Lock
keycode 66 = Down Up
按下大写锁定确实可以发送向下箭头键,但是按下大写锁定+ Shift则不发送向上键。
我究竟做错了什么?
该解决方案的技术细节很多。如果您不关心问题,而只关注解决方案,请随意跳至布局文件部分。
通过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)
接下来是您的问题的另一个(实际)问题:
<SHIFT>
通过按下Shift按钮激活的LEVEL2修饰符,可以在使用箭头键在各行中移动时在文本编辑器中直观地标记字符。如果您指定<UP>
↑到的第二级<CAPS>
,则您实际上要执行的操作是按Shift+ ↑。您仅需针对该场景停用Shift修改器。Afaik您无法使用xmodmap执行此操作。
修改键映射的“实际方法”是使用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键修饰符。因此,我添加了一种替代品Caps:shift(both_capslock_cancel)
通过同时按LSHIFT和RSHIFT,可以激活CAPS Lock并用其他任何按键来再次释放Lock Shift。
如果有人想知道为什么我没有为此使用新的类型定义:在触发向上键操作之前,我根本无法释放Shift修饰符。不过,应该可以通过显式调用preserve[Shift] = None
spearated释放Shift键xkb_types
。
如以下评论中所述,Wayland也将依赖XKB,但不允许重定向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句