blob: 0e6f2f53ee133cc18b9e983717daf9cb5624fecf [file] [log] [blame]
Jeff Browne839a582010-04-22 18:58:52 -07001//
2// Copyright 2010 The Android Open Source Project
3//
4// Provides a pipe-based transport for native events in the NDK.
5//
6#define LOG_TAG "Input"
7
8//#define LOG_NDEBUG 0
9
10#include <ui/Input.h>
11
12namespace android {
13
14// class InputEvent
15
16void InputEvent::initialize(int32_t deviceId, int32_t nature) {
17 mDeviceId = deviceId;
18 mNature = nature;
19}
20
21// class KeyEvent
22
23void KeyEvent::initialize(
24 int32_t deviceId,
25 int32_t nature,
26 int32_t action,
27 int32_t flags,
28 int32_t keyCode,
29 int32_t scanCode,
30 int32_t metaState,
31 int32_t repeatCount,
32 nsecs_t downTime,
33 nsecs_t eventTime) {
34 InputEvent::initialize(deviceId, nature);
35 mAction = action;
36 mFlags = flags;
37 mKeyCode = keyCode;
38 mScanCode = scanCode;
39 mMetaState = metaState;
40 mRepeatCount = repeatCount;
41 mDownTime = downTime;
42 mEventTime = eventTime;
43}
44
45// class MotionEvent
46
47void MotionEvent::initialize(
48 int32_t deviceId,
49 int32_t nature,
50 int32_t action,
51 int32_t edgeFlags,
52 int32_t metaState,
Jeff Brownf4a4ec22010-06-16 01:53:36 -070053 float xOffset,
54 float yOffset,
Jeff Browne839a582010-04-22 18:58:52 -070055 float xPrecision,
56 float yPrecision,
57 nsecs_t downTime,
58 nsecs_t eventTime,
59 size_t pointerCount,
60 const int32_t* pointerIds,
61 const PointerCoords* pointerCoords) {
62 InputEvent::initialize(deviceId, nature);
63 mAction = action;
64 mEdgeFlags = edgeFlags;
65 mMetaState = metaState;
Jeff Brownf4a4ec22010-06-16 01:53:36 -070066 mXOffset = xOffset;
67 mYOffset = yOffset;
Jeff Browne839a582010-04-22 18:58:52 -070068 mXPrecision = xPrecision;
69 mYPrecision = yPrecision;
70 mDownTime = downTime;
71 mPointerIds.clear();
72 mPointerIds.appendArray(pointerIds, pointerCount);
73 mSampleEventTimes.clear();
74 mSamplePointerCoords.clear();
75 addSample(eventTime, pointerCoords);
76}
77
78void MotionEvent::addSample(
79 int64_t eventTime,
80 const PointerCoords* pointerCoords) {
81 mSampleEventTimes.push(eventTime);
82 mSamplePointerCoords.appendArray(pointerCoords, getPointerCount());
83}
84
85void MotionEvent::offsetLocation(float xOffset, float yOffset) {
Jeff Brownf4a4ec22010-06-16 01:53:36 -070086 mXOffset += xOffset;
87 mYOffset += yOffset;
Jeff Browne839a582010-04-22 18:58:52 -070088}
89
90} // namespace android
91
92// NDK APIs
93
94using android::InputEvent;
95using android::KeyEvent;
96using android::MotionEvent;
97
98int32_t input_event_get_type(const input_event_t* event) {
99 return reinterpret_cast<const InputEvent*>(event)->getType();
100}
101
102int32_t input_event_get_device_id(const input_event_t* event) {
103 return reinterpret_cast<const InputEvent*>(event)->getDeviceId();
104}
105
106int32_t input_event_get_nature(const input_event_t* event) {
107 return reinterpret_cast<const InputEvent*>(event)->getNature();
108}
109
110int32_t key_event_get_action(const input_event_t* key_event) {
111 return reinterpret_cast<const KeyEvent*>(key_event)->getAction();
112}
113
114int32_t key_event_get_flags(const input_event_t* key_event) {
115 return reinterpret_cast<const KeyEvent*>(key_event)->getFlags();
116}
117
118int32_t key_event_get_key_code(const input_event_t* key_event) {
119 return reinterpret_cast<const KeyEvent*>(key_event)->getKeyCode();
120}
121
122int32_t key_event_get_scan_code(const input_event_t* key_event) {
123 return reinterpret_cast<const KeyEvent*>(key_event)->getScanCode();
124}
125
126int32_t key_event_get_meta_state(const input_event_t* key_event) {
127 return reinterpret_cast<const KeyEvent*>(key_event)->getMetaState();
128}
129int32_t key_event_get_repeat_count(const input_event_t* key_event) {
130 return reinterpret_cast<const KeyEvent*>(key_event)->getRepeatCount();
131}
132
133int64_t key_event_get_down_time(const input_event_t* key_event) {
134 return reinterpret_cast<const KeyEvent*>(key_event)->getDownTime();
135}
136
137int64_t key_event_get_event_time(const input_event_t* key_event) {
138 return reinterpret_cast<const KeyEvent*>(key_event)->getEventTime();
139}
140
141int32_t motion_event_get_action(const input_event_t* motion_event) {
142 return reinterpret_cast<const MotionEvent*>(motion_event)->getAction();
143}
144
145int32_t motion_event_get_meta_state(const input_event_t* motion_event) {
146 return reinterpret_cast<const MotionEvent*>(motion_event)->getMetaState();
147}
148
149int32_t motion_event_get_edge_flags(const input_event_t* motion_event) {
150 return reinterpret_cast<const MotionEvent*>(motion_event)->getEdgeFlags();
151}
152
153int64_t motion_event_get_down_time(const input_event_t* motion_event) {
154 return reinterpret_cast<const MotionEvent*>(motion_event)->getDownTime();
155}
156
157int64_t motion_event_get_event_time(const input_event_t* motion_event) {
158 return reinterpret_cast<const MotionEvent*>(motion_event)->getEventTime();
159}
160
Jeff Brownf4a4ec22010-06-16 01:53:36 -0700161float motion_event_get_x_offset(const input_event_t* motion_event) {
162 return reinterpret_cast<const MotionEvent*>(motion_event)->getXOffset();
163}
164
165float motion_event_get_y_offset(const input_event_t* motion_event) {
166 return reinterpret_cast<const MotionEvent*>(motion_event)->getYOffset();
167}
168
Jeff Browne839a582010-04-22 18:58:52 -0700169float motion_event_get_x_precision(const input_event_t* motion_event) {
170 return reinterpret_cast<const MotionEvent*>(motion_event)->getXPrecision();
171}
172
173float motion_event_get_y_precision(const input_event_t* motion_event) {
174 return reinterpret_cast<const MotionEvent*>(motion_event)->getYPrecision();
175}
176
177size_t motion_event_get_pointer_count(const input_event_t* motion_event) {
178 return reinterpret_cast<const MotionEvent*>(motion_event)->getPointerCount();
179}
180
181int32_t motion_event_get_pointer_id(const input_event_t* motion_event, size_t pointer_index) {
182 return reinterpret_cast<const MotionEvent*>(motion_event)->getPointerId(pointer_index);
183}
184
Jeff Brownf4a4ec22010-06-16 01:53:36 -0700185float motion_event_get_raw_x(const input_event_t* motion_event, size_t pointer_index) {
186 return reinterpret_cast<const MotionEvent*>(motion_event)->getRawX(pointer_index);
Jeff Browne839a582010-04-22 18:58:52 -0700187}
188
Jeff Brownf4a4ec22010-06-16 01:53:36 -0700189float motion_event_get_raw_y(const input_event_t* motion_event, size_t pointer_index) {
190 return reinterpret_cast<const MotionEvent*>(motion_event)->getRawY(pointer_index);
Jeff Browne839a582010-04-22 18:58:52 -0700191}
192
193float motion_event_get_x(const input_event_t* motion_event, size_t pointer_index) {
194 return reinterpret_cast<const MotionEvent*>(motion_event)->getX(pointer_index);
195}
196
197float motion_event_get_y(const input_event_t* motion_event, size_t pointer_index) {
198 return reinterpret_cast<const MotionEvent*>(motion_event)->getY(pointer_index);
199}
200
201float motion_event_get_pressure(const input_event_t* motion_event, size_t pointer_index) {
202 return reinterpret_cast<const MotionEvent*>(motion_event)->getPressure(pointer_index);
203}
204
205float motion_event_get_size(const input_event_t* motion_event, size_t pointer_index) {
206 return reinterpret_cast<const MotionEvent*>(motion_event)->getSize(pointer_index);
207}
208
209size_t motion_event_get_history_size(const input_event_t* motion_event) {
210 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistorySize();
211}
212
213int64_t motion_event_get_historical_event_time(input_event_t* motion_event,
214 size_t history_index) {
215 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(
216 history_index);
217}
218
Jeff Brownf4a4ec22010-06-16 01:53:36 -0700219float motion_event_get_historical_raw_x(input_event_t* motion_event, size_t pointer_index,
220 size_t history_index) {
221 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(
222 pointer_index, history_index);
223}
224
225float motion_event_get_historical_raw_y(input_event_t* motion_event, size_t pointer_index,
226 size_t history_index) {
227 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(
228 pointer_index, history_index);
229}
230
Jeff Browne839a582010-04-22 18:58:52 -0700231float motion_event_get_historical_x(input_event_t* motion_event, size_t pointer_index,
232 size_t history_index) {
233 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalX(
234 pointer_index, history_index);
235}
236
237float motion_event_get_historical_y(input_event_t* motion_event, size_t pointer_index,
238 size_t history_index) {
239 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalY(
240 pointer_index, history_index);
241}
242
243float motion_event_get_historical_pressure(input_event_t* motion_event, size_t pointer_index,
244 size_t history_index) {
245 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(
246 pointer_index, history_index);
247}
248
249float motion_event_get_historical_size(input_event_t* motion_event, size_t pointer_index,
250 size_t history_index) {
251 return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalSize(
252 pointer_index, history_index);
253}