timer/keyboard.go

38 lines
513 B
Go

package main
import "github.com/eiannone/keyboard"
type Keyboard struct {
Events chan byte
}
func NewKeyboard() (*Keyboard, error) {
err := keyboard.Open()
return &Keyboard{
Events: make(chan byte),
}, err
}
func (k *Keyboard) Listen() {
defer func() {
recover()
}()
for {
r, _, err := keyboard.GetKey()
if err != nil {
continue
}
b := byte(r)
k.Events <- b
}
}
func (k *Keyboard) Next() byte {
return <-k.Events
}
func (k *Keyboard) Close() {
keyboard.Close()
close(k.Events)
}