如何在Haskell中模拟/欺骗按键事件?如何在Haskell中模拟/欺骗按键事件?
我在我的Gui中有一个屏幕上的数字键盘,我想用它来写入窗口中的多个文本entrys。小键盘由按钮小部件组成,我想要做的是让onButtonClicked
处理程序发送keyPressEvent
,以便将适当的字符/数字写入具有焦点的文本条目中。我开始寻找Graphics.UI.Gtk.Gdk.Events
并做了按键事件
Event my1Event = Key True True Graphics.UI.Gtk.Gdk.Events.currentTime [] False False False 0xffb1 "KP_1" Nothing
我无法弄清楚如何调度此事件。无论如何事实证明,Event已被弃用,应该使用EventM。我在Graphics.UI.Gtk.Abstract.Widget
找到了widgetEvent :: WidgetClass self => self -> EventM t Bool
。在它的API说:
很少使用的功能。该功能用于发送小部件上的事件信号(如果不使用此功能,则不应该发射这些信号)。如果你想综合一个事件,不要使用这个函数;相反,使用mainDoEvent,这样事件的行为就好像它在事件队列中一样。
所以我看着mainDoEvent :: EventM t()
在Graphics.UI.Gtk.General.General
但我不确定如何使用EventM
创建一个按键,但没有找到的使用mainDoEvent
一个例子。任何人都可以告诉我如何使用EventM
创建按键事件并将其传递给mainDoEvent
或其他方式来执行此操作?谢谢。
这个问题可能比Haskell更多关于GTK。请参阅[这里](http://developer.gnome.org/gtk/2.24/gtk-General.html#gtk-main-do-event)以了解底层API,它似乎通过一个简单的FFI包装器暴露于此案件。 –