Làm cách nào để mô phỏng sự kiện nhấn phím giả mạo trong Haskell?Làm cách nào để mô phỏng sự kiện nhấn phím giả mạo trong Haskell?
Tôi có bàn phím số trên màn hình trong Gui mà tôi muốn sử dụng để viết vào một số mục nhập văn bản trong cửa sổ. Bàn phím được tạo thành từ các tiện ích nút và những gì tôi muốn làm là xử lý onButtonClicked
gửi keyPressEvent
sao cho số/chữ thích hợp được ghi vào mục văn bản có tiêu điểm. Tôi bắt đầu bằng cách xem Graphics.UI.Gtk.Gdk.Events
và thực hiện một sự kiện nhấn phím
Event my1Event = Key True True Graphics.UI.Gtk.Gdk.Events.currentTime [] False False False 0xffb1 "KP_1" Nothing
Tôi không thể tìm ra cách gửi sự kiện này. Dù sao thì hóa ra Sự kiện sẽ không còn được dùng nữa và nên sử dụng EventM. Tôi đã tìm thấy widgetEvent :: WidgetClass self => self -> EventM t Bool
trong Graphics.UI.Gtk.Abstract.Widget
. Trong api nó nói:
Hàm hiếm khi được sử dụng. Chức năng này được sử dụng để phát ra tín hiệu sự kiện trên một widget (những tín hiệu đó sẽ không bao giờ được phát ra mà không sử dụng chức năng này để làm như vậy). Nếu bạn muốn tổng hợp một sự kiện mặc dù, không sử dụng chức năng này; thay vào đó, hãy sử dụng mainDoEvent để sự kiện sẽ hoạt động như thể nó nằm trong hàng đợi sự kiện.
Vì vậy, tôi đã xem mainDoEvent :: EventM t()
trong Graphics.UI.Gtk.General.General
nhưng không chắc chắn về cách sử dụng EventM
để tạo phím bấm và không thể tìm thấy ví dụ về mainDoEvent
đang sử dụng. Ai cũng có thể tư vấn cho tôi cách tạo sự kiện nhấn phím bằng cách sử dụng EventM
và chuyển nó tới mainDoEvent
hoặc một số cách khác để thực hiện việc này? Cảm ơn.
Câu hỏi này có lẽ nhiều hơn về GTK so với Haskell. Xem [ở đây] (http://developer.gnome.org/gtk/2.24/gtk-General.html#gtk-main-do-event) cho API cơ bản, dường như được hiển thị thông qua trình bao bọc FFI tầm thường trong này trường hợp. –