将 Numlock 键用作 XKB 的等于键

将 Numlock 键用作 XKB 的等于键

Numlock 键在当今时代几乎没有什么作用,但它在(标准)键盘布局中的位置非常突出。

由于我使用大量电子表格,因此使用键盘输入数据非常方便,但有一点需要注意:当您的右手放在键盘上时,很难触及等号。

我的想法是重新映射 Numlock,这样它就可以同时充当 Numlock 和 equals 的角色,前者可以通过修饰符访问。

为此,我决定制作自己的xkb键盘映射,因为我尝试了同样的事情xmodmap,但也得到了类似的糟糕结果。

(文件名为pb

default partial alphanumeric_keys
xkb_symbols "basic" {
    
    name[Group1] = "PB (US intl with level 3 and level 5";
    key.type[Group1] = "EIGHT_LEVEL";

    include "us(altgr-intl)"

    //              (norm)     NLOCK     AltGr
    key.type[Group1] = "FOUR_LEVEL_MIXED_KEYPAD";
    key <NMLK> { [ KP_Equal, KP_Equal,  Num_Lock, Q ] };

    include "level3(ralt_switch)"
    include "level5(rctrl_switch)"
};

现在,如您所见,当我稍后想要扩展自定义布局时,我添加了级别 3 和级别 5,但我在没有使用它的情况下进行了测试,并且它不会干扰 Numlock。

当按下 Numlock 键时,由此产生的行为如下:

(数字锁定关闭)

  • Numlock: '='
  • Shift+ Numlock: '='
  • AltGr+ Numlock: (打开数字锁定)
  • AltGr+Shift + Numlock: '问'(我添加这个是为了测试)

没关系,按住 AltGr 和 Shift 时打印“Q”只是为了看看我是否可以达到该移位级别。然而,当 Num lock 打开时,行为根本不令人满意:

(数字锁定已打开)

  • Numlock:(关闭数字锁定)
  • Shift+ Numlock: (关闭数字锁定)
  • AltGr+ Numlock: (关闭数字锁定)
  • AltGr+ Shift+ Numlock: (关闭数字锁定)

似乎不可能让 Num lock 表现得像KP_Equal无论我如何尝试,

本来,我想按Numlock打印等号,按住 时Shift来打开和关闭 Num Lock。由于这似乎不可能,我选择了 ISO 级别 3 ( AltGr),但这似乎也不起作用。我想要的是,Numlock无论 Num lock 打开还是关闭,都打印一个等号,并在按住 mod 键时切换 Num Lock(哪一个对我来说并不重要,最好是ShiftAltGr)。

答案1

所以。如果您查看“xev”的输出,请注意状态,

  • 如果将键符号保留Num_Lock在该键上,即使按下该键符号的键,您也会看到状态 10 KP_equal ,而不会被锁定。正因为如此,当你被锁定时,按下KP_Equal就会解锁你。
  • 现在你想摆脱Num_Lock这个键,这样它就不会生成这种讨厌的状态,同时仍然锁定适当的层,它是这样完成的:
replace key <NMLK> {
type[Group1]= "FOUR_LEVEL_MIXED_KEYPAD",
symbols[Group1]= [ KP_Equal, KP_Equal,  Num_Lock, Q ],
actions[Group1]= [ NoAction(), NoAction(), 
                   LockMods(modifiers=NumLock), NoAction()
};

注意不要有下划线,否则无法工作。

  • 现在您可以验证状态;在任何情况下都应该没问题,但显然这种状态不再意味着任何事情,因为您已经Num_Lock从地图中删除了键符号。所以你需要找到一个你不使用的备用键码,并为他分配Num_Lock键符号。在此示例中,我将采用密钥代码 249
replace key <I249> { symbols[Group1]= [ Num_Lock ] };

现在它应该可以正常工作了:)

相关内容