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
|
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
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_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
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue