diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-10-01 17:08:34 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-10-01 17:08:34 -0700 |
commit | efb8a3d6e058c8bc90bb9da6c58dde453f359851 (patch) | |
tree | 4c356bd35a137e560b1a563a9ceff6366d90ca9d | |
parent | 82a1372070e75df1a0201b22e33514bbb0d7b5e5 (diff) | |
parent | 57fa3e8b4c94125ddb5be015dd7fbde4a458894f (diff) | |
download | frameworks_base-efb8a3d6e058c8bc90bb9da6c58dde453f359851.zip frameworks_base-efb8a3d6e058c8bc90bb9da6c58dde453f359851.tar.gz frameworks_base-efb8a3d6e058c8bc90bb9da6c58dde453f359851.tar.bz2 |
am 57fa3e8b: am 9e32a438: Merge "Support haptic feedback for virtual keys defined in key layout." into gingerbread
Merge commit '57fa3e8b4c94125ddb5be015dd7fbde4a458894f'
* commit '57fa3e8b4c94125ddb5be015dd7fbde4a458894f':
Support haptic feedback for virtual keys defined in key layout.
-rw-r--r-- | core/java/android/view/WindowManagerPolicy.java | 1 | ||||
-rw-r--r-- | include/ui/Input.h | 4 | ||||
-rw-r--r-- | include/ui/InputReader.h | 4 | ||||
-rwxr-xr-x | include/ui/KeycodeLabels.h | 2 | ||||
-rw-r--r-- | libs/ui/InputReader.cpp | 10 | ||||
-rw-r--r-- | services/jni/com_android_server_InputManager.cpp | 18 |
6 files changed, 17 insertions, 22 deletions
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index c12cd48..954b3e7 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -73,6 +73,7 @@ public interface WindowManagerPolicy { public final static int FLAG_ALT_GR = 0x00000020; public final static int FLAG_MENU = 0x00000040; public final static int FLAG_LAUNCHER = 0x00000080; + public final static int FLAG_VIRTUAL = 0x00000100; public final static int FLAG_INJECTED = 0x01000000; diff --git a/include/ui/Input.h b/include/ui/Input.h index 21baf32..ee40b85 100644 --- a/include/ui/Input.h +++ b/include/ui/Input.h @@ -73,7 +73,8 @@ namespace android { * policy decisions such as waking from device sleep. */ enum { - /* These flags originate in RawEvents and are generally set in the key map. */ + /* These flags originate in RawEvents and are generally set in the key map. + * See also labels for policy flags in KeycodeLabels.h. */ POLICY_FLAG_WAKE = 0x00000001, POLICY_FLAG_WAKE_DROPPED = 0x00000002, @@ -83,6 +84,7 @@ enum { POLICY_FLAG_ALT_GR = 0x00000020, POLICY_FLAG_MENU = 0x00000040, POLICY_FLAG_LAUNCHER = 0x00000080, + POLICY_FLAG_VIRTUAL = 0x00000100, POLICY_FLAG_RAW_MASK = 0x0000ffff, diff --git a/include/ui/InputReader.h b/include/ui/InputReader.h index d3fbaf7..2209cb8 100644 --- a/include/ui/InputReader.h +++ b/include/ui/InputReader.h @@ -103,10 +103,6 @@ public: virtual bool getDisplayInfo(int32_t displayId, int32_t* width, int32_t* height, int32_t* orientation) = 0; - /* Provides feedback for a virtual key down. - */ - virtual void virtualKeyDownFeedback() = 0; - /* Intercepts a key event. * The policy can use this method as an opportunity to perform power management functions * and early event preprocessing such as updating policy flags. diff --git a/include/ui/KeycodeLabels.h b/include/ui/KeycodeLabels.h index c8d6ffc..f71d9cd 100755 --- a/include/ui/KeycodeLabels.h +++ b/include/ui/KeycodeLabels.h @@ -142,6 +142,7 @@ static const KeycodeLabel KEYCODES[] = { { NULL, 0 } }; +// See also policy flags in Input.h. static const KeycodeLabel FLAGS[] = { { "WAKE", 0x00000001 }, { "WAKE_DROPPED", 0x00000002 }, @@ -151,6 +152,7 @@ static const KeycodeLabel FLAGS[] = { { "ALT_GR", 0x00000020 }, { "MENU", 0x00000040 }, { "LAUNCHER", 0x00000080 }, + { "VIRTUAL", 0x00000100 }, { NULL, 0 } }; diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp index 1d35e10..825febc 100644 --- a/libs/ui/InputReader.cpp +++ b/libs/ui/InputReader.cpp @@ -993,7 +993,10 @@ void KeyboardInputMapper::applyPolicyAndDispatch(nsecs_t when, uint32_t policyFl int32_t keyEventAction = down ? AKEY_EVENT_ACTION_DOWN : AKEY_EVENT_ACTION_UP; int32_t keyEventFlags = AKEY_EVENT_FLAG_FROM_SYSTEM; if (policyFlags & POLICY_FLAG_WOKE_HERE) { - keyEventFlags = keyEventFlags | AKEY_EVENT_FLAG_WOKE_HERE; + keyEventFlags |= AKEY_EVENT_FLAG_WOKE_HERE; + } + if (policyFlags & POLICY_FLAG_VIRTUAL) { + keyEventFlags |= AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY; } getDispatcher()->notifyKey(when, getDeviceId(), AINPUT_SOURCE_KEYBOARD, policyFlags, @@ -2162,10 +2165,7 @@ void TouchInputMapper::applyPolicyAndDispatchVirtualKey(nsecs_t when, uint32_t p int32_t keyCode, int32_t scanCode, nsecs_t downTime) { int32_t metaState = mContext->getGlobalMetaState(); - if (keyEventAction == AKEY_EVENT_ACTION_DOWN) { - getPolicy()->virtualKeyDownFeedback(); - } - + policyFlags |= POLICY_FLAG_VIRTUAL; int32_t policyActions = getPolicy()->interceptKey(when, getDeviceId(), keyEventAction == AKEY_EVENT_ACTION_DOWN, keyCode, scanCode, policyFlags); diff --git a/services/jni/com_android_server_InputManager.cpp b/services/jni/com_android_server_InputManager.cpp index bf6840c..3d67e8d 100644 --- a/services/jni/com_android_server_InputManager.cpp +++ b/services/jni/com_android_server_InputManager.cpp @@ -182,7 +182,6 @@ public: virtual bool getDisplayInfo(int32_t displayId, int32_t* width, int32_t* height, int32_t* orientation); - virtual void virtualKeyDownFeedback(); virtual int32_t interceptKey(nsecs_t when, int32_t deviceId, bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags); virtual int32_t interceptSwitch(nsecs_t when, int32_t switchCode, int32_t switchValue, @@ -464,17 +463,6 @@ bool NativeInputManager::isScreenBright() { return android_server_PowerManagerService_isScreenBright(); } -void NativeInputManager::virtualKeyDownFeedback() { -#if DEBUG_INPUT_READER_POLICY - LOGD("virtualKeyDownFeedback"); -#endif - - JNIEnv* env = jniEnv(); - - env->CallVoidMethod(mCallbacksObj, gCallbacksClassInfo.virtualKeyDownFeedback); - checkAndClearExceptionFromCallback(env, "virtualKeyDownFeedback"); -} - int32_t NativeInputManager::interceptKey(nsecs_t when, int32_t deviceId, bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags) { #if DEBUG_INPUT_READER_POLICY @@ -483,6 +471,12 @@ int32_t NativeInputManager::interceptKey(nsecs_t when, when, deviceId, down, keyCode, scanCode, policyFlags); #endif + if (down && (policyFlags & POLICY_FLAG_VIRTUAL)) { + JNIEnv* env = jniEnv(); + env->CallVoidMethod(mCallbacksObj, gCallbacksClassInfo.virtualKeyDownFeedback); + checkAndClearExceptionFromCallback(env, "virtualKeyDownFeedback"); + } + const int32_t WM_ACTION_PASS_TO_USER = 1; const int32_t WM_ACTION_POKE_USER_ACTIVITY = 2; const int32_t WM_ACTION_GO_TO_SLEEP = 4; |