首页 > 解决方案 > 捕获按键向下/向上事件

问题描述

有没有办法在窗口上捕获按键和按键事件?我知道它是可能的,widget.Entry但它是一个整体fyne.Window还是一个小部件,widget.Group所以我可以将它用作全局容器

我也知道可以通过执行类似的操作来捕获按键事件,myWindow.Canvas().SetOnTypedKey(...但这不是我想要的。我正在寻找一种方法来了解何时按下特定键以及何时释放它。

标签: goeventsfyne

解决方案


按键向上和向下事件是特定于桌面的扩展,因此应谨慎使用。在尝试使用桌面版画布之前,您必须确保应用程序作为桌面应用程序运行。

如您所见,首先检查窗口画布是否可用,然后要求在桌面关键事件上得到通知。

    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)
        })
    }

如果在移动设备上运行,这将被忽略,因此请确保您的应用程序可以在没有它们的情况下在移动设备上运行。


推荐阅读