2009-08-12 2 views
1

제한된 수의 키 코드 (예 : 키보드 웨지 바코드 스캐너)를 출력하는 장치가 있으며 모든 가능한 키보드 레이아웃에서 키 코드가 무엇을 입력하는지 알고 싶습니다. 각 설치된 키맵에 자판 배열을 설정하고 장치에서 각 키 누르기에 대해 수신 한 유니 코드를 기록하는 X11 클라이언트를 작성하고 싶습니다.X.org에서 사용 가능한 모든 자판 배열을 어떻게 열거합니까?

설치된 모든 키보드 레이아웃 목록을 얻으려면 어떻게해야합니까?

답변

5

x.org는 키보드 레이아웃을 XML로 저장합니다. 사용 가능한 레이아웃을 쉽게 파싱 할 수 있습니다 (/usr/share/X11/xkb/rules/base.xml). 우분투는 그 디렉토리에 비슷한 evdev.xml을 가지고 있습니다. 어떻게 다른지 잘 모르겠습니다. 파이썬에서 :

#!/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 
관련 문제