diff options
author | Michael Wright <michaelwr@google.com> | 2017-07-26 16:19:11 +0100 |
---|---|---|
committer | Michael Wright <michaelwr@google.com> | 2017-07-26 19:42:47 +0100 |
commit | 58ba988476d848598e62376f726f69c567d033ad (patch) | |
tree | c46409f37ef886d170f1f33366ae8fd619247738 | |
parent | 27cc5f963461b121330274986de6bf0414ff675b (diff) | |
download | native-58ba988476d848598e62376f726f69c567d033ad.tar.gz |
Prevent media keys from waking the device, even if they're external.
Bug: 38258736
Test: manual
Change-Id: I56deb9d99df17172ea063544334c1814a6f31509
-rw-r--r-- | services/inputflinger/InputReader.cpp | 31 | ||||
-rw-r--r-- | services/inputflinger/InputReader.h | 1 |
2 files changed, 31 insertions, 1 deletions
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp index 97565aa000..cc81a298a2 100644 --- a/services/inputflinger/InputReader.cpp +++ b/services/inputflinger/InputReader.cpp @@ -2329,6 +2329,35 @@ bool KeyboardInputMapper::isKeyboardOrGamepadKey(int32_t scanCode) { || (scanCode >= BTN_JOYSTICK && scanCode < BTN_DIGI); } +bool KeyboardInputMapper::isMediaKey(int32_t keyCode) { + switch (keyCode) { + case AKEYCODE_MEDIA_PLAY: + case AKEYCODE_MEDIA_PAUSE: + case AKEYCODE_MEDIA_PLAY_PAUSE: + case AKEYCODE_MUTE: + case AKEYCODE_HEADSETHOOK: + case AKEYCODE_MEDIA_STOP: + case AKEYCODE_MEDIA_NEXT: + case AKEYCODE_MEDIA_PREVIOUS: + case AKEYCODE_MEDIA_REWIND: + case AKEYCODE_MEDIA_RECORD: + case AKEYCODE_MEDIA_FAST_FORWARD: + case AKEYCODE_MEDIA_SKIP_FORWARD: + case AKEYCODE_MEDIA_SKIP_BACKWARD: + case AKEYCODE_MEDIA_STEP_FORWARD: + case AKEYCODE_MEDIA_STEP_BACKWARD: + case AKEYCODE_MEDIA_AUDIO_TRACK: + case AKEYCODE_VOLUME_UP: + case AKEYCODE_VOLUME_DOWN: + case AKEYCODE_VOLUME_MUTE: + case AKEYCODE_TV_AUDIO_DESCRIPTION: + case AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP: + case AKEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN: + return true; + } + return false; +} + void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t scanCode, int32_t usageCode) { int32_t keyCode; @@ -2402,7 +2431,7 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t scanCode, // For internal keyboards, the key layout file should specify the policy flags for // each wake key individually. // TODO: Use the input device configuration to control this behavior more finely. - if (down && getDevice()->isExternal()) { + if (down && getDevice()->isExternal() && !isMediaKey(keyCode)) { policyFlags |= POLICY_FLAG_WAKE; } diff --git a/services/inputflinger/InputReader.h b/services/inputflinger/InputReader.h index 157fa4f9c3..c4f786ad0e 100644 --- a/services/inputflinger/InputReader.h +++ b/services/inputflinger/InputReader.h @@ -1128,6 +1128,7 @@ private: void dumpParameters(String8& dump); bool isKeyboardOrGamepadKey(int32_t scanCode); + bool isMediaKey(int32_t keyCode); void processKey(nsecs_t when, bool down, int32_t scanCode, int32_t usageCode); |