am 9e32a438: Merge "Support haptic feedback for virtual keys defined in key layout." into gingerbread
Merge commit '9e32a438fd87180692da55197972ecddb1a731d9' into gingerbread-plus-aosp * commit '9e32a438fd87180692da55197972ecddb1a731d9': Support haptic feedback for virtual keys defined in key layout.
This commit is contained in:
@@ -73,6 +73,7 @@ public interface WindowManagerPolicy {
|
|||||||
public final static int FLAG_ALT_GR = 0x00000020;
|
public final static int FLAG_ALT_GR = 0x00000020;
|
||||||
public final static int FLAG_MENU = 0x00000040;
|
public final static int FLAG_MENU = 0x00000040;
|
||||||
public final static int FLAG_LAUNCHER = 0x00000080;
|
public final static int FLAG_LAUNCHER = 0x00000080;
|
||||||
|
public final static int FLAG_VIRTUAL = 0x00000100;
|
||||||
|
|
||||||
public final static int FLAG_INJECTED = 0x01000000;
|
public final static int FLAG_INJECTED = 0x01000000;
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ namespace android {
|
|||||||
* policy decisions such as waking from device sleep.
|
* policy decisions such as waking from device sleep.
|
||||||
*/
|
*/
|
||||||
enum {
|
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 = 0x00000001,
|
||||||
POLICY_FLAG_WAKE_DROPPED = 0x00000002,
|
POLICY_FLAG_WAKE_DROPPED = 0x00000002,
|
||||||
@@ -83,6 +84,7 @@ enum {
|
|||||||
POLICY_FLAG_ALT_GR = 0x00000020,
|
POLICY_FLAG_ALT_GR = 0x00000020,
|
||||||
POLICY_FLAG_MENU = 0x00000040,
|
POLICY_FLAG_MENU = 0x00000040,
|
||||||
POLICY_FLAG_LAUNCHER = 0x00000080,
|
POLICY_FLAG_LAUNCHER = 0x00000080,
|
||||||
|
POLICY_FLAG_VIRTUAL = 0x00000100,
|
||||||
|
|
||||||
POLICY_FLAG_RAW_MASK = 0x0000ffff,
|
POLICY_FLAG_RAW_MASK = 0x0000ffff,
|
||||||
|
|
||||||
|
|||||||
@@ -103,10 +103,6 @@ public:
|
|||||||
virtual bool getDisplayInfo(int32_t displayId,
|
virtual bool getDisplayInfo(int32_t displayId,
|
||||||
int32_t* width, int32_t* height, int32_t* orientation) = 0;
|
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.
|
/* Intercepts a key event.
|
||||||
* The policy can use this method as an opportunity to perform power management functions
|
* The policy can use this method as an opportunity to perform power management functions
|
||||||
* and early event preprocessing such as updating policy flags.
|
* and early event preprocessing such as updating policy flags.
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ static const KeycodeLabel KEYCODES[] = {
|
|||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// See also policy flags in Input.h.
|
||||||
static const KeycodeLabel FLAGS[] = {
|
static const KeycodeLabel FLAGS[] = {
|
||||||
{ "WAKE", 0x00000001 },
|
{ "WAKE", 0x00000001 },
|
||||||
{ "WAKE_DROPPED", 0x00000002 },
|
{ "WAKE_DROPPED", 0x00000002 },
|
||||||
@@ -151,6 +152,7 @@ static const KeycodeLabel FLAGS[] = {
|
|||||||
{ "ALT_GR", 0x00000020 },
|
{ "ALT_GR", 0x00000020 },
|
||||||
{ "MENU", 0x00000040 },
|
{ "MENU", 0x00000040 },
|
||||||
{ "LAUNCHER", 0x00000080 },
|
{ "LAUNCHER", 0x00000080 },
|
||||||
|
{ "VIRTUAL", 0x00000100 },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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 keyEventAction = down ? AKEY_EVENT_ACTION_DOWN : AKEY_EVENT_ACTION_UP;
|
||||||
int32_t keyEventFlags = AKEY_EVENT_FLAG_FROM_SYSTEM;
|
int32_t keyEventFlags = AKEY_EVENT_FLAG_FROM_SYSTEM;
|
||||||
if (policyFlags & POLICY_FLAG_WOKE_HERE) {
|
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,
|
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 keyCode, int32_t scanCode, nsecs_t downTime) {
|
||||||
int32_t metaState = mContext->getGlobalMetaState();
|
int32_t metaState = mContext->getGlobalMetaState();
|
||||||
|
|
||||||
if (keyEventAction == AKEY_EVENT_ACTION_DOWN) {
|
policyFlags |= POLICY_FLAG_VIRTUAL;
|
||||||
getPolicy()->virtualKeyDownFeedback();
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t policyActions = getPolicy()->interceptKey(when, getDeviceId(),
|
int32_t policyActions = getPolicy()->interceptKey(when, getDeviceId(),
|
||||||
keyEventAction == AKEY_EVENT_ACTION_DOWN, keyCode, scanCode, policyFlags);
|
keyEventAction == AKEY_EVENT_ACTION_DOWN, keyCode, scanCode, policyFlags);
|
||||||
|
|
||||||
|
|||||||
@@ -182,7 +182,6 @@ public:
|
|||||||
|
|
||||||
virtual bool getDisplayInfo(int32_t displayId,
|
virtual bool getDisplayInfo(int32_t displayId,
|
||||||
int32_t* width, int32_t* height, int32_t* orientation);
|
int32_t* width, int32_t* height, int32_t* orientation);
|
||||||
virtual void virtualKeyDownFeedback();
|
|
||||||
virtual int32_t interceptKey(nsecs_t when, int32_t deviceId,
|
virtual int32_t interceptKey(nsecs_t when, int32_t deviceId,
|
||||||
bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags);
|
bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags);
|
||||||
virtual int32_t interceptSwitch(nsecs_t when, int32_t switchCode, int32_t switchValue,
|
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();
|
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 NativeInputManager::interceptKey(nsecs_t when,
|
||||||
int32_t deviceId, bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags) {
|
int32_t deviceId, bool down, int32_t keyCode, int32_t scanCode, uint32_t& policyFlags) {
|
||||||
#if DEBUG_INPUT_READER_POLICY
|
#if DEBUG_INPUT_READER_POLICY
|
||||||
@@ -483,6 +471,12 @@ int32_t NativeInputManager::interceptKey(nsecs_t when,
|
|||||||
when, deviceId, down, keyCode, scanCode, policyFlags);
|
when, deviceId, down, keyCode, scanCode, policyFlags);
|
||||||
#endif
|
#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_PASS_TO_USER = 1;
|
||||||
const int32_t WM_ACTION_POKE_USER_ACTIVITY = 2;
|
const int32_t WM_ACTION_POKE_USER_ACTIVITY = 2;
|
||||||
const int32_t WM_ACTION_GO_TO_SLEEP = 4;
|
const int32_t WM_ACTION_GO_TO_SLEEP = 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user