mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package terminal
|
|
|
|
import (
|
|
"os"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
var inputmode uint32
|
|
|
|
// RestoreInputMode 还原输入模式
|
|
func RestoreInputMode() error {
|
|
if inputmode == 0 {
|
|
return nil
|
|
}
|
|
stdin := windows.Handle(os.Stdin.Fd())
|
|
return windows.SetConsoleMode(stdin, inputmode)
|
|
}
|
|
|
|
// DisableQuickEdit 禁用快速编辑
|
|
func DisableQuickEdit() error {
|
|
stdin := windows.Handle(os.Stdin.Fd())
|
|
|
|
var mode uint32
|
|
err := windows.GetConsoleMode(stdin, &mode)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
inputmode = mode
|
|
|
|
mode &^= windows.ENABLE_QUICK_EDIT_MODE // 禁用快速编辑模式
|
|
mode |= windows.ENABLE_EXTENDED_FLAGS // 启用扩展标志
|
|
|
|
mode &^= windows.ENABLE_MOUSE_INPUT // 禁用鼠标输入
|
|
mode |= windows.ENABLE_PROCESSED_INPUT // 启用控制输入
|
|
|
|
mode &^= windows.ENABLE_INSERT_MODE // 禁用插入模式
|
|
mode |= windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT // 启用输入回显&逐行输入
|
|
|
|
mode &^= windows.ENABLE_WINDOW_INPUT // 禁用窗口输入
|
|
mode &^= windows.ENABLE_VIRTUAL_TERMINAL_INPUT // 禁用虚拟终端输入
|
|
|
|
return windows.SetConsoleMode(stdin, mode)
|
|
}
|