forked from toolshed/abra
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			905 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			905 B
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |