aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-12-26 15:38:53 +0900
committerJean Chalard <jchalard@google.com>2012-12-27 16:17:49 +0900
commit997cba7decce9694b3c2f9487deb9710ebb19595 (patch)
tree4ff4f1294e5732d9392ba63e3078d4c765937d76 /java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
parent581f324ed8314befdf7d8cf1c923791455cc11a5 (diff)
downloadlatinime-997cba7decce9694b3c2f9487deb9710ebb19595.tar.gz
latinime-997cba7decce9694b3c2f9487deb9710ebb19595.tar.xz
latinime-997cba7decce9694b3c2f9487deb9710ebb19595.zip
Start committing hardware events (B4)
Essentially this does activate auto-correction with a hardware keyboard, although a lot of things are still left to implement. No proximity is used yet which means only missing and excessive letters are considered. Dead keys are not handled. No combiner is supported. No suggestions are displayed. Resuming suggestions does not work correctly with a hardware key (because the view holds a temporary hardware event 'onKeyPreIme' and the event from the IME won't be handled until this is handled which won't happen until after the IME said that it did handle the event). Bug: 5037589 Change-Id: Idcb5c7b26d56717ed772d53c062362807f11cdae
Diffstat (limited to 'java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java')
-rw-r--r--java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
index 9861816ee..2dbc9f00b 100644
--- a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
+++ b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
@@ -19,6 +19,8 @@ package com.android.inputmethod.event;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
+import com.android.inputmethod.latin.Constants;
+
/**
* A hardware event decoder for a hardware qwerty-ish keyboard.
*
@@ -41,7 +43,16 @@ public class HardwareKeyboardEventDecoder implements HardwareEventDecoder {
// that includes both the unicode char in the lower 21 bits and flags in the upper bits,
// hence the name "codePointAndFlags". {@see KeyEvent#getUnicodeChar()} for more info.
final int codePointAndFlags = keyEvent.getUnicodeChar();
- if (keyEvent.isPrintingKey()) {
+ // The keyCode is the abstraction used by the KeyEvent to represent different keys that
+ // 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();
+ if (KeyEvent.KEYCODE_DEL == keyCode) {
+ event.setCommittableEvent(Constants.CODE_DELETE);
+ return event;
+ }
+ if (keyEvent.isPrintingKey() || KeyEvent.KEYCODE_SPACE == keyCode
+ || KeyEvent.KEYCODE_ENTER == keyCode) {
if (0 != (codePointAndFlags & KeyCharacterMap.COMBINING_ACCENT)) {
// A dead key.
event.setDeadEvent(codePointAndFlags & KeyCharacterMap.COMBINING_ACCENT_MASK);