pygtk: определить ключ является модификатором - PullRequest
6 голосов
/ 27 января 2010

У меня есть обработчик события нажатия клавиши, и мне нужно определить, какая клавиша была нажата: модификатор или нет?

Это не в event.state, потому что это поле работает только тогда, когда модификатор был нажат с чем-то другим, но мне нужно это для отдельной клавиши (то есть просто нажав control или alt, ...).

Ответы [ 2 ]

4 голосов
/ 28 января 2010

Если ваша версия GTK + / PyGTK достаточно свежая, ключевые события имеют атрибут <a href="http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventKey.is-modifier" rel="nofollow noreferrer">is_modifier</a>. Это не задокументировано в справочнике PyGTK, но оно есть в документации по GDK API и доступно через PyGTK. Добавлено в GDK 2.10.

2 голосов
/ 28 января 2010

Вы найдете то, что ищете, в event.keyval. Например, у меня работает следующий код:

def key_press_event(widget, event):
    keyname = gtk.gdk.keyval_name(event.keyval)
    if "Control" in keyname or "Alt" in keyname:
        print "You pressed a modifier!"
...