如何在X.org中枚举所有可用的键盘布局?

时间:2009-08-12 20:35:21

标签: linux x11 keyboard-layout xorg

我有一个输出有限数量的键码的设备(例如键盘 - 楔形条码扫描器),我想知道这些键码将在所有可能的键盘布局上键入什么。我想编写一个X11客户端,将键盘布局设置为每个已安装的键盘映射,然后记录从设备为每个按键接收的Unicode。

如何获取所有已安装的键盘布局列表?

1 个答案:

答案 0 :(得分:5)

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