我有一个输出有限数量的键码的设备(例如键盘楔形条形码扫描仪),我想知道这些键码将在所有可能的键盘布局上键入什么。我想编写一个 X11 客户端,将键盘布局设置为每个已安装的键盘映射,然后记录从设备接收到的每个按键的 Unicode。
如何获取所有已安装键盘布局的列表?
我有一个输出有限数量的键码的设备(例如键盘楔形条形码扫描仪),我想知道这些键码将在所有可能的键盘布局上键入什么。我想编写一个 X11 客户端,将键盘布局设置为每个已安装的键盘映射,然后记录从设备接收到的每个按键的 Unicode。
如何获取所有已安装键盘布局的列表?
x.org 现在将其键盘布局存储在 XML 中。解析可用的布局很容易/usr/share/X11/xkb/rules/base.xml
。Ubuntu 在那个目录中有一个类似evdev.xml
的,我不确定它们有什么不同。在 Python 中:
#!/usr/bin/env python
# Enumerate available xkb layouts
import lxml.etree
repository = "/usr/share/X11/xkb/rules/base.xml"
tree = lxml.etree.parse(file(repository))
layouts = tree.xpath("//layout")
for layout in layouts:
layoutName = layout.xpath("./configItem/name")[0].text
print layoutName
for variant in layout.xpath("./variantList/variant/configItem/name"):
variantName = variant.text
print layoutName, variantName