package term import "golang.org/x/sys/windows" func makeRaw(fd uintptr) (*State, error) { state, err := SaveState(fd) if err != nil { return nil, err } mode := state.mode // See // -- https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx // -- https://msdn.microsoft.com/en-us/library/windows/desktop/ms683462(v=vs.85).aspx // Disable these modes mode &^= windows.ENABLE_ECHO_INPUT mode &^= windows.ENABLE_LINE_INPUT mode &^= windows.ENABLE_MOUSE_INPUT mode &^= windows.ENABLE_WINDOW_INPUT mode &^= windows.ENABLE_PROCESSED_INPUT // Enable these modes mode |= windows.ENABLE_EXTENDED_FLAGS mode |= windows.ENABLE_INSERT_MODE mode |= windows.ENABLE_QUICK_EDIT_MODE if vtInputSupported { mode |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT } err = windows.SetConsoleMode(windows.Handle(fd), mode) if err != nil { return nil, err } return state, nil }