Fix issue with Term not recognizing numeric keys on VK.
Patch from Jack Palevich's Google Code project.
diff --git a/apps/Term/src/com/android/term/Term.java b/apps/Term/src/com/android/term/Term.java
index 2d8ba3c..d6b9fe9 100644
--- a/apps/Term/src/com/android/term/Term.java
+++ b/apps/Term/src/com/android/term/Term.java
@@ -2652,63 +2652,12 @@
return new BaseInputConnection(this, false) {
@Override
- public boolean beginBatchEdit() {
- return true;
- }
-
- @Override
- public boolean clearMetaKeyStates(int states) {
- return true;
- }
-
- @Override
- public boolean commitCompletion(CompletionInfo text) {
- return true;
- }
-
- @Override
public boolean commitText(CharSequence text, int newCursorPosition) {
sendText(text);
return true;
}
@Override
- public boolean deleteSurroundingText(int leftLength, int rightLength) {
- return true;
- }
-
- @Override
- public boolean endBatchEdit() {
- return true;
- }
-
- @Override
- public boolean finishComposingText() {
- return true;
- }
-
- @Override
- public int getCursorCapsMode(int reqModes) {
- return 0;
- }
-
- @Override
- public ExtractedText getExtractedText(ExtractedTextRequest request,
- int flags) {
- return null;
- }
-
- @Override
- public CharSequence getTextAfterCursor(int n, int flags) {
- return null;
- }
-
- @Override
- public CharSequence getTextBeforeCursor(int n, int flags) {
- return null;
- }
-
- @Override
public boolean performEditorAction(int actionCode) {
if(actionCode == EditorInfo.IME_ACTION_UNSPECIFIED) {
// The "return" key has been pressed on the IME.
@@ -2731,15 +2680,33 @@
@Override
public boolean sendKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
- switch(event.getKeyCode()) {
- case KeyEvent.KEYCODE_DEL:
- sendChar(127);
- break;
+ // Some keys are sent here rather than to commitText.
+ // In particular, del and the digit keys are sent here.
+ // As a bit of defensive programming, handle every
+ // key with an ASCII meaning.
+ int keyCode = event.getKeyCode();
+ if (keyCode >= 0 && keyCode < KEYCODE_CHARS.length()) {
+ char c = KEYCODE_CHARS.charAt(keyCode);
+ if (c > 0) {
+ sendChar(c);
+ }
}
}
return true;
}
+ private final String KEYCODE_CHARS =
+ "\000\000\000\000\000\000\000" + "0123456789*#"
+ + "\000\000\000\000\000\000\000\000\000\000"
+ + "abcdefghijklmnopqrstuvwxyz,."
+ + "\000\000\000\000"
+ + "\011 " // tab, space
+ + "\000\000\000" // sym .. envelope
+ + "\015\177" // enter, del
+ + "`-=[]\\;'/@"
+ + "\000\000\000"
+ + "+";
+
@Override
public boolean setComposingText(CharSequence text, int newCursorPosition) {
return true;