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:
parent
27354ee66e
commit
e7466a292f
5 changed files with 55 additions and 85 deletions
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -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
15
keymap.txt.emulator
Normal 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
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
# Default keycodes
|
||||
DPAD_CENTER 23
|
||||
DPAD_DOWN 20
|
||||
DPAD_UP 19
|
||||
|
|
@ -7,4 +8,6 @@ SOFT_RIGHT 2
|
|||
SOFT_LEFT 1
|
||||
DEL 67
|
||||
BACK 4
|
||||
ENTER 66
|
||||
ENTER 66
|
||||
POUND 18
|
||||
STAR 17
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
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:
|
||||
onText("#");
|
||||
break;
|
||||
case KeyEvent.KEYCODE_STAR:
|
||||
onText("*");
|
||||
break;
|
||||
default:
|
||||
onText(String.valueOf(keyCode - KeyEvent.KEYCODE_0));
|
||||
if (keyCode == KeyMap.POUND) {
|
||||
onText("#");
|
||||
} else if (keyCode == KeyMap.STAR) {
|
||||
onText("*");
|
||||
} 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue