Support haptic feedback for virtual keys defined in key layout.
Change-Id: I83e4108a87332692e03791dc066206becbc7941f
This commit is contained in:
parent
aa2d67d4b7
commit
956c0fb238
|
@ -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,
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue