non*_*pop 4 linux xkb keyboard-layout
(我已经在超级用户上问过这个问题,但没有得到答案,所以我现在就在这里试试。)
我想要光标键和其他一些可用的 AltGr+c,h,t,n 等(i,j,k,l,如果你有 qwerty)。我制作了一个自定义键盘布局文件(请参阅此处)。在那里我基本上只是拿了一个布局文件并将相关行修改为
key <AC09> { [ n, N, Right, Right ] };
Run Code Online (Sandbox Code Playgroud)
我有这样的/usr/share/X11/xkb/symbols/nonpop,我和加载它setxkbmap nonpop在~/.xinitrc(我没有使用任何DE,只是真棒WM)。
它有效——几乎。
我猜这些其他程序读取了 AltGr 状态并认为这是一件坏事。那么,有没有办法让事情按照我想要的方式发生?看起来叠加层可能是一个解决方案,但我还没有让它们工作。
问题是,当您使用像 一样的常用修饰符时AltGr,当您使用 AltGr 箭头时,程序实际上会将其视为被按下。所以,Shift+ AltGr+ i,如果你是按实际出现的程序Shift + Alt + Up和它的添加额外的Alt,混淆程序。如果可能,您可以通过向程序添加更多快捷方式来避免这种情况,Shift + Alt + Up与 相同的操作也是如此Shift + Up,或者您可以使用程序不知道的不常见修饰符。
还有其他方法可以做到这一点,但这是一种更简单的方法,对我来说效果很好。它会在字母数字键上创建一个“Group2”覆盖,这样当您切换到 Group2 时,您将在那里看到箭头而不是字母。您可以通过切换(打开/关闭,Caps Lock正常工作)或瞬时(按下激活,Shift正常工作)切换到 Group2
partial alphanumeric_keys
xkb_symbols "alpha_arrows" {
key <AD07> {
symbols[Group2]= [ Home ] # u
};
key <AD08> {
symbols[Group2]= [ Up ] # i
};
key <AD09> {
symbols[Group2]= [ End ] # o
};
key <AD10> {
symbols[Group2]= [ Prior ] # p
};
key <AC07> {
symbols[Group2]= [ Left ] # j
};
key <AC08> {
symbols[Group2]= [ Down ] # k
};
key <AC09> {
symbols[Group2]= [ Right ] # l
};
key <AC10> {
symbols[Group2]= [ Next ] # ;
};
key <AB06> {
symbols[Group2]= [ Delete ] # n
};
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以选择一个密钥用作 Group2 激活密钥。您可以通过以下方式查看所有选项(如果您不想推出自己的选项):
$ grep grp /usr/share/X11/xkb/rules/base.lst
Run Code Online (Sandbox Code Playgroud)
然后选择一个选项,例如此选项仅在按住时激活箭头Caps Lock。它还添加了一个新组合Alt+Caps Lock来实际打开和关闭大写锁定:
$ setxkbmap -option grp:caps_switch
Run Code Online (Sandbox Code Playgroud)
您可以将其添加到您的 Xorg 配置文件中以使更改永久化 - 网上有很多关于如何执行此操作的指南。
注意:
key使用,而不是replace key因为我们想添加到现有定义中,而不是替换它。ALPHANUMERIC扩展修饰符(例如 Hyper)的新类型以激活箭头键。