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
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
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_DOWN 20
DPAD_UP 19
@ -8,3 +9,5 @@ SOFT_LEFT 1
DEL 67
BACK 4
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 BACK = KeyEvent.KEYCODE_BACK;
public static int ENTER = KeyEvent.KEYCODE_ENTER;
public static int STAR = KeyEvent.KEYCODE_STAR;
public static int POUND = KeyEvent.KEYCODE_POUND;
static {
setKeys();
}
@ -45,6 +46,7 @@ public class KeyMap {
while ((line = br.readLine()) != null) {
String[] ws = line.split(" ");
if (ws.length != 2) {continue;}
else if (line.startsWith("#")) {continue;}
try {
if (ws[0].equals("DPAD_CENTER")) {
DPAD_CENTER = Integer.parseInt(ws[1]);
@ -66,6 +68,10 @@ public class KeyMap {
BACK = Integer.parseInt(ws[1]);
} else if (ws[0].equals("ENTER")) {
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) {
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 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();
Runnable mt9release = new Runnable() {
@Override
@ -478,23 +478,6 @@ public class TraditionalT9 extends InputMethodService implements
}
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 (interfacehandler != null) {
interfacehandler.setPressed(keyCode, true);
@ -551,7 +534,10 @@ public class TraditionalT9 extends InputMethodService implements
event.startTracking();
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();
return true;
} 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_NO_HISTORY);
if (interfacehandler != null) {
interfacehandler.setPressed(KeyEvent.KEYCODE_SOFT_RIGHT, false);
interfacehandler.setPressed(KeyMap.SOFT_RIGHT, false);
}
hideWindow();
startActivity(awintent);
@ -580,32 +566,17 @@ public class TraditionalT9 extends InputMethodService implements
if (event.getRepeatCount() != 1) {
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);
// HANDLE SPECIAL KEYS
if (keyCode == KeyEvent.KEYCODE_POUND) {
if (keyCode == KeyMap.POUND) {
commitReset();
// do default action or insert new line
if (!sendDefaultEditorAction(true)) {
onText("\n");
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_STAR) {
} else if (keyCode == KeyMap.STAR) {
if (mKeyMode != MODE_NUM) {
if (mLangsAvailable.length > 1) {
nextLang();
@ -673,22 +644,6 @@ public class TraditionalT9 extends InputMethodService implements
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 (interfacehandler != null) {
interfacehandler.setPressed(keyCode, false);
@ -738,19 +693,15 @@ public class TraditionalT9 extends InputMethodService implements
}
// pass-through
//case KeyEvent.KEYCODE_FOCUS:
// if (!isInputViewShown()){
// Log.d("onKeyUp", "showing window.");
// //showWindow(true);
// }
if (!isInputViewShown()) {
showWindow(true);
}
onKey(keyCode, null);
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) {//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()){
// Log.d("onKeyUp", "showing window.");
// //showWindow(true);
@ -838,9 +789,9 @@ public class TraditionalT9 extends InputMethodService implements
handleBackspace();
// change case
} else if (keyCode == KeyEvent.KEYCODE_STAR) {
} else if (keyCode == KeyMap.STAR) {
if (mKeyMode == MODE_NUM) {
handleCharacter(KeyEvent.KEYCODE_STAR);
handleCharacter(KeyMap.STAR);
} else {
handleShift();
}
@ -849,8 +800,8 @@ public class TraditionalT9 extends InputMethodService implements
handleClose();
// space
} else if (keyCode == KeyEvent.KEYCODE_POUND) {
handleCharacter(KeyEvent.KEYCODE_POUND);
} else if (keyCode == KeyMap.POUND) {
handleCharacter(KeyMap.POUND);
} else if (keyCode == KeyMap.SOFT_LEFT) {
if (mWordFound) {
@ -1048,7 +999,7 @@ public class TraditionalT9 extends InputMethodService implements
updateCandidates();
} else {
mPreviousWord = "";
keyDownUp(KeyEvent.KEYCODE_DEL);
keyDownUp(KeyMap.DEL);
}
updateShiftKeyState(getCurrentInputEditorInfo());
// Log.d("handleBS", "Cm: " + mCapsMode);
@ -1083,7 +1034,7 @@ public class TraditionalT9 extends InputMethodService implements
case MODE_LANG:
// it begins
// on POUND commit and space
if (keyCode == KeyEvent.KEYCODE_POUND) {
if (keyCode == KeyMap.POUND) {
if (mComposing.length() > 0) {
commitTyped();
}
@ -1102,10 +1053,11 @@ public class TraditionalT9 extends InputMethodService implements
case MODE_TEXT:
t9releasehandler.removeCallbacks(mt9release);
if (keyCode == KeyEvent.KEYCODE_POUND) {
keyCode--;
}
if (keyCode == KeyMap.POUND) {
keyCode = 10;
} else {
keyCode = keyCode - KeyEvent.KEYCODE_0;
}
// Log.d("handleChar", "PRIMARY CODE (num): " + keyCode);
boolean newChar = false;
@ -1149,23 +1101,17 @@ public class TraditionalT9 extends InputMethodService implements
break;
case MODE_NUM:
switch (keyCode) {
// Manual this
case KeyEvent.KEYCODE_POUND:
if (keyCode == KeyMap.POUND) {
onText("#");
break;
case KeyEvent.KEYCODE_STAR:
} else if (keyCode == KeyMap.STAR) {
onText("*");
break;
default:
} else {
onText(String.valueOf(keyCode - KeyEvent.KEYCODE_0));
}
break;
default:
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