diff options
author | Kristian Dreher <kristian.dreher@sonyericsson.com> | 2010-02-23 08:49:05 +0100 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2010-07-15 17:01:51 -0700 |
commit | 5a233c13d7bba14a879befe9dfc7ede065117897 (patch) | |
tree | 2f7494839874dae229b728ee69fba8e4f95cea33 | |
parent | f7013a0b1203e31b7762d1042aa75ef525371645 (diff) | |
download | base-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-x | phone/com/android/internal/policy/impl/PhoneWindowManager.java | 17 |
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)); } |