在一种“从头开始的 Linux”环境中,我遇到了 xkbcomp 在 X 启动时失败的问题。我发现我什至无法在我的标准 Ubuntu 机器上编译键盘映射:
xkbcomp -w 10 -R/usr/share/X11/xkb -xkm rules/evdev dummy.km
这会导致错误:
Warning: Changing root directory to "/usr/share/X11/xkb"
syntax error: line 16 of rules/evdev
last scanned symbol is:
Errors encountered in rules/evdev; not compiled.
xkbcomp应该如何使用?
答案1
/usr/share/X11/xkb/rules/evdev
包含一个规范规则。规则告诉 XKB 如何从零件构建键盘映射,它们不指定特定的键盘映射。的输入xkbcomp
需要是键位图。
弄清楚输入应该是什么的最简单方法是
阅读手册页(哈哈不)
阅读官方文档(好像)
读到误导性的名字不可靠的指南(这太好了,在半官方网站上有链接X.org 维基,但尽管如此有信息实际上并没有说明这是 ) errr 的输入xkbcomp
,在互联网上询问?哦,你刚刚这么做了。
嗯,xkbcomp
双向有效。因此,如果您只是要求它从显示器上反编译键盘映射,您将看到一些可接受的输入。
xkbcomp :0 - | less
语法是:
xkb_keymap {
xkb_keycodes { … };
xkb_types { … };
xkb_compat { … };
xkb_symbols { … };
xkb_geometry { … };
}
后面大括号的内容xkb_xxx
是进入目录中文件的内容/usr/share/X11/xkb/xxx
。您可以使用include
语句来告诉xkbcomp
读取现有文件。请注意,您需要在文件名之间添加一个include
指令。+
有些文件包含多个xkb_xxx
指令,请在括号中传递所需指令的名称。例如,要将美国布局与Compose
on一起使用Menu,请使用
xkb_symbols { include "us+compose(menu)" }
你可以问setxkbmap
产生可接受的输入xkbcomp
。传递-print
选项以查看输出,而不是将键盘映射推送到服务器。用setxkbmap
、 、-compat
、-geometry
、-keycodes
来-types
设置对应的xkb_xxx
、-layout
和xkb_symbols
。
setxkbmap -layout "us+compose(menu)" -print
其实,我上面的遗漏撒了谎,还有一个更简单的方法:信息在拱门维基。如果您想了解如何配置系统,无论您是否使用 Arch Linux,Arch wiki 都是一个极好的资源。