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  }