在我的自定义键盘布局中,如何将单个按键纳入大写锁定控制范围?我不想要换档锁

在我的自定义键盘布局中,如何将单个按键纳入大写锁定控制范围?我不想要换档锁

在我的自定义键盘布局中,我已经有这些行:

    // row 1 (E)
    key <TLDE> {    [     question,     exclam,         masculine,      ordfeminine ]   };
    key <AE01> {    [     braceleft,    1                                           ]   };
    key <AE02> {    [     bracketleft,  2,              periodcentered              ]   };
    key <AE03> {    [     parenleft,    3,              EuroSign                    ]   };
    key <AE04> {    [     less,         4                                           ]   };
    key <AE05> {    [     slash,        5                                           ]   };
    key <AE06> {    [     apostrophe,   quotedbl,       dead_diaeresis              ]   };
    key <AE07> {    [     equal,        plus                                        ]   };
    key <AE08> {    [     backslash,    6,              notsign                     ]   };
    key <AE09> {    [     greater,      7                                           ]   };
    key <AE10> {    [     parenright,   8                                           ]   };
    key <AE11> {    [     bracketright, 9,              exclamdown                  ]   };
    key <AE12> {    [     braceright,   0,              questiondown                ]   };

这是第 1 行(功能键下方、字母之外的行)。

所以,举个例子,现在如果我按数字1,就会输入{,当我按shift+1 时,就会输入1。很好。但是,当我按 Capslock 时,它{也会输入 ,但我想要1。 Capslock 适用于字母。

所以现在,我想让大写锁定适用于字母和这一行,但不适用于键盘上的其他键,如shiftlock,我该怎么做?

(Shiftlock:按下某些键然后松开,你按下键盘上的每个键就像按下Shift一样。不仅是字母键,而且InsertHome和箭头键输出都会改变,这不是我想要的)

这在 Windows 中可以通过 Microsoft 键盘布局管理器实现,因为按键定义包含一个按键的所有 4 个级别的状态,以及 Capslock 的另一个级别的状态。但不知道xkb是否允许。

(cap 1:该键启用 cap,cap 0:不启用)

//SC    VK_     Cap 0   1        2   6   7
//--    ----    ----    ----    ----    ----    ----    ----

02       1      1   1   007b    -1  -1  -1      // DIGIT ONE, LEFT CURLY BRACKET, <none>, <none>, <none>

答案1

如果我理解正确,您不想更改 的默认行为,而只想更改 的状态打开CAPS LOCK时数字行的行为。CAPS LOCK在这种情况下,您可以选择以下选项。

a) 按块更改类型

基本上使用:

  • ALPHABETIC(或者#_LEVEL_ALPHABETIC如果您希望有更多级别)对于那些应始终受 状态影响的键CAPS LOCK
  • TWO_LEVEL(或THREE_LEVELFOUR_LEVEL等)表示不应受 状态影响CAPS LOCK而仅受该键影响的Shift键。
...
    // row 1 (E)
    key.type[group1]="ALPHABETIC"; <<-----------
    key <TLDE> {    [     question,     exclam,         masculine,      ordfeminine ]   };
    key <AE01> {    [     braceleft,    1                                           ]   };
    key <AE02> {    [     bracketleft,  2,              periodcentered              ]   };
    key <AE03> {    [     parenleft,    3,              EuroSign                    ]   };
    key <AE04> {    [     less,         4                                           ]   };
    key <AE05> {    [     slash,        5                                           ]   };
    ...
    // for further definitions where caps lock should not affect, use the following: 
    key.type[group1]="TWO_LEVEL";
    ... 
...

b) 更改每个单独的密钥

这是另一个上下文中的示例,以防您希望为每个键单独设置不同的键类型。基本上,键类型是在键定义“内部”设置的,而在块情况下,它是在外部定义的并应用于后续键定义。

partial xkb_symbols "swap_menu_rctrl_print" {
    // for newer thinkpad keyboards with print screen in the wrong place
    key <PRSC> {
        type= "TWO_LEVEL",
        symbols[Group1]= [ Control_R, Menu ]
    };
    key <RCTL> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ Menu ]
    };
};

一般来说,你可以看看更复杂的布局的定义,例如德国T3布局的定义/usr/share/X11/xkb/de

在此输入图像描述

相关内容