Input.cpp revision 5c225b1680e696ae8bbf505a1997d6f720672f74
1// 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, 53 float xOffset, 54 float yOffset, 55 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; 66 mXOffset = xOffset; 67 mYOffset = yOffset; 68 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) { 86 mXOffset += xOffset; 87 mYOffset += yOffset; 88} 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 161float 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 169float 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 185float 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); 187} 188 189float 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); 191} 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 219float 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 231float 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} 254