piframe-go/vendor/github.com/eiannone/keyboard
2020-08-29 19:11:30 -04:00
..
.gitignore Vendoring updates 2020-08-29 19:11:30 -04:00
AUTHORS Vendoring updates 2020-08-29 19:11:30 -04:00
keyboard.go Vendoring updates 2020-08-29 19:11:30 -04:00
keyboard_common.go Vendoring updates 2020-08-29 19:11:30 -04:00
keyboard_windows.go Vendoring updates 2020-08-29 19:11:30 -04:00
LICENSE Vendoring updates 2020-08-29 19:11:30 -04:00
README.md Vendoring updates 2020-08-29 19:11:30 -04:00
syscalls.go Vendoring updates 2020-08-29 19:11:30 -04:00
syscalls_linux.go Vendoring updates 2020-08-29 19:11:30 -04:00
terminfo.go Vendoring updates 2020-08-29 19:11:30 -04:00

Keyboard

Simple library to listen for keystrokes from the keyboard

The code is inspired by 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:

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:

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:

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