github.com/as/shiny@v0.8.2/driver/win32/mouse.go (about) 1 2 // +build windows 3 4 package win32 5 6 import ( 7 "syscall" 8 9 "github.com/as/shiny/event/mouse" 10 "github.com/as/shiny/screen" 11 ) 12 13 type Mouse = mouse.Event 14 15 var MouseEvent func(hwnd syscall.Handle, e mouse.Event) 16 17 type mouseevent struct { 18 dir mouse.Direction 19 but mouse.Button 20 } 21 22 func (m *mouseevent) send(hwnd syscall.Handle, msg uint32, wp, lp uintptr) (lResult uintptr) { 23 screen.SendMouse(mouse.Event{ 24 Direction: m.dir, 25 Button: m.but, 26 X: float32(uint16(lp)), 27 Y: float32(uint16(lp >> 16)), 28 Modifiers: keyModifiers(), 29 }) 30 return 0 31 } 32 func sendMouseEvent(hwnd syscall.Handle, msg uint32, wp, lp uintptr) (lResult uintptr) { 33 return mousetab[msg].send(hwnd, msg, wp, lp) 34 } 35 36 var mousetab = [...]mouseevent{ 37 WmLbuttondown: {mouse.DirPress, mouse.ButtonLeft}, 38 WmMbuttondown: {mouse.DirPress, mouse.ButtonMiddle}, 39 WmRbuttondown: {mouse.DirPress, mouse.ButtonRight}, 40 WmLbuttonup: {mouse.DirRelease, mouse.ButtonLeft}, 41 WmMbuttonup: {mouse.DirRelease, mouse.ButtonMiddle}, 42 WmRbuttonup: {mouse.DirRelease, mouse.ButtonRight}, 43 WmMousemove: {}, 44 }