summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Dreher <kristian.dreher@sonyericsson.com>2010-02-23 08:49:05 +0100
committerJean-Baptiste Queru <jbq@google.com>2010-07-15 17:01:51 -0700
commit5a233c13d7bba14a879befe9dfc7ede065117897 (patch)
tree2f7494839874dae229b728ee69fba8e4f95cea33
parentf7013a0b1203e31b7762d1042aa75ef525371645 (diff)
downloadbase-tools_r7.tar.gz
Corrected repeat count for key repeat in input device.android-sdk-tools_r7android-adt-0.9.9android-adt-0.9.8tools_r7
Previously the key event repeat count was always zero when the repeated key down events was generated by the input device in the Linux kernel. Change-Id: I9e295ca41ffe7324f54083f0a493e073187feb28
-rwxr-xr-xphone/com/android/internal/policy/impl/PhoneWindowManager.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/phone/com/android/internal/policy/impl/PhoneWindowManager.java b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
index 382c833..dec495d 100755
--- a/phone/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -274,6 +274,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
ShortcutManager mShortcutManager;
PowerManager.WakeLock mBroadcastWakeLock;
+ int lastKeyCode = KeyEvent.getMaxKeyCode() + 1; //invalid code
+ int keyRepeatCount = 0;
+
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
super(handler);
@@ -1808,6 +1811,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
boolean down = event.value != 0;
if (type == RawInputEvent.EV_KEY) {
+ if (down) {
+ if (code == lastKeyCode) {
+ keyRepeatCount++;
+ } else {
+ keyRepeatCount = 0;
+ }
+ lastKeyCode = code;
+ } else {
+ keyRepeatCount = 0;
+ lastKeyCode = KeyEvent.getMaxKeyCode() + 1; //invalid code
+ }
+
if (code == KeyEvent.KEYCODE_ENDCALL
|| code == KeyEvent.KEYCODE_POWER) {
if (down) {
@@ -1891,7 +1906,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// only do it if the showing app doesn't process the key on its own.
KeyEvent keyEvent = new KeyEvent(event.when, event.when,
down ? KeyEvent.ACTION_DOWN : KeyEvent.ACTION_UP,
- code, 0);
+ code, keyRepeatCount);
mBroadcastWakeLock.acquire();
mHandler.post(new PassHeadsetKey(keyEvent));
}