From da25fc282d5ee0fb8aa8dad02465577902d3e245 Mon Sep 17 00:00:00 2001 From: Aleksandras Kostarevas Date: Thu, 1 Aug 2024 15:45:57 +0300 Subject: [PATCH] Avoid suppressing Arabic numerals as morekeys when number row is active (for languages that use Indo-Arabic numerals) --- java/res/values/attrs.xml | 3 ++ java/res/xml/rowkeys_symbols1.xml | 30 ++++++++++++------- .../org/futo/inputmethod/keyboard/Key.java | 12 ++++++-- 3 files changed, 32 insertions(+), 13 deletions(-) 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;