blob: 57f530ae83f6ed4ab75d5afe542a353bafc5dad5 [file] [log] [blame]
khenaidooab1f7bd2019-11-14 14:00:27 -05001// +build windows
2
3package sequences
4
5import (
6 "syscall"
khenaidooab1f7bd2019-11-14 14:00:27 -05007)
8
9var (
10 kernel32Dll *syscall.LazyDLL = syscall.NewLazyDLL("Kernel32.dll")
11 setConsoleMode *syscall.LazyProc = kernel32Dll.NewProc("SetConsoleMode")
12)
13
14func EnableVirtualTerminalProcessing(stream syscall.Handle, enable bool) error {
15 const ENABLE_VIRTUAL_TERMINAL_PROCESSING uint32 = 0x4
16
17 var mode uint32
18 err := syscall.GetConsoleMode(syscall.Stdout, &mode)
19 if err != nil {
20 return err
21 }
22
23 if enable {
24 mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING
25 } else {
26 mode &^= ENABLE_VIRTUAL_TERMINAL_PROCESSING
27 }
28
khenaidood948f772021-08-11 17:49:24 -040029 ret, _, err := setConsoleMode.Call(uintptr(stream), uintptr(mode))
khenaidooab1f7bd2019-11-14 14:00:27 -050030 if ret == 0 {
31 return err
32 }
33
34 return nil
35}