有没有一种方法可以捕获窗口上的按键向下和按键向上事件?我知道widget.Entry
是可能的,但它是整个fyne.Window
还是像widget.Group
这样的小部件,所以我可以将其用作全局容器?
我也知道可以通过做myWindow.Canvas().SetOnTypedKey(...
之类的事情来捕捉按键事件,但这不是我想要的。我正在寻找一种方法来了解特定的键何时被按下和何时被释放。
键向上和向下事件是特定于桌面的扩展,因此应小心使用。在尝试使用桌面版本的画布之前,必须确保应用程序作为桌面应用程序运行。
如您所见,首先检查窗口画布是否可用,然后要求收到桌面键事件的通知。
if deskCanvas, ok := w.Canvas().(desktop.Canvas); ok {
deskCanvas.SetOnKeyDown(func(key *fyne.KeyEvent) {
log.Println("Desktop key down", key)
})
deskCanvas.SetOnKeyUp(func(key *fyne.KeyEvent) {
log.Println("Desktop key up", key)
})
}
如果在移动设备上运行,这将被忽略,因此请确保您的应用程序可以在没有它们的情况下在移动设备中运行。