Input.cpp revision 3c80a4a044865bdf1289c7896baffa1c082d835c
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 23bool KeyEvent::hasDefaultAction(int32_t keyCode) { 24 switch (keyCode) { 25 case KEYCODE_HOME: 26 case KEYCODE_BACK: 27 case KEYCODE_CALL: 28 case KEYCODE_ENDCALL: 29 case KEYCODE_VOLUME_UP: 30 case KEYCODE_VOLUME_DOWN: 31 case KEYCODE_POWER: 32 case KEYCODE_CAMERA: 33 case KEYCODE_HEADSETHOOK: 34 case KEYCODE_MENU: 35 case KEYCODE_NOTIFICATION: 36 case KEYCODE_FOCUS: 37 case KEYCODE_SEARCH: 38 case KEYCODE_MEDIA_PLAY_PAUSE: 39 case KEYCODE_MEDIA_STOP: 40 case KEYCODE_MEDIA_NEXT: 41 case KEYCODE_MEDIA_PREVIOUS: 42 case KEYCODE_MEDIA_REWIND: 43 case KEYCODE_MEDIA_FAST_FORWARD: 44 case KEYCODE_MUTE: 45 return true; 46 } 47 48 return false; 49} 50 51bool KeyEvent::hasDefaultAction() const { 52 return hasDefaultAction(getKeyCode()); 53} 54 55bool KeyEvent::isSystemKey(int32_t keyCode) { 56 switch (keyCode) { 57 case KEYCODE_MENU: 58 case KEYCODE_SOFT_RIGHT: 59 case KEYCODE_HOME: 60 case KEYCODE_BACK: 61 case KEYCODE_CALL: 62 case KEYCODE_ENDCALL: 63 case KEYCODE_VOLUME_UP: 64 case KEYCODE_VOLUME_DOWN: 65 case KEYCODE_MUTE: 66 case KEYCODE_POWER: 67 case KEYCODE_HEADSETHOOK: 68 case KEYCODE_MEDIA_PLAY_PAUSE: 69 case KEYCODE_MEDIA_STOP: 70 case KEYCODE_MEDIA_NEXT: 71 case KEYCODE_MEDIA_PREVIOUS: 72 case KEYCODE_MEDIA_REWIND: 73 case KEYCODE_MEDIA_FAST_FORWARD: 74 case KEYCODE_CAMERA: 75 case KEYCODE_FOCUS: 76 case KEYCODE_SEARCH: 77 return true; 78 } 79 80 return false; 81} 82 83bool KeyEvent::isSystemKey() const { 84 return isSystemKey(getKeyCode()); 85} 86 87void KeyEvent::initialize( 88 int32_t deviceId, 89 int32_t nature, 90 int32_t action, 91 int32_t flags, 92 int32_t keyCode, 93 int32_t scanCode, 94 int32_t metaState, 95 int32_t repeatCount, 96 nsecs_t downTime, 97 nsecs_t eventTime) { 98 InputEvent::initialize(deviceId, nature); 99 mAction = action; 100 mFlags = flags; 101 mKeyCode = keyCode; 102 mScanCode = scanCode; 103 mMetaState = metaState; 104 mRepeatCount = repeatCount; 105 mDownTime = downTime; 106 mEventTime = eventTime; 107} 108 109// class MotionEvent 110 111void MotionEvent::initialize( 112 int32_t deviceId, 113 int32_t nature, 114 int32_t action, 115 int32_t edgeFlags, 116 int32_t metaState, 117 float xOffset, 118 float yOffset, 119 float xPrecision, 120 float yPrecision, 121 nsecs_t downTime, 122 nsecs_t eventTime, 123 size_t pointerCount, 124 const int32_t* pointerIds, 125 const PointerCoords* pointerCoords) { 126 InputEvent::initialize(deviceId, nature); 127 mAction = action; 128 mEdgeFlags = edgeFlags; 129 mMetaState = metaState; 130 mXOffset = xOffset; 131 mYOffset = yOffset; 132 mXPrecision = xPrecision; 133 mYPrecision = yPrecision; 134 mDownTime = downTime; 135 mPointerIds.clear(); 136 mPointerIds.appendArray(pointerIds, pointerCount); 137 mSampleEventTimes.clear(); 138 mSamplePointerCoords.clear(); 139 addSample(eventTime, pointerCoords); 140} 141 142void MotionEvent::addSample( 143 int64_t eventTime, 144 const PointerCoords* pointerCoords) { 145 mSampleEventTimes.push(eventTime); 146 mSamplePointerCoords.appendArray(pointerCoords, getPointerCount()); 147} 148 149void MotionEvent::offsetLocation(float xOffset, float yOffset) { 150 mXOffset += xOffset; 151 mYOffset += yOffset; 152} 153 154} // namespace android 155