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

标签 linux x11 keyboard-layout xorg

我有一个输出有限数量的键码的设备(例如键盘楔形条形码扫描仪),我想知道这些键码将在所有可能的键盘布局上键入什么。我想编写一个 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

关于linux - 如何枚举 X.org 中所有可用的键盘布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268572/

相关文章:

linux - MOVDQU指令+页边界

x11 - xQuartz 极慢的响应

keyboard-layout - 为什么在编程 dvorak 时会出现乱序的数字序列?

iphone - 从 Web 表单控制 iPhone 键盘的初始切换状态(和布局?)

linux - CentOS SSH 到 AWS EC2 实例崩溃/卡住

ruby-on-rails - 在 Mac 和 Linux 机器上创建等效的 Rails 工作区

linux - 运行 Valgrind 会减慢我的应用程序的速度吗?

git : mergetool meld on windows using putty - errors

c++ - XPending 函数被阻塞

java - 键盘布局库,用于在给定输入键的情况下查找相邻键(最好使用 Java)