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;