限られた数のキーコードを出力するデバイス(たとえば、キーボードウェッジバーコードスキャナー)があり、それらのキーコードがすべての可能なキーボードレイアウトで何を入力するかを知りたいです。インストールされている各キーマップにキーボードレイアウトを設定し、デバイスからキーを押すたびに受信したUnicodeを記録するX11クライアントを作成したいと思います。
インストールされているすべてのキーボードレイアウトのリストを取得するにはどうすればよいですか?
限られた数のキーコードを出力するデバイス(たとえば、キーボードウェッジバーコードスキャナー)があり、それらのキーコードがすべての可能なキーボードレイアウトで何を入力するかを知りたいです。インストールされている各キーマップにキーボードレイアウトを設定し、デバイスからキーを押すたびに受信したUnicodeを記録するX11クライアントを作成したいと思います。
インストールされているすべてのキーボードレイアウトのリストを取得するにはどうすればよいですか?
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