diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 76db3330f..8a9605242 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -443,6 +443,9 @@
+
+
+
diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml
index 93937cff1..cb1e33798 100644
--- a/java/res/xml/rowkeys_symbols1.xml
+++ b/java/res/xml/rowkeys_symbols1.xml
@@ -24,41 +24,51 @@
+ latin:moreKeys="!text/morekeys_symbols_1"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_2"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_3"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_4"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_5"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_6"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_7"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_8"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_9"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
+ latin:moreKeys="!text/morekeys_symbols_0"
+ latin:doNotSuppressNumbersInMoreKeys="true" />
diff --git a/java/src/org/futo/inputmethod/keyboard/Key.java b/java/src/org/futo/inputmethod/keyboard/Key.java
index 1888bcdca..f7f5dd62c 100644
--- a/java/src/org/futo/inputmethod/keyboard/Key.java
+++ b/java/src/org/futo/inputmethod/keyboard/Key.java
@@ -327,7 +327,13 @@ public class Key implements Comparable {
}
moreKeys = MoreKeySpec.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys);
- if(params.mId.mNumberRow && moreKeys != null) {
+ boolean shouldSuppressNumbersInMoreKeys = moreKeys != null &&
+ // Number row is active
+ params.mId.mNumberRow &&
+ // This key is not part of number row
+ style.getFlags(keyAttr, R.styleable.Keyboard_Key_doNotSuppressNumbersInMoreKeys) == 0;
+
+ if(shouldSuppressNumbersInMoreKeys) {
moreKeys = Arrays.stream(moreKeys)
.filter(s -> !s.matches("\\d+"))
.toArray(String[]::new);
@@ -372,7 +378,7 @@ public class Key implements Comparable {
String hintLabelCandidate = moreKeys[0];
if(hintLabelCandidate.startsWith("\\")) hintLabelCandidate = hintLabelCandidate.substring(1);
- if(hintLabelCandidate.length() == 1) {
+ if(hintLabelCandidate.length() < 3) {
hintLabel = needsToUpcase
? StringUtils.toTitleCaseOfKeyLabel(hintLabelCandidate, localeForUpcasing)
: hintLabelCandidate;
@@ -471,7 +477,7 @@ public class Key implements Comparable {
String hintLabelCandidate = moreKeys[0].mLabel;
if(hintLabelCandidate.startsWith("\\")) hintLabelCandidate = hintLabelCandidate.substring(1);
- if(hintLabelCandidate.length() == 1) {
+ if(hintLabelCandidate.length() < 3) {
hintLabel = moreKeys[0].mNeedsToUpperCase
? StringUtils.toTitleCaseOfKeyLabel(hintLabelCandidate, moreKeys[0].mLocale)
: hintLabelCandidate;