1
0
Fork 0

Add support for customizing STAR (*) and POUND (#) keys also:

* Updated gradle
* Changed t9 autoselect delay
* Allow comments with # in keymap file
This commit is contained in:
Clam 2014-12-08 17:33:25 +11:00
parent 27354ee66e
commit e7466a292f
5 changed files with 55 additions and 85 deletions

View file

@ -1,6 +1,6 @@
#Sun Oct 19 13:30:51 EST 2014 #Mon Dec 08 16:11:22 EST 2014
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

15
keymap.txt.emulator Normal file
View file

@ -0,0 +1,15 @@
# Keycodes useful for emulator
# softleft = [ softright = ]
# star = ; pound = '
DPAD_CENTER 23
DPAD_DOWN 20
DPAD_UP 19
DPAD_LEFT 21
DPAD_RIGHT 22
SOFT_RIGHT 72
SOFT_LEFT 71
DEL 67
BACK 4
ENTER 66
POUND 75
STAR 74

View file

@ -1,3 +1,4 @@
# Default keycodes
DPAD_CENTER 23 DPAD_CENTER 23
DPAD_DOWN 20 DPAD_DOWN 20
DPAD_UP 19 DPAD_UP 19
@ -8,3 +9,5 @@ SOFT_LEFT 1
DEL 67 DEL 67
BACK 4 BACK 4
ENTER 66 ENTER 66
POUND 18
STAR 17

View file

@ -23,7 +23,8 @@ public class KeyMap {
public static int DEL = KeyEvent.KEYCODE_DEL; public static int DEL = KeyEvent.KEYCODE_DEL;
public static int BACK = KeyEvent.KEYCODE_BACK; public static int BACK = KeyEvent.KEYCODE_BACK;
public static int ENTER = KeyEvent.KEYCODE_ENTER; public static int ENTER = KeyEvent.KEYCODE_ENTER;
public static int STAR = KeyEvent.KEYCODE_STAR;
public static int POUND = KeyEvent.KEYCODE_POUND;
static { static {
setKeys(); setKeys();
} }
@ -45,6 +46,7 @@ public class KeyMap {
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
String[] ws = line.split(" "); String[] ws = line.split(" ");
if (ws.length != 2) {continue;} if (ws.length != 2) {continue;}
else if (line.startsWith("#")) {continue;}
try { try {
if (ws[0].equals("DPAD_CENTER")) { if (ws[0].equals("DPAD_CENTER")) {
DPAD_CENTER = Integer.parseInt(ws[1]); DPAD_CENTER = Integer.parseInt(ws[1]);
@ -66,6 +68,10 @@ public class KeyMap {
BACK = Integer.parseInt(ws[1]); BACK = Integer.parseInt(ws[1]);
} else if (ws[0].equals("ENTER")) { } else if (ws[0].equals("ENTER")) {
ENTER = Integer.parseInt(ws[1]); ENTER = Integer.parseInt(ws[1]);
} else if (ws[0].equals("STAR")) {
STAR = Integer.parseInt(ws[1]);
} else if (ws[0].equals("POUND")) {
POUND = Integer.parseInt(ws[1]);
} }
} catch (NumberFormatException _ignore) { } catch (NumberFormatException _ignore) {
Log.w("T9.KeyMap", "Invalid number found"); Log.w("T9.KeyMap", "Invalid number found");

View file

@ -70,7 +70,7 @@ public class TraditionalT9 extends InputMethodService implements
private static final int CAPS_ALL = 2; private static final int CAPS_ALL = 2;
private final static int[] CAPS_CYCLE = { CAPS_OFF, CAPS_SINGLE, CAPS_ALL }; private final static int[] CAPS_CYCLE = { CAPS_OFF, CAPS_SINGLE, CAPS_ALL };
private final static int T9DELAY = 1200; private final static int T9DELAY = 900;
final Handler t9releasehandler = new Handler(); final Handler t9releasehandler = new Handler();
Runnable mt9release = new Runnable() { Runnable mt9release = new Runnable() {
@Override @Override
@ -478,23 +478,6 @@ public class TraditionalT9 extends InputMethodService implements
} }
mFirstPress = false; mFirstPress = false;
// Log.d("onKeyDown", "Key: " + keyCode);
// TODO: remove emulator special keys
switch (keyCode) {
case 75:
keyCode = KeyEvent.KEYCODE_POUND;
break;
case 74:
keyCode = KeyEvent.KEYCODE_STAR;
break;
case 72:
keyCode = KeyMap.SOFT_RIGHT;
break;
case 71:
keyCode = KeyMap.SOFT_LEFT;
break;
}
if (keyCode == KeyMap.DPAD_CENTER) { if (keyCode == KeyMap.DPAD_CENTER) {
if (interfacehandler != null) { if (interfacehandler != null) {
interfacehandler.setPressed(keyCode, true); interfacehandler.setPressed(keyCode, true);
@ -551,7 +534,10 @@ public class TraditionalT9 extends InputMethodService implements
event.startTracking(); event.startTracking();
return true; return true;
} else if (keyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1 || keyCode == KeyEvent.KEYCODE_2 || keyCode == KeyEvent.KEYCODE_3 || keyCode == KeyEvent.KEYCODE_4 || keyCode == KeyEvent.KEYCODE_5 || keyCode == KeyEvent.KEYCODE_6 || keyCode == KeyEvent.KEYCODE_7 || keyCode == KeyEvent.KEYCODE_8 || keyCode == KeyEvent.KEYCODE_9 || keyCode == KeyEvent.KEYCODE_POUND || keyCode == KeyEvent.KEYCODE_STAR || keyCode == 94) { } else if (keyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1 || keyCode == KeyEvent.KEYCODE_2 ||
keyCode == KeyEvent.KEYCODE_3 || keyCode == KeyEvent.KEYCODE_4 || keyCode == KeyEvent.KEYCODE_5 ||
keyCode == KeyEvent.KEYCODE_6 || keyCode == KeyEvent.KEYCODE_7 || keyCode == KeyEvent.KEYCODE_8 ||
keyCode == KeyEvent.KEYCODE_9 || keyCode == KeyMap.POUND || keyCode == KeyMap.STAR) {
event.startTracking(); event.startTracking();
return true; return true;
} else {// KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD).getNumber(keyCode) } else {// KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD).getNumber(keyCode)
@ -568,7 +554,7 @@ public class TraditionalT9 extends InputMethodService implements
awintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); awintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
awintent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); awintent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
if (interfacehandler != null) { if (interfacehandler != null) {
interfacehandler.setPressed(KeyEvent.KEYCODE_SOFT_RIGHT, false); interfacehandler.setPressed(KeyMap.SOFT_RIGHT, false);
} }
hideWindow(); hideWindow();
startActivity(awintent); startActivity(awintent);
@ -580,32 +566,17 @@ public class TraditionalT9 extends InputMethodService implements
if (event.getRepeatCount() != 1) { if (event.getRepeatCount() != 1) {
return true; return true;
} }
// TODO: remove emulator special keys
switch (keyCode) {
case 75:
keyCode = KeyEvent.KEYCODE_POUND;
break;
case 74:
keyCode = KeyEvent.KEYCODE_STAR;
break;
case 72:
keyCode = KeyMap.SOFT_RIGHT;
break;
case 71:
keyCode = KeyMap.SOFT_LEFT;
break;
}
// Log.d("onLongPress", "LONG PRESS: " + keyCode); // Log.d("onLongPress", "LONG PRESS: " + keyCode);
// HANDLE SPECIAL KEYS // HANDLE SPECIAL KEYS
if (keyCode == KeyEvent.KEYCODE_POUND) { if (keyCode == KeyMap.POUND) {
commitReset(); commitReset();
// do default action or insert new line // do default action or insert new line
if (!sendDefaultEditorAction(true)) { if (!sendDefaultEditorAction(true)) {
onText("\n"); onText("\n");
} }
return true; return true;
} else if (keyCode == KeyEvent.KEYCODE_STAR) { } else if (keyCode == KeyMap.STAR) {
if (mKeyMode != MODE_NUM) { if (mKeyMode != MODE_NUM) {
if (mLangsAvailable.length > 1) { if (mLangsAvailable.length > 1) {
nextLang(); nextLang();
@ -673,22 +644,6 @@ public class TraditionalT9 extends InputMethodService implements
return super.onKeyUp(keyCode, event); return super.onKeyUp(keyCode, event);
} }
// TODO: remove emulator special keys
switch (keyCode) {
case 75:
keyCode = KeyEvent.KEYCODE_POUND;
break;
case 74:
keyCode = KeyEvent.KEYCODE_STAR;
break;
case 72:
keyCode = KeyMap.SOFT_RIGHT;
break;
case 71:
keyCode = KeyMap.SOFT_LEFT;
break;
}
if (keyCode == KeyMap.DPAD_CENTER) { if (keyCode == KeyMap.DPAD_CENTER) {
if (interfacehandler != null) { if (interfacehandler != null) {
interfacehandler.setPressed(keyCode, false); interfacehandler.setPressed(keyCode, false);
@ -738,19 +693,15 @@ public class TraditionalT9 extends InputMethodService implements
} }
// pass-through // pass-through
//case KeyEvent.KEYCODE_FOCUS:
// if (!isInputViewShown()){
// Log.d("onKeyUp", "showing window.");
// //showWindow(true);
// }
if (!isInputViewShown()) { if (!isInputViewShown()) {
showWindow(true); showWindow(true);
} }
onKey(keyCode, null); onKey(keyCode, null);
return true; return true;
} else if (keyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1 || keyCode == KeyEvent.KEYCODE_2 } else if (keyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1 || keyCode == KeyEvent.KEYCODE_2
|| keyCode == KeyEvent.KEYCODE_3 || keyCode == KeyEvent.KEYCODE_4 || keyCode == KeyEvent.KEYCODE_5 || keyCode == KeyEvent.KEYCODE_6 || keyCode == KeyEvent.KEYCODE_7 || keyCode == KeyEvent.KEYCODE_8 || keyCode == KeyEvent.KEYCODE_9 || keyCode == KeyEvent.KEYCODE_POUND || keyCode == KeyEvent.KEYCODE_STAR || keyCode == 94) {//case KeyEvent.KEYCODE_FOCUS: || keyCode == KeyEvent.KEYCODE_3 || keyCode == KeyEvent.KEYCODE_4 || keyCode == KeyEvent.KEYCODE_5 ||
keyCode == KeyEvent.KEYCODE_6 || keyCode == KeyEvent.KEYCODE_7 || keyCode == KeyEvent.KEYCODE_8 ||
keyCode == KeyEvent.KEYCODE_9 || keyCode == KeyMap.POUND || keyCode == KeyMap.STAR) {
// if (!isInputViewShown()){ // if (!isInputViewShown()){
// Log.d("onKeyUp", "showing window."); // Log.d("onKeyUp", "showing window.");
// //showWindow(true); // //showWindow(true);
@ -838,9 +789,9 @@ public class TraditionalT9 extends InputMethodService implements
handleBackspace(); handleBackspace();
// change case // change case
} else if (keyCode == KeyEvent.KEYCODE_STAR) { } else if (keyCode == KeyMap.STAR) {
if (mKeyMode == MODE_NUM) { if (mKeyMode == MODE_NUM) {
handleCharacter(KeyEvent.KEYCODE_STAR); handleCharacter(KeyMap.STAR);
} else { } else {
handleShift(); handleShift();
} }
@ -849,8 +800,8 @@ public class TraditionalT9 extends InputMethodService implements
handleClose(); handleClose();
// space // space
} else if (keyCode == KeyEvent.KEYCODE_POUND) { } else if (keyCode == KeyMap.POUND) {
handleCharacter(KeyEvent.KEYCODE_POUND); handleCharacter(KeyMap.POUND);
} else if (keyCode == KeyMap.SOFT_LEFT) { } else if (keyCode == KeyMap.SOFT_LEFT) {
if (mWordFound) { if (mWordFound) {
@ -1048,7 +999,7 @@ public class TraditionalT9 extends InputMethodService implements
updateCandidates(); updateCandidates();
} else { } else {
mPreviousWord = ""; mPreviousWord = "";
keyDownUp(KeyEvent.KEYCODE_DEL); keyDownUp(KeyMap.DEL);
} }
updateShiftKeyState(getCurrentInputEditorInfo()); updateShiftKeyState(getCurrentInputEditorInfo());
// Log.d("handleBS", "Cm: " + mCapsMode); // Log.d("handleBS", "Cm: " + mCapsMode);
@ -1083,7 +1034,7 @@ public class TraditionalT9 extends InputMethodService implements
case MODE_LANG: case MODE_LANG:
// it begins // it begins
// on POUND commit and space // on POUND commit and space
if (keyCode == KeyEvent.KEYCODE_POUND) { if (keyCode == KeyMap.POUND) {
if (mComposing.length() > 0) { if (mComposing.length() > 0) {
commitTyped(); commitTyped();
} }
@ -1102,10 +1053,11 @@ public class TraditionalT9 extends InputMethodService implements
case MODE_TEXT: case MODE_TEXT:
t9releasehandler.removeCallbacks(mt9release); t9releasehandler.removeCallbacks(mt9release);
if (keyCode == KeyEvent.KEYCODE_POUND) { if (keyCode == KeyMap.POUND) {
keyCode--; keyCode = 10;
} } else {
keyCode = keyCode - KeyEvent.KEYCODE_0; keyCode = keyCode - KeyEvent.KEYCODE_0;
}
// Log.d("handleChar", "PRIMARY CODE (num): " + keyCode); // Log.d("handleChar", "PRIMARY CODE (num): " + keyCode);
boolean newChar = false; boolean newChar = false;
@ -1149,23 +1101,17 @@ public class TraditionalT9 extends InputMethodService implements
break; break;
case MODE_NUM: case MODE_NUM:
switch (keyCode) { if (keyCode == KeyMap.POUND) {
// Manual this
case KeyEvent.KEYCODE_POUND:
onText("#"); onText("#");
break; } else if (keyCode == KeyMap.STAR) {
case KeyEvent.KEYCODE_STAR:
onText("*"); onText("*");
break; } else {
default:
onText(String.valueOf(keyCode - KeyEvent.KEYCODE_0)); onText(String.valueOf(keyCode - KeyEvent.KEYCODE_0));
} }
break; break;
default: default:
Log.e("handleCharacter", "Unknown input?"); Log.e("handleCharacter", "Unknown input?");
} }
} }
// This is a really hacky way to handle DPAD long presses in a way that we can pass them on to // This is a really hacky way to handle DPAD long presses in a way that we can pass them on to