xkb:使用按键更改换档级别而不显示为修饰符

Mal*_*ous 5 xorg xkb keyboard-layout

我想将 XKB 配置为Caps Lock用作生成不同键的一种方式,但我不希望它显示为修饰符。例如:

  • F1产生F21按键
  • Caps Lock+F1产生F1按键(即没有修饰符)
  • Shift+ Caps Lock+F1产生Shift + F1按键(仅Shift计数作为改性剂)

我通过分配Caps Lockto部分成功了这一点Hyper_R,但问题是这仅在Hyper_R也设置为修饰符时才有效,例如Mod3. 这意味着Shift+ Caps Lock+F1实际上产生Shift + Mod3 + F1如此监听任何热键Shift + F1,因为他们不喜欢没有工作的Mod3存在。

有什么方法可以Caps Lock用来更改某些键的行为,而实际上不会将其作为修饰键出现在 X 应用程序中?

我读过的文档暗示这可以通过高级 XKB 配置实现,但我找不到任何详细信息。

BRP*_*ock 7

抱歉,这很古老,但也许即使对您来说为时已晚,其他人也可能会发现此提示很有用:

在您的 中types,添加:

type "CapsShiftSpecial" {
    modifiers= Shift+Hyper;

    map[Shift]= Level2;
    preserve[Shift]= Shift;

    map[Hyper]= Level3;

    map[Shift+Hyper]= Level4;
    preserve[Shift+Hyper]= Shift;

    level_name[Level1]= "Base";
    level_name[Level2]= "Shift";
    level_name[Level3]= "Hyper";
    level_name[Level4]= "Shift Hyper";
};
Run Code Online (Sandbox Code Playgroud)

然后,在symbols文件中,有类似

key <FK01>  { type[group1]="CapsShiftSpecial",
              symbols[group1]=[ F21, F21, F1, F1 ]};
Run Code Online (Sandbox Code Playgroud)

监视击键(xevemacs,例如)的程序将看到按键,就像您按下了F21Shift+F21F1Shift+F1