2
* Copyright © 2015 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Robert Carr <robert.carr@canonical.com>
19
#ifndef MIR_TOOLKIT_POINTER_INPUT_EVENT_H_
20
#define MIR_TOOLKIT_POINTER_INPUT_EVENT_H_
26
* \addtogroup mir_toolkit
33
* An event type describing a change in pointer device state.
35
typedef struct MirPointerInputEvent MirPointerInputEvent;
38
* Possible pointer actions
41
/* A pointer button has come up */
42
mir_pointer_input_event_action_button_up = 0,
43
/* A pointer button has gone down */
44
mir_pointer_input_event_action_button_down = 1,
45
/* The pointer has entered the surface to which this event was delivered */
46
mir_pointer_input_event_action_enter = 2,
47
/* The pointer has left the surface to which this event was delivered */
48
mir_pointer_input_event_action_leave = 3,
49
/* Axis values have changed for the pointer */
50
mir_pointer_input_event_action_motion = 4
51
} MirPointerInputEventAction;
54
* Identifiers for pointer axis
57
/* Absolute axis containing the x coordinate of the pointer */
58
mir_pointer_input_axis_x = 0,
59
/* Absolute axis containing the y coordinate of the pointer */
60
mir_pointer_input_axis_y = 1,
61
/* Relative axis containing ticks reported by the vertical scroll wheel */
62
mir_pointer_input_axis_vscroll = 2,
63
/* Relative axis containing ticks reported by the horizontal scroll wheel */
64
mir_pointer_input_axis_hscroll = 3
65
} MirPointerInputEventAxis;
68
* Identifiers for pointer buttons
71
mir_pointer_input_button_primary = 1,
72
mir_pointer_input_button_secondary = 2,
73
mir_pointer_input_button_tertiary = 3,
74
mir_pointer_input_button_back = 4,
75
mir_pointer_input_button_forward = 5
76
} MirPointerInputEventButton;
79
* Retrieve the modifier keys pressed when the pointer action occured.
81
* \param [in] event The pointer event
82
* \return The modifier mask
84
MirInputEventModifiers mir_pointer_input_event_get_modifiers(MirPointerInputEvent const* event);
87
* Retrieve the action which occured to generate a given pointer event.
89
* \param [in] event The pointer event
90
* \return Action performed by the pointer
92
MirPointerInputEventAction mir_pointer_input_event_get_action(MirPointerInputEvent const* event);
95
* Retrieve the state of a given pointer button when the action occurred.
97
* \param [in] event The pointer event
98
* \param [in] button The button to check
100
* \return Whether the given button is depressed
102
bool mir_pointer_input_event_get_button_state(MirPointerInputEvent const* event,
103
MirPointerInputEventButton button);
106
* Retrieve the axis value reported by a given pointer event.
108
* \param [in] event The pointer event
109
* \param [in] axis The axis to retreive a value from
110
* \return The value of the given axis
112
float mir_pointer_input_event_get_axis_value(MirPointerInputEvent const* event,
113
MirPointerInputEventAxis axis);
120
#endif /* MIR_TOOLKIT_POINTER_INPUT_EVENT_H_ */