如何使 AltGr+i,j,k,l 作为光标键正常工作?

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)。

它有效——几乎。

  • 例如,在 Firefox 中,一切正常。例如 AltGr+n 向右移动光标,Shift+AltGr+n 选择文本。同样在 LyX 的主要文本区域中。
  • 在 MonoDevelop 中,光标随 AltGr+n 移动,但 Shift+AltGr+n 也仅移动光标而不是选择。Shift+Right 正常选择文本。
  • 在 NetBeans 和 LyX 对话框中,按 (Shift+)AltGr+n 绝对没有任何作用。

我猜这些其他程序读取了 AltGr 状态并认为这是一件坏事。那么,有没有办法让事情按照我想要的方式发生?看起来叠加层可能是一个解决方案,但我还没有让它们工作。

Mal*_*ous 6

问题是,当您使用像 一样的常用修饰符时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)的新类型以激活箭头键。