Захватить нажатие кнопки вверх / вниз - PullRequest
1 голос
/ 16 апреля 2020

Есть ли способ перехватить события нажатия клавиши и окна в окне? Я знаю, что это возможно для widget.Entry, но это для целого fyne.Window или для виджета типа widget.Group, поэтому я могу использовать его как глобальный контейнер ?

Я также Я знаю, что можно зафиксировать события нажатия клавиш, выполнив что-то вроде myWindow.Canvas().SetOnTypedKey(..., но это не то, что я ищу. Я ищу способ узнать, когда указанная клавиша c нажата и когда она отпущена.

1 Ответ

2 голосов
/ 17 апреля 2020

События Key Up и Down являются рабочим расширением c, поэтому его следует использовать с осторожностью. Вы должны быть уверены, что приложение работает как настольное приложение, прежде чем пытаться использовать настольную версию canvas.

Как видите, сначала убедитесь, что оконный холст способен, а затем запросите уведомление о ключевые события рабочего стола.

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

При запуске на мобильном устройстве это просто игнорируется, поэтому убедитесь, что ваше приложение может работать без них для работы на мобильном телефоне.

...