From 2282e8520a2c1984989a14fb09896536f5033b26 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Mon, 31 Mar 2014 19:43:12 +0900 Subject: Fix updating the shift state upon backspace Bug: 13514349 Change-Id: If4c9db12b0ab5be676f7a2f72715f469066ee537 --- .../inputmethod/event/HardwareKeyboardEventDecoder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java') diff --git a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java index da6780e08..05ba99923 100644 --- a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java +++ b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java @@ -46,9 +46,10 @@ public class HardwareKeyboardEventDecoder implements HardwareEventDecoder { // do not necessarily map to a unicode character. This represents a physical key, like // the key for 'A' or Space, but also Backspace or Ctrl or Caps Lock. final int keyCode = keyEvent.getKeyCode(); + final boolean isKeyRepeat = (0 != keyEvent.getRepeatCount()); if (KeyEvent.KEYCODE_DEL == keyCode) { return Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT, Constants.CODE_DELETE, - null /* next */); + null /* next */, isKeyRepeat); } if (keyEvent.isPrintingKey() || KeyEvent.KEYCODE_SPACE == keyCode || KeyEvent.KEYCODE_ENTER == keyCode) { @@ -65,15 +66,16 @@ public class HardwareKeyboardEventDecoder implements HardwareEventDecoder { // Latin IME decide what to do with it. if (keyEvent.isShiftPressed()) { return Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT, - Constants.CODE_SHIFT_ENTER, null /* next */); + Constants.CODE_SHIFT_ENTER, null /* next */, isKeyRepeat); } else { return Event.createHardwareKeypressEvent(Constants.CODE_ENTER, keyCode, - null /* next */); + null /* next */, isKeyRepeat); } } // If not Enter, then this is just a regular keypress event for a normal character // that can be committed right away, taking into account the current state. - return Event.createHardwareKeypressEvent(keyCode, codePointAndFlags, null /* next */); + return Event.createHardwareKeypressEvent(keyCode, codePointAndFlags, null /* next */, + isKeyRepeat); } return Event.createNotHandledEvent(); } -- cgit v1.2.3-83-g751a