1
我有一個輸出有限數量的鍵碼(例如鍵盤楔形條碼掃描器)的設備,我想知道這些鍵碼將在所有可能的鍵盤佈局上鍵入的內容。我想編寫一個X11客戶端,它將鍵盤佈局設置爲每個安裝的鍵盤映射,然後記錄從設備接收到的每個鍵的Unicode。如何枚舉X.org中所有可用的鍵盤佈局?
如何獲得所有安裝的鍵盤佈局列表?
我有一個輸出有限數量的鍵碼(例如鍵盤楔形條碼掃描器)的設備,我想知道這些鍵碼將在所有可能的鍵盤佈局上鍵入的內容。我想編寫一個X11客戶端,它將鍵盤佈局設置爲每個安裝的鍵盤映射,然後記錄從設備接收到的每個鍵的Unicode。如何枚舉X.org中所有可用的鍵盤佈局?
如何獲得所有安裝的鍵盤佈局列表?
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