github.com/Mrs4s/go-cqhttp@v1.2.0/global/terminal/quick_edit_windows.go (about) 1 package terminal 2 3 import ( 4 "os" 5 6 "golang.org/x/sys/windows" 7 ) 8 9 var inputmode uint32 10 11 // RestoreInputMode 还原输入模式 12 func RestoreInputMode() error { 13 if inputmode == 0 { 14 return nil 15 } 16 stdin := windows.Handle(os.Stdin.Fd()) 17 return windows.SetConsoleMode(stdin, inputmode) 18 } 19 20 // DisableQuickEdit 禁用快速编辑 21 func DisableQuickEdit() error { 22 stdin := windows.Handle(os.Stdin.Fd()) 23 24 var mode uint32 25 err := windows.GetConsoleMode(stdin, &mode) 26 if err != nil { 27 return err 28 } 29 inputmode = mode 30 31 mode &^= windows.ENABLE_QUICK_EDIT_MODE // 禁用快速编辑模式 32 mode |= windows.ENABLE_EXTENDED_FLAGS // 启用扩展标志 33 34 mode &^= windows.ENABLE_MOUSE_INPUT // 禁用鼠标输入 35 mode |= windows.ENABLE_PROCESSED_INPUT // 启用控制输入 36 37 mode &^= windows.ENABLE_INSERT_MODE // 禁用插入模式 38 mode |= windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT // 启用输入回显&逐行输入 39 40 mode &^= windows.ENABLE_WINDOW_INPUT // 禁用窗口输入 41 mode &^= windows.ENABLE_VIRTUAL_TERMINAL_INPUT // 禁用虚拟终端输入 42 43 return windows.SetConsoleMode(stdin, mode) 44 }