readline
readline copied to clipboard
Can I use `readline.NewRawReader()` as `os.Stdin` on Windows? Can `readline.NewRawReader()` support `Ctrl + Space`?
- Can I use
readline.NewRawReader()
asos.Stdin
on Windows? - Can
readline.NewRawReader()
supportCtrl + Space
?
I want to read Ctrl + Space
on Windows, can readline.NewRawReader()
help?
package main
import (
"fmt"
"os"
"github.com/chzyer/readline"
"golang.org/x/term"
)
func main() {
fd := int(os.Stdin.Fd())
state, err := term.MakeRaw(fd)
if err != nil {
fmt.Println(err)
return
}
defer term.Restore(fd, state)
stdin := readline.NewRawReader()
buf := make([]byte, 100)
for {
n, err := stdin.Read(buf)
fmt.Printf("n = %d, err = %v, buf = %#v\r\n", n, err, buf[:n])
if n > 0 && buf[0] == '\x03' { // `ctrl + c` to exit
break
}
}
}
https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/win32compat/tncon.c Can someone implement this c code in go? preferably without cgo.
Refer to https://github.com/chzyer/readline/blob/master/rawreader_windows.go