问题是,是否有办法简化与键盘布局相关的xkb配置的结构?
正如下面进一步详细解释的,有 5 个独立的位置存储了对键盘布局变体的引用(evdev.xml
、evdev.lst
、base.xml
、base.lst
和 中各自的布局描述文件内/usr/share/X11/symbols/
)。如果只需要所需的数量,那就会简单得多(在 .lst 和 .xml 中存储相同的信息没有帮助,因为键盘布局的所有添加或删除不需要在5个地方)当然,这也使整个配置对用户来说不太清楚(因为必须在多个地方以不必要的冗余方式设置完全相同的配置会令人困惑)。也许有一种方法可以简化这个过程?如果有的话,这将是这个问题所需的答案。鉴于有许多不同的发行版,我希望不是所有发行版都有这个 xkb 配置设置。
这是 xkb 配置在我的 GNU/Linux (Ubuntu 12.04LTS) 机器上的样子。为了添加新的键盘布局以供我使用,必须修改大量文件。
/usr/share/X11/xkb/rules/evdev
/usr/share/X11/xkb/rules/evdev.xml
/usr/share/X11/xkb/rules/evdev.lst
/usr/share/X11/xkb/rules/base
/usr/share/X11/xkb/rules/base.xml
/usr/share/X11/xkb/rules/base.lst
在我看来,base
文件的本质版本是evdev
文件的副本,知道它们是否可以像这些文件一样成为符号链接会很有趣
/usr/share/X11/xkb/rules/xorg
/usr/share/X11/xkb/rules/xorg.lst
/usr/share/X11/xkb/rules/xorg.xml
执行这个小测试:
1.
user@box:/$ cat /usr/share/X11/xkb/rules/evdev.lst | grep Greek
gr Greek
simple gr: Greek (simple)
extended gr: Greek (extended)
nodeadkeys gr: Greek (eliminate dead keys)
polytonic gr: Greek (polytonic)
2.
user@box:/$ cat /usr/share/X11/xkb/rules/evdev.xml | grep Greek
<description>Greek</description>
<description>Greek (simple)</description>
<description>Greek (extended)</description>
<description>Greek (eliminate dead keys)</description>
<description>Greek (polytonic)</description>
ofencito@freak:/usr/share/X11/xkb/rules$
显示两个文件实际上包含完全相同的数据(这使得相同的信息存储在 4 个不同的位置 - 即使忽略前面提到的符号链接)。
最终,键盘布局本身存储在文件系统结构中/usr/share/X11/xkb/symbols
,该结构再次存储对相应命名的文件中的语言布局和变体的引用。为了保留我们的希腊语示例,有一个文件/usr/share/X11/xkb/symbols/gr
。看看这个产量:
user@box:/$ cat /usr/share/X11/xkb/symbols/gr | grep xkb_symbols
xkb_symbols "basic" {
name[Group1] = "Greek";
xkb_symbols "simple" {
name[Group1] = "Greek (simple)";
xkb_symbols "bare" {
xkb_symbols "extended" {
name[Group1] = "Greek (extended)";
xkb_symbols "polytonic" {
name[Group1] = "Greek (polytonic)";
xkb_symbols "nodeadkeys" {
name[Group1] = "Greek (eliminate dead keys)";
此时,完全相同的信息已冗余存储在 5 个位置。
有没有办法简化这个“混乱”呢?因为我只熟悉 Ubuntu,所以我当然想知道其他发行版是否可能找到了更少混乱的方法来处理键盘布局?
答案1
我认为实施是匆忙完成的。参见这里:(使用Chrome的谷歌翻译)
https://www.linux.org.ru/forum/general/12078555
所以有些地方只阅读.lst
忽略base.xml
但它们包含的信息并不完全相同,我猜xml
是更完整,但不确定。