我為 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 識別我的自訂佈局?
答案1
AD10
如果您只想設定兩個級別,Ccedilla 後面似乎有一個逗號,它會破壞定義。您也只設置兩個級別的其他鍵似乎很好。
AB03 中 C 和版權之間也缺少一個逗號。
key <AD10> { [ ccedilla, Ccedilla ] };
// ...
key <AB03> { [ c, C, copyright, copyright ] };
...
答案2
我決定嘗試使用 Xmodmap 來重新映射我的鍵盤佈局而不是 XKB,效果非常好。與 Xmodmap 相比,在 XKB 中建立自訂佈局似乎太複雜了,我推薦 Xah Lee的教程關於後者。感謝您的協助。
答案3
對於那些想嘗試更正佈局的人:
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 <BKSL> { [ 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 <LSGT> { [ backslash, bar, masculine ] };
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 <AB11> { [ slash, question, questiondown ] };
key <SPCE> { [ space, space, space, nobreakspace ] };
key <KPPT> { [ period ] };
// Configures the "," for the numeric keypad
include "kpdl(comma)"
// Configures the use of the AltGr key
include "level3(ralt_switch)"
};