1
0
Fork 0

Fn key reordering (#791)

This commit is contained in:
Dimo Karaivanov 2025-04-28 18:02:21 +03:00 committed by GitHub
parent 819bb9f142
commit dca050445e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
37 changed files with 704 additions and 98 deletions

View file

@ -24,6 +24,7 @@ import io.github.sspanak.tt9.preferences.screens.UsageStatsScreen;
import io.github.sspanak.tt9.preferences.screens.appearance.AppearanceScreen; import io.github.sspanak.tt9.preferences.screens.appearance.AppearanceScreen;
import io.github.sspanak.tt9.preferences.screens.debug.DebugScreen; import io.github.sspanak.tt9.preferences.screens.debug.DebugScreen;
import io.github.sspanak.tt9.preferences.screens.deleteWords.DeleteWordsScreen; import io.github.sspanak.tt9.preferences.screens.deleteWords.DeleteWordsScreen;
import io.github.sspanak.tt9.preferences.screens.fnKeyOrder.FnKeyOrderScreen;
import io.github.sspanak.tt9.preferences.screens.hotkeys.HotkeysScreen; import io.github.sspanak.tt9.preferences.screens.hotkeys.HotkeysScreen;
import io.github.sspanak.tt9.preferences.screens.keypad.KeyPadScreen; import io.github.sspanak.tt9.preferences.screens.keypad.KeyPadScreen;
import io.github.sspanak.tt9.preferences.screens.languageSelection.LanguageSelectionScreen; import io.github.sspanak.tt9.preferences.screens.languageSelection.LanguageSelectionScreen;
@ -159,6 +160,7 @@ public class PreferencesActivity extends ActivityWithNavigation implements Prefe
case AppearanceScreen.NAME -> new AppearanceScreen(this); case AppearanceScreen.NAME -> new AppearanceScreen(this);
case DebugScreen.NAME -> new DebugScreen(this); case DebugScreen.NAME -> new DebugScreen(this);
case DeleteWordsScreen.NAME -> new DeleteWordsScreen(this); case DeleteWordsScreen.NAME -> new DeleteWordsScreen(this);
case FnKeyOrderScreen.NAME -> new FnKeyOrderScreen(this);
case HotkeysScreen.NAME -> new HotkeysScreen(this); case HotkeysScreen.NAME -> new HotkeysScreen(this);
case KeyPadScreen.NAME -> new KeyPadScreen(this); case KeyPadScreen.NAME -> new KeyPadScreen(this);
case LanguagesScreen.NAME -> new LanguagesScreen(this); case LanguagesScreen.NAME -> new LanguagesScreen(this);

View file

@ -8,7 +8,7 @@ import androidx.annotation.Nullable;
import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.R;
final public class PreferencePlainText extends ScreenPreference { public class PreferencePlainText extends ScreenPreference {
public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public PreferencePlainText(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }

View file

@ -14,17 +14,17 @@ import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.languages.LanguageKind; import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.sys.DeviceInfo; import io.github.sspanak.tt9.util.sys.DeviceInfo;
abstract public class ItemSearch extends ItemTextInput { abstract public class SearchPreference extends TextInputPreference {
public ItemSearch(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { public SearchPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
} }
public ItemSearch(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { public SearchPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
public ItemSearch(@NonNull Context context, @Nullable AttributeSet attrs) { public SearchPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs); super(context, attrs);
} }
public ItemSearch(@NonNull Context context) { public SearchPreference(@NonNull Context context) {
super(context); super(context);
} }

View file

@ -18,22 +18,22 @@ import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.colors.AccentSystemColor; import io.github.sspanak.tt9.util.colors.AccentSystemColor;
import io.github.sspanak.tt9.util.colors.ErrorSystemColor; import io.github.sspanak.tt9.util.colors.ErrorSystemColor;
abstract public class ItemTextInput extends ScreenPreference { abstract public class TextInputPreference extends ScreenPreference {
@NonNull private final Handler listener = new Handler(Looper.getMainLooper()); @NonNull private final Handler listener = new Handler(Looper.getMainLooper());
protected EditText textField; protected EditText textField;
@NonNull protected String text = ""; @NonNull protected String text = "";
public ItemTextInput(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { public TextInputPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
} }
public ItemTextInput(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { public TextInputPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
public ItemTextInput(@NonNull Context context, @Nullable AttributeSet attrs) { public TextInputPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs); super(context, attrs);
} }
public ItemTextInput(@NonNull Context context) { public TextInputPreference(@NonNull Context context) {
super(context); super(context);
} }
@ -71,6 +71,11 @@ abstract public class ItemTextInput extends ScreenPreference {
} }
public CharSequence getText() {
return text;
}
protected void setText(CharSequence newText) { protected void setText(CharSequence newText) {
if (textField != null && newText != null && !text.equals(newText.toString())) { if (textField != null && newText != null && !text.equals(newText.toString())) {
textField.setText(newText); textField.setText(newText);

View file

@ -36,9 +36,11 @@ public class AppearanceScreen extends BaseScreenFragment {
ItemNumpadFnKeyScale fnKeyWidth = new ItemNumpadFnKeyScale(findPreference(ItemNumpadFnKeyScale.NAME), activity.getSettings()); ItemNumpadFnKeyScale fnKeyWidth = new ItemNumpadFnKeyScale(findPreference(ItemNumpadFnKeyScale.NAME), activity.getSettings());
ItemNumpadKeyFontSize numpadKeyFontSize = new ItemNumpadKeyFontSize(findPreference(ItemNumpadKeyFontSize.NAME), activity.getSettings()); ItemNumpadKeyFontSize numpadKeyFontSize = new ItemNumpadKeyFontSize(findPreference(ItemNumpadKeyFontSize.NAME), activity.getSettings());
ItemSuggestionFontSize suggestionFontSize = new ItemSuggestionFontSize(findPreference(ItemSuggestionFontSize.NAME), activity.getSettings()); ItemSuggestionFontSize suggestionFontSize = new ItemSuggestionFontSize(findPreference(ItemSuggestionFontSize.NAME), activity.getSettings());
ItemFnKeyOrder fnKeyOrder = new ItemFnKeyOrder(activity.getSettings(), findPreference(ItemFnKeyOrder.NAME));
ItemSelectLayoutType selectLayout = new ItemSelectLayoutType(findPreference(ItemSelectLayoutType.NAME), activity) ItemSelectLayoutType selectLayout = new ItemSelectLayoutType(findPreference(ItemSelectLayoutType.NAME), activity)
.addOnChangeItem(alignment) .addOnChangeItem(alignment)
.addOnChangeItem(fnKeyOrder)
.addOnChangeItem(fnKeyWidth) .addOnChangeItem(fnKeyWidth)
.addOnChangeItem(keyboardWidth) .addOnChangeItem(keyboardWidth)
.addOnChangeItem(numpadKeyFontSize) .addOnChangeItem(numpadKeyFontSize)

View file

@ -0,0 +1,24 @@
package io.github.sspanak.tt9.preferences.screens.appearance;
import androidx.preference.Preference;
import io.github.sspanak.tt9.preferences.items.ItemClickable;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemFnKeyOrder extends ItemClickable implements ItemLayoutChangeReactive {
public static final String NAME = "screen_fn_key_order";
public ItemFnKeyOrder(SettingsStore settings, Preference item) {
super(item);
onLayoutChange(settings.getMainViewLayout());
}
@Override protected boolean onClick(Preference p) { return true; }
public void onLayoutChange(int mainViewLayout) {
if (item != null) {
item.setVisible(mainViewLayout == SettingsStore.LAYOUT_NUMPAD && !DeviceInfo.noTouchScreen(item.getContext()));
item.setIconSpaceReserved(false);
}
}
}

View file

@ -9,12 +9,12 @@ import androidx.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import io.github.sspanak.tt9.db.DataStore; import io.github.sspanak.tt9.db.DataStore;
import io.github.sspanak.tt9.preferences.items.ItemSearch; import io.github.sspanak.tt9.preferences.items.SearchPreference;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.ConsumerCompat; import io.github.sspanak.tt9.util.ConsumerCompat;
import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Logger;
public class PreferenceSearchWords extends ItemSearch { public class PreferenceSearchWords extends SearchPreference {
public static final String NAME = "dictionary_delete_words_search"; public static final String NAME = "dictionary_delete_words_search";
private static final String LOG_TAG = PreferenceSearchWords.class.getSimpleName(); private static final String LOG_TAG = PreferenceSearchWords.class.getSimpleName();

View file

@ -0,0 +1,36 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.custom.PreferencePlainText;
public class FnKeyOrderLegendPreference extends PreferencePlainText {
public FnKeyOrderLegendPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); populate(); }
public FnKeyOrderLegendPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); populate(); }
public FnKeyOrderLegendPreference(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); populate(); }
public FnKeyOrderLegendPreference(@NonNull Context context) { super(context); populate(); }
private void populate() {
StringBuilder content = new StringBuilder(__(R.string.fn_key_order_legend))
.append("\n1 = ").append(__(R.string.function_show_settings))
.append("\n2 = ").append(__(R.string.function_add_word))
.append("\n3 = ").append(__(R.string.virtual_key_shift))
.append("\n4 = ").append(__(R.string.function_next_mode))
.append("\n5 = ").append(__(R.string.function_backspace))
.append("\n6 = ").append(__(R.string.function_filter_suggestions))
.append("\n7 = ").append(__(R.string.function_edit_text)).append(" / ").append(__(R.string.function_voice_input))
.append("\n8 = OK\n\n")
.append(__(R.string.fn_key_order_preview_tip));
setSummary(content);
}
private String __(int resourceId) {
return getContext().getString(resourceId);
}
}

View file

@ -0,0 +1,58 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.screens.BaseScreenFragment;
public class FnKeyOrderScreen extends BaseScreenFragment {
final public static String NAME = "FnKeyOrder";
private LeftFnOrderPreference left;
private RightFnOrderPreference right;
public FnKeyOrderScreen() { init(); }
public FnKeyOrderScreen(PreferencesActivity activity) { init(activity); }
@Override public String getName() { return NAME; }
@Override protected int getTitle() { return R.string.pref_category_fn_key_order; }
@Override protected int getXml() { return R.xml.prefs_screen_fn_key_order; }
@Override
protected void onCreate() {
createTextFields();
(new ItemResetFnKeyOrder(findPreference(ItemResetFnKeyOrder.NAME), left, right)).enableClickHandler();
resetFontSize(true);
}
private void createTextFields() {
left = findPreference(LeftFnOrderPreference.NAME);
right = findPreference(RightFnOrderPreference.NAME);
if (left != null && right != null) {
left.setTextChangeHandler(this::onTextChange);
right.setTextChangeHandler(this::onTextChange);
}
}
private void onTextChange() {
if (left == null || right == null || activity == null) {
return;
}
FnKeyOrderValidator validator = activity.getSettings().setFnKeyOrder(left.getText().toString(), right.getText().toString());
left.setError("");
right.setError("");
if (validator.getError() == null) {
return;
}
if (validator.getErrorSide() == FnKeyOrderValidator.ERROR_SIDE_LEFT) {
left.setError(getString(validator.getError()));
} else if (validator.getErrorSide() == FnKeyOrderValidator.ERROR_SIDE_RIGHT) {
right.setError(getString(validator.getError()));
} else if (validator.getErrorSide() == FnKeyOrderValidator.ERROR_SIDE_BOTH) {
left.setError(getString(validator.getError()));
right.setError(getString(validator.getError()));
}
}
}

View file

@ -0,0 +1,107 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import java.util.HashSet;
import java.util.Set;
import io.github.sspanak.tt9.R;
public class FnKeyOrderValidator {
public final static int ERROR_SIDE_LEFT = -1;
public final static int ERROR_SIDE_RIGHT = 1;
public final static int ERROR_SIDE_BOTH = 0;
private Integer error;
private int errorSide = ERROR_SIDE_BOTH;
private final String left;
private final String right;
public FnKeyOrderValidator(String left, String right) {
this.left = left;
this.right = right;
}
public Integer getError() {
return error;
}
public int getErrorSide() {
return errorSide;
}
public boolean validate() {
error = null;
errorSide = ERROR_SIDE_BOTH;
return
validateLength(left, ERROR_SIDE_LEFT) && validateLength(right, ERROR_SIDE_RIGHT)
&& validateDigits(left, ERROR_SIDE_LEFT) && validateDigits(right, ERROR_SIDE_RIGHT)
&& validateNoRepeat(left, ERROR_SIDE_LEFT) && validateNoRepeat(right, ERROR_SIDE_RIGHT)
&& validateNoOverlap(left, right);
}
private boolean validateLength(String text, int side) {
if (text == null || text.length() != 4) {
error = R.string.fn_key_order_error_wrong_key_count;
errorSide = side;
return false;
}
return true;
}
private boolean validateDigits(String text, int side) {
if (text == null || !text.matches("^[1-8]+$")) {
error = R.string.fn_key_order_error_unsupported_key_code;
errorSide = side;
return false;
}
return true;
}
private boolean validateNoRepeat(String text, int side) {
if (text == null) {
return true;
}
Set<Integer> digits = new HashSet<>();
for (char c : text.toCharArray()) {
int digit = Character.getNumericValue(c);
if (digits.contains(digit)) {
error = R.string.fn_key_order_error_duplicate_key;
errorSide = side;
return false;
}
digits.add(digit);
}
return true;
}
private boolean validateNoOverlap(String column, String otherColumn) {
if (column == null || otherColumn == null) {
return true;
}
for (int i = 0; i < column.length(); i++) {
char c = column.charAt(i);
if (otherColumn.indexOf(c) != -1) {
error = R.string.fn_key_order_error_key_on_both_sides;
errorSide = ERROR_SIDE_BOTH;
return false;
}
}
return true;
}
}

View file

@ -0,0 +1,32 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import androidx.preference.Preference;
import io.github.sspanak.tt9.preferences.items.ItemClickable;
import io.github.sspanak.tt9.preferences.settings.SettingsVirtualNumpad;
public class ItemResetFnKeyOrder extends ItemClickable {
public final static String NAME = "pref_reset_fn_key_order";
private final LeftFnOrderPreference left;
private final RightFnOrderPreference right;
public ItemResetFnKeyOrder(Preference item, LeftFnOrderPreference left, RightFnOrderPreference right) {
super(item);
this.left = left;
this.right = right;
}
@Override
protected boolean onClick(Preference p) {
if (left == null || right == null) {
return false;
}
left.setText(SettingsVirtualNumpad.DEFAULT_LFN_KEY_ORDER);
right.setText(SettingsVirtualNumpad.DEFAULT_RFN_KEY_ORDER);
left.onTextChange();
return true;
}
}

View file

@ -0,0 +1,71 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import android.content.Context;
import android.text.InputType;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceViewHolder;
import io.github.sspanak.tt9.preferences.items.TextInputPreference;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
public class LeftFnOrderPreference extends TextInputPreference {
public final static String NAME = "pref_lfn_key_order";
protected final SettingsStore settings;
@NonNull private Runnable textChangeHandler = () -> {};
public LeftFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
this.settings = new SettingsStore(context);
}
public LeftFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.settings = new SettingsStore(context);
}
public LeftFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.settings = new SettingsStore(context);
}
public LeftFnOrderPreference(@NonNull Context context) {
super(context);
this.settings = new SettingsStore(context);
}
@Override
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
populate();
if (textField != null) {
textField.setInputType(InputType.TYPE_CLASS_NUMBER);
}
}
void setTextChangeHandler(@NonNull Runnable handler) {
textChangeHandler = handler;
}
protected int getChangeHandlerDebounceTime() {
return SettingsStore.TEXT_INPUT_PUNCTUATION_ORDER_DEBOUNCE_TIME;
}
@Override
protected void onTextChange() {
textChangeHandler.run();
}
protected void populate() {
setText(settings.getLfnKeyOrder());
}
@Override
public void setError(@NonNull String error) {
super.setError(error);
}
void setText(@NonNull String newText) {
super.setText(newText);
}
}

View file

@ -0,0 +1,21 @@
package io.github.sspanak.tt9.preferences.screens.fnKeyOrder;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class RightFnOrderPreference extends LeftFnOrderPreference {
public final static String NAME = "pref_rfn_key_order";
public RightFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
public RightFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
public RightFnOrderPreference(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); }
public RightFnOrderPreference(@NonNull Context context) { super(context); }
@Override
protected void populate() {
setText(settings.getRfnKeyOrder());
}
}

View file

@ -9,9 +9,9 @@ import androidx.preference.Preference;
import java.util.ArrayList; import java.util.ArrayList;
import io.github.sspanak.tt9.preferences.items.ItemSearch; import io.github.sspanak.tt9.preferences.items.SearchPreference;
public class PreferenceSearchLanguage extends ItemSearch { public class PreferenceSearchLanguage extends SearchPreference {
@NonNull private ArrayList<PreferenceSwitchLanguage> languageItems = new ArrayList<>(); @NonNull private ArrayList<PreferenceSwitchLanguage> languageItems = new ArrayList<>();
private Preference noResultItem; private Preference noResultItem;

View file

@ -9,10 +9,10 @@ import androidx.preference.PreferenceViewHolder;
import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.languages.Language; import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.preferences.items.ItemTextInput; import io.github.sspanak.tt9.preferences.items.TextInputPreference;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.preferences.settings.SettingsStore;
abstract class AbstractPreferenceCharList extends ItemTextInput { abstract class AbstractPreferenceCharList extends TextInputPreference {
@NonNull protected String currentChars = ""; @NonNull protected String currentChars = "";
protected Language language; protected Language language;
private Runnable onRender; private Runnable onRender;

View file

@ -6,7 +6,7 @@ import android.view.KeyEvent;
import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Logger;
public class SettingsHotkeys extends SettingsUI { public class SettingsHotkeys extends SettingsVirtualNumpad {
private static final String HOTKEY_VERSION = "hotkeys_v6"; private static final String HOTKEY_VERSION = "hotkeys_v6";
public static final String FUNC_ADD_WORD = "key_add_word"; public static final String FUNC_ADD_WORD = "key_add_word";

View file

@ -2,7 +2,6 @@ package io.github.sspanak.tt9.preferences.settings;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate;
@ -20,10 +19,6 @@ public class SettingsUI extends SettingsTyping {
public final static int LAYOUT_SMALL = 3; public final static int LAYOUT_SMALL = 3;
public final static int LAYOUT_NUMPAD = 4; public final static int LAYOUT_NUMPAD = 4;
public final static int NUMPAD_SHAPE_SQUARE = 0;
public final static int NUMPAD_SHAPE_V = 1;
public final static int NUMPAD_SHAPE_LONG_SPACE = 2;
private final int DEFAULT_LAYOUT; private final int DEFAULT_LAYOUT;
public final static int MIN_WIDTH_PERCENT = 50; public final static int MIN_WIDTH_PERCENT = 50;
@ -42,10 +37,6 @@ public class SettingsUI extends SettingsTyping {
} }
} }
public boolean areArrowKeysHidden() {
return !prefs.getBoolean("pref_arrow_keys_visible", true);
}
public boolean getAddWordsNoConfirmation() { public boolean getAddWordsNoConfirmation() {
return prefs.getBoolean("add_word_no_confirmation", false); return prefs.getBoolean("add_word_no_confirmation", false);
} }
@ -84,40 +75,6 @@ public class SettingsUI extends SettingsTyping {
prefsEditor.apply(); prefsEditor.apply();
} }
public int getNumpadKeyDefaultHeight() {
return context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height);
}
public int getNumpadKeyHeight() {
return getStringifiedInt("pref_numpad_key_height", getNumpadKeyDefaultHeight());
}
public float getNumpadFnKeyDefaultScale() {
// The simpler getResource.getFloat() requires API 29, so we must get the value manually.
try {
TypedValue outValue = new TypedValue();
context.getResources().getValue(R.dimen.numpad_key_fn_layout_weight, outValue, true);
return outValue.getFloat();
} catch (Exception e) {
return 0.625f;
}
}
public float getNumpadFnKeyScale() {
return getStringifiedFloat("pref_numpad_fn_key_width", getNumpadFnKeyDefaultScale());
}
public int getNumpadKeyFontSizePercent() {
return isMainLayoutNumpad() ? getStringifiedInt("pref_numpad_key_font_size", 100) : 100;
}
public int getNumpadShape() {
return getStringifiedInt("pref_numpad_shape", NUMPAD_SHAPE_SQUARE);
}
public boolean isNumpadShapeLongSpace() { return getNumpadShape() == NUMPAD_SHAPE_LONG_SPACE; }
public boolean isNumpadShapeV() { return getNumpadShape() == NUMPAD_SHAPE_V; }
public int getSettingsFontSize() { public int getSettingsFontSize() {
int defaultSize = DeviceInfo.IS_QIN_F21 || DeviceInfo.IS_LG_X100S ? FONT_SIZE_LARGE : FONT_SIZE_DEFAULT; int defaultSize = DeviceInfo.IS_QIN_F21 || DeviceInfo.IS_LG_X100S ? FONT_SIZE_LARGE : FONT_SIZE_DEFAULT;
return getStringifiedInt("pref_font_size", defaultSize); return getStringifiedInt("pref_font_size", defaultSize);

View file

@ -0,0 +1,91 @@
package io.github.sspanak.tt9.preferences.settings;
import android.content.Context;
import android.util.TypedValue;
import java.util.HashMap;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.screens.fnKeyOrder.FnKeyOrderValidator;
public class SettingsVirtualNumpad extends SettingsUI {
public final static int NUMPAD_SHAPE_SQUARE = 0;
public final static int NUMPAD_SHAPE_V = 1;
public final static int NUMPAD_SHAPE_LONG_SPACE = 2;
public static final String DEFAULT_LFN_KEY_ORDER = "1234";
public static final String DEFAULT_RFN_KEY_ORDER = "5678";
public static final HashMap<Character, Integer> KEY_ORDER_MAP = new HashMap<>() {{
put('1', R.id.soft_key_wrapper_1);
put('2', R.id.soft_key_wrapper_2);
put('3', R.id.soft_key_wrapper_3);
put('4', R.id.soft_key_wrapper_4);
put('5', R.id.soft_key_wrapper_5);
put('6', R.id.soft_key_wrapper_6);
put('7', R.id.soft_key_wrapper_7);
put('8', R.id.soft_key_wrapper_8);
}};
SettingsVirtualNumpad(Context context) {
super(context);
}
public boolean areArrowKeysHidden() {
return !prefs.getBoolean("pref_arrow_keys_visible", true);
}
public String getLfnKeyOrder() {
return prefs.getString("pref_lfn_key_order", DEFAULT_LFN_KEY_ORDER);
}
public String getRfnKeyOrder() {
return prefs.getString("pref_rfn_key_order", DEFAULT_RFN_KEY_ORDER);
}
public FnKeyOrderValidator setFnKeyOrder(String left, String right) {
FnKeyOrderValidator validator = new FnKeyOrderValidator(left, right);
if (validator.validate()) {
prefsEditor
.putString("pref_rfn_key_order", right)
.putString("pref_lfn_key_order", left)
.apply();
}
return validator;
}
public int getNumpadKeyDefaultHeight() {
return context.getResources().getDimensionPixelSize(R.dimen.numpad_key_height);
}
public int getNumpadKeyHeight() {
return getStringifiedInt("pref_numpad_key_height", getNumpadKeyDefaultHeight());
}
public float getNumpadFnKeyDefaultScale() {
// The simpler getResource.getFloat() requires API 29, so we must get the value manually.
try {
TypedValue outValue = new TypedValue();
context.getResources().getValue(R.dimen.numpad_key_fn_layout_weight, outValue, true);
return outValue.getFloat();
} catch (Exception e) {
return 0.625f;
}
}
public float getNumpadFnKeyScale() {
return getStringifiedFloat("pref_numpad_fn_key_width", getNumpadFnKeyDefaultScale());
}
public int getNumpadKeyFontSizePercent() {
return isMainLayoutNumpad() ? getStringifiedInt("pref_numpad_key_font_size", 100) : 100;
}
public int getNumpadShape() {
return getStringifiedInt("pref_numpad_shape", NUMPAD_SHAPE_SQUARE);
}
public boolean isNumpadShapeLongSpace() { return getNumpadShape() == NUMPAD_SHAPE_LONG_SPACE; }
public boolean isNumpadShapeV() { return getNumpadShape() == NUMPAD_SHAPE_V; }
}

View file

@ -1,23 +1,31 @@
package io.github.sspanak.tt9.ui.main; package io.github.sspanak.tt9.ui.main;
import android.content.res.Resources; import android.content.res.Resources;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.ime.TraditionalT9; import io.github.sspanak.tt9.ime.TraditionalT9;
import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.preferences.settings.SettingsVirtualNumpad;
import io.github.sspanak.tt9.ui.main.keys.SoftKey; import io.github.sspanak.tt9.ui.main.keys.SoftKey;
import io.github.sspanak.tt9.ui.main.keys.SoftKeySettings; import io.github.sspanak.tt9.ui.main.keys.SoftKeySettings;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo; import io.github.sspanak.tt9.util.sys.DeviceInfo;
class MainLayoutNumpad extends BaseMainLayout { class MainLayoutNumpad extends BaseMainLayout {
private boolean isTextEditingShown = false; private static final String LOG_TAG = MainLayoutNumpad.class.getSimpleName();
@NonNull private String lastFnKeyOrder = "";
private int height; private int height;
private boolean isTextEditingShown = false;
MainLayoutNumpad(TraditionalT9 tt9) { MainLayoutNumpad(TraditionalT9 tt9) {
@ -217,18 +225,16 @@ class MainLayoutNumpad extends BaseMainLayout {
// left Fn // left Fn
ViewGroup left = view.findViewById(R.id.numpad_column_fn_left); keys.add(view.findViewById(R.id.soft_key_settings));
keys.add(left.findViewById(R.id.soft_key_settings)); keys.add(view.findViewById(R.id.soft_key_add_word));
keys.add(left.findViewById(R.id.soft_key_add_word)); keys.add(view.findViewById(R.id.soft_key_shift));
keys.add(left.findViewById(R.id.soft_key_shift)); keys.add(view.findViewById(R.id.soft_key_lf4));
keys.add(left.findViewById(R.id.soft_key_lf4));
// right Fn // right Fn
ViewGroup right = view.findViewById(R.id.numpad_column_fn_right); keys.add(view.findViewById(R.id.soft_key_numpad_backspace));
keys.add(right.findViewById(R.id.soft_key_numpad_backspace)); keys.add(view.findViewById(R.id.soft_key_filter));
keys.add(right.findViewById(R.id.soft_key_filter)); keys.add(view.findViewById(R.id.soft_key_rf3));
keys.add(right.findViewById(R.id.soft_key_rf3)); keys.add(view.findViewById(R.id.soft_key_numpad_ok));
keys.add(right.findViewById(R.id.soft_key_numpad_ok));
// digits panel // digits panel
ViewGroup table = view.findViewById(R.id.main_soft_keys); ViewGroup table = view.findViewById(R.id.main_soft_keys);
@ -270,11 +276,65 @@ class MainLayoutNumpad extends BaseMainLayout {
} }
private void reorderFnKeys() {
if (view == null) {
return;
}
ViewGroup left = view.findViewById(R.id.numpad_column_fn_left);
ViewGroup right = view.findViewById(R.id.numpad_column_fn_right);
if (left == null || right == null) {
Logger.w(LOG_TAG, "Reordering keys failed: left or right column is null");
return;
}
String lfnOrder = tt9.getSettings().getLfnKeyOrder();
String rfnOrder = tt9.getSettings().getRfnKeyOrder();
final String newOrder = lfnOrder + "," + rfnOrder;
if (newOrder.equals(lastFnKeyOrder)) {
Logger.d(LOG_TAG, "Preserving current key order: '" + lastFnKeyOrder + "'");
return;
}
Map<Integer, View> keyWrappers = new HashMap<>();
for (Map.Entry<Character, Integer> entry : SettingsVirtualNumpad.KEY_ORDER_MAP.entrySet()) {
keyWrappers.put(entry.getValue(), view.findViewById(entry.getValue()));
}
reorderFnColumn(left, lfnOrder, keyWrappers);
reorderFnColumn(right, rfnOrder, keyWrappers);
lastFnKeyOrder = newOrder;
Logger.d(LOG_TAG, "Reordered keys: '" + lastFnKeyOrder + "'");
}
private void reorderFnColumn(ViewGroup column, String order, Map<Integer, View> keyWrappers) {
for (char keyId : order.toCharArray()) {
Integer viewId = SettingsVirtualNumpad.KEY_ORDER_MAP.get(keyId);
if (viewId == null) {
continue;
}
View key = keyWrappers.get(viewId);
if (key == null) {
Logger.w(LOG_TAG, "Failed reordering a NULL key with expected ID: " + keyId);
continue;
}
((ViewGroup) key.getParent()).removeView(key);
column.addView(key);
}
}
@Override @Override
void render() { void render() {
int defaultKeyHeight = calculateKeyHeight(); int defaultKeyHeight = calculateKeyHeight();
getView(); getView();
reorderFnKeys();
enableClickHandlers(); enableClickHandlers();
setKeyHeight(defaultKeyHeight); setKeyHeight(defaultKeyHeight);
preventEdgeToEdge(); preventEdgeToEdge();

View file

@ -4,28 +4,28 @@
style="@style/TTheme.Numpad.Column.Fn" style="@style/TTheme.Numpad.Column.Fn"
android:id="@+id/numpad_column_fn_left"> android:id="@+id/numpad_column_fn_left">
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_1">
<io.github.sspanak.tt9.ui.main.keys.SoftKeySettings <io.github.sspanak.tt9.ui.main.keys.SoftKeySettings
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_settings" /> android:id="@+id/soft_key_settings" />
<include layout="@layout/key_overlay_settings" /> <include layout="@layout/key_overlay_settings" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_2">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyAddWord <io.github.sspanak.tt9.ui.main.keys.SoftKeyAddWord
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_add_word" /> android:id="@+id/soft_key_add_word" />
<include layout="@layout/key_overlay_icons" /> <include layout="@layout/key_overlay_icons" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_3">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyShift <io.github.sspanak.tt9.ui.main.keys.SoftKeyShift
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_shift" /> android:id="@+id/soft_key_shift" />
<include layout="@layout/key_overlay_icons" /> <include layout="@layout/key_overlay_icons" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_4">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyLF4 <io.github.sspanak.tt9.ui.main.keys.SoftKeyLF4
style="@style/TTheme.Numpad.Key.LF4" style="@style/TTheme.Numpad.Key.LF4"
android:id="@+id/soft_key_lf4" /> android:id="@+id/soft_key_lf4" />

View file

@ -4,25 +4,29 @@
style="@style/TTheme.Numpad.Column.Fn" style="@style/TTheme.Numpad.Column.Fn"
android:id="@+id/numpad_column_fn_right"> android:id="@+id/numpad_column_fn_right">
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_5">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyBackspace <io.github.sspanak.tt9.ui.main.keys.SoftKeyBackspace
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_numpad_backspace" /> android:id="@+id/soft_key_numpad_backspace" />
</RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_6">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyFilter <io.github.sspanak.tt9.ui.main.keys.SoftKeyFilter
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_filter" /> android:id="@+id/soft_key_filter" />
<include layout="@layout/key_overlay_icons" /> <include layout="@layout/key_overlay_icons" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper"> <RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_7">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyRF3 <io.github.sspanak.tt9.ui.main.keys.SoftKeyRF3
style="@style/TTheme.Numpad.Key.Large" style="@style/TTheme.Numpad.Key.Large"
android:id="@+id/soft_key_rf3" /> android:id="@+id/soft_key_rf3" />
<include layout="@layout/key_overlay_icons" /> <include layout="@layout/key_overlay_icons" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout style="@style/TTheme.Numpad.Key.Overlay.Wrapper" android:id="@+id/soft_key_wrapper_8">
<io.github.sspanak.tt9.ui.main.keys.SoftKeyOk <io.github.sspanak.tt9.ui.main.keys.SoftKeyOk
style="@style/TTheme.Numpad.Key.OK" style="@style/TTheme.Numpad.Key.OK"
android:id="@+id/soft_key_numpad_ok" /> android:id="@+id/soft_key_numpad_ok" />
</RelativeLayout>
</LinearLayout> </LinearLayout>

View file

@ -45,6 +45,7 @@
<string name="pref_category_abc_mode">Режим АБВ</string> <string name="pref_category_abc_mode">Режим АБВ</string>
<string name="pref_category_custom_words">Добавени думи</string> <string name="pref_category_custom_words">Добавени думи</string>
<string name="pref_category_delete_words">Изтрий добавени думи</string> <string name="pref_category_delete_words">Изтрий добавени думи</string>
<string name="pref_category_fn_key_order">Ред на функционалните клавиши</string>
<string name="pref_category_hacks">Съвместимост</string> <string name="pref_category_hacks">Съвместимост</string>
<string name="pref_category_appearance">Облик</string> <string name="pref_category_appearance">Облик</string>
<string name="pref_category_function_keys">Бутони за бърз достъп</string> <string name="pref_category_function_keys">Бутони за бърз достъп</string>
@ -199,7 +200,7 @@
<string name="punctuation_order_save_error">Неуспешно запазване на реда на знаците.</string> <string name="punctuation_order_save_error">Неуспешно запазване на реда на знаците.</string>
<string name="punctuation_order_sentence">Ред на символите на клавиш 1</string> <string name="punctuation_order_sentence">Ред на символите на клавиш 1</string>
<string name="punctuation_order_special">Ред на символите на клавиш 0</string> <string name="punctuation_order_special">Ред на символите на клавиш 0</string>
<string name="punctuation_order_reset_defaults">Възстанови реда по подразбиране</string> <string name="restore_default_order">Възстанови реда по подразбиране</string>
<string name="language">Език</string> <string name="language">Език</string>
<string name="punctuation_order_save">Запази подредбата</string> <string name="punctuation_order_save">Запази подредбата</string>
<string name="punctuation_order_forbidden_char">Забранен символ:%1$s</string> <string name="punctuation_order_forbidden_char">Забранен символ:%1$s</string>
@ -210,10 +211,18 @@
<string name="pref_numpad_shape_v">V-образна</string> <string name="pref_numpad_shape_v">V-образна</string>
<string name="pref_arrow_keys_visible">Клавиши стрелки</string> <string name="pref_arrow_keys_visible">Клавиши стрелки</string>
<string name="donate_hold_to_open">Натиснете и задръжте, за да отворите в браузъра.</string> <string name="donate_hold_to_open">Натиснете и задръжте, за да отворите в браузъра.</string>
<string name="fn_key_order_error_duplicate_key">Не са разрешени повтарящи се клавиши.</string>
<string name="fn_key_order_legend">Легенда:</string>
<string name="fn_key_order_preview_tip">Съвет: След пренареждане на клавишите в колона 1, докоснете колона 2, за да видите резултата веднага (или обратно).</string>
<string name="function_already_assigned">Бутон „%1$s“ е зададен за функция „%2$s“. Искате ли да го зададете за „%3$s“?</string> <string name="function_already_assigned">Бутон „%1$s“ е зададен за функция „%2$s“. Искате ли да го зададете за „%3$s“?</string>
<string name="function_assign_instructions">* Натиснете или задръжте клавиш, за да го присвоите на функцията „%1$s“.\n\n* Натиснете 0, за да отмените.\n\n* Натиснете 2, за да деактивирате функцията.</string> <string name="function_assign_instructions">* Натиснете или задръжте клавиш, за да го присвоите на функцията „%1$s“.\n\n* Натиснете 0, за да отмените.\n\n* Натиснете 2, за да деактивирате функцията.</string>
<string name="pref_allow_composing_text">Показвай текст при съставяне</string> <string name="pref_allow_composing_text">Показвай текст при съставяне</string>
<string name="pref_drag_resize">Оразмеряване чрез влачене</string> <string name="pref_drag_resize">Оразмеряване чрез влачене</string>
<string name="function_undo">Отмяна (Undo)</string> <string name="function_undo">Отмяна (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Преизчисли долното отстояние</string> <string name="pref_hack_precalculate_navbar_height">Преизчисли долното отстояние</string>
<string name="fn_key_order_column_2">Колона 2</string>
<string name="fn_key_order_error_wrong_key_count">Трябва да има точно по 4 клавиша в колона.</string>
<string name="fn_key_order_error_unsupported_key_code">Разрешени са само кодове на клавиши от 1 до 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Един клавиш не може да бъде поставен и в двете колони.</string>
<string name="fn_key_order_column_1">Колона 1</string>
</resources> </resources>

View file

@ -66,6 +66,7 @@
<string name="pref_category_abc_mode">ABC-Modus</string> <string name="pref_category_abc_mode">ABC-Modus</string>
<string name="pref_category_custom_words">Hinzugefügte Wörter</string> <string name="pref_category_custom_words">Hinzugefügte Wörter</string>
<string name="pref_category_delete_words">Hinzugefügte Wörter löschen</string> <string name="pref_category_delete_words">Hinzugefügte Wörter löschen</string>
<string name="pref_category_fn_key_order">Reihenfolge der Funktionstasten</string>
<string name="pref_category_hacks">Kompatibilität</string> <string name="pref_category_hacks">Kompatibilität</string>
<string name="dictionary_loading_indeterminate">Lade Wörterbuch</string> <string name="dictionary_loading_indeterminate">Lade Wörterbuch</string>
<string name="pref_category_appearance">Erscheinungsbild</string> <string name="pref_category_appearance">Erscheinungsbild</string>
@ -188,7 +189,7 @@
<string name="punctuation_order_save_error">Zeichenreihenfolge konnte nicht gespeichert werden.</string> <string name="punctuation_order_save_error">Zeichenreihenfolge konnte nicht gespeichert werden.</string>
<string name="punctuation_order_sentence">Zeichenreihenfolge der 1-Taste</string> <string name="punctuation_order_sentence">Zeichenreihenfolge der 1-Taste</string>
<string name="punctuation_order_special">Zeichenreihenfolge der 0-Taste</string> <string name="punctuation_order_special">Zeichenreihenfolge der 0-Taste</string>
<string name="punctuation_order_reset_defaults">Standardreihenfolge wiederherstellen</string> <string name="restore_default_order">Standardreihenfolge wiederherstellen</string>
<string name="language">Sprache</string> <string name="language">Sprache</string>
<string name="punctuation_order_save">Reihenfolge speichern</string> <string name="punctuation_order_save">Reihenfolge speichern</string>
<string name="punctuation_order_forbidden_char">Verbotenes Zeichen:%1$s</string> <string name="punctuation_order_forbidden_char">Verbotenes Zeichen:%1$s</string>
@ -203,6 +204,9 @@
<string name="pref_arrow_keys_visible">Pfeiltasten</string> <string name="pref_arrow_keys_visible">Pfeiltasten</string>
<string name="donate_hold_to_open">Drücken und halten, um in einem Browser zu öffnen.</string> <string name="donate_hold_to_open">Drücken und halten, um in einem Browser zu öffnen.</string>
<string name="key_key">Taste</string> <string name="key_key">Taste</string>
<string name="fn_key_order_error_duplicate_key">Doppelte Tasten sind nicht erlaubt.</string>
<string name="fn_key_order_legend">Legende:</string>
<string name="fn_key_order_preview_tip">Tipp: Nach dem Neuanordnen der Tasten in Spalte 1, tippe auf Spalte 2, um das Ergebnis sofort zu sehen (oder umgekehrt).</string>
<string name="function_already_assigned">\tDie Taste \"%1$s\" ist bereits der Funktion \"%2$s\" zugewiesen. Möchten Sie sie \"%3$s\" zuweisen?</string> <string name="function_already_assigned">\tDie Taste \"%1$s\" ist bereits der Funktion \"%2$s\" zugewiesen. Möchten Sie sie \"%3$s\" zuweisen?</string>
<string name="function_assign_instructions">* 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.</string> <string name="function_assign_instructions">* 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.</string>
<string name="function_reassign">Neu zuweisen</string> <string name="function_reassign">Neu zuweisen</string>
@ -218,4 +222,9 @@
<string name="pref_drag_resize">Größe durch Ziehen ändern</string> <string name="pref_drag_resize">Größe durch Ziehen ändern</string>
<string name="function_undo">Rückgängig machen</string> <string name="function_undo">Rückgängig machen</string>
<string name="pref_hack_precalculate_navbar_height">Unteren Abstand neu berechnen</string> <string name="pref_hack_precalculate_navbar_height">Unteren Abstand neu berechnen</string>
<string name="fn_key_order_column_2">Spalte 2</string>
<string name="fn_key_order_error_wrong_key_count">Es müssen genau 4 Tasten pro Spalte sein.</string>
<string name="fn_key_order_error_unsupported_key_code">Nur Tastencodes 18 sind erlaubt.</string>
<string name="fn_key_order_error_key_on_both_sides">Eine Taste kann nicht in beiden Spalten platziert werden.</string>
<string name="fn_key_order_column_1">Spalte 1</string>
</resources> </resources>

View file

@ -22,6 +22,7 @@
<string name="pref_category_abc_mode">Modo ABC</string> <string name="pref_category_abc_mode">Modo ABC</string>
<string name="pref_category_custom_words">Palabras añadidas</string> <string name="pref_category_custom_words">Palabras añadidas</string>
<string name="pref_category_delete_words">Eliminar palabras añadidas</string> <string name="pref_category_delete_words">Eliminar palabras añadidas</string>
<string name="pref_category_fn_key_order">Orden de las teclas de función</string>
<string name="pref_category_hacks">Compatibilidad</string> <string name="pref_category_hacks">Compatibilidad</string>
<string name="pref_category_appearance">Apariencia</string> <string name="pref_category_appearance">Apariencia</string>
<string name="pref_category_function_keys">Teclas de acceso rápido</string> <string name="pref_category_function_keys">Teclas de acceso rápido</string>
@ -199,7 +200,7 @@
<string name="punctuation_order_save_error">Error al guardar el orden de los caracteres.</string> <string name="punctuation_order_save_error">Error al guardar el orden de los caracteres.</string>
<string name="punctuation_order_sentence">Orden de caracteres de la tecla 1</string> <string name="punctuation_order_sentence">Orden de caracteres de la tecla 1</string>
<string name="punctuation_order_special">Orden de caracteres de la tecla 0</string> <string name="punctuation_order_special">Orden de caracteres de la tecla 0</string>
<string name="punctuation_order_reset_defaults">Restaurar el orden predeterminado</string> <string name="restore_default_order">Restaurar el orden predeterminado</string>
<string name="language">Idioma</string> <string name="language">Idioma</string>
<string name="punctuation_order_save">Guardar orden</string> <string name="punctuation_order_save">Guardar orden</string>
<string name="punctuation_order_forbidden_char">Carácter prohibido:%1$s</string> <string name="punctuation_order_forbidden_char">Carácter prohibido:%1$s</string>
@ -210,10 +211,18 @@
<string name="pref_numpad_shape_v">Forma de V</string> <string name="pref_numpad_shape_v">Forma de V</string>
<string name="pref_arrow_keys_visible">Teclas de flecha</string> <string name="pref_arrow_keys_visible">Teclas de flecha</string>
<string name="donate_hold_to_open">Mantén presionado para abrir en un navegador.</string> <string name="donate_hold_to_open">Mantén presionado para abrir en un navegador.</string>
<string name="fn_key_order_error_duplicate_key">No se permiten teclas duplicadas.</string>
<string name="fn_key_order_legend">Leyenda:</string>
<string name="fn_key_order_preview_tip">Sugerencia: Después de reorganizar las teclas en la columna 1, toca la columna 2 para ver el resultado al instante (o viceversa).</string>
<string name="function_already_assigned">La tecla \"%1$s\" ya está asignada a la función \"%2$s\". ¿Desea asignarla a \"%3$s\"?</string> <string name="function_already_assigned">La tecla \"%1$s\" ya está asignada a la función \"%2$s\". ¿Desea asignarla a \"%3$s\"?</string>
<string name="function_assign_instructions">* 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.</string> <string name="function_assign_instructions">* 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.</string>
<string name="pref_allow_composing_text">Mostrar texto en composición</string> <string name="pref_allow_composing_text">Mostrar texto en composición</string>
<string name="pref_drag_resize">Redimensionar arrastrando</string> <string name="pref_drag_resize">Redimensionar arrastrando</string>
<string name="function_undo">Deshacer</string> <string name="function_undo">Deshacer</string>
<string name="pref_hack_precalculate_navbar_height">Recalcular el relleno inferior</string> <string name="pref_hack_precalculate_navbar_height">Recalcular el relleno inferior</string>
<string name="fn_key_order_column_2">Columna 2</string>
<string name="fn_key_order_error_wrong_key_count">Debe haber exactamente 4 teclas por columna.</string>
<string name="fn_key_order_error_unsupported_key_code">Solo se permiten los códigos de tecla del 1 al 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Una tecla no puede colocarse en ambas columnas.</string>
<string name="fn_key_order_column_1">Columna 1</string>
</resources> </resources>

View file

@ -45,6 +45,7 @@
<string name="pref_category_abc_mode">Saisie ABC</string> <string name="pref_category_abc_mode">Saisie ABC</string>
<string name="pref_category_custom_words">Mots ajoutés</string> <string name="pref_category_custom_words">Mots ajoutés</string>
<string name="pref_category_delete_words">Supprimer des mots ajoutés</string> <string name="pref_category_delete_words">Supprimer des mots ajoutés</string>
<string name="pref_category_fn_key_order">Ordre des touches de fonction</string>
<string name="pref_category_hacks">Compatibilité</string> <string name="pref_category_hacks">Compatibilité</string>
<string name="pref_category_appearance">Apparance</string> <string name="pref_category_appearance">Apparance</string>
<string name="dictionary_load_bad_char">Echec du chargement. Mot inadmissible à la ligne %1$d de langue «%2$s».</string> <string name="dictionary_load_bad_char">Echec du chargement. Mot inadmissible à la ligne %1$d de langue «%2$s».</string>
@ -197,7 +198,7 @@
<string name="punctuation_order_save_error">Échec de lenregistrement de lordre des caractères.</string> <string name="punctuation_order_save_error">Échec de lenregistrement de lordre des caractères.</string>
<string name="punctuation_order_sentence">Ordre des caractères de la touche 1</string> <string name="punctuation_order_sentence">Ordre des caractères de la touche 1</string>
<string name="punctuation_order_special">Ordre des caractères de la touche 0</string> <string name="punctuation_order_special">Ordre des caractères de la touche 0</string>
<string name="punctuation_order_reset_defaults">Restaurer lordre par défaut</string> <string name="restore_default_order">Restaurer lordre par défaut</string>
<string name="language">Langue</string> <string name="language">Langue</string>
<string name="punctuation_order_save">Enregistrer lordre</string> <string name="punctuation_order_save">Enregistrer lordre</string>
<string name="punctuation_order_forbidden_char">Caractère interdit:%1$s</string> <string name="punctuation_order_forbidden_char">Caractère interdit:%1$s</string>
@ -209,6 +210,9 @@
<string name="pref_arrow_keys_visible">Touches fléchées</string> <string name="pref_arrow_keys_visible">Touches fléchées</string>
<string name="donate_hold_to_open">Appuyez et maintenez pour ouvrir dans un navigateur.</string> <string name="donate_hold_to_open">Appuyez et maintenez pour ouvrir dans un navigateur.</string>
<string name="key_key">Touche</string> <string name="key_key">Touche</string>
<string name="fn_key_order_error_duplicate_key">Les touches en double ne sont pas autorisées.</string>
<string name="fn_key_order_legend">Légende :</string>
<string name="fn_key_order_preview_tip">Astuce : Après avoir réorganisé les touches dans la colonne 1, touchez la colonne 2 pour voir le résultat immédiatement (ou inversement).</string>
<string name="function_already_assigned">La touche \"%1$s\" est déjà attribuée à la fonction \"%2$s\". Voulez-vous lattribuer à \"%3$s\" ?</string> <string name="function_already_assigned">La touche \"%1$s\" est déjà attribuée à la fonction \"%2$s\". Voulez-vous lattribuer à \"%3$s\" ?</string>
<string name="function_assign_instructions">* Appuyez ou maintenez une touche pour lattribuer à la fonction \"%1$s\".\n\n* Appuyez sur 0 pour annuler.\n\n* Appuyez sur 2 pour désactiver la fonction.</string> <string name="function_assign_instructions">* Appuyez ou maintenez une touche pour lattribuer à la fonction \"%1$s\".\n\n* Appuyez sur 0 pour annuler.\n\n* Appuyez sur 2 pour désactiver la fonction.</string>
<string name="key_hold_key">(maintenir)</string> <string name="key_hold_key">(maintenir)</string>
@ -216,4 +220,9 @@
<string name="pref_drag_resize">Redimensionner en faisant glisser</string> <string name="pref_drag_resize">Redimensionner en faisant glisser</string>
<string name="function_undo">Annuler (Undo)</string> <string name="function_undo">Annuler (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Recalculer le remplissage inférieur</string> <string name="pref_hack_precalculate_navbar_height">Recalculer le remplissage inférieur</string>
<string name="fn_key_order_column_2">Colonne 2</string>
<string name="fn_key_order_error_wrong_key_count">Il doit y avoir exactement 4 touches par colonne.</string>
<string name="fn_key_order_error_unsupported_key_code">Seuls les codes de touche 1 à 8 sont autorisés.</string>
<string name="fn_key_order_error_key_on_both_sides">Une touche ne peut pas être placée dans les deux colonnes.</string>
<string name="fn_key_order_column_1">Colonne 1</string>
</resources> </resources>

View file

@ -61,6 +61,7 @@
<string name="pref_category_abc_mode">Modalità ABC</string> <string name="pref_category_abc_mode">Modalità ABC</string>
<string name="pref_category_custom_words">Parole aggiunte</string> <string name="pref_category_custom_words">Parole aggiunte</string>
<string name="pref_category_delete_words">Elimina parole aggiunte</string> <string name="pref_category_delete_words">Elimina parole aggiunte</string>
<string name="pref_category_fn_key_order">Ordine dei tasti funzione</string>
<string name="pref_category_hacks">Compatibilità</string> <string name="pref_category_hacks">Compatibilità</string>
<string name="pref_category_appearance">Aspetto</string> <string name="pref_category_appearance">Aspetto</string>
<string name="pref_category_predictive_mode">Scrittura facilitata</string> <string name="pref_category_predictive_mode">Scrittura facilitata</string>
@ -186,7 +187,7 @@
<string name="punctuation_order_save_error">Salvataggio dellordine dei caratteri non riuscito.</string> <string name="punctuation_order_save_error">Salvataggio dellordine dei caratteri non riuscito.</string>
<string name="punctuation_order_sentence">Ordine dei caratteri del tasto 1</string> <string name="punctuation_order_sentence">Ordine dei caratteri del tasto 1</string>
<string name="punctuation_order_special">Ordine dei caratteri del tasto 0</string> <string name="punctuation_order_special">Ordine dei caratteri del tasto 0</string>
<string name="punctuation_order_reset_defaults">Ripristina ordine predefinito</string> <string name="restore_default_order">Ripristina ordine predefinito</string>
<string name="language">Lingua</string> <string name="language">Lingua</string>
<string name="punctuation_order_save">Salvare l\'ordine</string> <string name="punctuation_order_save">Salvare l\'ordine</string>
<string name="punctuation_order_forbidden_char">Carattere vietato:%1$s</string> <string name="punctuation_order_forbidden_char">Carattere vietato:%1$s</string>
@ -201,6 +202,9 @@
<string name="pref_arrow_keys_visible">Tasti freccia</string> <string name="pref_arrow_keys_visible">Tasti freccia</string>
<string name="donate_hold_to_open">Tieni premuto per aprire nel browser.</string> <string name="donate_hold_to_open">Tieni premuto per aprire nel browser.</string>
<string name="key_key">Tasto</string> <string name="key_key">Tasto</string>
<string name="fn_key_order_error_duplicate_key">Non sono consentiti tasti duplicati.</string>
<string name="fn_key_order_legend">Legenda:</string>
<string name="fn_key_order_preview_tip">Suggerimento: Dopo aver riordinato i tasti nella colonna 1, tocca la colonna 2 per vedere subito il risultato (o viceversa).</string>
<string name="function_already_assigned">Il tasto \"%1$s\" è già assegnato alla funzione \"%2$s\". Vuoi assegnarlo a \"%3$s\"?</string> <string name="function_already_assigned">Il tasto \"%1$s\" è già assegnato alla funzione \"%2$s\". Vuoi assegnarlo a \"%3$s\"?</string>
<string name="function_assign_instructions">* 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.</string> <string name="function_assign_instructions">* 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.</string>
<string name="function_reassign">Riassegnare</string> <string name="function_reassign">Riassegnare</string>
@ -219,5 +223,10 @@
<string name="pref_drag_resize">Ridimensionare trascinando</string> <string name="pref_drag_resize">Ridimensionare trascinando</string>
<string name="function_undo">Annulla (Undo)</string> <string name="function_undo">Annulla (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Ricalcola il margine inferiore</string> <string name="pref_hack_precalculate_navbar_height">Ricalcola il margine inferiore</string>
<string name="fn_key_order_column_2">Colonna 2</string>
<string name="fn_key_order_error_wrong_key_count">Devono esserci esattamente 4 tasti per colonna.</string>
<string name="fn_key_order_error_unsupported_key_code">Sono consentiti solo i codici dei tasti da 1 a 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Un tasto non può essere inserito in entrambe le colonne.</string>
<string name="fn_key_order_column_1">Colonna 1</string>
</resources> </resources>

View file

@ -20,6 +20,7 @@
<string name="pref_category_abc_mode">מצב אבג</string> <string name="pref_category_abc_mode">מצב אבג</string>
<string name="pref_category_custom_words">מילים שהוספו</string> <string name="pref_category_custom_words">מילים שהוספו</string>
<string name="pref_category_delete_words">מחק מילים שהוספו</string> <string name="pref_category_delete_words">מחק מילים שהוספו</string>
<string name="pref_category_fn_key_order">סדר מקשי פונקציה</string>
<string name="pref_category_hacks">הגדרות תאימות</string> <string name="pref_category_hacks">הגדרות תאימות</string>
<string name="pref_category_appearance">מראה</string> <string name="pref_category_appearance">מראה</string>
<string name="pref_category_predictive_mode">מצב חיזוי</string> <string name="pref_category_predictive_mode">מצב חיזוי</string>
@ -200,7 +201,7 @@
<string name="punctuation_order_save_error">שמירת סדר התווים נכשלה.</string> <string name="punctuation_order_save_error">שמירת סדר התווים נכשלה.</string>
<string name="punctuation_order_sentence">סדר התווים של מקש 1</string> <string name="punctuation_order_sentence">סדר התווים של מקש 1</string>
<string name="punctuation_order_special">סדר התווים של מקש 0</string> <string name="punctuation_order_special">סדר התווים של מקש 0</string>
<string name="punctuation_order_reset_defaults">שחזר את הסדר המוגדר כברירת מחדל</string> <string name="restore_default_order">שחזר את הסדר המוגדר כברירת מחדל</string>
<string name="language">שפה</string> <string name="language">שפה</string>
<string name="punctuation_order_save">שמור את הסדר</string> <string name="punctuation_order_save">שמור את הסדר</string>
<string name="punctuation_order_forbidden_char">תו אסור:%1$s</string> <string name="punctuation_order_forbidden_char">תו אסור:%1$s</string>
@ -214,6 +215,9 @@
<string name="pref_arrow_keys_visible">מקשי חצים</string> <string name="pref_arrow_keys_visible">מקשי חצים</string>
<string name="donate_summary">אם אתה אוהב %1$s, אתה יכול לקנות לי בירה.</string> <string name="donate_summary">אם אתה אוהב %1$s, אתה יכול לקנות לי בירה.</string>
<string name="donate_hold_to_open">לחצו והחזיקו כדי לפתוח בדפדפן.</string> <string name="donate_hold_to_open">לחצו והחזיקו כדי לפתוח בדפדפן.</string>
<string name="fn_key_order_error_duplicate_key">לא ניתן להשתמש באותם מקשים פעמיים.</string>
<string name="fn_key_order_legend">מקרא:</string>
<string name="fn_key_order_preview_tip">טיפ: לאחר שינוי סדר המקשים בעמודה 1, הקש על עמודה 2 כדי לראות את התוצאה מיד (או להפך).</string>
<string name="function_already_assigned">המקש \"%1$s\" כבר מוקצה לפונקציה \"%2$s\". האם ברצונך להקצות אותו ל-“%3$s”?</string> <string name="function_already_assigned">המקש \"%1$s\" כבר מוקצה לפונקציה \"%2$s\". האם ברצונך להקצות אותו ל-“%3$s”?</string>
<string name="function_assign_instructions">* לחצו או החזיקו מקש כדי להקצות אותו לפונקציה \"%1$s\". \n\n* לחצו 0 כדי לבטל. \n\n* לחצו 2 כדי להשבית את הפונקציה.</string> <string name="function_assign_instructions">* לחצו או החזיקו מקש כדי להקצות אותו לפונקציה \"%1$s\". \n\n* לחצו 0 כדי לבטל. \n\n* לחצו 2 כדי להשבית את הפונקציה.</string>
<string name="function_filter_clear">נקה מסנן</string> <string name="function_filter_clear">נקה מסנן</string>
@ -223,4 +227,9 @@
<string name="pref_drag_resize">שינוי גודל על ידי גרירה</string> <string name="pref_drag_resize">שינוי גודל על ידי גרירה</string>
<string name="function_undo">ביטול (Undo)</string> <string name="function_undo">ביטול (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">חשב מחדש ריווח תחתון</string> <string name="pref_hack_precalculate_navbar_height">חשב מחדש ריווח תחתון</string>
<string name="fn_key_order_column_2">עמודה 2</string>
<string name="fn_key_order_error_wrong_key_count">חייבים להיות בדיוק 4 מקשים בכל עמודה.</string>
<string name="fn_key_order_error_unsupported_key_code">רק קודי מקשים 18 מותרים.</string>
<string name="fn_key_order_error_key_on_both_sides">לא ניתן למקם מקש אחד בשתי העמודות.</string>
<string name="fn_key_order_column_1">עמודה 1</string>
</resources> </resources>

View file

@ -19,6 +19,7 @@
<string name="commands_select_command">Pasirinkti komandą</string> <string name="commands_select_command">Pasirinkti komandą</string>
<string name="pref_category_about">Apie programėlę</string> <string name="pref_category_about">Apie programėlę</string>
<string name="pref_category_abc_mode">ABC metodas</string> <string name="pref_category_abc_mode">ABC metodas</string>
<string name="pref_category_fn_key_order">Funkcinių klavišų tvarka</string>
<string name="pref_category_hacks">Suderinamumas</string> <string name="pref_category_hacks">Suderinamumas</string>
<string name="pref_category_appearance">Išvaizda</string> <string name="pref_category_appearance">Išvaizda</string>
<string name="pref_category_predictive_mode">Nuspėjamumas</string> <string name="pref_category_predictive_mode">Nuspėjamumas</string>
@ -208,7 +209,7 @@
<string name="punctuation_order_save_error">Nepavyko išsaugoti simbolių tvarkos.</string> <string name="punctuation_order_save_error">Nepavyko išsaugoti simbolių tvarkos.</string>
<string name="punctuation_order_sentence">Simbolių tvarka ant klavišo 1</string> <string name="punctuation_order_sentence">Simbolių tvarka ant klavišo 1</string>
<string name="punctuation_order_special">Simbolių tvarka ant klavišo 0</string> <string name="punctuation_order_special">Simbolių tvarka ant klavišo 0</string>
<string name="punctuation_order_reset_defaults">Atkurti numatytąją tvarką</string> <string name="restore_default_order">Atkurti numatytąją tvarką</string>
<string name="language">Kalba</string> <string name="language">Kalba</string>
<string name="punctuation_order_save">Išsaugoti tvarką</string> <string name="punctuation_order_save">Išsaugoti tvarką</string>
<string name="punctuation_order_forbidden_char">Draudžiamas simbolis:%1$s</string> <string name="punctuation_order_forbidden_char">Draudžiamas simbolis:%1$s</string>
@ -219,10 +220,18 @@
<string name="pref_numpad_shape_v">V formos</string> <string name="pref_numpad_shape_v">V formos</string>
<string name="pref_arrow_keys_visible">Rodyklių klavišai</string> <string name="pref_arrow_keys_visible">Rodyklių klavišai</string>
<string name="donate_hold_to_open">Paspauskite ir laikykite, kad atidarytumėte naršyklėje.</string> <string name="donate_hold_to_open">Paspauskite ir laikykite, kad atidarytumėte naršyklėje.</string>
<string name="fn_key_order_error_duplicate_key">Pasikartojantys klavišai neleidžiami.</string>
<string name="fn_key_order_legend">Legenda:</string>
<string name="fn_key_order_preview_tip">Patarimas: Perkėlus klavišus 1 stulpelyje, palieskite 2 stulpelį, kad iškart pamatytumėte rezultatą (arba atvirkščiai).</string>
<string name="function_already_assigned">Klavišas „%1$s“ jau priskirtas funkcijai „%2$s“. Ar norite jį priskirti „%3$s“?</string> <string name="function_already_assigned">Klavišas „%1$s“ jau priskirtas funkcijai „%2$s“. Ar norite jį priskirti „%3$s“?</string>
<string name="function_assign_instructions">* 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ą.</string> <string name="function_assign_instructions">* 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ą.</string>
<string name="pref_allow_composing_text">Rodyti rašomą tekstą</string> <string name="pref_allow_composing_text">Rodyti rašomą tekstą</string>
<string name="pref_drag_resize">Keisti dydį tempiant</string> <string name="pref_drag_resize">Keisti dydį tempiant</string>
<string name="function_undo">Atšaukti (Undo)</string> <string name="function_undo">Atšaukti (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Perskaičiuoti apatinį paraštę</string> <string name="pref_hack_precalculate_navbar_height">Perskaičiuoti apatinį paraštę</string>
<string name="fn_key_order_column_2">Stulpelis 2</string>
<string name="fn_key_order_error_wrong_key_count">Kiekvienoje stulpelyje turi būti tiksliai 4 klavišai.</string>
<string name="fn_key_order_error_unsupported_key_code">Leidžiami tik klavišų kodai nuo 1 iki 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Vieno klavišo negalima dėti į abu stulpelius.</string>
<string name="fn_key_order_column_1">Stulpelis 1</string>
</resources> </resources>

View file

@ -69,6 +69,7 @@
<string name="pref_category_abc_mode">ABC-modus</string> <string name="pref_category_abc_mode">ABC-modus</string>
<string name="pref_category_custom_words">Toegevoegde woorden</string> <string name="pref_category_custom_words">Toegevoegde woorden</string>
<string name="pref_category_delete_words">Verwijder toegevoegde woorden</string> <string name="pref_category_delete_words">Verwijder toegevoegde woorden</string>
<string name="pref_category_fn_key_order">Volgorde van functietoetsen</string>
<string name="pref_category_hacks">Compatibiliteit</string> <string name="pref_category_hacks">Compatibiliteit</string>
<string name="dictionary_loading_indeterminate">Woordenboek laden</string> <string name="dictionary_loading_indeterminate">Woordenboek laden</string>
<string name="pref_category_appearance">Uiterlijk</string> <string name="pref_category_appearance">Uiterlijk</string>
@ -188,7 +189,7 @@
<string name="punctuation_order_save_error">Opslaan van de tekenvolgorde mislukt.</string> <string name="punctuation_order_save_error">Opslaan van de tekenvolgorde mislukt.</string>
<string name="punctuation_order_sentence">Tekenvolgorde van de 1-toets</string> <string name="punctuation_order_sentence">Tekenvolgorde van de 1-toets</string>
<string name="punctuation_order_special">Tekenvolgorde van de 0-toets</string> <string name="punctuation_order_special">Tekenvolgorde van de 0-toets</string>
<string name="punctuation_order_reset_defaults">Standaardvolgorde herstellen</string> <string name="restore_default_order">Standaardvolgorde herstellen</string>
<string name="language">Taal</string> <string name="language">Taal</string>
<string name="punctuation_order_save">Volgorde opslaan</string> <string name="punctuation_order_save">Volgorde opslaan</string>
<string name="punctuation_order_forbidden_char">Verboden teken:%1$s</string> <string name="punctuation_order_forbidden_char">Verboden teken:%1$s</string>
@ -202,6 +203,9 @@
<string name="pref_numpad_shape_v">V-vorm</string> <string name="pref_numpad_shape_v">V-vorm</string>
<string name="donate_hold_to_open">Druk lang in om in een browser te openen.</string> <string name="donate_hold_to_open">Druk lang in om in een browser te openen.</string>
<string name="key_key">Toets</string> <string name="key_key">Toets</string>
<string name="fn_key_order_error_duplicate_key">Dubbele toetsen zijn niet toegestaan.</string>
<string name="fn_key_order_legend">Legenda:</string>
<string name="fn_key_order_preview_tip">Tip: Na het herschikken van de toetsen in kolom 1, tik op kolom 2 om het resultaat direct te zien (of andersom).</string>
<string name="function_already_assigned">Toets \"%1$s\" is al toegewezen aan functie \"%2$s\". Wilt u deze toewijzen aan \"%3$s\"?</string> <string name="function_already_assigned">Toets \"%1$s\" is al toegewezen aan functie \"%2$s\". Wilt u deze toewijzen aan \"%3$s\"?</string>
<string name="function_assign_instructions">* 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.</string> <string name="function_assign_instructions">* 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.</string>
<string name="function_reassign">Opnieuw toewijzen</string> <string name="function_reassign">Opnieuw toewijzen</string>
@ -217,4 +221,9 @@
<string name="pref_allow_composing_text">Compositietekst weergeven</string> <string name="pref_allow_composing_text">Compositietekst weergeven</string>
<string name="function_undo">Ongedaan maken</string> <string name="function_undo">Ongedaan maken</string>
<string name="pref_hack_precalculate_navbar_height">Onderrand opnieuw berekenen</string> <string name="pref_hack_precalculate_navbar_height">Onderrand opnieuw berekenen</string>
<string name="fn_key_order_column_2">Kolom 2</string>
<string name="fn_key_order_error_wrong_key_count">Er moeten precies 4 toetsen per kolom zijn.</string>
<string name="fn_key_order_error_unsupported_key_code">Alleen toetscodes 18 zijn toegestaan.</string>
<string name="fn_key_order_error_key_on_both_sides">Eén toets kan niet in beide kolommen staan.</string>
<string name="fn_key_order_column_1">Kolom 1</string>
</resources> </resources>

View file

@ -20,6 +20,7 @@
<string name="pref_category_abc_mode">Modo ABC</string> <string name="pref_category_abc_mode">Modo ABC</string>
<string name="pref_category_custom_words">Palavras adicionadas</string> <string name="pref_category_custom_words">Palavras adicionadas</string>
<string name="pref_category_delete_words">Excluir palavras adicionadas</string> <string name="pref_category_delete_words">Excluir palavras adicionadas</string>
<string name="pref_category_fn_key_order">Ordem das teclas de função</string>
<string name="pref_category_hacks">Compatibilidade</string> <string name="pref_category_hacks">Compatibilidade</string>
<string name="pref_category_appearance">Aparência</string> <string name="pref_category_appearance">Aparência</string>
<string name="pref_category_predictive_mode">Modo Predictivo</string> <string name="pref_category_predictive_mode">Modo Predictivo</string>
@ -201,7 +202,7 @@
<string name="punctuation_order_save_error">Falha ao salvar a ordem dos caracteres.</string> <string name="punctuation_order_save_error">Falha ao salvar a ordem dos caracteres.</string>
<string name="punctuation_order_sentence">Ordem de caracteres da tecla 1</string> <string name="punctuation_order_sentence">Ordem de caracteres da tecla 1</string>
<string name="punctuation_order_special">Ordem de caracteres da tecla 0</string> <string name="punctuation_order_special">Ordem de caracteres da tecla 0</string>
<string name="punctuation_order_reset_defaults">Restaurar ordem padrão</string> <string name="restore_default_order">Restaurar ordem padrão</string>
<string name="language">Idioma</string> <string name="language">Idioma</string>
<string name="punctuation_order_save">Salvar ordem</string> <string name="punctuation_order_save">Salvar ordem</string>
<string name="punctuation_order_forbidden_char">Caractere proibido:%1$s</string> <string name="punctuation_order_forbidden_char">Caractere proibido:%1$s</string>
@ -214,6 +215,9 @@
<string name="pref_numpad_shape_v">Forma em V</string> <string name="pref_numpad_shape_v">Forma em V</string>
<string name="pref_arrow_keys_visible">Teclas de seta</string> <string name="pref_arrow_keys_visible">Teclas de seta</string>
<string name="donate_hold_to_open">Pressione e segure para abrir no navegador.</string> <string name="donate_hold_to_open">Pressione e segure para abrir no navegador.</string>
<string name="fn_key_order_error_duplicate_key">Teclas duplicadas não são permitidas.</string>
<string name="fn_key_order_legend">Legenda:</string>
<string name="fn_key_order_preview_tip">Dica: Após reorganizar as teclas na coluna 1, toque na coluna 2 para ver o resultado imediatamente (ou vice-versa).</string>
<string name="function_already_assigned">A tecla \"%1$s\" já está atribuída à função \"%2$s\". Deseja atribuí-la a \"%3$s\"?</string> <string name="function_already_assigned">A tecla \"%1$s\" já está atribuída à função \"%2$s\". Deseja atribuí-la a \"%3$s\"?</string>
<string name="function_assign_instructions">* Pressione ou segure uma tecla para atribuí-la à função \"%1$s\".\n\n* Pressione 0 para cancelar.\n\n* Pressione 2 para desativar a função.</string> <string name="function_assign_instructions">* Pressione ou segure uma tecla para atribuí-la à função \"%1$s\".\n\n* Pressione 0 para cancelar.\n\n* Pressione 2 para desativar a função.</string>
<string name="function_filter_clear">Limpar Filtro</string> <string name="function_filter_clear">Limpar Filtro</string>
@ -223,4 +227,9 @@
<string name="pref_drag_resize">Redimensionar arrastando</string> <string name="pref_drag_resize">Redimensionar arrastando</string>
<string name="function_undo">Desfazer</string> <string name="function_undo">Desfazer</string>
<string name="pref_hack_precalculate_navbar_height">Recalcular o espaçamento inferior</string> <string name="pref_hack_precalculate_navbar_height">Recalcular o espaçamento inferior</string>
<string name="fn_key_order_column_2">Coluna 2</string>
<string name="fn_key_order_error_wrong_key_count">Deve haver exatamente 4 teclas por coluna.</string>
<string name="fn_key_order_error_unsupported_key_code">Apenas os códigos de tecla de 1 a 8 são permitidos.</string>
<string name="fn_key_order_error_key_on_both_sides">Uma tecla não pode estar nas duas colunas.</string>
<string name="fn_key_order_column_1">Coluna 1</string>
</resources> </resources>

View file

@ -52,6 +52,7 @@
<string name="pref_category_abc_mode">Режим AБВ</string> <string name="pref_category_abc_mode">Режим AБВ</string>
<string name="pref_category_custom_words">Добавленные слова</string> <string name="pref_category_custom_words">Добавленные слова</string>
<string name="pref_category_delete_words">Удалить добавленные слова</string> <string name="pref_category_delete_words">Удалить добавленные слова</string>
<string name="pref_category_fn_key_order">Порядок функциональных клавиш</string>
<string name="pref_category_hacks">Cовместимость</string> <string name="pref_category_hacks">Cовместимость</string>
<string name="pref_category_appearance">Внешний вид</string> <string name="pref_category_appearance">Внешний вид</string>
<string name="pref_category_function_keys">Горячие клавиши</string> <string name="pref_category_function_keys">Горячие клавиши</string>
@ -199,7 +200,7 @@
<string name="punctuation_order_save_error">е удалось сохранить порядок символов.</string> <string name="punctuation_order_save_error">е удалось сохранить порядок символов.</string>
<string name="punctuation_order_sentence">Порядок символов на клавише 1</string> <string name="punctuation_order_sentence">Порядок символов на клавише 1</string>
<string name="punctuation_order_special">Порядок символов на клавише 0</string> <string name="punctuation_order_special">Порядок символов на клавише 0</string>
<string name="punctuation_order_reset_defaults">Восстановить порядок по умолчанию</string> <string name="restore_default_order">Восстановить порядок по умолчанию</string>
<string name="language">Язык</string> <string name="language">Язык</string>
<string name="punctuation_order_save">Сохранить порядок</string> <string name="punctuation_order_save">Сохранить порядок</string>
<string name="punctuation_order_forbidden_char">Запрещённый символ:%1$s</string> <string name="punctuation_order_forbidden_char">Запрещённый символ:%1$s</string>
@ -210,10 +211,18 @@
<string name="pref_numpad_shape_v">V-образная форма</string> <string name="pref_numpad_shape_v">V-образная форма</string>
<string name="pref_arrow_keys_visible">Клавиши со стрелками</string> <string name="pref_arrow_keys_visible">Клавиши со стрелками</string>
<string name="donate_hold_to_open">Нажмите и удерживайте, чтобы открыть в браузере.</string> <string name="donate_hold_to_open">Нажмите и удерживайте, чтобы открыть в браузере.</string>
<string name="fn_key_order_error_duplicate_key">Повторяющиеся клавиши не допускаются.</string>
<string name="fn_key_order_legend">Условные обозначения:</string>
<string name="fn_key_order_preview_tip">Подсказка: После изменения порядка клавиш в колонке 1 нажмите на колонку 2, чтобы сразу увидеть результат (или наоборот).</string>
<string name="function_already_assigned">Клавиша «%1$s» уже назначена на функцию «%2$s». Назначить её на «%3$s»?</string> <string name="function_already_assigned">Клавиша «%1$s» уже назначена на функцию «%2$s». Назначить её на «%3$s»?</string>
<string name="function_assign_instructions">* Нажмите или удерживайте клавишу, чтобы назначить её на функцию «%1$s».\n\n* Нажмите 0, чтобы отменить.\n\n* Нажмите 2, чтобы отключить функцию.</string> <string name="function_assign_instructions">* Нажмите или удерживайте клавишу, чтобы назначить её на функцию «%1$s».\n\n* Нажмите 0, чтобы отменить.\n\n* Нажмите 2, чтобы отключить функцию.</string>
<string name="pref_allow_composing_text">Показывать текст при вводе</string> <string name="pref_allow_composing_text">Показывать текст при вводе</string>
<string name="pref_drag_resize">Изменять размер перетаскиванием</string> <string name="pref_drag_resize">Изменять размер перетаскиванием</string>
<string name="function_undo">Отменить (Undo)</string> <string name="function_undo">Отменить (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Пересчитать нижний отступ</string> <string name="pref_hack_precalculate_navbar_height">Пересчитать нижний отступ</string>
<string name="fn_key_order_column_2">Столбец 2</string>
<string name="fn_key_order_error_wrong_key_count">В каждой колонке должно быть ровно 4 клавиши.</string>
<string name="fn_key_order_error_unsupported_key_code">Разрешены только коды клавиш от 1 до 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Одна клавиша не может находиться в обеих колонках.</string>
<string name="fn_key_order_column_1">Столбец 1</string>
</resources> </resources>

View file

@ -63,6 +63,7 @@
<string name="pref_category_abc_mode">ABC Modu</string> <string name="pref_category_abc_mode">ABC Modu</string>
<string name="pref_category_custom_words">Eklenen sözcükler</string> <string name="pref_category_custom_words">Eklenen sözcükler</string>
<string name="pref_category_delete_words">Eklenen sözcükleri sil</string> <string name="pref_category_delete_words">Eklenen sözcükleri sil</string>
<string name="pref_category_fn_key_order">Fonksiyon tuşlarının sırası</string>
<string name="pref_category_hacks">Uyumluluk</string> <string name="pref_category_hacks">Uyumluluk</string>
<string name="dictionary_loading_indeterminate">Sözlüğü yükle</string> <string name="dictionary_loading_indeterminate">Sözlüğü yükle</string>
<string name="pref_category_appearance">Görünüş</string> <string name="pref_category_appearance">Görünüş</string>
@ -201,7 +202,7 @@
<string name="punctuation_order_save_error">Karakter sırası kaydedilemedi.</string> <string name="punctuation_order_save_error">Karakter sırası kaydedilemedi.</string>
<string name="punctuation_order_sentence">1 tuşunun karakter sırası</string> <string name="punctuation_order_sentence">1 tuşunun karakter sırası</string>
<string name="punctuation_order_special">0 tuşunun karakter sırası</string> <string name="punctuation_order_special">0 tuşunun karakter sırası</string>
<string name="punctuation_order_reset_defaults">Varsayılan sırayı geri yükle</string> <string name="restore_default_order">Varsayılan sırayı geri yükle</string>
<string name="language">Dil</string> <string name="language">Dil</string>
<string name="punctuation_order_save">Sıralamayı kaydet</string> <string name="punctuation_order_save">Sıralamayı kaydet</string>
<string name="punctuation_order_forbidden_char">Yasaklı karakter:%1$s</string> <string name="punctuation_order_forbidden_char">Yasaklı karakter:%1$s</string>
@ -214,6 +215,9 @@
<string name="donate_summary">Eğer %1$s\'ı beğendiyseniz bana bir bira ısmarlayabilirsiniz</string> <string name="donate_summary">Eğer %1$s\'ı beğendiyseniz bana bir bira ısmarlayabilirsiniz</string>
<string name="donate_hold_to_open">Tarayıcıda açmak için basılı tutun.</string> <string name="donate_hold_to_open">Tarayıcıda açmak için basılı tutun.</string>
<string name="key_key">Tuş</string> <string name="key_key">Tuş</string>
<string name="fn_key_order_error_duplicate_key">Yinelenen tuşlara izin verilmez.</string>
<string name="fn_key_order_legend">ıklama:</string>
<string name="fn_key_order_preview_tip">İpucu: 1. sütundaki tuşları yeniden sıraladıktan sonra sonucu hemen görmek için 2. sütuna dokunun (veya tam tersi).</string>
<string name="function_already_assigned">\"%1$s\" tuşu zaten \"%2$s\" işlevine atanmış. Onu \"%3$s\" işlevine atamak ister misiniz?</string> <string name="function_already_assigned">\"%1$s\" tuşu zaten \"%2$s\" işlevine atanmış. Onu \"%3$s\" işlevine atamak ister misiniz?</string>
<string name="function_assign_instructions">* \"%1$s\" işlevine atamak için bir tuşa basın veya basılı tutun.\n\n* İptal etmek için 0\'a basın.\n\n* İşlevi devre dışı bırakmak için 2\'ye basın.</string> <string name="function_assign_instructions">* \"%1$s\" işlevine atamak için bir tuşa basın veya basılı tutun.\n\n* İptal etmek için 0\'a basın.\n\n* İşlevi devre dışı bırakmak için 2\'ye basın.</string>
<string name="key_hold_key">(basılı tut)</string> <string name="key_hold_key">(basılı tut)</string>
@ -221,4 +225,9 @@
<string name="pref_drag_resize">Sürükleyerek yeniden boyutlandır</string> <string name="pref_drag_resize">Sürükleyerek yeniden boyutlandır</string>
<string name="function_undo">Geri al (Undo)</string> <string name="function_undo">Geri al (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Alt boşluğu yeniden hesapla</string> <string name="pref_hack_precalculate_navbar_height">Alt boşluğu yeniden hesapla</string>
<string name="fn_key_order_column_2">Sütun 2</string>
<string name="fn_key_order_error_wrong_key_count">Her sütunda tam olarak 4 tuş olmalıdır.</string>
<string name="fn_key_order_error_unsupported_key_code">Yalnızca 18 arası tuş kodlarına izin verilir.</string>
<string name="fn_key_order_error_key_on_both_sides">Bir tuş her iki sütuna da yerleştirilemez.</string>
<string name="fn_key_order_column_1">Sütun 1</string>
</resources> </resources>

View file

@ -21,6 +21,7 @@
<string name="pref_category_abc_mode">Режим АБВ</string> <string name="pref_category_abc_mode">Режим АБВ</string>
<string name="pref_category_custom_words">Додані слова</string> <string name="pref_category_custom_words">Додані слова</string>
<string name="pref_category_delete_words">Видалити додані слова</string> <string name="pref_category_delete_words">Видалити додані слова</string>
<string name="pref_category_fn_key_order">Порядок функціональних клавіш</string>
<string name="pref_category_hacks">Сумістність</string> <string name="pref_category_hacks">Сумістність</string>
<string name="pref_category_appearance">Зовнішній вигляд</string> <string name="pref_category_appearance">Зовнішній вигляд</string>
<string name="pref_category_predictive_mode">Предиктивний режим</string> <string name="pref_category_predictive_mode">Предиктивний режим</string>
@ -210,7 +211,7 @@
<string name="punctuation_order_save_error">Не вдалося зберегти порядок символів.</string> <string name="punctuation_order_save_error">Не вдалося зберегти порядок символів.</string>
<string name="punctuation_order_sentence">Порядок символів на клавіші 1</string> <string name="punctuation_order_sentence">Порядок символів на клавіші 1</string>
<string name="punctuation_order_special">Порядок символів на клавіші 0</string> <string name="punctuation_order_special">Порядок символів на клавіші 0</string>
<string name="punctuation_order_reset_defaults">Відновити початковий порядок</string> <string name="restore_default_order">Відновити початковий порядок</string>
<string name="language">Мова</string> <string name="language">Мова</string>
<string name="punctuation_order_save">Зберегти порядок</string> <string name="punctuation_order_save">Зберегти порядок</string>
<string name="punctuation_order_forbidden_char">Заборонений символ:%1$s</string> <string name="punctuation_order_forbidden_char">Заборонений символ:%1$s</string>
@ -221,10 +222,18 @@
<string name="pref_numpad_shape_v">V-подібна</string> <string name="pref_numpad_shape_v">V-подібна</string>
<string name="pref_arrow_keys_visible">Клавіші зі стрілками</string> <string name="pref_arrow_keys_visible">Клавіші зі стрілками</string>
<string name="donate_hold_to_open">Натисніть і утримуйте, щоб відкрити в браузері.</string> <string name="donate_hold_to_open">Натисніть і утримуйте, щоб відкрити в браузері.</string>
<string name="fn_key_order_error_duplicate_key">Повторювані клавіші не дозволені.</string>
<string name="fn_key_order_legend">Умовні позначення:</string>
<string name="fn_key_order_preview_tip">Підказка: Після зміни порядку клавіш у стовпці 1, натисніть на стовпець 2, щоб одразу побачити результат (або навпаки).</string>
<string name="function_already_assigned">\"%1$s\" tuşu zaten \"%2$s\" işlevine atanmış. Onu \"%3$s\" işlevine atamak ister misiniz?</string> <string name="function_already_assigned">\"%1$s\" tuşu zaten \"%2$s\" işlevine atanmış. Onu \"%3$s\" işlevine atamak ister misiniz?</string>
<string name="function_assign_instructions">* Натисніть або утримуйте клавішу, щоб призначити її функції «%1$s».\n\n* Натисніть 0, щоб скасувати.\n\n* Натисніть 2, щоб вимкнути функцію.</string> <string name="function_assign_instructions">* Натисніть або утримуйте клавішу, щоб призначити її функції «%1$s».\n\n* Натисніть 0, щоб скасувати.\n\n* Натисніть 2, щоб вимкнути функцію.</string>
<string name="pref_allow_composing_text">Показувати текст під час введення</string> <string name="pref_allow_composing_text">Показувати текст під час введення</string>
<string name="pref_drag_resize">Змінювати розмір перетягуванням</string> <string name="pref_drag_resize">Змінювати розмір перетягуванням</string>
<string name="function_undo">Скасувати (Undo)</string> <string name="function_undo">Скасувати (Undo)</string>
<string name="pref_hack_precalculate_navbar_height">Перерахувати нижній відступ</string> <string name="pref_hack_precalculate_navbar_height">Перерахувати нижній відступ</string>
<string name="fn_key_order_column_2">Стовпець 2</string>
<string name="fn_key_order_error_wrong_key_count">У кожному стовпці має бути рівно 4 клавіші.</string>
<string name="fn_key_order_error_unsupported_key_code">Дозволено лише коди клавіш від 1 до 8.</string>
<string name="fn_key_order_error_key_on_both_sides">Одна клавіша не може бути в обох стовпцях.</string>
<string name="fn_key_order_column_1">Стовпець 1</string>
</resources> </resources>

View file

@ -8,6 +8,7 @@
<string name="english_only" translatable="false">English only</string> <string name="english_only" translatable="false">English only</string>
<string name="loading">Loading…</string> <string name="loading">Loading…</string>
<string name="language">Language</string> <string name="language">Language</string>
<string name="restore_default_order">Restore Default Order</string>
<string name="search_results">Search Results</string> <string name="search_results">Search Results</string>
<string name="search_results_void">No results.</string> <string name="search_results_void">No results.</string>
@ -34,6 +35,7 @@
<string name="pref_category_debug_options" translatable="false">Debug Options</string> <string name="pref_category_debug_options" translatable="false">Debug Options</string>
<string name="pref_category_delete_words">Delete Added Words</string> <string name="pref_category_delete_words">Delete Added Words</string>
<string name="pref_category_function_keys">Select Hotkeys</string> <string name="pref_category_function_keys">Select Hotkeys</string>
<string name="pref_category_fn_key_order">Function Key Order</string>
<string name="pref_category_hacks">Compatibility</string> <string name="pref_category_hacks">Compatibility</string>
<string name="pref_category_keypad">Keypad</string> <string name="pref_category_keypad">Keypad</string>
<string name="pref_category_predictive_mode">Predictive Mode</string> <string name="pref_category_predictive_mode">Predictive Mode</string>
@ -160,6 +162,15 @@
<string name="donate_summary">If you like %1$s, you could buy me a beer.</string> <string name="donate_summary">If you like %1$s, you could buy me a beer.</string>
<string name="donate_hold_to_open">Press and hold to open in the browser.</string> <string name="donate_hold_to_open">Press and hold to open in the browser.</string>
<string name="fn_key_order_column_1">Column 1</string>
<string name="fn_key_order_column_2">Column 2</string>
<string name="fn_key_order_error_wrong_key_count">There must be exactly 4 keys per column.</string>
<string name="fn_key_order_error_unsupported_key_code">Only key codes 18 are allowed.</string>
<string name="fn_key_order_error_key_on_both_sides">One key cannot be placed in both columns.</string>
<string name="fn_key_order_error_duplicate_key">No duplicate keys allowed.</string>
<string name="fn_key_order_legend">Legend:</string>
<string name="fn_key_order_preview_tip">Hint: After reordering the keys in column 1, tap on column 2 to see the result immediately (or vice versa).</string>
<string name="function_already_assigned">Key \"%1$s\" is already assigned to function \"%2$s\". Do you want to assign it to \"%3$s\"?</string> <string name="function_already_assigned">Key \"%1$s\" is already assigned to function \"%2$s\". Do you want to assign it to \"%3$s\"?</string>
<string name="function_assign_instructions">* Press or hold a key to assign it to the \"%1$s\" function.\n\n* Press 0 to cancel.\n\n* Press 2 to disable the function.</string> <string name="function_assign_instructions">* Press or hold a key to assign it to the \"%1$s\" function.\n\n* Press 0 to cancel.\n\n* Press 2 to disable the function.</string>
<string name="function_reassign">Reassign</string> <string name="function_reassign">Reassign</string>
@ -195,7 +206,6 @@
<string name="punctuation_order_mandatory_chars_missing">Missing mandatory characters:%1$s</string> <string name="punctuation_order_mandatory_chars_missing">Missing mandatory characters:%1$s</string>
<string name="punctuation_order_forbidden_char">Forbidden character:%1$s</string> <string name="punctuation_order_forbidden_char">Forbidden character:%1$s</string>
<string name="punctuation_order_forbidden_chars">Forbidden characters:%1$s</string> <string name="punctuation_order_forbidden_chars">Forbidden characters:%1$s</string>
<string name="punctuation_order_reset_defaults">Restore Default Order</string>
<string name="punctuation_order_save">Save Order</string> <string name="punctuation_order_save">Save Order</string>
<string name="punctuation_order_save_error">Failed saving the character order.</string> <string name="punctuation_order_save_error">Failed saving the character order.</string>
<string name="punctuation_order_sentence">1-key Character Order</string> <string name="punctuation_order_sentence">1-key Character Order</string>

View file

@ -14,6 +14,11 @@
app:key="pref_layout_type" app:key="pref_layout_type"
app:title="@string/pref_layout" /> app:title="@string/pref_layout" />
<Preference
app:fragment="io.github.sspanak.tt9.preferences.FnKeyOrderScreen"
app:key="screen_fn_key_order"
app:title="@string/pref_category_fn_key_order" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
app:key="pref_drag_resize" app:key="pref_drag_resize"
app:title="@string/pref_drag_resize" app:title="@string/pref_drag_resize"

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:orderingFromXml="true">
<io.github.sspanak.tt9.preferences.screens.fnKeyOrder.LeftFnOrderPreference
app:key="pref_lfn_key_order"
app:title="@string/fn_key_order_column_1"
/>
<io.github.sspanak.tt9.preferences.screens.fnKeyOrder.RightFnOrderPreference
app:key="pref_rfn_key_order"
app:title="@string/fn_key_order_column_2"
/>
<Preference app:key="pref_reset_fn_key_order" app:title="@string/restore_default_order" />
<io.github.sspanak.tt9.preferences.screens.fnKeyOrder.FnKeyOrderLegendPreference />
</PreferenceScreen>

View file

@ -16,7 +16,7 @@
<Preference <Preference
android:key="punctuation_order_reset_defaults" android:key="punctuation_order_reset_defaults"
android:title="@string/punctuation_order_reset_defaults" /> android:title="@string/restore_default_order" />
<Preference <Preference
android:key="punctuation_order_save" android:key="punctuation_order_save"