Ubuntu

XKB 無法辨識我的自定義佈局

  • June 25, 2021

我為我的 Lubuntu 18.04 基於 Colemak 創建了一個自定義鍵盤佈局(文件名為“brc”),並將其複製到 /usr/share/X11/xkb/symbols:

default partial
xkb_symbols "basic" {
   name[Group1]= "brc";

   // Alphanumeric section
   key <TLDE> { [   apostrophe,        quotedbl,        notsign,          notsign ] };
   key <AE01> { [            1,          exclam,    onesuperior,   exclamdown ] };
   key <AE02> { [            2,              at,    twosuperior,          onehalf ] };
   key <AE03> { [            3,      numbersign,  threesuperior,    threequarters ] };
   key <AE04> { [            4,          dollar,       sterling,       onequarter ] };
   key <AE05> { [            5,         percent,           cent,     threeeighths ] };
   key <AE06> { [            6,  dead_diaeresis,        notsign,        diaeresis ] };
   key <AE07> { [            7,       ampersand,      braceleft,     seveneighths ] };
   key <AE08> { [            8,        asterisk,    bracketleft,        trademark ] };
   key <AE09> { [            9,       parenleft,   bracketright,        plusminus ] };
   key <AE10> { [            0,      parenright,     braceright,           degree ] };
   key <AE11> { [        minus,      underscore,         endash,     questiondown ] };
   key <AE12> { [        equal,            plus,        section,      dead_ogonek ] };
   key <AE13> { [ bracketright,      braceright,      masculine,        masculine ] };
   key <BKSP> { [    BackSpace,       BackSpace,      BackSpace,        BackSpace ] };

   key <AD01> { [            q,               Q,          slash,            slash ] };
   key <AD02> { [            w,               W,       question,         question ] };
   key <AD03> { [            f,               F,       EuroSign,         EuroSign ] };
   key <AD04> { [            p,               P,          thorn,            THORN ] };
   key <AD05> { [            g,               G                                   ] }; 
   key <AD06> { [            j,               J,            yen                   ] };
   key <AD07> { [            l,               L                                   ] };
   key <AD08> { [            u,               U                                   ] };
   key <AD09> { [            y,               Y,         oacute,           Oacute ] };
   key <AD10> { [     ccedilla,        Ccedilla,                                  ] };
   key <AD11> { [   dead_acute,      dead_grave,         acute,             grave ] };
   key <AD12> { [  bracketleft,       braceleft,    ordfeminine,      dead_macron ] };

   key <AC01> { [            a,               A,             ae,               AE ] }; 
   key <AC02> { [            r,               R,     registered,       registered ] };
   key <AC03> { [            s,               S                                   ] };
   key <AC04> { [            t,               T                                   ] };
   key <AC05> { [            d,               D                                   ] };
   key <AC06> { [            h,               H                                   ] };
   key <AC07> { [            n,               N                                   ] };
   key <AC08> { [            e,               E                                   ] };
   key <AC09> { [            i,               I                                   ] };
   key <AC10> { [            o,               O,             oe,           OE     ] };
   key <AC11> { [   dead_tilde, dead_circumflex,     asciitilde,     asciicircum  ] };
   key <AC12> { [        slash,        question,   questiondown                   ] };

   key <AB01> { [            z,               Z,  guillemotleft                   ] };
   key <AB02> { [            x,               X, guillemotright                   ] };
   key <AB03> { [            c,               C       copyright,        copyright ] }; 
   key <AB04> { [            v,               V                                   ] }; 
   key <AB05> { [            b,               B                                   ] };
   key <AB06> { [            k,               K                                   ] };
   key <AB07> { [            m,               M,             mu,               mu ] };
   key <AB08> { [        comma,            less                                   ] };
   key <AB09> { [       period,         greater                                   ] };
   key <AB10> { [    semicolon,           colon                                   ] }; 

   key <SPCE> { [        space,           space,          space,     nobreakspace ] };

// Configures the "," for the numeric keypad
   include "kpdl(comma)"

// Configures the use of the AltGr key
   include "level3(ralt_switch)"
};

我還更改了 /usr/share/X11/xkb/rules 中的以下文件:

在 evdev.xml

   <layout>
     <configItem>
       <name>brc</name>
       <shortDescription>custom-clmk</shortDescription>
       <description>custom-colemak-abnt2</description>
       <languageList>
          <iso639Id>por</iso639Id>
       </languageList>
     </configItem>
     <variantList/>
   </layout>

在 evdev.lst

! layout
 brc             abnt2+colemak

這是結果:

~$ setxkbmap -v brc
Warning! Multiple definitions of keyboard layout
        Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+brc+inet(evdev)
geometry:   pc(pc105)
Error loading new keyboard description

另外,這是我目前的佈局:

~$ setxkbmap -v
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+br+inet(evdev)
geometry:   pc(pc105)

如何讓 xkb 辨識我的自定義佈局?

AD10如果您只想設置兩個級別,則在 Ccedilla 之後似乎有一個逗號打破了定義。您也只設置了兩個級別的其他鍵似乎很好。

在 AB03 中 C 和版權之間也缺少逗號。

   key <AD10> { [     ccedilla,        Ccedilla                                   ] };
   //    ...
   key <AB03> { [            c,               C,      copyright,        copyright ] }; 
...

我決定嘗試使用 Xmodmap 來重新映射我的鍵盤佈局而不是 XKB,並且效果很好。與 Xmodmap 相比,在 XKB 中創建自定義佈局似乎過於復雜,我推薦 Xah Lee關於後者的教程。謝謝你的幫助。

引用自:https://unix.stackexchange.com/questions/654798