Keyboard-Layout
在我的自定義鍵盤佈局中,如何將單個鍵包含在大寫鎖定控制範圍中?我不想要換檔鎖
在我的自定義鍵盤佈局中,我已經有了這些行:
// 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 一樣。不僅字母鍵,而且
Insert
,Home
和箭頭鍵輸出會改變,這不是我想要的)這在 Windows 中是可能的,使用 Microsoft 鍵盤佈局管理器,因為在那裡,鍵定義包含一個鍵的所有 4 個級別的狀態,以及 Capslock 的另一個級別。但我不知道 xkb 是否允許。
(上限 1:此鍵上的上限啟用,上限 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>
如果我理解正確,您不想更改 的預設行為
CAPS LOCK
,而只想更改 的狀態打開時數字行的行為CAPS LOCK
。在這種情況下,您可以選擇以下選項。a) 按塊更改類型
基本上使用:
ALPHABETIC
(或者#_LEVEL_ALPHABETIC
如果您希望有更多級別)對於那些應該始終受狀態影響的鍵CAPS LOCK
。TWO_LEVEL
(或THREE_LEVEL
,FOUR_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