github.com/vmware/transport-go@v1.3.4/plank/pkg/server/vt100_windows.go (about) 1 package server 2 3 import ( 4 "golang.org/x/crypto/ssh/terminal" 5 "os" 6 "syscall" 7 "unsafe" 8 ) 9 10 func init() { 11 // enable VT100 escape sequence on Windows Console. 12 // credit: https://github.com/eliukblau/pixterm/blob/master/cmd/pixterm/pixterm_windows.go 13 var consoleMode int32 14 handle := int(os.Stdout.Fd()) 15 16 if terminal.IsTerminal(handle) { 17 kernel32 := syscall.NewLazyDLL("kernel32.dll") 18 procGetConsoleMode := kernel32.NewProc("GetConsoleMode") 19 procSetConsoleMode := kernel32.NewProc("SetConsoleMode") 20 21 procGetConsoleMode.Call(uintptr(handle), uintptr(unsafe.Pointer(&consoleMode))) 22 consoleMode |= 0x0004 23 procSetConsoleMode.Call(uintptr(handle), uintptr(consoleMode)) 24 } 25 }