diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java index 6d915c0b..ff96d206 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/CommandHandler.java @@ -1,5 +1,7 @@ package io.github.sspanak.tt9.ime; +import android.view.KeyEvent; + import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.db.DataStore; import io.github.sspanak.tt9.db.words.DictionaryLoader; @@ -57,9 +59,15 @@ abstract public class CommandHandler extends TextEditingHandler { case 3: toggleVoiceInput(); break; + case 4: + undo(); + break; case 5: showTextEditingPalette(); break; + case 6: + redo(); + break; case 8: selectKeyboard(); break; @@ -250,4 +258,14 @@ abstract public class CommandHandler extends TextEditingHandler { return true; } + + + protected boolean undo() { + return textField.sendDownUpKeyEvents(KeyEvent.KEYCODE_Z, false, true); + } + + + protected boolean redo() { + return textField.sendDownUpKeyEvents(KeyEvent.KEYCODE_Z, true, true); + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java index b5259697..a0fde77e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java @@ -130,6 +130,14 @@ public abstract class HotkeyHandler extends CommandHandler { return onKeyShowSettings(validateOnly); } + if (keyCode == settings.getKeyUndo()) { + return onKeyUndo(validateOnly); + } + + if (keyCode == settings.getKeyRedo()) { + return onKeyRedo(validateOnly); + } + if (keyCode == settings.getKeyVoiceInput()) { return onKeyVoiceInput(validateOnly); } @@ -416,6 +424,24 @@ public abstract class HotkeyHandler extends CommandHandler { } + public boolean onKeyUndo(boolean validateOnly) { + if (!isInputViewShown() || shouldBeOff()) { + return false; + } + + return validateOnly || undo(); + } + + + public boolean onKeyRedo(boolean validateOnly) { + if (!isInputViewShown() || shouldBeOff()) { + return false; + } + + return validateOnly || redo(); + } + + private boolean onKeyVoiceInput(boolean validateOnly) { if (!isInputViewShown() || shouldBeOff() || !voiceInputOps.isAvailable()) { return false; diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHotkeys.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHotkeys.java index f0b8134b..fd3375b5 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHotkeys.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsHotkeys.java @@ -7,7 +7,7 @@ import android.view.KeyEvent; import io.github.sspanak.tt9.util.Logger; public class SettingsHotkeys extends SettingsUI { - private static final String HOTKEY_VERSION = "hotkeys_v5"; + private static final String HOTKEY_VERSION = "hotkeys_v6"; public static final String FUNC_ADD_WORD = "key_add_word"; public static final String FUNC_BACKSPACE = "key_backspace"; @@ -23,6 +23,8 @@ public class SettingsHotkeys extends SettingsUI { public static final String FUNC_SHIFT = "key_shift"; public static final String FUNC_SPACE_KOREAN = "key_space_korean"; public static final String FUNC_SHOW_SETTINGS = "key_show_settings"; + public static final String FUNC_UNDO = "key_undo"; + public static final String FUNC_REDO = "key_redo"; public static final String FUNC_VOICE_INPUT = "key_voice_input"; public static final String[] FUNCTIONS = { @@ -40,6 +42,8 @@ public class SettingsHotkeys extends SettingsUI { FUNC_SHIFT, FUNC_SPACE_KOREAN, FUNC_SHOW_SETTINGS, + FUNC_UNDO, + FUNC_REDO, FUNC_VOICE_INPUT, }; @@ -62,7 +66,7 @@ public class SettingsHotkeys extends SettingsUI { */ public void setDefaultKeys() { // no default keys - String[] unassigned = { FUNC_ADD_WORD, FUNC_EDIT_TEXT, FUNC_SELECT_KEYBOARD, FUNC_SHOW_SETTINGS, FUNC_VOICE_INPUT }; + String[] unassigned = { FUNC_ADD_WORD, FUNC_EDIT_TEXT, FUNC_SELECT_KEYBOARD, FUNC_SHOW_SETTINGS, FUNC_UNDO, FUNC_REDO, FUNC_VOICE_INPUT }; for (String key : unassigned) { prefsEditor.putString(key, String.valueOf(KeyEvent.KEYCODE_UNKNOWN)); } @@ -172,6 +176,12 @@ public class SettingsHotkeys extends SettingsUI { public int getKeyShowSettings() { return getFunctionKey(FUNC_SHOW_SETTINGS); } + public int getKeyUndo() { + return getFunctionKey(FUNC_UNDO); + } + public int getKeyRedo() { + return getFunctionKey(FUNC_REDO); + } public int getKeyVoiceInput() { return getFunctionKey(FUNC_VOICE_INPUT); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF4.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF4.java new file mode 100644 index 00000000..759b3c85 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF4.java @@ -0,0 +1,23 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyF4 extends SoftKeyFn { + public SoftKeyF4(Context context) { + super(context); + } + + public SoftKeyF4(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SoftKeyF4(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected boolean handleRelease() { + return tt9 != null && tt9.onKeyUndo(false); + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF6.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF6.java new file mode 100644 index 00000000..f054bc27 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF6.java @@ -0,0 +1,23 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyF6 extends SoftKeyFn { + public SoftKeyF6(Context context) { + super(context); + } + + public SoftKeyF6(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SoftKeyF6(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected boolean handleRelease() { + return tt9 != null && tt9.onKeyRedo(false); + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java index 1a152ffd..e4e15bce 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuation.java @@ -2,17 +2,26 @@ package io.github.sspanak.tt9.ui.main.keys; import android.content.Context; import android.util.AttributeSet; +import android.view.ViewParent; +import android.widget.RelativeLayout; -import io.github.sspanak.tt9.R; -import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.util.chars.Characters; -public class SoftKeyPunctuation extends SoftKey { +abstract public class SoftKeyPunctuation extends BaseSoftKeyWithIcons { public SoftKeyPunctuation(Context context) { super(context); } public SoftKeyPunctuation(Context context, AttributeSet attrs) { super(context, attrs); } public SoftKeyPunctuation(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + + abstract protected String getKeyChar(); + + + protected boolean isTextEditingOn() { + return tt9 != null && tt9.isTextEditingActive(); + } + + protected boolean isHiddenWhenLongSpace() { return tt9 != null @@ -21,18 +30,13 @@ public class SoftKeyPunctuation extends SoftKey { && !hasLettersOnAllKeys(); } - protected boolean isTransparentWhenTextEditing() { - return tt9 != null && tt9.isTextEditingActive(); - } @Override protected boolean handleRelease() { - return - tt9 != null - && !tt9.isTextEditingActive() - && tt9.onText(getKeyChar(), false); + return tt9 != null && tt9.onText(getKeyChar(), false); } + @Override protected String getTitle() { String keyChar = getKeyChar(); @@ -44,42 +48,6 @@ public class SoftKeyPunctuation extends SoftKey { }; } - protected String getKeyChar() { - int keyId = getId(); - if (keyId == R.id.soft_key_punctuation_1) { - return getKey1Char(); - } else if (keyId == R.id.soft_key_punctuation_2) { - return getKey2Char(); - } - - return ""; - } - - protected String getKey1Char() { - if (tt9 == null) return ""; - if (tt9.isInputModePhone()) return "*"; - if (tt9.isInputModeNumeric()) return ","; - - if (LanguageKind.isChinese(tt9.getLanguage()) || LanguageKind.isJapanese(tt9.getLanguage())) { - return Characters.ZH_EXCLAMATION_MARK; - } - - return "!"; - } - - protected String getKey2Char() { - if (tt9 == null) return ""; - if (tt9.isInputModePhone()) return "#"; - if (tt9.isInputModeNumeric()) return "."; - - if (LanguageKind.isArabic(tt9.getLanguage())) return Characters.AR_QUESTION_MARK; - if (LanguageKind.isGreek(tt9.getLanguage())) return Characters.GR_QUESTION_MARK; - if (LanguageKind.isChinese(tt9.getLanguage()) || LanguageKind.isJapanese(tt9.getLanguage())) { - return Characters.ZH_QUESTION_MARK; - } - - return "?"; - } @Override public void setHeight(int height) { @@ -93,12 +61,12 @@ public class SoftKeyPunctuation extends SoftKey { @Override public void render() { - if (isHiddenWhenLongSpace()) { - setVisibility(GONE); - } else if (isTransparentWhenTextEditing()) { - setVisibility(INVISIBLE); - } else { - setVisibility(VISIBLE); + boolean isHidden = isHiddenWhenLongSpace(); + setVisibility(isHidden ? GONE : VISIBLE); + + ViewParent parent = getParent(); + if (parent instanceof RelativeLayout) { + ((RelativeLayout) parent).setVisibility(isHidden ? RelativeLayout.GONE : RelativeLayout.VISIBLE); } super.render(); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeft.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeft.java new file mode 100644 index 00000000..627e89fa --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeft.java @@ -0,0 +1,43 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.languages.LanguageKind; +import io.github.sspanak.tt9.util.chars.Characters; + +public class SoftKeyPunctuationLeft extends SoftKeyPunctuation { + public SoftKeyPunctuationLeft(Context context) { super(context); } + public SoftKeyPunctuationLeft(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyPunctuationLeft(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + + @Override + protected String getKeyChar() { + if (tt9 == null) return ""; + if (tt9.isInputModePhone()) return "*"; + if (tt9.isInputModeNumeric()) return ","; + if (tt9.isTextEditingActive()) return "↶"; + + if (LanguageKind.isChinese(tt9.getLanguage()) || LanguageKind.isJapanese(tt9.getLanguage())) { + return Characters.ZH_EXCLAMATION_MARK; + } + + return "!"; + } + + @Override + protected boolean handleRelease() { + return isTextEditingOn() ? tt9.onKeyUndo(false) : super.handleRelease(); + } + + @Override + protected String getTitle() { + return isTextEditingOn() ? "" : super.getTitle(); + } + + @Override + protected int getCentralIcon() { + return isTextEditingOn() && !isHiddenWhenLongSpace() ? R.drawable.ic_fn_undo : -1; + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeftShort.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeftShort.java new file mode 100644 index 00000000..3e69f3e7 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationLeftShort.java @@ -0,0 +1,11 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyPunctuationLeftShort extends SoftKeyPunctuationLeft { + public SoftKeyPunctuationLeftShort(Context context) { super(context); } + public SoftKeyPunctuationLeftShort(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyPunctuationLeftShort(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + @Override protected boolean isHiddenWhenLongSpace() { return false; } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRight.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRight.java new file mode 100644 index 00000000..06702766 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRight.java @@ -0,0 +1,44 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.languages.LanguageKind; +import io.github.sspanak.tt9.util.chars.Characters; + +public class SoftKeyPunctuationRight extends SoftKeyPunctuation { + public SoftKeyPunctuationRight(Context context) { super(context); } + public SoftKeyPunctuationRight(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyPunctuationRight(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + + protected String getKeyChar() { + if (tt9 == null) return ""; + if (tt9.isInputModePhone()) return "#"; + if (tt9.isInputModeNumeric()) return "."; + if (tt9.isTextEditingActive()) return "↷"; + + if (LanguageKind.isArabic(tt9.getLanguage())) return Characters.AR_QUESTION_MARK; + if (LanguageKind.isGreek(tt9.getLanguage())) return Characters.GR_QUESTION_MARK; + if (LanguageKind.isChinese(tt9.getLanguage()) || LanguageKind.isJapanese(tt9.getLanguage())) { + return Characters.ZH_QUESTION_MARK; + } + + return "?"; + } + + @Override + protected boolean handleRelease() { + return tt9 != null && tt9.isTextEditingActive() ? tt9.onKeyRedo(false) : super.handleRelease(); + } + + @Override + protected String getTitle() { + return isTextEditingOn() ? "" : super.getTitle(); + } + + @Override + protected int getCentralIcon() { + return isTextEditingOn() && !isHiddenWhenLongSpace() ? R.drawable.ic_fn_redo : -1; + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRightShort.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRightShort.java new file mode 100644 index 00000000..a8754f58 --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationRightShort.java @@ -0,0 +1,11 @@ +package io.github.sspanak.tt9.ui.main.keys; + +import android.content.Context; +import android.util.AttributeSet; + +public class SoftKeyPunctuationRightShort extends SoftKeyPunctuationRight { + public SoftKeyPunctuationRightShort(Context context) { super(context); } + public SoftKeyPunctuationRightShort(Context context, AttributeSet attrs) { super(context, attrs); } + public SoftKeyPunctuationRightShort(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + @Override protected boolean isHiddenWhenLongSpace() { return false; } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java deleted file mode 100644 index bb0536ab..00000000 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyPunctuationShort.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.sspanak.tt9.ui.main.keys; - -import android.content.Context; -import android.util.AttributeSet; - -import io.github.sspanak.tt9.R; - -public class SoftKeyPunctuationShort extends SoftKeyPunctuation { - public SoftKeyPunctuationShort(Context context) { super(context); } - public SoftKeyPunctuationShort(Context context, AttributeSet attrs) { super(context, attrs); } - public SoftKeyPunctuationShort(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } - - @Override protected boolean isHiddenWhenLongSpace() { return false; } - - protected String getKeyChar() { - if (!validateTT9Handler()) { - return ""; - } - - int keyId = getId(); - if (keyId == R.id.soft_key_punctuation_201) { - return getKey1Char(); - } else if (keyId == R.id.soft_key_punctuation_202) { - return getKey2Char(); - } - - return super.getKeyChar(); - } -} diff --git a/app/src/main/res/drawable/ic_fn_redo.xml b/app/src/main/res/drawable/ic_fn_redo.xml new file mode 100644 index 00000000..22580f63 --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_redo.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/ic_fn_undo.xml b/app/src/main/res/drawable/ic_fn_undo.xml new file mode 100644 index 00000000..d9e503f7 --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_undo.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/layout/panel_long_spacebar.xml b/app/src/main/res/layout/panel_long_spacebar.xml index 31208bf0..f04e10ba 100644 --- a/app/src/main/res/layout/panel_long_spacebar.xml +++ b/app/src/main/res/layout/panel_long_spacebar.xml @@ -4,9 +4,12 @@ style="@style/TTheme.Numpad.CentralBlock.Row.LongSpacebar" android:id="@+id/panel_long_spacebar"> - + + + + - + + + + diff --git a/app/src/main/res/layout/panel_numpad_digits.xml b/app/src/main/res/layout/panel_numpad_digits.xml index 7f8ee083..b9f5750a 100644 --- a/app/src/main/res/layout/panel_numpad_digits.xml +++ b/app/src/main/res/layout/panel_numpad_digits.xml @@ -23,7 +23,7 @@ - @@ -84,7 +84,7 @@ - diff --git a/app/src/main/res/layout/panel_numpad_text_editing.xml b/app/src/main/res/layout/panel_numpad_text_editing.xml index d80cdb37..91565f00 100644 --- a/app/src/main/res/layout/panel_numpad_text_editing.xml +++ b/app/src/main/res/layout/panel_numpad_text_editing.xml @@ -27,9 +27,12 @@ - + + + + @@ -95,9 +98,12 @@ - + + + + diff --git a/app/src/main/res/layout/panel_small_command_palette.xml b/app/src/main/res/layout/panel_small_command_palette.xml index dbae3513..f72d168e 100644 --- a/app/src/main/res/layout/panel_small_command_palette.xml +++ b/app/src/main/res/layout/panel_small_command_palette.xml @@ -20,11 +20,21 @@ android:id="@+id/soft_key_3" android:drawableBottom="@drawable/ic_fn_voice" /> + + + + Вляво Вдясно Избор на клавиатура + Повторение (Redo) Гласово въвеждане Добавяне без потвърждение Импортирай @@ -211,4 +212,5 @@ * Натиснете или задръжте клавиш, за да го присвоите на функцията „%1$s“.\n\n* Натиснете 0, за да отмените.\n\n* Натиснете 2, за да деактивирате функцията. Показвай текст при съставяне Оразмеряване чрез влачене + Отмяна (Undo) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 95daf98c..d29af59f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -204,6 +204,7 @@ \tDie Taste \"%1$s\" ist bereits der Funktion \"%2$s\" zugewiesen. Möchten Sie sie \"%3$s\" zuweisen? * Drücken oder halten Sie eine Taste, um sie der Funktion \"%1$s\" zuzuweisen.\n\n* Drücken Sie 0, um abzubrechen.\n\n* Drücken Sie 2, um die Funktion zu deaktivieren. Neu zuweisen + Wiederholen Spracheingabe Standardtasten wiederherstellen (halten) @@ -213,4 +214,5 @@ Einstellungsbildschirm anzeigen Zusammengesetzten Text anzeigen Größe durch Ziehen ändern + Rückgängig machen diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index dd120949..2ba25d30 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -98,6 +98,7 @@ Reasignar Agregar palabra Mostrar configuración + Rehacer Entrada por voz Restaurar valores de teclas por defecto Valores de teclas por defecto restaurados @@ -211,4 +212,5 @@ * Presione o mantenga pulsada una tecla para asignarla a la función \"%1$s\".\n\n* Presione 0 para cancelar.\n\n* Presione 2 para desactivar la función. Mostrar texto en composición Redimensionar arrastrando + Deshacer diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6dc25028..be17fe12 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -88,6 +88,7 @@ Réattribuer Ajouter un mot Afficher les paramètres + Restaurer (Redo) Saisie vocale Restaurer les paramètres par défaut Paramètres par défaut sont restaurés. @@ -211,4 +212,5 @@ (maintenir) Afficher texte en cours Redimensionner en faisant glisser + Annuler (Undo) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f42a8c8e..065f25f3 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -202,6 +202,7 @@ Il tasto \"%1$s\" è già assegnato alla funzione \"%2$s\". Vuoi assegnarlo a \"%3$s\"? * Premi o tieni premuto un tasto per assegnarlo alla funzione \"%1$s\".\n\n* Premi 0 per annullare.\n\n* Premi 2 per disabilitare la funzione. Riassegnare + Ripristina (Redo) Input vocale Ripristina i tasti predefiniti (tenere premuto) @@ -214,5 +215,6 @@ Mostrare impostazioni Mostra testo in composizione Ridimensionare trascinando + Annulla (Undo) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index a620b45f..3f973bfa 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -92,6 +92,7 @@ הקצה מחדש לחצן הוספת מילה לחצן הצגת הגדרות + ביצוע חוזר (Redo) קלט קולי שחזור לחצני ברירת מחדל הגדרות ברירת המחדל שוחזרו. @@ -218,4 +219,5 @@ הצעה קודמת הצגת טקסט בהרכבה שינוי גודל על ידי גרירה + ביטול (Undo) diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index f6b2b7dc..24df4e96 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -100,6 +100,7 @@ Perpriskirti Pridėti žodį Rodyti nustatymus + Pakartoti (Redo) Balso įvestis Atkurti numatytąsias reikšmes Numatytosios reikšmės atkurtos. @@ -220,4 +221,5 @@ * Paspauskite arba palaikykite klavišą, kad priskirtumėte jį funkcijai „%1$s“.\n\n* Paspauskite 0, kad atšauktumėte.\n\n* Paspauskite 2, kad išjungtumėte funkciją. Rodyti rašomą tekstą Keisti dydį tempiant + Atšaukti (Undo) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d6b0d5c7..e338f229 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -204,6 +204,7 @@ * Druk of houd een toets ingedrukt om deze toe te wijzen aan de functie \"%1$s\".\n\n* Druk op 0 om te annuleren.\n\n* Druk op 2 om de functie uit te schakelen. Opnieuw toewijzen Instellingen weergeven + Opnieuw uitvoeren Spraakinvoer Standaardtoetsen herstellen (Ingedrukt houden) @@ -212,4 +213,5 @@ Volgende taal Filter wissen Compositietekst weergeven + Ongedaan maken diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fd302bb2..d3c9ab0e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -86,6 +86,7 @@ Reatribuir Adicionar palavra Entrar em Configurações + Refazer Entrada por Voz Restaurar Atalhos Padrão Atalhos Restaurados. @@ -218,4 +219,5 @@ Sugestão Anterior Mostrar texto em composição Redimensionar arrastando + Desfazer diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index d5cba8f9..963864b7 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -89,6 +89,7 @@ Назначить заново Добавить слово Настройки + Повторить (Redo) Голосовой ввод Вернуть кнопки по умолчанию Настройки кнопок по умолчанию восстановлены. @@ -211,4 +212,5 @@ * Нажмите или удерживайте клавишу, чтобы назначить её на функцию «%1$s».\n\n* Нажмите 0, чтобы отменить.\n\n* Нажмите 2, чтобы отключить функцию. Показывать текст при вводе Изменять размер перетаскиванием + Отменить (Undo) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f0deb5e1..d4f16e1f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -154,6 +154,7 @@ Yeniden ata Kelime ekle Ayarları göster + Yinele (Redo) Sesli giriş Varsayılan Ayarlara Geri Dön Varsayılan tuş ayarlarına dönüldü. @@ -216,4 +217,5 @@ (basılı tut) Yazılan metni göster Sürükleyerek yeniden boyutlandır + Geri al (Undo) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 57e9cb2c..2fe3e468 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -132,6 +132,7 @@ Перепризначити Додати слово Показати налаштування + Повторити (Redo) Голосове введення Відновити стандартні клавіші Стандартні налаштування клавіш відновленно. @@ -222,4 +223,5 @@ * Натисніть або утримуйте клавішу, щоб призначити її функції «%1$s».\n\n* Натисніть 0, щоб скасувати.\n\n* Натисніть 2, щоб вимкнути функцію. Показувати текст під час введення Змінювати розмір перетягуванням + Скасувати (Undo) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7eaba8e4..8351a48f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -176,6 +176,8 @@ Input Mode Select Keyboard Show Settings + Undo + Redo Voice Input Restore Default Keys Default key settings restored. diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 7f554665..7eda7cf7 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -267,6 +267,11 @@ 0dp + + - - - - diff --git a/app/src/main/res/xml/prefs_screen_hotkeys.xml b/app/src/main/res/xml/prefs_screen_hotkeys.xml index 480ddd16..138eea69 100644 --- a/app/src/main/res/xml/prefs_screen_hotkeys.xml +++ b/app/src/main/res/xml/prefs_screen_hotkeys.xml @@ -58,6 +58,14 @@ app:key="key_show_settings" app:title="@string/function_show_settings" /> + + + +