2

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

インストールされているすべてのキーボードレイアウトのリストを取得するにはどうすればよいですか?

4

1 に答える 1

6

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
于 2009-08-13T13:26:20.653 に答える