Xkb

XKB 配置中的 us:2 模組

  • October 28, 2018

這是我的 XKB 配置:

$ setxkbmap -print
xkb_keymap {
   xkb_keycodes  { include "evdev+aliases(qwerty)" };
   xkb_types     { include "complete"  };
   xkb_compat    { include "complete"  };
   xkb_symbols   { include "pc+gb(custom)+us:2+inet(evdev)"    };
   xkb_geometry  { include "pc(pc105)" };
};

是什麼意思us:2

這意味著您已經定義了兩個佈局,一個gbcustom變體,us一個是預設佈局(即文件中定義的第一個/usr/share/X11/xkb/symbols/us)。

第一個佈局沒有用 a 標記:1,只有第二個用 a標記:2,第三個用標記:3,依此類推。

您的配置沒有定義在佈局之間切換的任何鍵,因此它們可能只能通過 GUI 切換。

例如,您可以定義三種佈局(美國/基本、德語和俄語/語音),可通過Menu鍵切換:

$ setxkbmap -layout us,de,ru -variant basic,,phonetic -option grp:menu_toggle
$ setxkbmap -print
xkb_keymap {
       xkb_keycodes  { include "evdev+aliases(qwerty)" };
       xkb_types     { include "complete"      };
       xkb_compat    { include "complete"      };
       xkb_symbols   { include "pc+us(basic)+de:2+ru(phonetic):3+inet(evdev)+group(menu_toggle)+ctrl(nocaps)"  };
       xkb_geometry  { include "pc(pc105)"     };
};

如果你想查看完整的擴展 xkb 配置,你可以這樣做:

xkbcomp $DISPLAY - | less

這將顯示合併後的三個佈局,例如。對於\關鍵:

xkb_symbols "pc+us(basic)+de:2+ru(phonetic):3+inet(evdev)+group(menu_toggle)+ctrl(nocaps)" {

   name[group1]="English (US)";
   name[group2]="German";
   name[group3]="Russian (phonetic)";
...
   key <BKSL> {
       type[group2]= "FOUR_LEVEL",
       type[group3]= "ALPHABETIC",
       symbols[Group1]= [       backslash,             bar ],
       symbols[Group2]= [      numbersign,      apostrophe, rightsinglequotemark,      dead_breve ],
       symbols[Group3]= [      Cyrillic_e,      Cyrillic_E ]
   };

可以使用相同的xkbcomp工具來載入自定義配置,而不必是 root 並在裡面弄亂系統文件和目錄/usr/share

xkbcomp $DISPLAY ~/.xkb_conf
# modify ~/.xkb_conf
# then load it:
xkbcomp ~/.xkb_conf $DISPLAY

添加最後一行~/.xsession可能會或可能不會與“現代”桌面環境一起使用,這些環境會強制載入具有 C 等效項的固定鍵盤設置,setxkbmap並且不容易被說服不礙事。

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