//export onMouse func onMouse(id uintptr, x, y int32, state uint16, button, dir uint8) { theScreen.mu.Lock() w := theScreen.windows[id] theScreen.mu.Unlock() if w == nil { return } // TODO: should a mouse.Event have a separate MouseModifiers field, for // which buttons are pressed during a mouse move? btn := mouse.Button(button) switch btn { case 4: btn = mouse.ButtonWheelUp case 5: btn = mouse.ButtonWheelDown case 6: btn = mouse.ButtonWheelLeft case 7: btn = mouse.ButtonWheelRight } if btn.IsWheel() { if dir != uint8(mouse.DirPress) { return } dir = uint8(mouse.DirStep) } w.Send(mouse.Event{ X: float32(x), Y: float32(y), Button: btn, Modifiers: x11key.KeyModifiers(state), Direction: mouse.Direction(dir), }) }
//export onMouse func onMouse(id uintptr, x, y, state, button, dir int32) { theScreen.mu.Lock() w := theScreen.windows[id] theScreen.mu.Unlock() if w == nil { return } // TODO: should a mouse.Event have a separate MouseModifiers field, for // which buttons are pressed during a mouse move? w.Send(mouse.Event{ X: float32(x), Y: float32(y), Button: mouse.Button(button), Modifiers: x11key.KeyModifiers(uint16(state)), Direction: mouse.Direction(dir), }) }