カスタムキーボードレイアウトから個々のキーをCaps Lockコントロールにインポートするにはどうすればよいですか?シフトロックしたくない

カスタムキーボードレイアウトから個々のキーをCaps Lockコントロールにインポートするにはどうすればよいですか?シフトロックしたくない

私のカスタムキーボードレイアウトにはすでに次の行があります。

    // 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は文字で動作します。

今、文字とこの行にはCaps Lockを適用し、Shiftlockなどのキーボードの他のキーは適用しないようにします。どうすればいいですか?

(Shiftlock:特定のキーを押して放すと、キーボードで押すすべてのキーがShiftキーを押すのと同じです。文字キーだけでなく、矢印キーの出力も変更されますが、InsertこれHomeは私が望むものではありません。)

これは、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_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

ここに画像の説明を入力してください。

関連情報