xkb编译是如何工作的?

xkb编译是如何工作的?

在一种“从头开始的 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指令,请在括号中传递所需指令的名称。例如,要将美国布局与Composeon一起使用Menu,请使用

xkb_symbols { include "us+compose(menu)" }

你可以问setxkbmap产生可接受的输入xkbcomp。传递-print选项以查看输出,而不是将键盘映射推送到服务器。用setxkbmap、 、-compat-geometry-keycodes-types设置对应的xkb_xxx-layoutxkb_symbols

setxkbmap -layout "us+compose(menu)" -print

其实,我上面的遗漏撒了谎,还有一个更简单的方法:信息在拱门维基。如果您想了解如何配置系统,无论您是否使用 Arch Linux,Arch wiki 都是一个极好的资源。

相关内容