...
1 package term
2
3 import "golang.org/x/sys/windows"
4
5 func makeRaw(fd uintptr) (*State, error) {
6 state, err := SaveState(fd)
7 if err != nil {
8 return nil, err
9 }
10
11 mode := state.mode
12
13
14
15
16
17
18 mode &^= windows.ENABLE_ECHO_INPUT
19 mode &^= windows.ENABLE_LINE_INPUT
20 mode &^= windows.ENABLE_MOUSE_INPUT
21 mode &^= windows.ENABLE_WINDOW_INPUT
22 mode &^= windows.ENABLE_PROCESSED_INPUT
23
24
25 mode |= windows.ENABLE_EXTENDED_FLAGS
26 mode |= windows.ENABLE_INSERT_MODE
27 mode |= windows.ENABLE_QUICK_EDIT_MODE
28 if vtInputSupported {
29 mode |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT
30 }
31
32 err = windows.SetConsoleMode(windows.Handle(fd), mode)
33 if err != nil {
34 return nil, err
35 }
36 return state, nil
37 }
38
View as plain text