Event Types
===========
The `type' field in `Gpm_Event' is made up of bit-wide flags. The
existing bit masks belong to two groups: bare events and cooked events.
The bit-mask `GPM_BARE_EVENTS' is provided to extract bare events, by
and-ing (`&') it with the `type' field. For any event, exactly one bit
will be set in the resulting bitmask.
Bare events are the following:
`GPM_MOVE'
A motion event, with all buttons up.
`GPM_DRAG'
A motion event, but one or more buttons are kept pressed.
`GPM_DOWN'
A button press event. The `buttons' field will report which
buttons are pressed after the event.
`GPM_UP'
A button release event. The `buttons' field will report which
buttons are being released. Note that this is different from the
previous case.
`GPM_ENTER'
This means "enter in the current Region of Interest", and such
event can only happen if the high-level library is used. When the
type is `GPM_ENTER', all the other fields are undefined. Note:High Level Lib.
`GPM_LEAVE'
This is only delivered by the high level library, too. Events of
type `GPM_LEAVE' have all other fields undefined.
Cooked events are the following:
`GPM_SINGLE'
This bit may be set at button-press, drag and button release
events, and can be used to identify a single press. The time
interval used to choose a double click from two single clicks is
set by a parameter in the daemon (configurable at daemon
invocation).
`GPM_DOUBLE'
Used to identify a double click (press, drag, release)
`GPM_TRIPLE'
Used to identify a triple click (press, drag, release)
`GPM_MFLAG'
The "motion flag" is true if some dragging happened between
button-press and button-release. It can be used by those
applications which respond to events at button release. It is
available at drag and release.