chzyer / readline

Readline is a pure go(golang) implementation for GNU-Readline kind library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can I use `readline.NewRawReader()` as `os.Stdin` on Windows? Can `readline.NewRawReader()` support `Ctrl + Space`?

lonnywong opened this issue · comments

  • Can I use readline.NewRawReader() as os.Stdin on Windows?
  • Can readline.NewRawReader() support Ctrl + 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
		}
	}
}