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;