9fans.net/go@v0.0.5/draw/keyboard.go (about) 1 package draw 2 3 import "log" 4 5 const ( 6 KeyFn = '\uF000' 7 8 KeyHome = KeyFn | 0x0D 9 KeyUp = KeyFn | 0x0E 10 KeyPageUp = KeyFn | 0xF 11 KeyPrint = KeyFn | 0x10 12 KeyLeft = KeyFn | 0x11 13 KeyRight = KeyFn | 0x12 14 KeyDown = 0x80 15 KeyView = 0x80 16 KeyPageDown = KeyFn | 0x13 17 KeyInsert = KeyFn | 0x14 18 KeyEnd = KeyFn | 0x18 19 KeyAlt = KeyFn | 0x15 20 KeyShift = KeyFn | 0x16 21 KeyCtl = KeyFn | 0x17 22 KeyBackspace = 0x08 23 KeyDelete = 0x7F 24 KeyEscape = 0x1b 25 KeyEOF = 0x04 26 KeyCmd = 0xF100 27 ) 28 29 // Keyboardctl is the source of keyboard events. 30 type Keyboardctl struct { 31 C <-chan rune // Channel on which keyboard characters are delivered. 32 } 33 34 // InitKeyboard connects to the keyboard and returns a Keyboardctl to listen to it. 35 func (d *Display) InitKeyboard() *Keyboardctl { 36 ch := make(chan rune, 20) 37 go kbdproc(d, ch) 38 return &Keyboardctl{ch} 39 } 40 41 func kbdproc(d *Display, ch chan rune) { 42 for { 43 r, err := d.conn.ReadKbd() 44 if err != nil { 45 log.Fatal("readkbd: ", err) 46 } 47 ch <- r 48 } 49 }