forked from fyne-io/fyne
/
input.go
43 lines (37 loc) · 1.1 KB
/
input.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import (
"fyne.io/fyne"
"fyne.io/fyne/driver/desktop"
"fyne.io/fyne/layout"
"fyne.io/fyne/widget"
)
// Input loads a window that shows how input events are handled.
func Input(app fyne.App) {
win := app.NewWindow("Input")
label := widget.NewLabel("Just type...")
generic := widget.NewGroupWithScroller("Generic")
desk := widget.NewGroupWithScroller("Desktop")
win.SetContent(fyne.NewContainerWithLayout(layout.NewBorderLayout(label, nil, nil, nil),
label,
fyne.NewContainerWithLayout(layout.NewGridLayout(2),
generic, desk,
),
))
win.Canvas().SetOnTypedRune(func(r rune) {
prependTo(generic, "Rune: "+string(r))
})
win.Canvas().SetOnTypedKey(func(ev *fyne.KeyEvent) {
prependTo(generic, "Key : "+string(ev.Name))
})
win.Canvas().(desktop.Canvas).SetOnKeyDown(func(ev *fyne.KeyEvent) {
prependTo(desk, "KeyDown: "+string(ev.Name))
})
win.Canvas().(desktop.Canvas).SetOnKeyUp(func(ev *fyne.KeyEvent) {
prependTo(desk, "KeyUp : "+string(ev.Name))
})
win.Resize(fyne.NewSize(300, 300))
win.Show()
}
func prependTo(g *widget.Group, s string) {
g.Prepend(widget.NewLabel(s))
}