From 540384bb0a29b9e43dd4fe69fd5fc8f380fd6cbd Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Mon, 30 Jan 2023 23:58:47 +0100 Subject: [PATCH] Add optional number row An option is added to enable an extra number row at the top of the keyboard. Digits are removed from the keyboard while the number row is visible. --- res/values-cs/strings.xml | 2 ++ res/values-de/strings.xml | 2 ++ res/values-es/strings.xml | 2 ++ res/values-fr/strings.xml | 2 ++ res/values-it/strings.xml | 2 ++ res/values-ko/strings.xml | 2 ++ res/values-lv/strings.xml | 2 ++ res/values-pl/strings.xml | 2 ++ res/values-pt/strings.xml | 2 ++ res/values-ru/strings.xml | 2 ++ res/values-tr/strings.xml | 2 ++ res/values-zh-rCN/strings.xml | 2 ++ res/values/strings.xml | 2 ++ res/xml/number_row.xml | 13 +++++++++++++ res/xml/settings.xml | 1 + srcs/juloo.keyboard2/Config.java | 8 ++++++++ srcs/juloo.keyboard2/KeyboardData.java | 14 +++++++++++--- 17 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 res/xml/number_row.xml diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index fc084f6..5d03797 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e810baa..b6c887e 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -21,6 +21,8 @@ Nie Nur im Querformat Immer + + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index e029a3c..1abfe80 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 773398b..cdd1977 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -21,6 +21,8 @@ Jamais Seulement en mode paysage Toujour + + Disposition du pavé numérique Du plus haut au plus bas Du plus bas au plus haut diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index ef467bf..294693e 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index d11c6f7..27eb581 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 6854892..9abf452 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -21,6 +21,8 @@ Nekad Tikai guleniskajā skatā Vienmēr + + diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 2313c63..685f4f8 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -21,6 +21,8 @@ Nigdy Tylko w orientacji poziomej Zawsze + + Układ klawiatury numerycznej Od największej cyfry Od najmniejszej cyfry diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 5c3f4ed..27d7758 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index a845ccf..f26d0a6 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -21,6 +21,8 @@ Никогда Только в ландшафтном режиме Всегда + + NumPad раскладка Старшие цифры сверху Младшие цифры сверху diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 1e9aba4..33455b1 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -21,6 +21,8 @@ + + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index c3c1412..f217d58 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -21,6 +21,8 @@ 从不 只在横屏显示 一直显示 + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 8a717a4..0e1850a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -21,6 +21,8 @@ Never Only in landscape mode Always + Show number row + Add a number row at the top of the keyboard when the numpad is hidden NumPad layout High digits first Low digits first diff --git a/res/xml/number_row.xml b/res/xml/number_row.xml new file mode 100644 index 0000000..de49a54 --- /dev/null +++ b/res/xml/number_row.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 8633ae0..4eccb02 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -5,6 +5,7 @@ + diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index 5ff7951..bd0db23 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -28,6 +28,7 @@ final class Config public boolean show_numpad = false; // From the 'numpad_layout' option, also apply to the numeric pane. public boolean inverse_numpad = false; + public boolean number_row; public float swipe_dist_px; public float slide_step_px; public boolean vibrateEnabled; @@ -111,6 +112,7 @@ final class Config second_layout = tweak_secondary_layout(layout_of_string(res, _prefs.getString("second_layout", "none"))); custom_layout = KeyboardData.load_string(_prefs.getString("custom_layout", "")); inverse_numpad = _prefs.getString("numpad_layout", "default").equals("low_first"); + number_row = _prefs.getBoolean("number_row", false); // The baseline for the swipe distance correspond to approximately the // width of a key in portrait mode, as most layouts have 10 columns. // Multipled by the DPI ratio because most swipes are made in the diagonals. @@ -165,6 +167,7 @@ final class Config * - Remove "localized" keys from other locales (not in 'extra_keys') * - Replace the action key to show the right label * - Swap the enter and action keys + * - Add the optional numpad and number row */ public KeyboardData modify_layout(KeyboardData kw) { @@ -176,8 +179,11 @@ final class Config if (extra_keys_subtype != null) extra_keys.addAll(extra_keys_subtype); extra_keys.addAll(extra_keys_param); + boolean number_row = this.number_row && !show_numpad; if (show_numpad) KeyboardData.num_pad.getKeys(remove_keys); + if (number_row) + KeyboardData.number_row.getKeys(remove_keys); kw = kw.mapKeys(new KeyboardData.MapKeyValues() { public KeyValue apply(KeyValue key, boolean localized) { @@ -223,6 +229,8 @@ final class Config }); if (show_numpad) kw = kw.addNumPad(); + if (number_row) + kw = kw.addNumberRow(); if (extra_keys.size() > 0) kw = kw.addExtraKeys(extra_keys.iterator()); return kw; diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index 5130284..078e849 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -72,6 +72,12 @@ class KeyboardData return new KeyboardData(extendedRows, compute_max_width(extendedRows)); } + public KeyboardData addNumberRow() + { + rows.add(0, number_row.updateWidth(keysWidth)); + return this; + } + public Key findKeyWithValue(KeyValue kv) { for (Row r : rows) @@ -104,6 +110,7 @@ class KeyboardData } public static Row bottom_row; + public static Row number_row; public static KeyboardData num_pad; public static KeyboardData pin_entry; private static Map _layoutCache = new HashMap(); @@ -112,7 +119,8 @@ class KeyboardData { try { - bottom_row = parse_bottom_row(res.getXml(R.xml.bottom_row)); + bottom_row = parse_row(res.getXml(R.xml.bottom_row)); + number_row = parse_row(res.getXml(R.xml.number_row)); num_pad = parse_keyboard(res.getXml(R.xml.numpad)); } catch (Exception e) @@ -187,10 +195,10 @@ class KeyboardData return w; } - private static Row parse_bottom_row(XmlPullParser parser) throws Exception + private static Row parse_row(XmlPullParser parser) throws Exception { if (!expect_tag(parser, "row")) - throw new Exception("Failed to parse bottom row"); + throw new Exception("Failed to parse row"); return Row.parse(parser); }