Определить, сдвинут ли ключ с помощью Python-xlib - PullRequest
0 голосов
/ 24 января 2012

Я использую python-xlib для генерации некоторых событий нажатия клавиш.Для этого мне нужно определить, нужна ли конкретному символу (скажем, «А») маска смещения или нет.

C XLib определяет метод с именем XConvertCaseкоторые могут быть использованы для этой цели.Тем не менее, я не вижу ничего подобного в python-xlib.

В настоящее время у меня есть следующее, что ужасно:

if key in '~!@#$%^&*()_+|}{":?><' or key.isupper():
    # key needs shifting...

Какой лучший способ определить, нужен ли данный персонажсменная маска

1 Ответ

1 голос
/ 24 января 2012

Здесь приведен пример кода: http://shallowsky.com/software/crikey/pykey-0.1,, однако он использует примерно тот же код, который вы описали как "ужасный".

Вот другой способ, не могу сказать, что он "лучше", просто "другой". Я действительно не знаю, что я делаю, это основано на некотором исследовании плюс некоторые эксперименты и вполне может быть фатально ошибочным:

>>> import Xlib
>>> import Xlib.display
>>> display = Xlib.display.Display()
Xlib.protocol.request.QueryExtension
>>> m = display._keymap_codes
>>> unshifted = [k[0] for k in m if k]
>>> shifted = [k[1] for k in m if k]
>>> ord('[') in shifted
False
>>> ord('?') in shifted
True
>>> ord('}') in shifted
True
>>> ord('/') in shifted
False

Вы также можете использовать Display.get_keyboard_mapping вместо _keymap_codes, но тогда вам нужно будет передать ему правильные параметры, и документация слишком неясна для моей способности следовать.

...