diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 7c5a796..07fd0db 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -16,6 +16,9 @@ + + + Automatická kapitalizace Stiskne Shift na začátku věty diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 9c9b17a..a6be2d1 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -16,6 +16,9 @@ Nie Nur im Querformat Immer + + + Automatische Großschreibung Shift-Taste am Satzanfang aktivieren Zusätzliche Zeichen zur Tastatur hinzufügen diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index d723643..3f432be 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -16,6 +16,9 @@ + + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index d14c553..f565d42 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -16,6 +16,9 @@ Jamais Seulement en mode paysage Toujour + + + Majuscule automatique Activer Shift au début des phrases Ajouter des touches au clavier diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index c232cdf..5419b0a 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -16,6 +16,9 @@ + + + Maiuscole Automatiche Premi Shift all\'inizio di una frase diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 23e9a7a..03af73b 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -16,6 +16,9 @@ + + + diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index eb14345..be6580d 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -16,6 +16,9 @@ Nekad Tikai guleniskajā skatā Vienmēr + + + Automātiski lielie burti Piespiest Shift teikuma sākumā Pievienot tastatūrai taustiņus diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index cec1756..2412dd9 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -16,6 +16,9 @@ Nigdy Tylko w orientacji poziomej Zawsze + + + Automatyczne wielkie litery Naciśnij Shift na początku zdania Dodaj klawisze do klawiatury diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index fb1b29e..b698d8f 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -16,6 +16,9 @@ + + + Maiusculização automática Aciona o shift no início de cada frase diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 4f68013..961d852 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -16,6 +16,9 @@ + + + diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 8df421f..3b85c4e 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -16,6 +16,9 @@ + + + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index a8e1c01..a7a5622 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -16,6 +16,9 @@ 从不 只在横屏显示 一直显示 + + + 句首自动大写 在句子的开头自动按下Shift 选择要显示的按键 diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 524da3d..a43772c 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -71,6 +71,14 @@ @string/pref_show_numpad_landscape @string/pref_show_numpad_always + + high_first + low_first + + + @string/pref_numpad_layout_e_high_first + @string/pref_numpad_layout_e_low_first + 1 2 diff --git a/res/values/strings.xml b/res/values/strings.xml index a565b09..640e03a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -16,6 +16,9 @@ Never Only in landscape mode Always + NumPad layout + High digits first + Low digits first Automatic capitalisation Press Shift at the beginning of a sentence Add keys to the keyboard diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 1a61250..17344cf 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -33,6 +33,7 @@ + diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java index 8404946..fbb690d 100644 --- a/srcs/juloo.keyboard2/Config.java +++ b/srcs/juloo.keyboard2/Config.java @@ -28,6 +28,8 @@ final class Config public KeyboardData second_layout; // Or 'null' for none public KeyboardData custom_layout; // Might be 'null' public boolean show_numpad = false; + // From the 'numpad_layout' option, also apply to the numeric pane. + public boolean inverse_numpad = false; public float swipe_dist_px; public boolean vibrateEnabled; public long longPressTimeout; @@ -120,6 +122,7 @@ final class Config layout = layout_of_string(res, _prefs.getString("layout", "none")); second_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"); // 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. @@ -161,7 +164,7 @@ final class Config * - Replace the action key to show the right label * - Swap the enter and action keys */ - public KeyboardData modify_layout(KeyboardData original_kw) + public KeyboardData modify_layout(KeyboardData kw) { // Update the name to avoid caching in KeyModifier final KeyValue action_key = (actionLabel == null) ? null : @@ -171,7 +174,28 @@ final class Config final Set extra_keys = new HashSet(); extra_keys.addAll(extra_keys_subtype); extra_keys.addAll(extra_keys_param); - KeyboardData kw = original_kw.mapKeys(new KeyboardData.MapKeyValues() { + if (kw.num_pad && show_numpad) + kw = kw.addNumPad(); + kw = kw.mapKeys(new KeyboardData.MapKeyValues() { + /** Apply to the center value only. Partial match, fallback to [apply]. */ + public KeyboardData.Corner apply_key0(KeyboardData.Corner corner) + { + if (corner == null) + return null; + KeyValue kv = corner.kv; + switch (kv.getKind()) + { + case Char: + char c = kv.getChar(); + if (inverse_numpad) + c = inverse_numpad_char(c); + if (c != kv.getChar()) + return KeyboardData.Corner.of_kv(kv.withChar(c)); + break; + } + return super.apply(corner); + } + public KeyValue apply(KeyValue key, boolean localized) { boolean is_extra_key = extra_keys.contains(key); @@ -214,8 +238,6 @@ final class Config }); if (extra_keys.size() > 0) kw = kw.addExtraKeys(extra_keys.iterator()); - if (original_kw.num_pad && show_numpad) - kw = kw.addNumPad(); return kw; } @@ -284,6 +306,20 @@ final class Config return KeyboardData.load(res, id); } + char inverse_numpad_char(char c) + { + switch (c) + { + case '7': return '1'; + case '8': return '2'; + case '9': return '3'; + case '1': return '7'; + case '2': return '8'; + case '3': return '9'; + default: return c; + } + } + private static Config _globalConfig = null; public static void initGlobalConfig(SharedPreferences prefs, Resources res, diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index 7b50f98..550af40 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -462,12 +462,17 @@ class KeyboardData public Key apply(Key k) { - return new Key(apply(k.key0), apply(k.key1), apply(k.key2), + return new Key(apply_key0(k.key0), apply(k.key1), apply(k.key2), apply(k.key3), apply(k.key4), k.width, k.shift, k.edgekeys, k.indication); } - private Corner apply(Corner c) + protected Corner apply_key0(Corner c) + { + return apply(c); + } + + protected Corner apply(Corner c) { if (c == null) return null;