Здесь приведен пример кода: 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, но тогда вам нужно будет передать ему правильные параметры, и документация слишком неясна для моей способности следовать.