1
0
Fork 0
gilo/gilo.go

35 lines
608 B
Go
Raw Normal View History

2021-03-18 16:30:04 -04:00
package main
import (
2021-03-18 19:15:19 -04:00
"bufio"
2021-03-18 16:30:04 -04:00
"os"
2021-03-19 16:39:49 -04:00
"timshome.page/gilo/internal/rune"
"timshome.page/gilo/internal/terminal"
2021-03-18 16:30:04 -04:00
)
2021-03-19 12:46:43 -04:00
func main() {
2021-03-19 16:39:49 -04:00
// Go to proper raw mode, but restore canonical mode at exit
oldState := terminal.RawOn()
defer terminal.RawOff(oldState)
2021-03-18 19:15:19 -04:00
reader := bufio.NewReader(os.Stdin)
for {
char, _, err := reader.ReadRune()
if err != nil {
panic(err)
}
2021-03-19 12:46:43 -04:00
// Ugliest syntax structure ever?
2021-03-18 19:15:19 -04:00
switch {
2021-03-19 16:39:49 -04:00
case char == rune.Ctrl('q'):
terminal.OutLn("bye!")
2021-03-18 19:15:19 -04:00
return
2021-03-19 16:39:49 -04:00
case rune.IsCtrl(char):
terminal.OutLn("%d", char)
2021-03-19 12:03:55 -04:00
default:
2021-03-19 16:39:49 -04:00
terminal.OutLn("%d ('%c')", char, char)
2021-03-18 19:15:19 -04:00
}
}
2021-03-18 16:30:04 -04:00
}