// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package mouse defines an event for mouse input. // // See the golang.org/x/mobile/app package for details on the event model. package mouse // import "golang.org/x/mobile/event/mouse" import ( "fmt" "golang.org/x/mobile/event/key" ) // Event is a mouse event. type Event struct { // X and Y are the mouse location, in pixels. X, Y float32 // Button is the mouse button being pressed or released. Its value may be // zero, for a mouse move or drag without any button change. Button Button // TODO: have a field to hold what other buttons are down, for detecting // drags or button-chords. // Modifiers is a bitmask representing a set of modifier keys: // key.ModShift, key.ModAlt, etc. Modifiers key.Modifiers // Direction is the direction of the mouse event: DirPress, DirRelease, // or DirNone (for mouse moves or drags). Direction Direction // TODO: add a Device ID, for multiple input devices? // TODO: add a time.Time? } // Button is a mouse button. type Button int32 // IsWheel reports whether the button is for a scroll wheel. func (b Button) IsWheel() bool { return b < 0 } // TODO: have a separate axis concept for wheel up/down? How does that relate // to joystick events? const ( ButtonNone Button = +0 ButtonLeft Button = +1 ButtonMiddle Button = +2 ButtonRight Button = +3 ButtonWheelUp Button = -1 ButtonWheelDown Button = -2 ButtonWheelLeft Button = -3 ButtonWheelRight Button = -4 ) // Direction is the direction of the mouse event. type Direction uint8 const ( DirNone Direction = 0 DirPress Direction = 1 DirRelease Direction = 2 // DirStep is a simultaneous press and release, such as a single step of a // mouse wheel. // // Its value equals DirPress | DirRelease. DirStep Direction = 3 ) func (d Direction) String() string { switch d { case DirNone: return "None" case DirPress: return "Press" case DirRelease: return "Release" case DirStep: return "Step" default: return fmt.Sprintf("mouse.Direction(%d)", d) } }