From fb90217610a25a1dc3ece2bf6519c198fa1f0ca0 Mon Sep 17 00:00:00 2001 From: sspanak Date: Thu, 8 May 2025 18:47:48 +0300 Subject: [PATCH] expanding the special chars now works --- .../tt9/ime/helpers/SuggestionOps.java | 16 +++++++ .../sspanak/tt9/ime/modes/InputMode.java | 34 +++++++++++--- .../sspanak/tt9/ime/modes/ModeBopomofo.java | 4 +- .../sspanak/tt9/ime/modes/ModeCheonjiin.java | 44 ++++++++++++------- .../sspanak/tt9/ime/modes/ModeIdeograms.java | 9 +++- .../sspanak/tt9/ime/modes/ModePinyin.java | 2 +- .../sspanak/tt9/ime/modes/ModeWords.java | 29 ++++++------ .../tt9/ime/modes/helpers/Sequences.java | 6 +++ .../tt9/ui/main/keys/SoftKeyNumber2to9.java | 4 +- .../sspanak/tt9/ui/tray/SuggestionsBar.java | 8 ++-- .../sspanak/tt9/util/chars/Characters.java | 5 ++- docs/help/help.de.md | 4 -- docs/help/help.en.md | 4 -- docs/help/help.es.md | 4 -- docs/help/help.fr.md | 4 -- docs/help/help.it.md | 4 -- docs/help/help.pt.md | 5 --- docs/help/help.ru.md | 4 -- docs/help/help.tr.md | 4 -- docs/help/help.uk.md | 4 -- 20 files changed, 111 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java index fe044cef..9f5d9a02 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java @@ -17,6 +17,7 @@ import io.github.sspanak.tt9.ui.main.ResizableMainView; import io.github.sspanak.tt9.ui.tray.SuggestionsBar; import io.github.sspanak.tt9.util.ConsumerCompat; import io.github.sspanak.tt9.util.Text; +import io.github.sspanak.tt9.util.chars.Characters; public class SuggestionOps { @NonNull private final Handler delayedAcceptHandler; @@ -112,6 +113,10 @@ public class SuggestionOps { public String acceptCurrent() { String word = getCurrent(); + if (Characters.PLACEHOLDER.equals(word)) { + return ""; + } + if (!word.isEmpty()) { commitCurrent(true, true); } @@ -122,6 +127,10 @@ public class SuggestionOps { public String acceptIncomplete() { String currentWord = this.getCurrent(); + if (Characters.PLACEHOLDER.equals(currentWord)) { + return ""; + } + commitCurrent(false, true); return currentWord; @@ -129,6 +138,10 @@ public class SuggestionOps { public String acceptIncompleteAndKeepList() { + if (Characters.PLACEHOLDER.equals(this.getCurrent())) { + return ""; + } + commitCurrent(false, false); return this.getCurrent(); } @@ -140,6 +153,9 @@ public class SuggestionOps { } String lastComposingText = getCurrent(language, sequenceLength - 1); + if (Characters.PLACEHOLDER.equals(lastComposingText)) { + return ""; + } commitCurrent(false, true); return lastComposingText; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java index 1f2f0b24..b8bed7da 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/InputMode.java @@ -86,14 +86,23 @@ abstract public class InputMode { public void onAcceptSuggestion(@NonNull String word) { onAcceptSuggestion(word, false); } public void onAcceptSuggestion(@NonNull String word, boolean preserveWordList) {} public void onCursorMove(@NonNull String word) { if (!digitSequence.isEmpty()) onAcceptSuggestion(word); } - public void onReplaceSuggestion(@NonNull String rawWord) { - if (SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION.equals(rawWord)) { - Logger.d("InputMode", "Loading special characters for: " + seq.SPECIAL_CHAR_SEQUENCE); + public boolean onReplaceSuggestion(@NonNull String rawWord) { + reset(); + + boolean result = false; + + if (rawWord.equals(SuggestionsBar.SHOW_SPECIAL_CHARS_SUGGESTION)) { + digitSequence = seq.SPECIAL_CHAR_SEQUENCE; + loadSpecialCharacters(); + result = true; + } else if (rawWord.equals(SuggestionsBar.SHOW_CURRENCIES_SUGGESTION)) { + digitSequence = seq.CURRENCY_SEQUENCE; + loadSpecialCharacters(); + result = true; } - if (SuggestionsBar.SHOW_CURRENCIES_SUGGESTION.equals(rawWord)) { - Logger.d("InputMode", "Loading special characters for: " + seq.CURRENCY_SEQUENCE); - } + onSuggestionsUpdated.run(); + return result; } /** @@ -208,9 +217,20 @@ abstract public class InputMode { } + /** + * Loads the special characters for 0-key or 1-key. For 0-key, this could be a minimized (show more) + * special character list, or the whitespace list. + */ protected boolean loadSpecialCharacters() { suggestions.clear(); - suggestions.addAll(settings.getOrderedKeyChars(language, digitSequence.charAt(0) - '0')); + + if (digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE) || digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + suggestions.addAll(settings.getOrderedKeyChars(language, digitSequence.charAt(0) - '0')); + } else if (digitSequence.equals(seq.CURRENCY_SEQUENCE)) { + suggestions.addAll(Characters.getCurrencies(language)); + } else { + suggestions.addAll(getAbbreviatedSpecialChars()); + } return true; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java index 3725f4c8..220d8ed2 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeBopomofo.java @@ -70,9 +70,9 @@ public class ModeBopomofo extends ModePinyin { @Override protected void onNumberPress(int nextNumber) { - if (digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE)) { + if (seq.startsWithEmojiSequence(digitSequence)) { digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); - } else { + } else if (!seq.SPECIAL_CHAR_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { digitSequence += String.valueOf(nextNumber); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java index ea267744..e8bf3678 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeCheonjiin.java @@ -99,7 +99,9 @@ class ModeCheonjiin extends InputMode { @Override public boolean onBackspace() { - if (digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { + digitSequence = seq.WHITESPACE_SEQUENCE; + } else if (digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { digitSequence = ""; } else if (digitSequence.equals(seq.WHITESPACE_SEQUENCE) || (!digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE) && Cheonjiin.isSingleJamo(digitSequence))) { digitSequence = ""; @@ -148,23 +150,27 @@ class ModeCheonjiin extends InputMode { digitSequence = digitSequence.substring(0, digitSequence.length() - rewindAmount); } - if (digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE)) { + if (seq.startsWithEmojiSequence(digitSequence)) { digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, nextNumber); - } else { + } else if (!seq.SPECIAL_CHAR_SEQUENCE.equals(digitSequence) && !seq.CURRENCY_SEQUENCE.equals(digitSequence)) { digitSequence += String.valueOf(nextNumber); } + + if (seq.PREFERRED_CHAR_SEQUENCE.equals(digitSequence)) { + autoAcceptTimeout = 0; + } } - private int shouldRewindRepeatingNumbers(int nextNumber) { + protected int shouldRewindRepeatingNumbers(int nextNumber) { + if (seq.isAnySpecialCharSequence(digitSequence)) { + return 0; + } + final int nextChar = nextNumber + '0'; final int repeatingDigits = digitSequence.length() > 1 && digitSequence.charAt(digitSequence.length() - 1) == nextChar ? Cheonjiin.getRepeatingEndingDigits(digitSequence) : 0; final int keyCharsCount = nextNumber == 0 ? 2 : language.getKeyCharacters(nextNumber).size(); - if (seq.WHITESPACE_SEQUENCE.equals(digitSequence)) { - return seq.WHITESPACE_SEQUENCE.length(); - } - if (repeatingDigits == 0 || keyCharsCount < 2) { return 0; } @@ -246,11 +252,13 @@ class ModeCheonjiin extends InputMode { return false; } - int number = digitSequence.isEmpty() ? Integer.MAX_VALUE : digitSequence.charAt(digitSequence.length() - 1) - '0'; - if (KEY_CHARACTERS.size() > number) { - suggestions.clear(); - suggestions.addAll(KEY_CHARACTERS.get(number)); - return true; + if (digitSequence.equals(seq.WHITESPACE_SEQUENCE) || digitSequence.equals(seq.PUNCTUATION_SEQUENCE)) { + int number = digitSequence.isEmpty() ? Integer.MAX_VALUE : digitSequence.charAt(digitSequence.length() - 1) - '0'; + if (KEY_CHARACTERS.size() > number) { + suggestions.clear(); + suggestions.addAll(KEY_CHARACTERS.get(number)); + return true; + } } return super.loadSpecialCharacters(); @@ -258,7 +266,11 @@ class ModeCheonjiin extends InputMode { protected boolean shouldDisplaySpecialCharacters() { - return digitSequence.equals(seq.PUNCTUATION_SEQUENCE) || digitSequence.equals(seq.WHITESPACE_SEQUENCE); + return + digitSequence.equals(seq.PUNCTUATION_SEQUENCE) + || digitSequence.equals(seq.WHITESPACE_SEQUENCE) + || digitSequence.equals(seq.CURRENCY_SEQUENCE) + || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE); } @@ -324,8 +336,8 @@ class ModeCheonjiin extends InputMode { public boolean shouldAcceptPreviousSuggestion(int nextKey, boolean hold) { return (hold && !digitSequence.isEmpty()) - || (digitSequence.equals(seq.WHITESPACE_SEQUENCE) && nextKey != 0) - || (digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE) && nextKey != 1); + || (nextKey != Sequences.SPECIAL_CHAR_KEY && digitSequence.startsWith(seq.WHITESPACE_SEQUENCE)) + || (nextKey != Sequences.PUNCTUATION_KEY && digitSequence.startsWith(seq.PUNCTUATION_SEQUENCE)); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java index 1c7bbefa..3dbeb4a5 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeIdeograms.java @@ -176,16 +176,21 @@ public class ModeIdeograms extends ModeWords { * the given Latin word. */ @Override - public void onReplaceSuggestion(@NonNull String word) { + public boolean onReplaceSuggestion(@NonNull String word) { if (word.isEmpty() || new Text(word).isNumeric()) { reset(); Logger.i(LOG_TAG, "Can not replace an empty or numeric word."); - return; + return false; + } + + if (super.onReplaceSuggestion(word)) { + return true; } isFiltering = false; stem = word; loadSuggestions(""); + return true; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java index d30b7926..775b5eab 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePinyin.java @@ -65,7 +65,7 @@ public class ModePinyin extends ModeIdeograms { // In East Asian languages, Space must accept the current word, or type a space when there is no word. // Here, we handle the case when 0-key is Space, unlike the Space hotkey in HotkeyHandler, // which could be a different key, assigned by the user. - if (!digitSequence.isEmpty() && !digitSequence.endsWith(seq.WHITESPACE_SEQUENCE) && nextKey == Sequences.SPECIAL_CHAR_KEY) { + if (!digitSequence.isEmpty() && !digitSequence.equals(seq.WHITESPACE_SEQUENCE) && nextKey == Sequences.SPECIAL_CHAR_KEY) { ignoreNextSpace = true; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java index 0af08767..3082fd9f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModeWords.java @@ -19,6 +19,7 @@ import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Text; import io.github.sspanak.tt9.util.TextTools; +import io.github.sspanak.tt9.util.chars.Characters; class ModeWords extends ModeCheonjiin { private final String LOG_TAG = getClass().getSimpleName(); @@ -68,7 +69,12 @@ class ModeWords extends ModeCheonjiin { return false; } - digitSequence = digitSequence.substring(0, digitSequence.length() - 1); + if (digitSequence.equals(seq.CURRENCY_SEQUENCE) || digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE)) { + digitSequence = seq.WHITESPACE_SEQUENCE; + } else { + digitSequence = digitSequence.substring(0, digitSequence.length() - 1); + } + if (digitSequence.isEmpty()) { clearWordStem(); } else if (stem.length() > digitSequence.length()) { @@ -93,16 +99,6 @@ class ModeWords extends ModeCheonjiin { } - @Override - protected void onNumberPress(int number) { - digitSequence = EmojiLanguage.validateEmojiSequence(seq, digitSequence, number); - - if (digitSequence.equals(seq.PREFERRED_CHAR_SEQUENCE)) { - autoAcceptTimeout = 0; - } - } - - @Override public boolean changeLanguage(@Nullable Language newLanguage) { if (newLanguage != null && newLanguage.isTranscribed()) { @@ -222,7 +218,7 @@ class ModeWords extends ModeCheonjiin { } try { - digitSequence = language.getDigitSequenceForWord(newStem); + digitSequence = Characters.getWhitespaces(language).contains(newStem) ? seq.WHITESPACE_SEQUENCE : language.getDigitSequenceForWord(newStem); isStemFuzzy = !exact; stem = newStem.toLowerCase(language.getLocale()); @@ -287,7 +283,7 @@ class ModeWords extends ModeCheonjiin { protected boolean loadPreferredChar() { - if (digitSequence.startsWith(seq.PREFERRED_CHAR_SEQUENCE)) { + if (digitSequence.equals(seq.PREFERRED_CHAR_SEQUENCE)) { suggestions.clear(); suggestions.add(getPreferredChar()); return true; @@ -408,7 +404,9 @@ class ModeWords extends ModeCheonjiin { // Prevent typing the preferred character when the user has scrolled the special char suggestions. // For example, it makes more sense to allow typing "+ " with 0 + scroll + 0, instead of clearing // the "+" and replacing it with the preferred character. - if (!stem.isEmpty() && nextKey == Sequences.SPECIAL_CHAR_KEY && digitSequence.charAt(0) == Sequences.SPECIAL_CHAR_CODE) { + boolean specialOrCurrency = digitSequence.equals(seq.SPECIAL_CHAR_SEQUENCE) || digitSequence.equals(seq.CURRENCY_SEQUENCE); + boolean isWhitespaceAndScrolled = digitSequence.equals(seq.WHITESPACE_SEQUENCE) && !stem.isEmpty(); + if (nextKey == Sequences.SPECIAL_CHAR_KEY && (isWhitespaceAndScrolled || specialOrCurrency)) { return true; } @@ -466,6 +464,9 @@ class ModeWords extends ModeCheonjiin { } + @Override protected int shouldRewindRepeatingNumbers(int nextNumber) { return 0; } + + @NonNull @Override public String toString() { diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java index 3d8b32c6..a5fcaaac 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Sequences.java @@ -40,6 +40,12 @@ public class Sequences { CURRENCY_SEQUENCE = SPECIAL_CHAR_SEQUENCE + SPECIAL_CHAR_KEY; } + public boolean startsWithEmojiSequence(String sequence) { + return + sequence != null + && (sequence.startsWith(EMOJI_SEQUENCE) || sequence.startsWith(CUSTOM_EMOJI_SEQUENCE)); + } + public boolean isAnySpecialCharSequence(String sequence) { if (sequence == null) { return false; diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java index a19c7721..7d97456b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyNumber2to9.java @@ -109,10 +109,10 @@ public class SoftKeyNumber2to9 extends SoftKeyNumber { */ private String abbreviateCharList(String chars, String abbreviationSign, Locale locale, boolean isUppercase) { String firstLetter = chars.substring(0, 1); - firstLetter = TextTools.isCombining(firstLetter) ? Characters.PLACEHOLDER + firstLetter : firstLetter; + firstLetter = TextTools.isCombining(firstLetter) ? Characters.COMBINING_BASE + firstLetter : firstLetter; String lastLetter = chars.substring(chars.length() - 1); - lastLetter = TextTools.isCombining(lastLetter) ? Characters.PLACEHOLDER + lastLetter : lastLetter; + lastLetter = TextTools.isCombining(lastLetter) ? Characters.COMBINING_BASE + lastLetter : lastLetter; String list = firstLetter + abbreviationSign + lastLetter; return isUppercase ? list.toUpperCase(locale) : list; diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java index 149eca2b..1c408d7a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java @@ -27,8 +27,8 @@ import io.github.sspanak.tt9.util.TextTools; import io.github.sspanak.tt9.util.chars.Characters; public class SuggestionsBar { - public static final String SHOW_SPECIAL_CHARS_SUGGESTION = "(@#*…)"; - public static final String SHOW_CURRENCIES_SUGGESTION = "($€£…)"; + public static final String SHOW_SPECIAL_CHARS_SUGGESTION = "#%…"; + public static final String SHOW_CURRENCIES_SUGGESTION = "$€…"; private final String SHOW_MORE_SUGGESTION = "(...)"; private final String STEM_SUFFIX = "… +"; @@ -165,7 +165,7 @@ public class SuggestionsBar { // "..." prefix int startIndex = 0; - String[] prefixes = {STEM_VARIATION_PREFIX, STEM_PUNCTUATION_VARIATION_PREFIX, Characters.PLACEHOLDER}; + String[] prefixes = {STEM_VARIATION_PREFIX, STEM_PUNCTUATION_VARIATION_PREFIX, Characters.COMBINING_BASE}; for (String prefix : prefixes) { int prefixIndex = suggestion.indexOf(prefix) + 1; if (prefixIndex < endIndex) { // do not match the prefix chars when they are part of STEM_SUFFIX @@ -324,7 +324,7 @@ public class SuggestionsBar { private String formatUnreadableSuggestion(String suggestion) { if (TextTools.isCombining(suggestion)) { - return Characters.PLACEHOLDER + suggestion; + return Characters.COMBINING_BASE + suggestion; } return switch (suggestion) { diff --git a/app/src/main/java/io/github/sspanak/tt9/util/chars/Characters.java b/app/src/main/java/io/github/sspanak/tt9/util/chars/Characters.java index ef0268a2..7237f2e6 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/chars/Characters.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/chars/Characters.java @@ -10,9 +10,10 @@ import io.github.sspanak.tt9.languages.Language; import io.github.sspanak.tt9.languages.LanguageKind; public class Characters extends Emoji { - public static final String PLACEHOLDER = "◌"; + public static final String COMBINING_BASE = "◌"; public static final String IDEOGRAPHIC_SPACE = " "; - public static final String TAB = "↹"; + public static final String PLACEHOLDER = "\u200A"; + public static final String TAB = "Tab"; public static final ArrayList Currency = new ArrayList<>(Arrays.asList( diff --git a/docs/help/help.de.md b/docs/help/help.de.md index 89d4f2ae..83e4ebb9 100644 --- a/docs/help/help.de.md +++ b/docs/help/help.de.md @@ -69,20 +69,16 @@ _**Hinweis 2:** Um Nachrichten mit OK in Nachrichtenanwendungen zu senden, müss - **Im 123 Modus:** - **Drücken:** tippt „0“. - **Halten:** tippt Sonder-/Mathematikzeichen. - - **Halten der „0“ und Drücken der Umschalt-Taste (Standard: Halten der „0“, Drücken von „✱“):** tippt Währungszeichen - **Im ABC Modus:** - **Drücken:** tippt Leerzeichen, neue Zeile oder Sonder-/Mathematikzeichen. - **Halten:** tippt „0“. - - **Drücken „0“ und Drücken der Umschalt-Taste (Standard: Drücken „0“, „✱“):** tippt Währungszeichen - **Im Prädiktiven Modus:** - **Drücken:** tippt Leerzeichen, neue Zeile oder Sonder-/Mathematikzeichen. - **Doppeldruck:** tippt das Zeichen, das in den Einstellungen für den Prädiktiven Modus zugewiesen wurde (Standard: „.“) - **Halten:** tippt „0“. - - **Drücken „0“ und Drücken der Umschalt-Taste (Standard: Drücken „0“, „✱“):** tippt Währungszeichen - **Im Cheonjiin-Modus (Koreanisch):** - **Drücken:** Gibt "ㅇ" und "ㅁ" ein. - **Halten:** Gibt Leerzeichen, neue Zeilen, "0" oder Sonder-/Mathematikzeichen ein. - - **Halten von "0" und Drücken von Shift (Standard: Halten von "0", Drücken von "✱"):** Gibt Währungszeichen ein. #### 1-Taste: - **Im 123 Modus:** diff --git a/docs/help/help.en.md b/docs/help/help.en.md index 81e108ff..11778bd3 100644 --- a/docs/help/help.en.md +++ b/docs/help/help.en.md @@ -69,20 +69,16 @@ _**Note 2:** To send messages with OK in messaging applications, you must enable - **In 123 mode:** - **Press:** type "0". - **Hold:** type special/math characters. - - **Hold "0", then press Shift (Default: hold "0", press "✱"):** type currency characters. - **In ABC mode:** - **Press:** type space, newline, or special/math characters. - **Hold:** type "0". - - **Press "0", then press Shift (Default: press "0", "✱"):** type currency characters. - **In Predictive mode:** - **Press:** type space, newline, or special/math characters. - **Double press:** type the character assigned in Predictive mode settings. (Default: ".") - **Hold:** type "0". - - **Press "0", then press Shift (Default: press "0", "✱"):** type currency characters. - **In Cheonjiin mode (Korean):** - **Press:** type "ㅇ" and "ㅁ". - **Hold:** type space, newline, 0, or special/math characters. - - **Hold "0", then press Shift (Default: hold "0", press "✱"):** type currency characters. #### 1-key: - **In 123 mode:** diff --git a/docs/help/help.es.md b/docs/help/help.es.md index c9e375cd..c2adccdc 100644 --- a/docs/help/help.es.md +++ b/docs/help/help.es.md @@ -69,20 +69,16 @@ _**Nota 2:** Para enviar mensajes con OK en aplicaciones de mensajería, debes h - **En modo 123:** - **Presione:** escribir "0". - **Mantenga presionado:** escribir caracteres especiales/matemáticos. - - **Mantenga presionado "0", luego presione Shift (Por Defecto: mantenga presionado "0", presione "✱")**: escribir caracteres de moneda. - **En modo ABC:** - **Presione:** escribir un espacio, nueva línea o caracteres especiales/matemáticos. - **Mantenga presionado:** escribir "0". - - **Presione "0", luego presione Shift (Por Defecto: presione "0", "✱")**: escribir caracteres de moneda. - **En modo Predictivo:** - **Presione:** escribir un espacio, nueva línea o caracteres especiales/matemáticos. - **Presione dos veces:** escribir el carácter asignado en la configuración de modo predictivo. (Por Defecto: ".") - **Mantenga presionado:** escribir "0". - - **Presione "0", luego presione Shift (Por Defecto: presione "0", "✱")**: escribir caracteres de moneda. - **En modo Cheonjiin (Coreano):** - **Presione:** escribir "ㅇ" y "ㅁ". - **Mantenga presionado:** escribir espacio, nueva línea, "0" o caracteres especiales/matemáticos. - - **Mantenga presionado "0", luego presione Shift (Por Defecto: Mantenga presionado "0", presione "✱"):** escribir caracteres de moneda. #### Tecla 1: - **En modo 123:** diff --git a/docs/help/help.fr.md b/docs/help/help.fr.md index b10ec608..14d190b7 100644 --- a/docs/help/help.fr.md +++ b/docs/help/help.fr.md @@ -69,20 +69,16 @@ _**Remarque 2** : Pour envoyer des messages avec OK dans les applications de mes - **En mode 123 :** - **Appui** : tape "0". - **Appui long** : tape des caractères spéciaux/mathématiques. - - **Appui long sur "0", puis appui sur Maj (par défaut : appui long sur "0", puis sur "✱") :** tape des symboles monétaires. - **En mode ABC :** - **Appui** : tape espace, nouvelle ligne, ou caractères spéciaux/mathématiques. - **Appui long** : tape "0". - - **Appui sur "0", puis appui sur Maj (par défaut : appui sur "0", "✱") :** tape des symboles monétaires. - **En mode Prédictif :** - **Appui** : tape un espace, une nouvelle ligne, ou caractères spéciaux/mathématiques. - **Double appui** : tape le caractère attribué dans les paramètres du mode Prédictif (par défaut : "."). - **Appui long** : tape "0". - - **Appui sur "0", puis appui sur Maj (par défaut : appui sur "0", "✱") :** tape des symboles monétaires. - **En mode Cheonjiin (Coréen) :** - **Appui :** tape "ㅇ" et "ㅁ". - **Appui long :** tape un espace, une nouvelle ligne, "0" ou des caractères spéciaux/mathématiques. - - **Appui long sur "0", puis appui sur Maj (Par défaut : appui long sur "0", appuyer sur "✱") :** tape des symboles monétaires. #### Touche 1 : - **En mode 123 :** diff --git a/docs/help/help.it.md b/docs/help/help.it.md index c708db59..e3067e61 100644 --- a/docs/help/help.it.md +++ b/docs/help/help.it.md @@ -69,20 +69,16 @@ _**Nota 2:** Per inviare messaggi con OK nelle applicazioni di messaggistica, è - **In modalità 123:** - **Premere:** digita "0". - **Tenere premuto:** digita caratteri speciali/matematici. - - **Tenere premuto "0", quindi premere Maiusc (Default: tenere premuto "0", premere "✱"):** digita caratteri di valuta - **In modalità ABC:** - **Premere:** digita spazio, nuova riga o caratteri speciali/matematici. - **Tenere premuto:** digita "0". - - **Premere "0", quindi premere Maiusc (Default: premere "0", "✱"):** digita caratteri di valuta - **In modalità Predittiva:** - **Premere:** digita uno spazio, una nuova linea, "0" o caratteri speciali/matematici. - **Premere due volte:** digita il carattere assegnato nelle impostazioni della modalità predittiva. (Default: ".") - **Tenere premuto:** digita "0". - - **Premere "0", quindi premere Maiusc (Default: premere "0", "✱"):** digita caratteri di valuta - **In modalità Cheonjiin (Coreano):** - **Premere:** digita "ㅇ" e "ㅁ". - **Tenere premuto:** digita uno spazio, una nuova linea, "0" o caratteri speciali/matematici. - - **Tenere premuto "0", poi premere Maiusc (Predefinito: tenere premuto "0", premere "✱"):** Digita caratteri monetari. #### Tasto 1: - **In modalità 123:** diff --git a/docs/help/help.pt.md b/docs/help/help.pt.md index b65381da..7f15e951 100644 --- a/docs/help/help.pt.md +++ b/docs/help/help.pt.md @@ -69,21 +69,16 @@ _**Nota 2**: Para enviar mensagens com OK em aplicativos de mensagens, você dev - **No modo 123:** - **Toque**: insere "0". - **Pressione e segure**: insere caracteres especiais/matemáticos. - - **Pressione e segure "0", depois pressione Shift (padrão: pressione e segure "0", depois "*")**: insere símbolos monetários. - **No modo ABC:** - **Toque**: insere espaço, nova linha, ou caracteres especiais/matemáticos. - **Pressione e segure**: insere "0". - - **Pressione "0", depois pressione Shift (padrão: pressione "0", "*")**: insere símbolos monetários. - **No modo Preditivo:** - **Toque**: insere espaço, nova linha, ou caracteres especiais/matemáticos. - **Toque duas vezes**: insere o caractere atribuído nas configurações do modo Preditivo (padrão: "."). - **Pressione e segure**: insere "0". - - **Pressione "0", depois pressione Shift (padrão: pressione "0", "✱")**: insere símbolos monetários. - **No modo Cheonjiin (Coreano):** - **Pressione:** insere "ㅇ" e "ㅁ". - **Segure:** insere espaço, nova linha, "0" ou caracteres especiais/matemáticos. - - **Segure "0", depois pressione Shift (Padrão: segure "0", pressione "✱")**: insere símbolos monetários. - #### Tecla 1: - **No modo 123:** diff --git a/docs/help/help.ru.md b/docs/help/help.ru.md index f11b050d..82d45b85 100644 --- a/docs/help/help.ru.md +++ b/docs/help/help.ru.md @@ -69,20 +69,16 @@ _**Примечание 2:** Чтобы отправлять сообщения - **В режиме 123:** - **Нажатие:** ввести "0". - **Удержание:** ввести специальные/математические символы. - - **Удержание "0", затем нажатие Shift (По умолчанию: удержание "0", нажатие "✱")**: ввести символы валют - **В режиме ABC:** - **Нажатие:** ввести пробел, новую строку или специальные/математические символы. - **Удержание:** ввести "0". - - **Нажатие "0", затем нажатие Shift (По умолчанию: нажатие "0", "✱")**: ввести символы валют - **В режиме Предсказания:** - **Нажатие:** ввести пробел, новую строку или специальные/математические символы. - **Двойное нажатие:** ввести символ, назначенный в настройках режима Предсказания (по умолчанию: "."). - **Удержание:** ввести "0". - - **Нажатие "0", затем нажатие Shift (По умолчанию: нажатие "0", "✱")**: ввести символы валют - **В режиме Чонджиин (Корейский):** - **Нажатие:** ввести "ㅇ" и "ㅁ". - **Удержание:** ввести пробел, новую строку, "0" или специальные/математические символы. - - **Удержание "0", затем нажатие Shift (По умолчанию: удержание "0", нажатие "✱")**: ввести валютные символы. #### Клавиша 1: - **В режиме 123:** diff --git a/docs/help/help.tr.md b/docs/help/help.tr.md index 8f54815e..11c0164d 100644 --- a/docs/help/help.tr.md +++ b/docs/help/help.tr.md @@ -69,20 +69,16 @@ _**Not 2:** Mesajlaşma uygulamalarında OK ile mesaj göndermek için, uygulama - **123 modunda:** - **Bas:** "0" yaz. - **Basılı tut:** özel/matematik karakterleri yaz. - - **"0" basılı tut, ardından Shift'e bas (Varsayılan: "0"u basılı tut, "✱"e bas):** para birimi karakterleri yaz. - **ABC modunda:** - **Bas:** boşluk, yeni satır veya özel/matematik karakterleri yaz. - **Basılı tut:** "0" yaz. - - **"0" bas, ardından Shift'e bas (Varsayılan: "0" bas, "✱"e bas):** para birimi karakterleri yaz. - **Tahmin modunda:** - **Bas:** boşluk, yeni satır veya özel/matematik karakterleri yaz. - **Çift bas:** Tahmin modunda ayarlanan karakteri yaz. (Varsayılan: ".") - **Basılı tut:** "0" yaz. - - **"0" bas, ardından Shift'e bas (Varsayılan: "0" bas, "✱"e bas):** para birimi karakterleri yaz. - **Cheonjiin modunda (Korece):** - **Bas:** "ㅇ" ve "ㅁ" yaz. - **Basılı tut:** boşluk, yeni satır, "0" veya özel/matematiksel karakterler yaz. - - **"0" tuşuna basılı tut, ardından Shift'e bas (Varsayılan: "0" tuşunu basılı tutun, "✱"ye basın):** Para birimi karakterleri yazar. #### 1-tușu: - **123 modunda:** diff --git a/docs/help/help.uk.md b/docs/help/help.uk.md index feb3ff1d..5111351b 100644 --- a/docs/help/help.uk.md +++ b/docs/help/help.uk.md @@ -69,20 +69,16 @@ _**Примітка 2:** Для відправлення повідомлень - **У режимі 123:** - **Натискання:** вводить "0". - **Утримування:** вводить спеціальні/математичні символи. - - **Утримування "0", потім натискання Shift (за замовчуванням: утримування "0", натискання "✱")**: вводить символи валюти. - **У режимі ABC:** - **Натискання:** вводить пробіл, новий рядок або спеціальні/математичні символи. - **Утримування:** вводить "0". - - **Натискання "0", потім натискання Shift (за замовчуванням: натискання "0", "✱")**: вводить символи валюти. - **У режимі Прогнозування:** - **Натискання:** вводить пробіл, новий рядок або спеціальні/математичні символи. - **Подвійне натискання:** вводить символ, призначений у налаштуваннях режиму Прогнозування (за замовчуванням "."). - **Утримування:** вводить "0". - - **Натискання "0", потім натискання Shift (за замовчуванням: натискання "0", "✱")**: вводить символи валюти. - **У режимі Чонджиін (Корейська):** - **Натискання:** вводить "ㅇ" та "ㅁ". - **Утримування:** вводить пробіл, новий рядок, "0" або спеціальні/математичні символи. - - **Утримування "0", потім натискання Shift (за замовчуванням: утримування "0", натискання "✱"):** вводить символи валюти. #### Клавіша 1: - **У режимі 123:**