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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
# Keyboard
Simple library to listen for keystrokes from the keyboard
The code is inspired by [termbox-go](https://github.com/nsf/termbox-go) library.
### Installation
Install and update this go package with `go get -u github.com/eiannone/keyboard`
### Usage
Example of getting a single keystroke:
```go
char, _, err := keyboard.GetSingleKey()
if (err != nil) {
panic(err)
}
fmt.Printf("You pressed: %q\r\n", char)
```
Example of getting a series of keystrokes with a blocking `GetKey()` function:
```go
package main
import (
"fmt"
"github.com/eiannone/keyboard"
)
func main() {
if err := keyboard.Open(); err != nil {
panic(err)
}
defer func() {
_ = keyboard.Close()
}()
fmt.Println("Press ESC to quit")
for {
char, key, err := keyboard.GetKey()
if err != nil {
panic(err)
}
fmt.Printf("You pressed: rune %q, key %X\r\n", char, key)
if key == keyboard.KeyEsc {
break
}
}
}
```
Example of getting a series of keystrokes using a channel:
```go
package main
import (
"fmt"
"github.com/eiannone/keyboard"
)
func main() {
keysEvents, err := keyboard.GetKeys(10)
if err != nil {
panic(err)
}
defer func() {
_ = keyboard.Close()
}()
fmt.Println("Press ESC to quit")
for {
event := <-keysEvents
if event.Err != nil {
panic(event.Err)
}
fmt.Printf("You pressed: rune %q, key %X\r\n", event.Rune, event.Key)
if event.Key == keyboard.KeyEsc {
break
}
}
}
```
|