我为 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)"
};