символ для ключевого кода в Python - PullRequest
2 голосов
/ 24 декабря 2009

Я хочу иметь возможность преобразовать строку в код ключа, чтобы написать ее с помощью Xlib (для имитации действий пользователя в linux). Код ключа не ascii, а код, который вы получаете, когда используете xev на

linuxKeyPress event, serial 33, synthetic NO, window 0x6400001,
    root 0x13c, subw 0x0, time 51212100, (259,9), root:(262,81),
    state 0x0, keycode 24 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

для примера код клавиши для 'a' - 24

Я могу легко определить, является ли буква буквой «вверх», и затем создать комбинацию ALT + строчная (буква), но я не знаю, как получить код клавиши.

Одним из решений было бы создание списка каждой комбинации (a = 24, b = 56, c = 54, ...), но было бы лучше, если бы была функция.

Я использую азербайджанскую клавиатуру. Различен ли код клавиши для одной и той же буквы на qwerty-клавиатуре?

спасибо

Ответы [ 2 ]

6 голосов
/ 24 декабря 2009

Я нашел этот код , который делает именно то, что я хотел.

Используется функция display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))

3 голосов
/ 24 декабря 2009

Коды клавиш зависят не только от аппаратного обеспечения клавиатуры, но и от предпочтений пользователя для раскладки клавиатуры - например, пользователь может использовать раскладку dvorak на клавиатуре qwerty.

Лучшим решением, вероятно, будет использование python-xlib для поиска информации в соответствии с настройками клавиатуры пользователя. Я не знаю деталей, как это сделать.

Необработанным решением было бы запустить xmodmap -pke и проанализировать вывод.

...