2010-01-27 18 views
6

Tengo el controlador key-press-event y necesito determinar qué tipo de clave se ha pulsado: ¿modificador o no?pygtk: determinar la clave es un modificador

No está en event.state, porque este campo solo funciona cuando se presionó el modificador con otra cosa, pero lo necesito para una sola tecla (es decir, simplemente pulsando control o alt, ...).

Respuesta

4

Si su versión de GTK +/PyGTK es lo bastante reciente, eventos clave tienen un atributo is_modifier. No está documentado en la referencia de PyGTK, pero está en la documentación de la API de GDK y está expuesto a través de PyGTK. Fue agregado en GDK 2.10.

2

Encontrarás lo que estás buscando en event.keyval. Por ejemplo, el siguiente código funciona para mí:

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!" 
+0

Tengo algo parecido a lo que has demostrado, pero mucho más grande: MODIFICADORES = ( gtk.keysyms.Control_L, ..... gtk.keysyms.Hyper_L, gtk.keysyms.Hyper_R , gtk.keysyms.Meta_L, gtk.keysyms.Meta_R, ) .... si event.keyval de modificadores: .... pero pensé que podría ser algún otro enfoque – Daniel

Cuestiones relacionadas