From 77c0a5b4f5929f8ae0fd08df2a3246bbaf2da729 Mon Sep 17 00:00:00 2001 From: BlackyHawky Date: Sat, 26 Aug 2023 08:57:46 +0200 Subject: [PATCH] Added new number pad (#81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- .../inputmethod/keyboard/KeyboardId.java | 4 + .../keyboard/KeyboardLayoutSet.java | 3 + .../keyboard/KeyboardSwitcher.java | 8 + .../keyboard/internal/KeyboardCodesSet.java | 6 + .../keyboard/internal/KeyboardIconsSet.java | 2 + .../keyboard/internal/KeyboardState.java | 30 ++- .../keyboard/internal/KeyboardTextsTable.java | 4 +- .../inputmethod/latin/common/Constants.java | 8 +- .../latin/inputlogic/InputLogic.java | 12 ++ .../sym_keyboard_numpad_key_holo_dark.png | Bin 0 -> 979 bytes .../sym_keyboard_numpad_key_lxx_light.png | Bin 0 -> 888 bytes .../sym_keyboard_numpad_key_holo_dark.png | Bin 0 -> 677 bytes .../sym_keyboard_numpad_key_lxx_light.png | Bin 0 -> 601 bytes .../sym_keyboard_numpad_key_holo_dark.png | Bin 0 -> 1312 bytes .../sym_keyboard_numpad_key_lxx_light.png | Bin 0 -> 1193 bytes .../sym_keyboard_numpad_key_holo_dark.png | Bin 0 -> 2075 bytes .../sym_keyboard_numpad_key_lxx_light.png | Bin 0 -> 1809 bytes .../sym_keyboard_numpad_key_holo_dark.png | Bin 0 -> 2761 bytes .../sym_keyboard_numpad_key_lxx_light.png | Bin 0 -> 2365 bytes app/src/main/res/values/attrs.xml | 3 + .../main/res/values/keyboard-icons-holo.xml | 1 + .../keyboard-icons-lxx-light-parent.xml | 1 + app/src/main/res/xml-land/kbd_numpad.xml | 9 + app/src/main/res/xml-land/rows_numpad.xml | 204 ++++++++++++++++++ .../main/res/xml-sw600dp-land/kbd_numpad.xml | 9 + app/src/main/res/xml-sw600dp/kbd_numpad.xml | 9 + .../res/xml-sw600dp/key_styles_common.xml | 52 +++++ app/src/main/res/xml-sw600dp/rows_numpad.xml | 204 ++++++++++++++++++ app/src/main/res/xml/kbd_numpad.xml | 9 + app/src/main/res/xml/key_styles_common.xml | 52 +++++ .../res/xml/keyboard_layout_set_azerty.xml | 3 + .../res/xml/keyboard_layout_set_qwerty.xml | 3 + app/src/main/res/xml/row_symbols4.xml | 2 +- app/src/main/res/xml/rows_numpad.xml | 142 ++++++++++++ .../values/donottranslate-more-keys.xml | 1 + 35 files changed, 777 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_holo_dark.png create mode 100644 app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_lxx_light.png create mode 100644 app/src/main/res/drawable-mdpi/sym_keyboard_numpad_key_holo_dark.png create mode 100644 app/src/main/res/drawable-mdpi/sym_keyboard_numpad_key_lxx_light.png create mode 100644 app/src/main/res/drawable-xhdpi/sym_keyboard_numpad_key_holo_dark.png create mode 100644 app/src/main/res/drawable-xhdpi/sym_keyboard_numpad_key_lxx_light.png create mode 100644 app/src/main/res/drawable-xxhdpi/sym_keyboard_numpad_key_holo_dark.png create mode 100644 app/src/main/res/drawable-xxhdpi/sym_keyboard_numpad_key_lxx_light.png create mode 100644 app/src/main/res/drawable-xxxhdpi/sym_keyboard_numpad_key_holo_dark.png create mode 100644 app/src/main/res/drawable-xxxhdpi/sym_keyboard_numpad_key_lxx_light.png create mode 100644 app/src/main/res/xml-land/kbd_numpad.xml create mode 100644 app/src/main/res/xml-land/rows_numpad.xml create mode 100644 app/src/main/res/xml-sw600dp-land/kbd_numpad.xml create mode 100644 app/src/main/res/xml-sw600dp/kbd_numpad.xml create mode 100644 app/src/main/res/xml-sw600dp/rows_numpad.xml create mode 100644 app/src/main/res/xml/kbd_numpad.xml create mode 100644 app/src/main/res/xml/rows_numpad.xml diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java index d994bc5d..26d32e58 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardId.java @@ -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; } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java index c51d6802..a4962cf7 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardLayoutSet.java @@ -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: diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java index 0ddd4839..0f9e7ba3 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java @@ -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), diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java index 3cda8b46..8583ab16 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardCodesSet.java @@ -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 diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java index 44f1cf35..4699fdc7 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardIconsSet.java @@ -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, diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java index 13a48413..c5c6281a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardState.java @@ -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) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java index 67113226..a49845ea 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -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 */ diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java index d65f5112..92d4f71e 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Constants.java @@ -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); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java index de28b640..aa8b081f 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java @@ -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()); diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_holo_dark.png b/app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..54bdb88e86d34a078a395036652f2c2611c26c7d GIT binary patch literal 979 zcmV;^11$WBP)@<#kPdJK zri0iO*r^~;LCyuB%ZT}QBE;&RV8#sJ%-YXMpitrNN1({TdCCx%sgS{2lZUS5dV=d>w{-zX_X>blUC{wMYEpo zXC)|Es^@2Igp^31&GQDa;GKCM646acc5j9&B3iE{u?{TsQxoieEwx4KwYReg#9h&i z)^%`a+>3M10c+T`oeCj#y{oYd=U#*9rG@zu2T z1k5a(VhR&167heCzE4DywVoh^AS3X;26gY;VE2ntalPIUU7L zKH^yP_9u{dqobx7o2f`!A~vN_6Gcl~DX6i$F4|T`Q`txe7r#&bG-e(^46D4yX`p``I4gotkA zX<2-t`tOP8OReM@Fo~21_l0)9YNZg2;2XXh?eNO2_ei9q(wBL zhf~t8#okS{Z|vPdCk1NITLEOHY1JXk(2r3TuFqu1XnAF6ScSSncp|t>Q<1c)bi{kP zpaD{3M2%VT%XmI{#AH21rVjasV)&-?(OICXaUImihC_((N_Uo z4Kz1v{rzbGdVGt3l`l{g}2A2^sdC4qLl(TI6bLL%?tJIBAy<;>hEC= zp9%Q%Mk@tE2#Y8%+5!TNaCnZGdpuz2A9%d==o-t^^+mb;QXjVN(Y=IMwjvVl{0dy2 zFLAHbY1wR`Pbp!_f|)7_ax<1W1z@VVUuSxk5?Ctts_P;yBNTZNsj?uI0|qK9zaW<^ z5_G%sfZQL{Sa9}Q#b9Ya%fCgOj+BSS+g5;x{sEn3NuqAc;dcN4002ovPDHLkV1ip1 B#C`w( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_lxx_light.png b/app/src/main/res/drawable-hdpi/sym_keyboard_numpad_key_lxx_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3819255c91eecb9f8fdf50e0d31f8641ff12377f GIT binary patch literal 888 zcmV-;1Bd*HP)}blZaFS8K7Y*naW%Srij#zP8!b4 zUx?_3hztx*7440pK~1PjEK_SmQOqpweQO*OmJ-nijYs5vMMHnusWRhC%RQ&+zl?L1Zvk;MW*wY)1E(vxwMa(>7=Cy0$c71^cmsbSz zJ^@EBUI4(nC!%IWL^MYm4e<9?DTZECmPWyb6${_gnEBbxDO-mriwFh#O!aG!D!BE+ zSw&&K!nF-7BcoW&|D-=Zn|+6@06cB6cUn`v95kb?u8GJH1*sMOF;!DY$lNo}Mm95# z(AQIk*nJaZJtSx)BFPqXmO;q+tz&O;33MI#71*}&wOaSorDWBs8$ff@V*K0~qcS5A znYodgMIv?SYJTRl>|NR`oiQ{-SULz&oXd(d$Yc%A5yX>UK&YdFGRP2tOAiylPy{=CBIDA9+K>CQ$7*RvPA+V3d) zzr@Iitukp`0*gD`*0O!9F+#Z0C@@3kwG@5qHRw?tilNpj`@b3^5&Z!rB7C6pFwzbH O0000(gD?SMgKj{W zfU-e0fCZv(I-Y~7$T+|ZI3v$f)K(?zYN(4+;^W<093{*QCJX>c6UCqxWL{XO9f&|;~OH|bR*yu1Go(Bg}&?UT@OZWyU zfX6@7d__bO_sSBCQa%tRHeAeH3XwtxyHT>luw@DJsYfEO@Ojoqj=xD6k#d~%0q~&i zCz#JL@;=xHZWJ(VMz+~4ApUbi;6}-7`=YBLgz!l}TzIA*C#KwvvITqV=;OM|6%}|aw)yZD=Ao0sw9xHP1Ufy43IMw5iO9@XTPku zC89?p(H#+8+5YIlD^ZCOw+5BhnRQE*H`AQngK<3#sRH7O5W+V1-a!liFWyv$ zZWR}L1yJMYX_z`(?EsBcimI?$+*<4$uoO_ySCEvcbsaKfg5l)QqhR`)Wtxm3(@0Nwb4h+eVl z3p~;(wnCwbc)_)_p0XI61?cSZkvc~#m3rHFN*HaxU*WjjkchqjvBQW@ET$UT00000 LNkvXXu0mjf?bauZ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/sym_keyboard_numpad_key_lxx_light.png b/app/src/main/res/drawable-mdpi/sym_keyboard_numpad_key_lxx_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3a808275b485bb0c9b940a0022c3cade46309b5b GIT binary patch literal 601 zcmV-f0;c_mP)(j@U^*}j zETRHT1&9iO3Y2-8CwcX8!v2w+(cI{6Ki}@VThw)pRxY@j8F#)fwRsER&{JC?$kNO% zyI-pD%d)K2y5icikJ5(B0aO4!06e<;B5AQ4ZkSos3my|VDfkM&4S+pYcQ4u)ER2V* z0Dg0$=SoO{>4yJ%8oK*tl+-Y>ssB-V0J0E~UNf!7B0?eW`duis(##GjuIvHm?u7d( z7`HX#bBI&%MaEt6QIdeCB-XG4aLuBX`(8)eUZeqpMV4io!Cv(hteu$IUru@4yO>et ztZdwUJ%`dRc;uS1X^|{vqtr!UN7*QKHl|ij8Zf-z`e?NP%^D6@wNi6XTP7#2Al-OEcpZE@c00000NkvXXu0mjf|6~?i literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/sym_keyboard_numpad_key_holo_dark.png b/app/src/main/res/drawable-xhdpi/sym_keyboard_numpad_key_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a51dbb451c5e653de67b25e0eacf718024383f85 GIT binary patch literal 1312 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/sym_keyboard_numpad_key_holo_dark.png b/app/src/main/res/drawable-xxxhdpi/sym_keyboard_numpad_key_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5ec80d29be2f3f25499fb0a03ad36c723cecef GIT binary patch literal 2761 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 7dceb458..a3ca3066 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -302,6 +302,7 @@ + @@ -498,6 +499,7 @@ + @@ -586,6 +588,7 @@ + diff --git a/app/src/main/res/values/keyboard-icons-holo.xml b/app/src/main/res/values/keyboard-icons-holo.xml index ce1f6ee2..927b6520 100644 --- a/app/src/main/res/values/keyboard-icons-holo.xml +++ b/app/src/main/res/values/keyboard-icons-holo.xml @@ -44,5 +44,6 @@ @drawable/sym_keyboard_start_onehanded_holo_dark @drawable/sym_keyboard_stop_onehanded_holo_dark @drawable/sym_keyboard_switch_onehanded_holo_dark + @drawable/sym_keyboard_numpad_key_holo_dark diff --git a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml index 220e6b2e..d2cbfe58 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml @@ -49,5 +49,6 @@ @drawable/sym_keyboard_start_onehanded_lxx_light @drawable/sym_keyboard_stop_onehanded_lxx_light @drawable/sym_keyboard_switch_onehanded_lxx_light + @drawable/sym_keyboard_numpad_key_lxx_light diff --git a/app/src/main/res/xml-land/kbd_numpad.xml b/app/src/main/res/xml-land/kbd_numpad.xml new file mode 100644 index 00000000..99b7833c --- /dev/null +++ b/app/src/main/res/xml-land/kbd_numpad.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/xml-land/rows_numpad.xml b/app/src/main/res/xml-land/rows_numpad.xml new file mode 100644 index 00000000..7bbd021c --- /dev/null +++ b/app/src/main/res/xml-land/rows_numpad.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml-sw600dp-land/kbd_numpad.xml b/app/src/main/res/xml-sw600dp-land/kbd_numpad.xml new file mode 100644 index 00000000..2e67f8a9 --- /dev/null +++ b/app/src/main/res/xml-sw600dp-land/kbd_numpad.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/xml-sw600dp/kbd_numpad.xml b/app/src/main/res/xml-sw600dp/kbd_numpad.xml new file mode 100644 index 00000000..2e67f8a9 --- /dev/null +++ b/app/src/main/res/xml-sw600dp/kbd_numpad.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/xml-sw600dp/key_styles_common.xml b/app/src/main/res/xml-sw600dp/key_styles_common.xml index d20e9739..9227bc3b 100644 --- a/app/src/main/res/xml-sw600dp/key_styles_common.xml +++ b/app/src/main/res/xml-sw600dp/key_styles_common.xml @@ -71,6 +71,58 @@ latin:parentStyle="baseForShiftKeyStyle" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/kbd_numpad.xml b/app/src/main/res/xml/kbd_numpad.xml new file mode 100644 index 00000000..3ee37b56 --- /dev/null +++ b/app/src/main/res/xml/kbd_numpad.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/xml/key_styles_common.xml b/app/src/main/res/xml/key_styles_common.xml index 84dcc6bd..230432a8 100644 --- a/app/src/main/res/xml/key_styles_common.xml +++ b/app/src/main/res/xml/key_styles_common.xml @@ -95,6 +95,58 @@ latin:backgroundType="functional" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keyboard_layout_set_azerty.xml b/app/src/main/res/xml/keyboard_layout_set_azerty.xml index fee85142..38fd3d42 100644 --- a/app/src/main/res/xml/keyboard_layout_set_azerty.xml +++ b/app/src/main/res/xml/keyboard_layout_set_azerty.xml @@ -40,4 +40,7 @@ + diff --git a/app/src/main/res/xml/keyboard_layout_set_qwerty.xml b/app/src/main/res/xml/keyboard_layout_set_qwerty.xml index a95c5b6a..9cc5a218 100644 --- a/app/src/main/res/xml/keyboard_layout_set_qwerty.xml +++ b/app/src/main/res/xml/keyboard_layout_set_qwerty.xml @@ -40,4 +40,7 @@ + diff --git a/app/src/main/res/xml/row_symbols4.xml b/app/src/main/res/xml/row_symbols4.xml index 5d63403d..65a4497c 100644 --- a/app/src/main/res/xml/row_symbols4.xml +++ b/app/src/main/res/xml/row_symbols4.xml @@ -22,7 +22,7 @@ + latin:keyStyle="numpadKeyStyle" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml index d26383e2..fa53afa2 100644 --- a/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml +++ b/tools/make-keyboard-text/src/main/resources/values/donottranslate-more-keys.xml @@ -264,6 +264,7 @@ !icon/clipboard_normal_key|!code/key_clipboard !icon/start_onehanded_mode_key|!code/key_start_onehanded !icon/language_switch_key|!code/key_language_switch + !icon/numpad_key|!code/key_numpad !string/label_go_key !string/label_send_key !string/label_next_key