Как эмулировать / подменить событие нажатия клавиши в Haskell?
У меня есть экранная цифровая клавиатура в моем графическом интерфейсе, которую я хочу использовать для записи в текстовые записи в окне. Клавиатура состоит из виджетов кнопок, и я хочу, чтобы обработчик 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. Я нашел widgetEvent :: WidgetClass self => self -> EventM t Bool
в Graphics.UI.Gtk.Abstract.Widget
. В API это говорит:
Редко используемая функция. Эта функция используется для генерации сигналов событий на виджете (эти сигналы никогда не должны передаваться без использования этой функции). Если вы хотите синтезировать событие, не используйте эту функцию; вместо этого используйте mainDoEvent, чтобы событие велось так, как если бы оно было в очереди событий.
Поэтому я посмотрел на mainDoEvent :: EventM t ()
в Graphics.UI.Gtk.General.General
, но не уверен, как использовать EventM
для создания нажатия клавиши, и не смог найти пример использования mainDoEvent
. Кто-нибудь может посоветовать мне, как создать событие нажатия клавиши с помощью EventM
и передать его на mainDoEvent
или каким-либо другим способом сделать это? Спасибо.