MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin-Playground / init

Function init

abineundo/console_windows.go:39–96  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

37}
38
39func init() {
40 debugMode := os.Getenv("DEBUG_MODE") == "1"
41 stdin := windows.Handle(os.Stdin.Fd())
42
43 var mode uint32
44 err := windows.GetConsoleMode(stdin, &mode)
45 if err != nil {
46 if debugMode {
47 logrus.Warnf("调试模式下忽略控制台模式获取失败: %v", err)
48 return // 调试模式下直接返回,跳过后续配置
49 } else {
50 panic(err) // 非调试模式下 panic
51 }
52 }
53
54 mode &^= windows.ENABLE_QUICK_EDIT_MODE // 禁用快速编辑模式
55 mode |= windows.ENABLE_EXTENDED_FLAGS // 启用扩展标志
56
57 mode &^= windows.ENABLE_MOUSE_INPUT // 禁用鼠标输入
58 mode |= windows.ENABLE_PROCESSED_INPUT // 启用控制输入
59
60 mode &^= windows.ENABLE_INSERT_MODE // 禁用插入模式
61 mode |= windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT // 启用输入回显&逐行输入
62
63 mode &^= windows.ENABLE_WINDOW_INPUT // 禁用窗口输入
64 mode &^= windows.ENABLE_VIRTUAL_TERMINAL_INPUT // 禁用虚拟终端输入
65
66 err = windows.SetConsoleMode(stdin, mode)
67 if err != nil {
68 panic(err)
69 }
70
71 stdout := windows.Handle(os.Stdout.Fd())
72 err = windows.GetConsoleMode(stdout, &mode)
73 if err != nil {
74 if debugMode {
75 logrus.Warnf("调试模式下忽略控制台模式获取失败: %v", err)
76 logrus.SetFormatter(&logFormat{hasColor: false})
77 return
78 }
79 panic(err)
80 }
81
82 mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING // 启用虚拟终端处理
83 mode |= windows.ENABLE_PROCESSED_OUTPUT // 启用处理后的输出
84
85 err = windows.SetConsoleMode(stdout, mode)
86 // windows 带颜色 log 自定义格式
87 logrus.SetFormatter(&logFormat{hasColor: err == nil})
88 if err != nil {
89 logrus.Warnln("VT100设置失败, 将以无色模式输出")
90 }
91
92 err = setConsoleTitle("ZeroBot-Plugin " + banner.Version + " " + banner.Copyright)
93 if err != nil {
94 panic(err)
95 }
96}

Callers

nothing calls this directly

Calls 1

setConsoleTitleFunction · 0.85

Tested by

no test coverage detected