mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-18 16:03:12 +00:00
Added new number pad (#81)
* Added new number pad * keyActionFlags="noKeyPreview" added * Displayed period + comma keys as Gboard & added symbols key * Added currency hint for phone in portrait mode on "%" key * Added ≠ ≈ on the = key and ± on the + key * Moved spacebar above backspace key for phones in landscape mode
This commit is contained in:
parent
350eb6d66a
commit
77c0a5b4f5
35 changed files with 777 additions and 4 deletions
|
@ -42,6 +42,7 @@ public final class KeyboardId {
|
|||
public static final int MODE_DATE = 6;
|
||||
public static final int MODE_TIME = 7;
|
||||
public static final int MODE_DATETIME = 8;
|
||||
public static final int MODE_NUMPAD = 9;
|
||||
|
||||
public static final int ELEMENT_ALPHABET = 0;
|
||||
public static final int ELEMENT_ALPHABET_MANUAL_SHIFTED = 1;
|
||||
|
@ -71,6 +72,7 @@ public final class KeyboardId {
|
|||
public static final int ELEMENT_EMOJI_CATEGORY15 = 25;
|
||||
public static final int ELEMENT_EMOJI_CATEGORY16 = 26;
|
||||
public static final int ELEMENT_CLIPBOARD = 27;
|
||||
public static final int ELEMENT_NUMPAD = 28;
|
||||
|
||||
public final RichInputMethodSubtype mSubtype;
|
||||
public final int mWidth;
|
||||
|
@ -259,6 +261,7 @@ public final class KeyboardId {
|
|||
case ELEMENT_EMOJI_CATEGORY15: return "emojiCategory15";
|
||||
case ELEMENT_EMOJI_CATEGORY16: return "emojiCategory16";
|
||||
case ELEMENT_CLIPBOARD: return "clipboard";
|
||||
case ELEMENT_NUMPAD: return "numpad";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
@ -274,6 +277,7 @@ public final class KeyboardId {
|
|||
case MODE_DATE: return "date";
|
||||
case MODE_TIME: return "time";
|
||||
case MODE_DATETIME: return "datetime";
|
||||
case MODE_NUMPAD: return "numpad";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,6 +181,9 @@ public final class KeyboardLayoutSet {
|
|||
keyboardLayoutSetElementId = KeyboardId.ELEMENT_PHONE;
|
||||
}
|
||||
break;
|
||||
case KeyboardId.MODE_NUMPAD:
|
||||
keyboardLayoutSetElementId = KeyboardId.ELEMENT_NUMPAD;
|
||||
break;
|
||||
case KeyboardId.MODE_NUMBER:
|
||||
case KeyboardId.MODE_DATE:
|
||||
case KeyboardId.MODE_TIME:
|
||||
|
|
|
@ -347,6 +347,14 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mClipboardHistoryView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNumpadKeyboard() {
|
||||
if (DEBUG_ACTION) {
|
||||
Log.d(TAG, "setNumpadKeyboard");
|
||||
}
|
||||
setKeyboard(KeyboardId.ELEMENT_NUMPAD, KeyboardSwitchState.OTHER);
|
||||
}
|
||||
|
||||
public enum KeyboardSwitchState {
|
||||
HIDDEN(-1),
|
||||
SYMBOLS_SHIFTED(KeyboardId.ELEMENT_SYMBOLS_SHIFTED),
|
||||
|
|
|
@ -55,6 +55,9 @@ public final class KeyboardCodesSet {
|
|||
"key_unspecified",
|
||||
"key_clipboard",
|
||||
"key_alpha_from_clipboard",
|
||||
"key_numpad",
|
||||
"key_alphaNumpad",
|
||||
"key_symbolNumpad",
|
||||
"key_start_onehanded",
|
||||
"key_stop_onehanded",
|
||||
"key_switch_onehanded"
|
||||
|
@ -80,6 +83,9 @@ public final class KeyboardCodesSet {
|
|||
Constants.CODE_UNSPECIFIED,
|
||||
Constants.CODE_CLIPBOARD,
|
||||
Constants.CODE_ALPHA_FROM_CLIPBOARD,
|
||||
Constants.CODE_NUMPAD,
|
||||
Constants.CODE_ALPHA_FROM_NUMPAD,
|
||||
Constants.CODE_SYMBOL_FROM_NUMPAD,
|
||||
Constants.CODE_START_ONE_HANDED_MODE,
|
||||
Constants.CODE_STOP_ONE_HANDED_MODE,
|
||||
Constants.CODE_SWITCH_ONE_HANDED_MODE
|
||||
|
|
|
@ -62,6 +62,7 @@ public final class KeyboardIconsSet {
|
|||
public static final String NAME_CLIPBOARD_ACTION_KEY = "clipboard_action_key";
|
||||
public static final String NAME_CLIPBOARD_NORMAL_KEY = "clipboard_normal_key";
|
||||
public static final String NAME_CLEAR_CLIPBOARD_KEY = "clear_clipboard_key";
|
||||
public static final String NAME_NUMPAD_KEY = "numpad_key";
|
||||
public static final String NAME_START_ONEHANDED_KEY = "start_onehanded_mode_key";
|
||||
public static final String NAME_STOP_ONEHANDED_KEY = "stop_onehanded_mode_key";
|
||||
public static final String NAME_SWITCH_ONEHANDED_KEY = "switch_onehanded_key";
|
||||
|
@ -98,6 +99,7 @@ public final class KeyboardIconsSet {
|
|||
NAME_CLIPBOARD_ACTION_KEY, R.styleable.Keyboard_iconClipboardActionKey,
|
||||
NAME_CLIPBOARD_NORMAL_KEY, R.styleable.Keyboard_iconClipboardNormalKey,
|
||||
NAME_CLEAR_CLIPBOARD_KEY, R.styleable.Keyboard_iconClearClipboardKey,
|
||||
NAME_NUMPAD_KEY, R.styleable.Keyboard_iconNumpadKey,
|
||||
NAME_START_ONEHANDED_KEY, R.styleable.Keyboard_iconStartOneHandedMode,
|
||||
NAME_STOP_ONEHANDED_KEY, R.styleable.Keyboard_iconStopOneHandedMode,
|
||||
NAME_SWITCH_ONEHANDED_KEY, R.styleable.Keyboard_iconSwitchOneHandedMode,
|
||||
|
|
|
@ -52,6 +52,7 @@ public final class KeyboardState {
|
|||
void setAlphabetShiftLockShiftedKeyboard();
|
||||
void setEmojiKeyboard();
|
||||
void setClipboardKeyboard();
|
||||
void setNumpadKeyboard();
|
||||
void setSymbolsKeyboard();
|
||||
void setSymbolsShiftedKeyboard();
|
||||
|
||||
|
@ -90,6 +91,7 @@ public final class KeyboardState {
|
|||
private static final int MODE_SYMBOLS = 1;
|
||||
private static final int MODE_EMOJI = 2;
|
||||
private static final int MODE_CLIPBOARD = 3;
|
||||
private static final int MODE_NUMPAD = 4;
|
||||
private int mMode = MODE_ALPHABET;
|
||||
private AlphabetShiftState mAlphabetShiftState = new AlphabetShiftState();
|
||||
private boolean mIsSymbolShifted;
|
||||
|
@ -124,6 +126,9 @@ public final class KeyboardState {
|
|||
if (mMode == MODE_CLIPBOARD) {
|
||||
return "CLIPBOARD";
|
||||
}
|
||||
if (mMode == MODE_NUMPAD) {
|
||||
return "NUMPAD";
|
||||
}
|
||||
return "SYMBOLS_" + shiftModeToString(mShiftMode);
|
||||
}
|
||||
}
|
||||
|
@ -200,6 +205,10 @@ public final class KeyboardState {
|
|||
setClipboardKeyboard();
|
||||
return;
|
||||
}
|
||||
if (state.mMode == MODE_NUMPAD) {
|
||||
setNumpadKeyboard();
|
||||
return;
|
||||
}
|
||||
// Symbol mode
|
||||
if (state.mShiftMode == MANUAL_SHIFT) {
|
||||
setSymbolsShiftedKeyboard();
|
||||
|
@ -373,6 +382,19 @@ public final class KeyboardState {
|
|||
mSwitchActions.setClipboardKeyboard();
|
||||
}
|
||||
|
||||
private void setNumpadKeyboard() {
|
||||
if (DEBUG_INTERNAL_ACTION) {
|
||||
Log.d(TAG, "setNumpadKeyboard");
|
||||
}
|
||||
mMode = MODE_NUMPAD;
|
||||
mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
|
||||
// Remember caps lock mode and reset alphabet shift state.
|
||||
mPrevMainKeyboardWasShiftLocked = mAlphabetShiftState.isShiftLocked();
|
||||
mAlphabetShiftState.setShiftLocked(false);
|
||||
mSwitchActions.setNumpadKeyboard();
|
||||
|
||||
}
|
||||
|
||||
private void setOneHandedModeEnabled(boolean enabled) {
|
||||
if (DEBUG_INTERNAL_ACTION) {
|
||||
Log.d(TAG, "setOneHandedModeEnabled");
|
||||
|
@ -687,7 +709,7 @@ public final class KeyboardState {
|
|||
}
|
||||
break;
|
||||
case SWITCH_STATE_SYMBOL_BEGIN:
|
||||
if (mMode == MODE_EMOJI || mMode == MODE_CLIPBOARD) {
|
||||
if (mMode == MODE_EMOJI || mMode == MODE_CLIPBOARD || mMode == MODE_NUMPAD) {
|
||||
// When in the Emoji keyboard or clipboard one, we don't want to switch back to the main layout even
|
||||
// after the user hits an emoji letter followed by an enter or a space.
|
||||
break;
|
||||
|
@ -728,6 +750,12 @@ public final class KeyboardState {
|
|||
}
|
||||
} else if (code == Constants.CODE_ALPHA_FROM_CLIPBOARD) {
|
||||
setAlphabetKeyboard(autoCapsFlags, recapitalizeMode);
|
||||
} else if (code == Constants.CODE_NUMPAD) {
|
||||
setNumpadKeyboard();
|
||||
} else if (code == Constants.CODE_ALPHA_FROM_NUMPAD) {
|
||||
setAlphabetKeyboard(autoCapsFlags, recapitalizeMode);
|
||||
} else if (code == Constants.CODE_SYMBOL_FROM_NUMPAD) {
|
||||
setSymbolsKeyboard();
|
||||
} else if (code == Constants.CODE_START_ONE_HANDED_MODE) {
|
||||
setOneHandedModeEnabled(true);
|
||||
} else if (code == Constants.CODE_STOP_ONE_HANDED_MODE) {
|
||||
|
|
|
@ -262,6 +262,7 @@ public final class KeyboardTextsTable {
|
|||
/* 178: 0 */ "keyspec_clipboard_normal_key",
|
||||
/* 179: 0 */ "keyspec_start_onehanded_mode",
|
||||
/* 180: 0 */ "keyspec_language_switch",
|
||||
/* 181: 0 */ "keyspec_numpad_key",
|
||||
};
|
||||
|
||||
private static final String EMPTY = "";
|
||||
|
@ -491,6 +492,7 @@ public final class KeyboardTextsTable {
|
|||
/* keyspec_clipboard_normal_key */ "!icon/clipboard_normal_key|!code/key_clipboard",
|
||||
/* keyspec_start_onehanded_mode */ "!icon/start_onehanded_mode_key|!code/key_start_onehanded",
|
||||
/* keyspec_language_switch */ "!icon/language_switch_key|!code/key_language_switch",
|
||||
/* keyspec_numpad_key */ "!icon/numpad_key|!code/key_numpad",
|
||||
};
|
||||
|
||||
/* Locale af: Afrikaans */
|
||||
|
@ -4263,7 +4265,7 @@ public final class KeyboardTextsTable {
|
|||
|
||||
private static final Object[] LOCALES_AND_TEXTS = {
|
||||
// "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
|
||||
"DEFAULT", TEXTS_DEFAULT, /* 181/181 DEFAULT */
|
||||
"DEFAULT", TEXTS_DEFAULT, /* 182/182 DEFAULT */
|
||||
"af" , TEXTS_af, /* 7/ 13 Afrikaans */
|
||||
"ar" , TEXTS_ar, /* 55/110 Arabic */
|
||||
"az" , TEXTS_az, /* 11/ 18 Azerbaijani */
|
||||
|
|
|
@ -250,8 +250,11 @@ public final class Constants {
|
|||
public static final int CODE_START_ONE_HANDED_MODE = -17;
|
||||
public static final int CODE_STOP_ONE_HANDED_MODE = -18;
|
||||
public static final int CODE_SWITCH_ONE_HANDED_MODE = -19;
|
||||
public static final int CODE_NUMPAD = -20;
|
||||
public static final int CODE_ALPHA_FROM_NUMPAD = -21;
|
||||
public static final int CODE_SYMBOL_FROM_NUMPAD = -22;
|
||||
// Code value representing the code is not specified.
|
||||
public static final int CODE_UNSPECIFIED = -20;
|
||||
public static final int CODE_UNSPECIFIED = -23;
|
||||
|
||||
public static boolean isLetterCode(final int code) {
|
||||
return code >= CODE_SPACE;
|
||||
|
@ -282,6 +285,9 @@ public final class Constants {
|
|||
case CODE_START_ONE_HANDED_MODE: return "startOneHandedMode";
|
||||
case CODE_STOP_ONE_HANDED_MODE: return "stopOneHandedMode";
|
||||
case CODE_SWITCH_ONE_HANDED_MODE: return "switchOneHandedMode";
|
||||
case CODE_NUMPAD: return "numpad";
|
||||
case CODE_ALPHA_FROM_NUMPAD: return "alphaNumpad";
|
||||
case CODE_SYMBOL_FROM_NUMPAD: return "symbolNumpad";
|
||||
default:
|
||||
if (code < CODE_SPACE) return String.format("\\u%02X", code);
|
||||
if (code < 0x100) return String.format("%c", code);
|
||||
|
|
|
@ -717,6 +717,18 @@ public final class InputLogic {
|
|||
// Note: Switching back from clipboard keyboard to the main keyboard is being
|
||||
// handled in {@link KeyboardState#onEvent(Event,int)}.
|
||||
break;
|
||||
case Constants.CODE_NUMPAD:
|
||||
// Note: Switching Numpad keyboard is being handled in
|
||||
// {@link KeyboardState#onEvent(Event,int)}.
|
||||
break;
|
||||
case Constants.CODE_ALPHA_FROM_NUMPAD:
|
||||
// Note: Switching back from Numpad keyboard to the main keyboard is being
|
||||
// handled in {@link KeyboardState#onEvent(Event,int)}.
|
||||
break;
|
||||
case Constants.CODE_SYMBOL_FROM_NUMPAD:
|
||||
// Note: Switching back from Numpad keyboard to the symbol keyboard is being
|
||||
// handled in {@link KeyboardState#onEvent(Event,int)}.
|
||||
break;
|
||||
case Constants.CODE_SHIFT_ENTER:
|
||||
final Event tmpEvent = Event.createSoftwareKeypressEvent(Constants.CODE_ENTER,
|
||||
event.getMKeyCode(), event.getMX(), event.getMY(), event.isKeyRepeat());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue