New method for cycling symbols.
This commit is contained in:
+2
-2
@@ -11,8 +11,8 @@ android {
|
||||
minSdk 19
|
||||
//noinspection OldTargetApi
|
||||
targetSdk 34
|
||||
versionCode 21
|
||||
versionName "0.2.1"
|
||||
versionCode 3
|
||||
versionName "0.3"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
<activity
|
||||
android:name=".SettingsActivity"
|
||||
android:exported="true"
|
||||
android:exported="false"
|
||||
android:label="@string/preferences_label">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -22,32 +22,27 @@ package cfpi_fpsi.eu.titanboard;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.inputmethodservice.InputMethodService;
|
||||
import android.os.Vibrator;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.ExtractedText;
|
||||
import android.view.inputmethod.ExtractedTextRequest;
|
||||
import android.view.inputmethod.InputConnection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
// TODO: Implement auto-correct.
|
||||
// TODO: Implement auto-caps.
|
||||
// TODO: Implement device recognition and a keymap picking based on it.
|
||||
|
||||
/**
|
||||
* @noinspection deprecation
|
||||
*/
|
||||
public class InputMethod extends InputMethodService {
|
||||
public MetaKeyManager mMetaKeyManager;
|
||||
public KeymapManager mKeymapManager;
|
||||
public String mCurrentLanguage;
|
||||
private int mKeyCounter = 0;
|
||||
public String mCurrentKeymap;
|
||||
private SymbolCycler mSymbolCycler;
|
||||
private boolean mRegularKeyPressed = false;
|
||||
private InputView mInputView;
|
||||
private Settings mSettings;
|
||||
public InputView mInputView;
|
||||
public Settings mSettings;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
@@ -56,6 +51,7 @@ public class InputMethod extends InputMethodService {
|
||||
Vibrator mVibrator = (Vibrator) getBaseContext().getSystemService(VIBRATOR_SERVICE);
|
||||
mMetaKeyManager = new MetaKeyManager(mVibrator);
|
||||
mKeymapManager = new KeymapManager(getResources().getXml(R.xml.keymaps_titan));
|
||||
mSymbolCycler = new SymbolCycler(this);
|
||||
cycleKeymaps();
|
||||
}
|
||||
|
||||
@@ -100,30 +96,17 @@ public class InputMethod extends InputMethodService {
|
||||
mMetaKeyManager.adjustMetaStateAfterKeypress();
|
||||
return true;
|
||||
default:
|
||||
ArrayList<String> mCurrentValues = getKeyValues(keyCode);
|
||||
ArrayList<String> symbols = getKeyValues(keyCode);
|
||||
|
||||
if (mCurrentValues == null) {
|
||||
if (symbols == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mRegularKeyPressed = true;
|
||||
|
||||
if (event.getRepeatCount() == 0) {
|
||||
conn.commitText(mCurrentValues.get(0), 1);
|
||||
} else if (event.getRepeatCount() % 7 == 0) {
|
||||
mKeyCounter++;
|
||||
if (mKeyCounter >= mCurrentValues.size()) {
|
||||
mKeyCounter = 0;
|
||||
}
|
||||
|
||||
mInputView.updateSymbolsView(mCurrentValues, mKeyCounter);
|
||||
|
||||
ExtractedText text = conn.getExtractedText(new ExtractedTextRequest(), 0);
|
||||
|
||||
if (text != null) {
|
||||
conn.setComposingRegion(text.selectionStart - 1, text.selectionStart);
|
||||
conn.setComposingText(mCurrentValues.get(mKeyCounter), 1);
|
||||
}
|
||||
if (event.getRepeatCount() == 0 && !symbols.isEmpty()) {
|
||||
conn.commitText(symbols.get(0), 1);
|
||||
mSymbolCycler.startAutomaticCycling(symbols, conn);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -135,36 +118,37 @@ public class InputMethod extends InputMethodService {
|
||||
// there, and then select the next keymap.
|
||||
ArrayList<String> selectedLanguages = mSettings.getSelectedKeymaps();
|
||||
|
||||
if (selectedLanguages.isEmpty() || mCurrentLanguage == null) {
|
||||
mCurrentLanguage = "eu";
|
||||
if (selectedLanguages.isEmpty() || mCurrentKeymap == null) {
|
||||
mCurrentKeymap = getBaseContext().getResources().getString(R.string.keymap_default);
|
||||
return;
|
||||
}
|
||||
|
||||
int index = selectedLanguages.indexOf(mCurrentLanguage);
|
||||
int index = selectedLanguages.indexOf(mCurrentKeymap);
|
||||
if (index == selectedLanguages.size() - 1) {
|
||||
index = 0;
|
||||
} else {
|
||||
++index;
|
||||
}
|
||||
|
||||
mCurrentLanguage = selectedLanguages.get(index);
|
||||
mCurrentKeymap = selectedLanguages.get(index);
|
||||
}
|
||||
|
||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
||||
if (mRegularKeyPressed) {
|
||||
InputConnection conn = getCurrentInputConnection();
|
||||
|
||||
if (conn == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
conn.finishComposingText();
|
||||
mMetaKeyManager.adjustMetaStateAfterKeypress();
|
||||
mKeyCounter = 0;
|
||||
mRegularKeyPressed = false;
|
||||
mInputView.updateSymbolsView(null, 0);
|
||||
}
|
||||
|
||||
InputConnection conn = getCurrentInputConnection();
|
||||
|
||||
if (conn == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
conn.finishComposingText();
|
||||
mSymbolCycler.stopCycling();
|
||||
mRegularKeyPressed = false;
|
||||
mInputView.updateSymbolsView(null, 0);
|
||||
|
||||
mMetaKeyManager.updateMetaStateUp(keyCode, event);
|
||||
mInputView.updateStateText();
|
||||
|
||||
@@ -179,9 +163,11 @@ public class InputMethod extends InputMethodService {
|
||||
@Override
|
||||
public void onStartInput(EditorInfo info, boolean restarting) {
|
||||
super.onStartInput(info, restarting);
|
||||
if (!mSettings.getSelectedKeymaps().contains(mCurrentLanguage)) {
|
||||
|
||||
if (!mSettings.getSelectedKeymaps().contains(mCurrentKeymap)) {
|
||||
cycleKeymaps();
|
||||
}
|
||||
|
||||
mInputView.updateStateText();
|
||||
}
|
||||
|
||||
@@ -193,13 +179,13 @@ public class InputMethod extends InputMethodService {
|
||||
|
||||
private ArrayList<String> getKeyValues(int keyCode) {
|
||||
if (mMetaKeyManager.getAlt().isActive()) {
|
||||
return mKeymapManager.getKeyAlt(mCurrentLanguage, keyCode);
|
||||
return mKeymapManager.getKeyAlt(mCurrentKeymap, keyCode);
|
||||
}
|
||||
|
||||
if (mMetaKeyManager.getShift().isActive()) {
|
||||
return mKeymapManager.getKeyShift(mCurrentLanguage, keyCode);
|
||||
return mKeymapManager.getKeyShift(mCurrentKeymap, keyCode);
|
||||
}
|
||||
|
||||
return mKeymapManager.getKeyBase(mCurrentLanguage, keyCode);
|
||||
return mKeymapManager.getKeyBase(mCurrentKeymap, keyCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public class InputView extends RelativeLayout {
|
||||
public void updateStateText() {
|
||||
MetaKeyManager metaManager = mInputMethod.mMetaKeyManager;
|
||||
KeymapManager keymapManager = mInputMethod.mKeymapManager;
|
||||
String currentLanguage = mInputMethod.mCurrentLanguage;
|
||||
String currentLanguage = mInputMethod.mCurrentKeymap;
|
||||
|
||||
mStateButton.setPaintFlags(mStateButton.getPaintFlags() & ~(Paint.UNDERLINE_TEXT_FLAG));
|
||||
|
||||
|
||||
@@ -24,16 +24,21 @@ import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @noinspection deprecation
|
||||
*/
|
||||
public class Settings implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
private final SharedPreferences mPreferences;
|
||||
private final Map<String, Object> mPreferenceValues;
|
||||
private final Context mContext;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Settings(Context context) {
|
||||
mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
mContext = context;
|
||||
SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
|
||||
PreferenceManager.setDefaultValues(mContext, R.xml.preferences, false);
|
||||
mPreferences.registerOnSharedPreferenceChangeListener(this);
|
||||
mPreferenceValues = (Map<String, Object>) mPreferences.getAll();
|
||||
}
|
||||
@@ -46,24 +51,36 @@ public class Settings implements SharedPreferences.OnSharedPreferenceChangeListe
|
||||
}
|
||||
}
|
||||
|
||||
public Object getOrDefault(String key, Object defaultValue) {
|
||||
Object value = mPreferenceValues.get(key);
|
||||
return value == null ? defaultValue : value;
|
||||
}
|
||||
|
||||
public boolean isAutoCapsEnabled() {
|
||||
return (boolean) mPreferenceValues.get("auto_caps");
|
||||
return (boolean) getOrDefault("auto_caps",
|
||||
mContext.getResources().getBoolean(R.bool.auto_caps_default));
|
||||
}
|
||||
|
||||
public boolean isAutoPeriodsEnabled() {
|
||||
return (boolean) mPreferenceValues.get("auto_periods");
|
||||
return (boolean) getOrDefault("auto_periods",
|
||||
mContext.getResources().getBoolean(R.bool.auto_periods_default));
|
||||
}
|
||||
|
||||
public boolean isAutocorrectEnabled() {
|
||||
return (boolean) mPreferenceValues.get("auto_correct");
|
||||
return (boolean) getOrDefault("auto_correct",
|
||||
mContext.getResources().getBoolean(R.bool.autocorrect_default));
|
||||
}
|
||||
|
||||
public int getLongClickSpeed() {
|
||||
return Integer.parseInt((String) mPreferenceValues.get("long_click_speed"));
|
||||
public int getCycleSpeed() {
|
||||
return Integer.parseInt((String) getOrDefault("cycle_speed",
|
||||
mContext.getResources().getString(R.string.cycle_speed_default)));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public ArrayList<String> getSelectedKeymaps() {
|
||||
Set<String> selectedKeymaps = (Set<String>) mPreferenceValues.get("selected_keymaps");
|
||||
Set<String> selectedKeymaps = (Set<String>)
|
||||
getOrDefault("selected_keymaps",
|
||||
mContext.getResources().getStringArray(R.array.selected_keymap_defaults));
|
||||
return new ArrayList<>(selectedKeymaps);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* An input method for the Unihertz Titan/physical keyboard phones
|
||||
* Copyright (C) 2024 Emil Kosz
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package cfpi_fpsi.eu.titanboard;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.view.inputmethod.ExtractedText;
|
||||
import android.view.inputmethod.ExtractedTextRequest;
|
||||
import android.view.inputmethod.InputConnection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SymbolCycler extends Handler {
|
||||
private final InputMethod mInputMethod;
|
||||
private final SymbolCyclerRunnable mRunnable;
|
||||
private int mIndex;
|
||||
private ArrayList<String> mSymbols;
|
||||
private InputConnection mConn;
|
||||
|
||||
public SymbolCycler(Context context) {
|
||||
super(Looper.getMainLooper());
|
||||
mInputMethod = (InputMethod) context;
|
||||
mRunnable = new SymbolCyclerRunnable();
|
||||
}
|
||||
|
||||
public void startAutomaticCycling(ArrayList<String> symbols, InputConnection conn) {
|
||||
mSymbols = symbols;
|
||||
mConn = conn;
|
||||
mIndex = 0;
|
||||
stopCycling();
|
||||
postDelayed(mRunnable, mInputMethod.mSettings.getCycleSpeed());
|
||||
}
|
||||
|
||||
public void stopCycling() {
|
||||
removeCallbacks(mRunnable);
|
||||
}
|
||||
|
||||
public void cycle() {
|
||||
mIndex++;
|
||||
if (mIndex == mSymbols.size()) {
|
||||
mIndex = 0;
|
||||
}
|
||||
|
||||
mInputMethod.mInputView.updateSymbolsView(mSymbols, mIndex);
|
||||
ExtractedText text = mConn.getExtractedText(new ExtractedTextRequest(), 0);
|
||||
if (text != null) {
|
||||
mConn.setComposingRegion(text.selectionStart - 1, text.selectionStart);
|
||||
mConn.setComposingText(mSymbols.get(mIndex), 1);
|
||||
}
|
||||
}
|
||||
|
||||
private class SymbolCyclerRunnable implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
cycle();
|
||||
postDelayed(this, mInputMethod.mSettings.getCycleSpeed());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,20 +19,27 @@
|
||||
|
||||
<resources>
|
||||
<string-array name="available_keymap_labels">
|
||||
<item>European</item>
|
||||
<item>Phonetic Cyrillic</item>
|
||||
<item>English</item>
|
||||
<item>Russian (Phonetic)</item>
|
||||
<item>French</item>
|
||||
<item>Polish</item>
|
||||
<item>Greek</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="available_keymaps">
|
||||
<item>eu</item>
|
||||
<item>цp</item>
|
||||
<item>en</item>
|
||||
<item>ru</item>
|
||||
<item>fr</item>
|
||||
<item>pl</item>
|
||||
<item>el</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="available_keymap_defaults">
|
||||
<item>eu</item>
|
||||
<string-array name="selected_keymap_defaults">
|
||||
<item>en</item>
|
||||
<item>ru</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="long_click_speed_labels">
|
||||
<string-array name="cycle_speed_labels">
|
||||
<item>200 ms</item>
|
||||
<item>300 ms</item>
|
||||
<item>400 ms</item>
|
||||
@@ -41,7 +48,7 @@
|
||||
<item>1000 ms</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="long_click_speeds">
|
||||
<string-array name="cycle_speeds">
|
||||
<item>200</item>
|
||||
<item>300</item>
|
||||
<item>400</item>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<string name="ime_label">Titanboard</string>
|
||||
|
||||
<string name="preferences_label">Titanboard preferences</string>
|
||||
<string name="preferences_long_click_speed">Long click speed</string>
|
||||
<string name="preferences_cycle_speed">Cycling speed</string>
|
||||
<string name="preferences_auto_caps">Automatic capitalization</string>
|
||||
<string name="preferences_auto_periods">Automatic periods</string>
|
||||
<string name="preferences_auto_correct">Autocorrect</string>
|
||||
@@ -13,5 +13,6 @@
|
||||
<string name="inputview_symbols_latched_state">#?</string>
|
||||
<string name="inputview_symbols_locked_state">#!</string>
|
||||
|
||||
<string name="long_click_speed_default">400</string>
|
||||
<string name="keymap_default">en</string>
|
||||
<string name="cycle_speed_default">500</string>
|
||||
</resources>
|
||||
@@ -18,271 +18,160 @@
|
||||
-->
|
||||
|
||||
<device-keymap-list>
|
||||
<!-- European -->
|
||||
<!-- Checked with German, French, Italian, Spanish, Polish, Romanian, Dutch, Serbo-Croatian,
|
||||
Turkish, Hungarian, Swedish, Czech, Portuguese, Catalan, Serbian, Albanian. -->
|
||||
<!-- English -->
|
||||
<keymap
|
||||
name="eu"
|
||||
latched-name="Eu"
|
||||
locked-name="EU">
|
||||
<!-- Checked. -->
|
||||
name="en"
|
||||
latched-name="En"
|
||||
locked-name="EN">
|
||||
<key code="29"> <!-- A -->
|
||||
<base value="a" />
|
||||
<base value="ä" />
|
||||
<base value="à" />
|
||||
<base value="â" />
|
||||
<base value="æ" />
|
||||
<base value="á" />
|
||||
<base value="ą" />
|
||||
<base value="ă" />
|
||||
<base value="å" />
|
||||
<base value="ã" />
|
||||
<base value="à" /> <!-- Used in loanwords -->
|
||||
<base value="â" /> <!-- So is this -->
|
||||
<base value="å" /> <!-- Rare, but used -->
|
||||
<shift value="A" />
|
||||
<shift value="Ä" />
|
||||
<shift value="À" />
|
||||
<shift value="Â" />
|
||||
<shift value="Æ" />
|
||||
<shift value="Á" />
|
||||
<shift value="Ą" />
|
||||
<shift value="Ă" />
|
||||
<shift value="Å" />
|
||||
<shift value="Ã" />
|
||||
<alt value="@" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="30"> <!-- B -->
|
||||
<base value="b" />
|
||||
<shift value="B" />
|
||||
<alt value="7" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="31"> <!-- C -->
|
||||
<base value="c" />
|
||||
<base value="ç" />
|
||||
<base value="ć" />
|
||||
<base value="č" />
|
||||
<base value="ç" /> <!-- Used in loanwords, e.g. façade -->
|
||||
<shift value="C" />
|
||||
<shfit value="Ç" />
|
||||
<shift value="Ć" />
|
||||
<shift value="Č" />
|
||||
<base value="Ç" />
|
||||
<alt value="," />
|
||||
<alt value="&" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="32"> <!-- D -->
|
||||
<base value="d" />
|
||||
<base value="đ" />
|
||||
<base value="ď" />
|
||||
<shift value="D" />
|
||||
<shift value="Đ" />
|
||||
<shift value="Ď" />
|
||||
<alt value=""" />
|
||||
<alt value="„" />
|
||||
<alt value="“" />
|
||||
<alt value="”" />
|
||||
<alt value="«" />
|
||||
<alt value="»" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="33"> <!-- E -->
|
||||
<base value="e" />
|
||||
<base value="é" />
|
||||
<base value="è" />
|
||||
<base value="ê" />
|
||||
<base value="ë" />
|
||||
<base value="ę" />
|
||||
<base value="ě" />
|
||||
<base value="é" /> <!-- Used in loanwords -->
|
||||
<base value="è" /> <!-- So is this -->
|
||||
<base value="ê" /> <!-- And this -->
|
||||
<shift value="E" />
|
||||
<shift value="É" />
|
||||
<shift value="È" />
|
||||
<shift value="Ê" />
|
||||
<shift value="Ë" />
|
||||
<shift value="Ę" />
|
||||
<shift value="Ě" />
|
||||
<alt value="_" />
|
||||
<alt value="~" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="34"> <!-- F -->
|
||||
<base value="f" />
|
||||
<shift value="F" />
|
||||
<alt value="+" />
|
||||
<alt value="=" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="35"> <!-- G -->
|
||||
<base value="g" />
|
||||
<base value="ğ" />
|
||||
<shift value="G" />
|
||||
<shift value="Ğ" />
|
||||
<alt value="*" />
|
||||
<alt value="^" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="36"> <!-- H -->
|
||||
<base value="h" />
|
||||
<shift value="H" />
|
||||
<alt value="#" />
|
||||
<alt value="€" />
|
||||
<alt value="$" />
|
||||
<alt value="€" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="37"> <!-- I -->
|
||||
<base value="i" />
|
||||
<base value="î" />
|
||||
<base value="ï" />
|
||||
<base value="ì" />
|
||||
<base value="í" />
|
||||
<base value="ı" />
|
||||
<base value="ï" /> <!-- Used in loanwords -->
|
||||
<shift value="I" />
|
||||
<shift value="Î" />
|
||||
<shift value="Ï" />
|
||||
<shift value="Ì" />
|
||||
<shift value="Í" />
|
||||
<shift value="I" />
|
||||
<alt value="2" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="38"> <!-- J -->
|
||||
<base value="j" />
|
||||
<base value="j́" />
|
||||
<shift value="J" />
|
||||
<shift value="J́" />
|
||||
<alt value="4" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="39"> <!-- K -->
|
||||
<base value="k" />
|
||||
<shift value="K" />
|
||||
<alt value="5" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="40"> <!-- L -->
|
||||
<base value="l" />
|
||||
<base value="ł" />
|
||||
<shift value="L" />
|
||||
<shift value="Ł" />
|
||||
<alt value="6" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="41"> <!-- M -->
|
||||
<base value="m" />
|
||||
<shift value="M" />
|
||||
<alt value="9" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="42"> <!-- N -->
|
||||
<base value="n" />
|
||||
<base value="ñ" />
|
||||
<base value="ń" />
|
||||
<base value="ň" />
|
||||
<base value="ñ" /> <!-- Used in loanwords -->
|
||||
<shift value="N" />
|
||||
<shift value="Ñ" />
|
||||
<shift value="Ń" />
|
||||
<shift value="Ň" />
|
||||
<alt value="8" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="43"> <!-- O -->
|
||||
<base value="o" />
|
||||
<base value="ö" />
|
||||
<base value="ô" />
|
||||
<base value="œ" />
|
||||
<base value="ò" />
|
||||
<base value="ó" />
|
||||
<base value="ő" />
|
||||
<base value="õ" />
|
||||
<base value="ø" />
|
||||
<base value="ö" /> <!-- Used in loanwords -->
|
||||
<shift value="O" />
|
||||
<shift value="Ö" />
|
||||
<shift value="Ô" />
|
||||
<shift value="Œ" />
|
||||
<shift value="Ò" />
|
||||
<shift value="Ó" />
|
||||
<shift value="Ő" />
|
||||
<shift value="Õ" />
|
||||
<shift value="Ø" />
|
||||
<alt value="3" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="44"> <!-- P -->
|
||||
<base value="p" />
|
||||
<shift value="P" />
|
||||
<alt value="0" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="45"> <!-- Q -->
|
||||
<base value="q" />
|
||||
<shift value="Q" />
|
||||
<alt value=":" />
|
||||
<alt value=";" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="46"> <!-- R -->
|
||||
<base value="r" />
|
||||
<base value="ř" />
|
||||
<shift value="R" />
|
||||
<shift value="Ř" />
|
||||
<alt value="-" />
|
||||
<alt value="–" />
|
||||
<alt value="—" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="47"> <!-- S -->
|
||||
<base value="s" />
|
||||
<base value="ß" />
|
||||
<base value="ś" />
|
||||
<base value="ș" />
|
||||
<base value="š" />
|
||||
<base value="ş" />
|
||||
<shift value="S" />
|
||||
<shift value="ẞ" />
|
||||
<shift value="Ś" />
|
||||
<shift value="Ș" />
|
||||
<shift value="Š" />
|
||||
<shift value="Ş" />
|
||||
<alt value="'" />
|
||||
<alt value="‚" />
|
||||
<alt value="‘" />
|
||||
<alt value="’" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="48"> <!-- T -->
|
||||
<base value="t" />
|
||||
<base value="ț" />
|
||||
<base value="ť" />
|
||||
<shift value="T" />
|
||||
<shift value="Ț" />
|
||||
<shift value="Ť" />
|
||||
<alt value="(" />
|
||||
<alt value="<" />
|
||||
<alt value="[" />
|
||||
<alt value="{" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="49"> <!-- U -->
|
||||
<base value="u" />
|
||||
<base value="ü" />
|
||||
<base value="ù" />
|
||||
<base value="û" />
|
||||
<base value="ú" />
|
||||
<base value="ű" />
|
||||
<base value="ů" />
|
||||
<base value="û" /> <!-- Used in loanwords -->
|
||||
<shift value="U" />
|
||||
<shift value="Ü" />
|
||||
<shift value="Ù" />
|
||||
<shift value="Û" />
|
||||
<shift value="Ú" />
|
||||
<shift value="Ű" />
|
||||
<shift value="Ů" />
|
||||
<alt value="1" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="50"> <!-- V -->
|
||||
<base value="v" />
|
||||
<shift value="V" />
|
||||
<alt value="." />
|
||||
<alt value="…" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="51"> <!-- W -->
|
||||
<base value="w" />
|
||||
<shift value="W" />
|
||||
@@ -290,48 +179,405 @@
|
||||
<alt value="\\" />
|
||||
<alt value="|" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="52"> <!-- X -->
|
||||
<base value="x" />
|
||||
<shift value="X" />
|
||||
<alt value="?" />
|
||||
<alt value="¿" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="53"> <!-- Y -->
|
||||
<base value="y" />
|
||||
<base value="ÿ" />
|
||||
<base value="ý" />
|
||||
<shift value="Y" />
|
||||
<shift value="Ÿ" />
|
||||
<shift value="Ý" />
|
||||
<alt value=")" />
|
||||
<alt value=">" />
|
||||
<alt value="]" />
|
||||
<alt value="}" />
|
||||
</key>
|
||||
<!-- Checked -->
|
||||
<key code="54"> <!-- Z -->
|
||||
<base value="z" />
|
||||
<shift value="Z" />
|
||||
<alt value="!" />
|
||||
</key>
|
||||
</keymap>
|
||||
<!-- French -->
|
||||
<keymap
|
||||
name="fr"
|
||||
latched-name="Fr"
|
||||
locked-name="FR">
|
||||
<key code="29"> <!-- A -->
|
||||
<base value="a" />
|
||||
<base value="à" />
|
||||
<base value="â" />
|
||||
<base value="ä" />
|
||||
<base value="æ" />
|
||||
<shift value="A" />
|
||||
<shift value="À" />
|
||||
<shift value="Â" />
|
||||
<shift value="Ä" />
|
||||
<shift value="Æ" />
|
||||
<alt value="@" />
|
||||
</key>
|
||||
<key code="30"> <!-- B -->
|
||||
<base value="b" />
|
||||
<shift value="B" />
|
||||
<alt value="7" />
|
||||
</key>
|
||||
<key code="31"> <!-- C -->
|
||||
<base value="c" />
|
||||
<base value="ç" />
|
||||
<shift value="C" />
|
||||
<shift value="Ç" />
|
||||
<alt value="," />
|
||||
<alt value="&" />
|
||||
</key>
|
||||
<key code="32"> <!-- D -->
|
||||
<base value="d" />
|
||||
<shift value="D" />
|
||||
<alt value=""" />
|
||||
<alt value="«" />
|
||||
<alt value="»" />
|
||||
<alt value="“" />
|
||||
<alt value="”" />
|
||||
</key>
|
||||
<key code="33"> <!-- E -->
|
||||
<base value="e" />
|
||||
<base value="é" />
|
||||
<base value="è" />
|
||||
<base value="ê" />
|
||||
<base value="ë" />
|
||||
<shift value="E" />
|
||||
<shift value="É" />
|
||||
<shift value="È" />
|
||||
<shift value="Ê" />
|
||||
<shift value="Ë" />
|
||||
<alt value="_" />
|
||||
<alt value="~" />
|
||||
</key>
|
||||
<key code="34"> <!-- F -->
|
||||
<base value="f" />
|
||||
<shift value="F" />
|
||||
<alt value="+" />
|
||||
<alt value="=" />
|
||||
</key>
|
||||
<key code="35"> <!-- G -->
|
||||
<base value="g" />
|
||||
<shift value="G" />
|
||||
<alt value="*" />
|
||||
<alt value="^" />
|
||||
</key>
|
||||
<key code="36"> <!-- H -->
|
||||
<base value="h" />
|
||||
<shift value="H" />
|
||||
<alt value="#" />
|
||||
<alt value="€" />
|
||||
<alt value="$" />
|
||||
</key>
|
||||
<key code="37"> <!-- I -->
|
||||
<base value="i" />
|
||||
<base value="î" />
|
||||
<base value="ï" />
|
||||
<shift value="I" />
|
||||
<shift value="Î" />
|
||||
<shift value="Ï" />
|
||||
<alt value="2" />
|
||||
</key>
|
||||
<key code="38"> <!-- J -->
|
||||
<base value="j" />
|
||||
<shift value="J" />
|
||||
<alt value="4" />
|
||||
</key>
|
||||
<key code="39"> <!-- K -->
|
||||
<base value="k" />
|
||||
<shift value="K" />
|
||||
<alt value="5" />
|
||||
</key>
|
||||
<key code="40"> <!-- L -->
|
||||
<base value="l" />
|
||||
<shift value="L" />
|
||||
<alt value="6" />
|
||||
</key>
|
||||
<key code="41"> <!-- M -->
|
||||
<base value="m" />
|
||||
<shift value="M" />
|
||||
<alt value="9" />
|
||||
</key>
|
||||
<key code="42"> <!-- N -->
|
||||
<base value="n" />
|
||||
<shift value="N" />
|
||||
<alt value="8" />
|
||||
</key>
|
||||
<key code="43"> <!-- O -->
|
||||
<base value="o" />
|
||||
<base value="ô" />
|
||||
<base value="œ" />
|
||||
<shift value="O" />
|
||||
<shift value="Ô" />
|
||||
<shift value="Œ" />
|
||||
<alt value="3" />
|
||||
</key>
|
||||
<key code="44"> <!-- P -->
|
||||
<base value="p" />
|
||||
<shift value="P" />
|
||||
<alt value="0" />
|
||||
</key>
|
||||
<key code="45"> <!-- Q -->
|
||||
<base value="q" />
|
||||
<shift value="Q" />
|
||||
<alt value=":" />
|
||||
<alt value=";" />
|
||||
</key>
|
||||
<key code="46"> <!-- R -->
|
||||
<base value="r" />
|
||||
<shift value="R" />
|
||||
<alt value="-" />
|
||||
<alt value="–" />
|
||||
<alt value="—" />
|
||||
</key>
|
||||
<key code="47"> <!-- S -->
|
||||
<base value="s" />
|
||||
<shift value="S" />
|
||||
<alt value="'" />
|
||||
<alt value="‹" />
|
||||
<alt value="›" />
|
||||
<alt value="‘" />
|
||||
<alt value="’" />
|
||||
</key>
|
||||
<key code="48"> <!-- T -->
|
||||
<base value="t" />
|
||||
<shift value="T" />
|
||||
<alt value="(" />
|
||||
<alt value="<" />
|
||||
<alt value="[" />
|
||||
<alt value="{" />
|
||||
</key>
|
||||
<key code="49"> <!-- U -->
|
||||
<base value="u" />
|
||||
<base value="ù" />
|
||||
<base value="û" />
|
||||
<shift value="U" />
|
||||
<shift value="Ù" />
|
||||
<shift value="Û" />
|
||||
<alt value="1" />
|
||||
</key>
|
||||
<key code="50"> <!-- V -->
|
||||
<base value="v" />
|
||||
<shift value="V" />
|
||||
<alt value="." />
|
||||
<alt value="…" />
|
||||
</key>
|
||||
<key code="51"> <!-- W -->
|
||||
<base value="w" />
|
||||
<shift value="W" />
|
||||
<alt value="/" />
|
||||
<alt value="\\" />
|
||||
<alt value="|" />
|
||||
</key>
|
||||
<key code="52"> <!-- X -->
|
||||
<base value="x" />
|
||||
<shift value="X" />
|
||||
<alt value="?" />
|
||||
</key>
|
||||
<key code="53"> <!-- Y -->
|
||||
<base value="y" />
|
||||
<base value="ÿ" />
|
||||
<shift value="Y" />
|
||||
<shift value="Ÿ" />
|
||||
<alt value=")" />
|
||||
<alt value=">" />
|
||||
<alt value="]" />
|
||||
<alt value="}" />
|
||||
</key>
|
||||
<key code="54"> <!-- Z -->
|
||||
<base value="z" />
|
||||
<shift value="Z" />
|
||||
<alt value="!" />
|
||||
</key>
|
||||
</keymap>
|
||||
<!-- Polish -->
|
||||
<keymap
|
||||
name="pl"
|
||||
latched-name="Pl"
|
||||
locked-name="PL">
|
||||
<key code="29"> <!-- A -->
|
||||
<base value="a" />
|
||||
<base value="ą" />
|
||||
<shift value="A" />
|
||||
<shift value="Ą" />
|
||||
<alt value="@" />
|
||||
</key>
|
||||
<key code="30"> <!-- B -->
|
||||
<base value="b" />
|
||||
<shift value="B" />
|
||||
<alt value="7" />
|
||||
</key>
|
||||
<key code="31"> <!-- C -->
|
||||
<base value="c" />
|
||||
<base value="ć" />
|
||||
<shift value="C" />
|
||||
<shift value="Ć" />
|
||||
<alt value="," />
|
||||
<alt value="&" />
|
||||
</key>
|
||||
<key code="32"> <!-- D -->
|
||||
<base value="d" />
|
||||
<shift value="D" />
|
||||
<alt value=""" />
|
||||
<alt value="„" />
|
||||
<alt value="”" />
|
||||
<alt value="«" />
|
||||
<alt value="»" />
|
||||
</key>
|
||||
<key code="33"> <!-- E -->
|
||||
<base value="e" />
|
||||
<base value="ę" />
|
||||
<shift value="E" />
|
||||
<shift value="Ę" />
|
||||
<alt value="_" />
|
||||
<alt value="~" />
|
||||
</key>
|
||||
<key code="34"> <!-- F -->
|
||||
<base value="f" />
|
||||
<shift value="F" />
|
||||
<alt value="+" />
|
||||
<alt value="=" />
|
||||
</key>
|
||||
<key code="35"> <!-- G -->
|
||||
<base value="g" />
|
||||
<shift value="G" />
|
||||
<alt value="*" />
|
||||
<alt value="^" />
|
||||
</key>
|
||||
<key code="36"> <!-- H -->
|
||||
<base value="h" />
|
||||
<shift value="H" />
|
||||
<alt value="#" />
|
||||
<alt value="€" />
|
||||
<alt value="$" />
|
||||
</key>
|
||||
<key code="37"> <!-- I -->
|
||||
<base value="i" />
|
||||
<shift value="I" />
|
||||
<alt value="2" />
|
||||
</key>
|
||||
<key code="38"> <!-- J -->
|
||||
<base value="j" />
|
||||
<shift value="J" />
|
||||
<alt value="4" />
|
||||
</key>
|
||||
<key code="39"> <!-- K -->
|
||||
<base value="k" />
|
||||
<shift value="K" />
|
||||
<alt value="5" />
|
||||
</key>
|
||||
<key code="40"> <!-- L -->
|
||||
<base value="l" />
|
||||
<base value="ł" />
|
||||
<shift value="L" />
|
||||
<shift value="Ł" />
|
||||
<alt value="6" />
|
||||
</key>
|
||||
<key code="41"> <!-- M -->
|
||||
<base value="m" />
|
||||
<shift value="M" />
|
||||
<alt value="9" />
|
||||
</key>
|
||||
<key code="42"> <!-- N -->
|
||||
<base value="n" />
|
||||
<base value="ń" />
|
||||
<shift value="N" />
|
||||
<shift value="Ń" />
|
||||
<alt value="8" />
|
||||
</key>
|
||||
<key code="43"> <!-- O -->
|
||||
<base value="o" />
|
||||
<base value="ó" />
|
||||
<shift value="O" />
|
||||
<shift value="Ó" />
|
||||
<alt value="3" />
|
||||
</key>
|
||||
<key code="44"> <!-- P -->
|
||||
<base value="p" />
|
||||
<shift value="P" />
|
||||
<alt value="0" />
|
||||
</key>
|
||||
<key code="45"> <!-- Q -->
|
||||
<base value="q" />
|
||||
<shift value="Q" />
|
||||
<alt value=":" />
|
||||
<alt value=";" />
|
||||
</key>
|
||||
<key code="46"> <!-- R -->
|
||||
<base value="r" />
|
||||
<shift value="R" />
|
||||
<alt value="-" />
|
||||
<alt value="–" />
|
||||
<alt value="—" />
|
||||
</key>
|
||||
<key code="47"> <!-- S -->
|
||||
<base value="s" />
|
||||
<base value="ś" />
|
||||
<shift value="S" />
|
||||
<shift value="Ś" />
|
||||
<alt value="'" />
|
||||
<alt value="‚" />
|
||||
<alt value="’" />
|
||||
</key>
|
||||
<key code="48"> <!-- T -->
|
||||
<base value="t" />
|
||||
<shift value="T" />
|
||||
<alt value="(" />
|
||||
<alt value="<" />
|
||||
<alt value="[" />
|
||||
<alt value="{" />
|
||||
</key>
|
||||
<key code="49"> <!-- U -->
|
||||
<base value="u" />
|
||||
<shift value="U" />
|
||||
<alt value="1" />
|
||||
</key>
|
||||
<key code="50"> <!-- V -->
|
||||
<base value="v" />
|
||||
<shift value="V" />
|
||||
<alt value="." />
|
||||
<alt value="…" />
|
||||
</key>
|
||||
<key code="51"> <!-- W -->
|
||||
<base value="w" />
|
||||
<shift value="W" />
|
||||
<alt value="/" />
|
||||
<alt value="\\" />
|
||||
<alt value="|" />
|
||||
</key>
|
||||
<key code="52"> <!-- X -->
|
||||
<base value="x" />
|
||||
<base value="ź" />
|
||||
<shift value="X" />
|
||||
<shift value="Ź" />
|
||||
<alt value="?" />
|
||||
</key>
|
||||
<key code="53"> <!-- Y -->
|
||||
<base value="y" />
|
||||
<shift value="Y" />
|
||||
<alt value=")" />
|
||||
<alt value=">" />
|
||||
<alt value="]" />
|
||||
<alt value="}" />
|
||||
</key>
|
||||
<key code="54"> <!-- Z -->
|
||||
<base value="z" />
|
||||
<base value="ż" />
|
||||
<base value="ź" />
|
||||
<base value="ž" />
|
||||
<shift value="Z" />
|
||||
<shift value="Ż" />
|
||||
<shift value="Ź" />
|
||||
<shift value="Ž" />
|
||||
<alt value="!" />
|
||||
<alt value="¡" />
|
||||
</key>
|
||||
</keymap>
|
||||
<!-- Cyrillic phonetic -->
|
||||
<!-- Russian (Phonetic) -->
|
||||
<!-- https://en.wikipedia.org/wiki/Phonetic_keyboard_layout#Russian_Phonetic_Keyboard_2.0 -->
|
||||
<keymap
|
||||
name="цp"
|
||||
latched-name="Цp"
|
||||
locked-name="ЦP">
|
||||
name="ru"
|
||||
latched-name="Ru"
|
||||
locked-name="RU">
|
||||
<key code="29"> <!-- A -->
|
||||
<base value="а" />
|
||||
<base value="a" />
|
||||
<shift value="A" />
|
||||
<alt value="@" />
|
||||
</key>
|
||||
@@ -352,10 +598,10 @@
|
||||
<base value="д" />
|
||||
<shift value="Д" />
|
||||
<alt value=""" />
|
||||
<alt value="„" />
|
||||
<alt value="”" />
|
||||
<alt value="«" />
|
||||
<alt value="»" />
|
||||
<alt value="„" />
|
||||
<alt value="“" />
|
||||
</key>
|
||||
<key code="33"> <!-- E -->
|
||||
<base value="e" />
|
||||
@@ -383,6 +629,7 @@
|
||||
<shift value="Ш" />
|
||||
<shift value="Щ" />
|
||||
<alt value="#" />
|
||||
<alt value="₽" />
|
||||
<alt value="€" />
|
||||
<alt value="$" />
|
||||
</key>
|
||||
@@ -421,8 +668,8 @@
|
||||
<alt value="8" />
|
||||
</key>
|
||||
<key code="43"> <!-- O -->
|
||||
<base value="о" />
|
||||
<shift value="О" />
|
||||
<base value="o" />
|
||||
<shift value="O" />
|
||||
<alt value="3" />
|
||||
</key>
|
||||
<key code="44"> <!-- P -->
|
||||
@@ -444,8 +691,8 @@
|
||||
<alt value="—" />
|
||||
</key>
|
||||
<key code="47"> <!-- S -->
|
||||
<base value="с" />
|
||||
<shift value="С" />
|
||||
<base value="c" />
|
||||
<shift value="C" />
|
||||
<alt value="'" />
|
||||
<alt value="‚" />
|
||||
<alt value="’" />
|
||||
@@ -484,7 +731,6 @@
|
||||
<shift value="Х" />
|
||||
<shift value="Ъ" />
|
||||
<alt value="?" />
|
||||
<alt value="¿" />
|
||||
</key>
|
||||
<key code="53"> <!-- Y -->
|
||||
<base value="я" />
|
||||
@@ -498,7 +744,168 @@
|
||||
<base value="з" />
|
||||
<shift value="З" />
|
||||
<alt value="!" />
|
||||
<alt value="¡" />
|
||||
</key>
|
||||
</keymap>
|
||||
<!-- Greek -->
|
||||
<!-- https://en.wikipedia.org/wiki/List_of_QWERTY_keyboard_language_variants#/media/File:Greek_keyboard_mono_3b.png -->
|
||||
<!-- TODO: add diacritics -->
|
||||
<keymap
|
||||
name="el"
|
||||
latched-name="El"
|
||||
locked-name="EL">
|
||||
<key code="29"> <!-- A -->
|
||||
<base value="α" />
|
||||
<shift value="Α" />
|
||||
<alt value="@" />
|
||||
</key>
|
||||
<key code="30"> <!-- B -->
|
||||
<base value="β" />
|
||||
<shift value="Β" />
|
||||
<alt value="7" />
|
||||
</key>
|
||||
<key code="31"> <!-- C -->
|
||||
<base value="ψ" />
|
||||
<shift value="Ψ" />
|
||||
<alt value="," />
|
||||
<alt value="&" />
|
||||
</key>
|
||||
<key code="32"> <!-- D -->
|
||||
<base value="δ" />
|
||||
<shift value="Δ" />
|
||||
<alt value=""" />
|
||||
<alt value="«" />
|
||||
<alt value="»" />
|
||||
<alt value="„" />
|
||||
<alt value="“" />
|
||||
</key>
|
||||
<key code="33"> <!-- E -->
|
||||
<base value="ε" />
|
||||
<shift value="E" />
|
||||
<alt value="_" />
|
||||
<alt value="~" />
|
||||
</key>
|
||||
<key code="34"> <!-- F -->
|
||||
<base value="φ" />
|
||||
<shift value="Φ" />
|
||||
<alt value="+" />
|
||||
<alt value="=" />
|
||||
</key>
|
||||
<key code="35"> <!-- G -->
|
||||
<base value="γ" />
|
||||
<shift value="Γ" />
|
||||
<alt value="*" />
|
||||
<alt value="^" />
|
||||
</key>
|
||||
<key code="36"> <!-- H -->
|
||||
<base value="η" />
|
||||
<shift value="H" />
|
||||
<alt value="#" />
|
||||
<alt value="₽" />
|
||||
<alt value="€" />
|
||||
<alt value="$" />
|
||||
</key>
|
||||
<key code="37"> <!-- I -->
|
||||
<base value="ι" />
|
||||
<shift value="I" />
|
||||
<alt value="2" />
|
||||
</key>
|
||||
<key code="38"> <!-- J -->
|
||||
<base value="ξ" />
|
||||
<shift value="Ξ" />
|
||||
<alt value="4" />
|
||||
</key>
|
||||
<key code="39"> <!-- K -->
|
||||
<base value="κ" />
|
||||
<shift value="Κ" />
|
||||
<alt value="5" />
|
||||
</key>
|
||||
<key code="40"> <!-- L -->
|
||||
<base value="λ" />
|
||||
<shift value="Λ" />
|
||||
<alt value="6" />
|
||||
</key>
|
||||
<key code="41"> <!-- M -->
|
||||
<base value="μ" />
|
||||
<shift value="М" />
|
||||
<alt value="9" />
|
||||
</key>
|
||||
<key code="42"> <!-- N -->
|
||||
<base value="ν" />
|
||||
<shift value="Ν" />
|
||||
<alt value="8" />
|
||||
</key>
|
||||
<key code="43"> <!-- O -->
|
||||
<base value="o" />
|
||||
<shift value="O" />
|
||||
<alt value="3" />
|
||||
</key>
|
||||
<key code="44"> <!-- P -->
|
||||
<base value="π" />
|
||||
<shift value="П" />
|
||||
<alt value="0" />
|
||||
</key>
|
||||
<key code="45"> <!-- Q -->
|
||||
<base value=";" />
|
||||
<shift value=":" />
|
||||
<alt value=":" />
|
||||
<alt value=";" />
|
||||
</key>
|
||||
<key code="46"> <!-- R -->
|
||||
<base value="ρ" />
|
||||
<shift value="Ρ" />
|
||||
<alt value="-" />
|
||||
<alt value="–" />
|
||||
<alt value="—" />
|
||||
</key>
|
||||
<key code="47"> <!-- S -->
|
||||
<base value="σ" />
|
||||
<shift value="Σ" />
|
||||
<alt value="'" />
|
||||
<alt value="‚" />
|
||||
<alt value="’" />
|
||||
</key>
|
||||
<key code="48"> <!-- T -->
|
||||
<base value="τ" />
|
||||
<shift value="Т" />
|
||||
<alt value="(" />
|
||||
<alt value="<" />
|
||||
<alt value="[" />
|
||||
<alt value="{" />
|
||||
</key>
|
||||
<key code="49"> <!-- U -->
|
||||
<base value="θ" />
|
||||
<shift value="Θ" />
|
||||
<alt value="1" />
|
||||
</key>
|
||||
<key code="50"> <!-- V -->
|
||||
<base value="ω" />
|
||||
<shift value="Ω" />
|
||||
<alt value="." />
|
||||
<alt value="…" />
|
||||
</key>
|
||||
<key code="51"> <!-- W -->
|
||||
<base value="ς" />
|
||||
<alt value="/" />
|
||||
<alt value="\\" />
|
||||
<alt value="|" />
|
||||
</key>
|
||||
<key code="52"> <!-- X -->
|
||||
<base value="χ" />
|
||||
<shift value="X" />
|
||||
<alt value="?" />
|
||||
</key>
|
||||
<key code="53"> <!-- Y -->
|
||||
<base value="υ" />
|
||||
<shift value="Y" />
|
||||
<alt value=")" />
|
||||
<alt value=">" />
|
||||
<alt value="]" />
|
||||
<alt value="}" />
|
||||
</key>
|
||||
<key code="54"> <!-- Z -->
|
||||
<base value="ζ" />
|
||||
<shift value="Z" />
|
||||
<alt value="!" />
|
||||
</key>
|
||||
</keymap>
|
||||
</device-keymap-list>
|
||||
@@ -32,13 +32,13 @@
|
||||
android:key="autocorrect"
|
||||
android:title="@string/preferences_auto_correct" />
|
||||
<ListPreference
|
||||
android:defaultValue="@string/long_click_speed_default"
|
||||
android:entries="@array/long_click_speed_labels"
|
||||
android:entryValues="@array/long_click_speeds"
|
||||
android:key="long_click_speed"
|
||||
android:title="@string/preferences_long_click_speed" />
|
||||
android:defaultValue="@string/cycle_speed_default"
|
||||
android:entries="@array/cycle_speed_labels"
|
||||
android:entryValues="@array/cycle_speeds"
|
||||
android:key="cycle_speed"
|
||||
android:title="@string/preferences_cycle_speed" />
|
||||
<MultiSelectListPreference
|
||||
android:defaultValue="@array/available_keymap_defaults"
|
||||
android:defaultValue="@array/selected_keymap_defaults"
|
||||
android:entries="@array/available_keymap_labels"
|
||||
android:entryValues="@array/available_keymaps"
|
||||
android:key="selected_keymaps"
|
||||
|
||||
Reference in New Issue
Block a user