问题2:
对于所有可用选项的列表,您可以执行
localectl list-x11-keymap-options
XKB
*.lst
文件夹:
for f in /usr/share/X11/xkb/rules/*.lst; do sed -ne '/^\! option$/{s///; :a' -e 'n;p;ba' -e '}' $f; done | sort -u
(sed reference)
*
如果您正在寻找与交换数字相关的内容,可以附加
| grep -i num
,显示了使用numpad/keypad的几个选项。不幸的是,我认为所有的布局都在相关的模板中列出了数字
字符,这意味着它们内置于区域布局本身(或变体,在
dvorak
问题1:
你可以采取三种方法。
使用替代布局
xmodmap
.Xmodmap
如Arch Wiki上所述,在家中创建文件以覆盖映射
here
.
以下是配置示例:
https://github.com/karma0/layouts/blob/master/home/.Xmodmap
步骤:
-
滴
-
xmodmap $HOME/.Xmodmap
给你的
.profile
-
跑
xkbcomp -xkb $DISPLAY xkbmap
xkbmap
其中包含您当前的配置。
-
修改它以匹配所需的配置。举个例子:
原件:
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE01> { [ exclam, 1 ] };
key <AE02> { [ at, 2 ] };
key <AE03> { [ numbersign, 3 ] };
key <AE04> { [ dollar,i 4 ] };
key <AE05> { [ percent, 5 ] };
key <AE06> { [ asciicircum, 6 ] };
key <AE07> { [ ampersand, 7 ] };
key <AE08> { [ asterisk, 8 ] };
key <AE09> { [ parenleft, 9 ] };
key <AE10> { [ parenright, 0 ] };
-
执行命令
xkbcomp -w 0 xkbmap $DISPLAY
加载新配置。
-
使用获取启动时运行的命令
xinitrc
修改布局并添加新变体
-
/usr/share/X11/xkb/symbols
). 我们将使用
us
文件。
-
在文件中查找您最喜欢的变体;
workman-intl
如果你像我一样。
-
布局,您可以复制该部分,并像我在这里所做的那样对其进行修改(注意,这是从
intl
partial alphanumeric_keys
xkb_symbols "workman-programmer" {
include "us(workman-intl)"
name[Group1]= "English (Workman, intl., with dead keys and num/sym swapped)";
key <AE01> { [ exclam, 1, exclamdown, onesuperior ] };
key <AE02> { [ at, 2, twosuperior, dead_doubleacute ] };
key <AE03> { [ numbersign, 3, threesuperior, dead_macron ] };
key <AE04> { [ dollar, 4, currency, sterling ] };
key <AE05> { [ percent, 5, EuroSign, dead_cedilla ] };
key <AE06> { [ dead_circumflex,6, onequarter, asciicircum ] };
key <AE07> { [ ampersand, 7, onehalf, dead_horn ] };
key <AE08> { [ asterisk, 8, threequarters, dead_ogonek ] };
key <AE09> { [ parenleft, 9, leftsinglequotemark, dead_breve ] };
key <AE10> { [ parenright, 0, rightsinglequotemark, dead_abovering ] };
};
这个
xkb_symbols
变异
; 这个
include
工人国际
变化
布局)。然后,你想要的定义如下。
/usr/share/xkb/rules/base.xml
直到最后
variantList
标签这是我用过的一个:
<variant>
<configItem>
<name>workman-programmer</name>
<description>English (Workman, intl., with dead keys and num/sym swapped)</description>
</configItem>
</variant>
-
! variant
第节
/usr/share/X11/xkb/rules/base.lst
workman-programmer us: English (Workman, intl., with dead keys and num/sys swapped)'
-
-
设置
setxkbmap
使用新变体运行的命令。下面是本演示的示例:
setxkbmap -layout us -variant workman-programmer -option
尽管您可能会尝试,但在开始查找之前,您不会找到文档
xkb
xorg
生态系统
最好的评论可能是:
https://www.charvolant.org/doug/xkb/html/index.html
在你读这篇文章之前,请理解我从来都不想写这篇文章,因为我的资格太低了,但我一直想读它,这是唯一的方法。
此外,这里还有一个链接列表,用于开始学习
xkb
:
https://www.x.org/wiki/XKB/
xkb
因为它安装在您的系统上。这通常低于
/usr/share/X11/xkb
xorg公司
,它在此处提供开发人员文档:
https://www.x.org/wiki/guide/
https://www.x.org/wiki/Development/