Come emulare/spoofare l'evento keypress in Haskell?Come emulare/spoofare l'evento keypress in Haskell?
Ho un tastierino numerico su schermo nel mio Gui che voglio usare per scrivere in un numero di ingressi di testo nella finestra. La tastiera è composta da widget di pulsanti e ciò che voglio fare è che il gestore onButtonClicked
invii un keyPressEvent
in modo che il carattere/numero appropriato sia scritto nella voce di testo che ha lo stato attivo. Ho iniziato cercando in Graphics.UI.Gtk.Gdk.Events
e feci un evento keypress
Event my1Event = Key True True Graphics.UI.Gtk.Gdk.Events.currentTime [] False False False 0xffb1 "KP_1" Nothing
Non riuscivo a capire come inviare questo evento. Comunque risulta che Event è deprecato e dovrebbe usare EventM. Ho trovato widgetEvent :: WidgetClass self => self -> EventM t Bool
in Graphics.UI.Gtk.Abstract.Widget
. Nell'API:
Funzione raramente utilizzata. Questa funzione è usata per emettere i segnali di evento su un widget (quei segnali non dovrebbero mai essere emessi senza usare questa funzione per farlo). Se si desidera sintetizzare un evento, non utilizzare questa funzione; invece, usa mainDoEvent in modo che l'evento si comporti come se fosse nella coda degli eventi.
Così ho guardato mainDoEvent :: EventM t()
in Graphics.UI.Gtk.General.General
ma sono incerto come utilizzare EventM
per creare pressione di un tasto e non poteva trovare un esempio di mainDoEvent
in uso. Qualcuno può consigliarmi come creare un evento keypress utilizzando EventM
e passarlo a mainDoEvent
o in qualche altro modo per farlo? Grazie.
Questa domanda è probabilmente più su GTK che Haskell. Vedi [here] (http://developer.gnome.org/gtk/2.24/gtk-General.html#gtk-main-do-event) per l'API sottostante, che sembra essere esposta attraverso un involucro FFI banale in questo Astuccio. –