diff options
author | 2013-07-19 22:45:50 +0000 | |
---|---|---|
committer | 2013-07-19 22:45:51 +0000 | |
commit | 7caaeeb6a8a4c4d299b14617c643f96a5055f2f7 (patch) | |
tree | 03b394a1d5e6d06f0a34e2b44a96b4779fc0ec26 | |
parent | c5236deeb0b0025a3dba54d688590d9146b5dbf3 (diff) | |
parent | 7ddd11035b25b0a2dbf09f9d9efd3fca701f0a79 (diff) |
Merge "Add input device property for buttons under touchpads"
-rw-r--r-- | core/java/android/view/InputDevice.java | 16 | ||||
-rw-r--r-- | core/jni/android_view_InputDevice.cpp | 6 | ||||
-rw-r--r-- | services/input/InputReader.cpp | 4 | ||||
-rw-r--r-- | services/input/InputReader.h | 1 |
4 files changed, 23 insertions, 4 deletions
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java index 2a761c1b380f..34fa73df832f 100644 --- a/core/java/android/view/InputDevice.java +++ b/core/java/android/view/InputDevice.java @@ -51,6 +51,7 @@ public final class InputDevice implements Parcelable { private final int mKeyboardType; private final KeyCharacterMap mKeyCharacterMap; private final boolean mHasVibrator; + private final boolean mHasButtonUnderPad; private final ArrayList<MotionRange> mMotionRanges = new ArrayList<MotionRange>(); private Vibrator mVibrator; // guarded by mMotionRanges during initialization @@ -343,7 +344,8 @@ public final class InputDevice implements Parcelable { // Called by native code. private InputDevice(int id, int generation, String name, String descriptor, boolean isExternal, int sources, - int keyboardType, KeyCharacterMap keyCharacterMap, boolean hasVibrator) { + int keyboardType, KeyCharacterMap keyCharacterMap, + boolean hasVibrator, boolean hasButtonUnderPad) { mId = id; mGeneration = generation; mName = name; @@ -353,6 +355,7 @@ public final class InputDevice implements Parcelable { mKeyboardType = keyboardType; mKeyCharacterMap = keyCharacterMap; mHasVibrator = hasVibrator; + mHasButtonUnderPad = hasButtonUnderPad; } private InputDevice(Parcel in) { @@ -365,6 +368,7 @@ public final class InputDevice implements Parcelable { mKeyboardType = in.readInt(); mKeyCharacterMap = KeyCharacterMap.CREATOR.createFromParcel(in); mHasVibrator = in.readInt() != 0; + mHasButtonUnderPad = in.readInt() != 0; for (;;) { int axis = in.readInt(); @@ -612,6 +616,15 @@ public final class InputDevice implements Parcelable { } /** + * Reports whether the device has a button under its touchpad + * @return Whether the device has a button under its touchpad + * @hide + */ + public boolean hasButtonUnderPad() { + return mHasButtonUnderPad; + } + + /** * Provides information about the range of values for a particular {@link MotionEvent} axis. * * @see InputDevice#getMotionRange(int) @@ -733,6 +746,7 @@ public final class InputDevice implements Parcelable { out.writeInt(mKeyboardType); mKeyCharacterMap.writeToParcel(out, flags); out.writeInt(mHasVibrator ? 1 : 0); + out.writeInt(mHasButtonUnderPad ? 1 : 0); final int numRanges = mMotionRanges.size(); for (int i = 0; i < numRanges; i++) { diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp index 8ef5d0b58582..e5e3db076f8b 100644 --- a/core/jni/android_view_InputDevice.cpp +++ b/core/jni/android_view_InputDevice.cpp @@ -57,7 +57,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi gInputDeviceClassInfo.ctor, deviceInfo.getId(), deviceInfo.getGeneration(), nameObj.get(), descriptorObj.get(), deviceInfo.isExternal(), deviceInfo.getSources(), deviceInfo.getKeyboardType(), - kcmObj.get(), deviceInfo.hasVibrator())); + kcmObj.get(), deviceInfo.hasVibrator(), deviceInfo.hasButtonUnderPad())); const Vector<InputDeviceInfo::MotionRange>& ranges = deviceInfo.getMotionRanges(); for (size_t i = 0; i < ranges.size(); i++) { @@ -86,8 +86,8 @@ int register_android_view_InputDevice(JNIEnv* env) FIND_CLASS(gInputDeviceClassInfo.clazz, "android/view/InputDevice"); gInputDeviceClassInfo.clazz = jclass(env->NewGlobalRef(gInputDeviceClassInfo.clazz)); - GET_METHOD_ID(gInputDeviceClassInfo.ctor, gInputDeviceClassInfo.clazz, - "<init>", "(IILjava/lang/String;Ljava/lang/String;ZIILandroid/view/KeyCharacterMap;Z)V"); + GET_METHOD_ID(gInputDeviceClassInfo.ctor, gInputDeviceClassInfo.clazz, "<init>", + "(IILjava/lang/String;Ljava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZ)V"); GET_METHOD_ID(gInputDeviceClassInfo.addMotionRange, gInputDeviceClassInfo.clazz, "addMotionRange", "(IIFFFFF)V"); diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp index 992001fc62d5..07731fc68425 100644 --- a/services/input/InputReader.cpp +++ b/services/input/InputReader.cpp @@ -2631,6 +2631,7 @@ void TouchInputMapper::populateDeviceInfo(InputDeviceInfo* info) { info->addMotionRange(AMOTION_EVENT_AXIS_GENERIC_4, mSource, y.min, y.max, y.flat, y.fuzz, y.resolution); } + info->setButtonUnderPad(mParameters.hasButtonUnderPad); } } @@ -2796,6 +2797,9 @@ void TouchInputMapper::configureParameters() { mParameters.deviceType = Parameters::DEVICE_TYPE_POINTER; } + mParameters.hasButtonUnderPad= + getEventHub()->hasInputProperty(getDeviceId(), INPUT_PROP_BUTTONPAD); + String8 deviceTypeString; if (getDevice()->getConfiguration().tryGetProperty(String8("touch.deviceType"), deviceTypeString)) { diff --git a/services/input/InputReader.h b/services/input/InputReader.h index 7e303e4bc3d6..3ed426f43821 100644 --- a/services/input/InputReader.h +++ b/services/input/InputReader.h @@ -1205,6 +1205,7 @@ protected: bool hasAssociatedDisplay; bool associatedDisplayIsExternal; bool orientationAware; + bool hasButtonUnderPad; enum GestureMode { GESTURE_MODE_POINTER, |