2009-08-12 4 views
1

私は限られた数のキーコード(例えば、キーボードウェッジバーコードスキャナ)を出力するデバイスを持っており、可能なすべてのキーボードレイアウトでそれらのキーコードが何を入力するかを知りたいと思います。私はインストールされた各キーマップにキーボードレイアウトを設定し、デバイスからの各キー押しに対して受信したUnicodeを記録するX11クライアントを作成したいと思います。X.orgで利用可能なすべてのキーボードレイアウトを列挙するにはどうすればよいですか?

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

答えて

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 
関連する問題