1
0
Fork 0
gilo/gilo.go

35 lines
608 B
Go

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