blob: 76c9da4209350ee4502eb5610648e0c8e4b72562 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// +build linux darwin freebsd netbsd openbsd
package gopass
import (
"io"
"syscall"
"golang.org/x/crypto/ssh/terminal"
)
const lineEnding = "\n"
func getch() (byte, error) {
if oldState, err := terminal.MakeRaw(0); err != nil {
return 0, err
} else {
defer terminal.Restore(0, oldState)
}
var buf [1]byte
if n, err := syscall.Read(0, buf[:]); n == 0 || err != nil {
if err != nil {
return 0, err
}
return 0, io.EOF
}
return buf[0], nil
}
|