Compare commits
73 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
cd5ca56226 | ||
|
491e72f247 | ||
|
c3a5dc63f2 | ||
|
6cb6f2541b | ||
|
5123ce5417 | ||
|
2dc0ce066d | ||
|
ab05d8314b | ||
|
405e63d5c2 | ||
|
5822f98bbb | ||
|
613aa283bd | ||
|
ddceb69d4e | ||
|
4584e8289b | ||
|
febc23776f | ||
|
500f4e41d3 | ||
|
8611dbcfa0 | ||
|
03f2b8df70 | ||
|
0269cd65ea | ||
|
20ab3915e8 | ||
|
39a751a497 | ||
|
1ad8f79b5c | ||
|
12de2733a8 | ||
|
78f521250f | ||
|
29106bc69a | ||
|
f522a678f9 | ||
|
c17dfdfe13 | ||
|
21316b77d7 | ||
|
eeae964ae6 | ||
|
8d7b3efeb1 | ||
|
ddc4ff1378 | ||
|
1c59347cca | ||
|
eb56c80ffb | ||
|
4d10556d49 | ||
|
1eea9e25d2 | ||
|
45905f5f3b | ||
|
c26343cd42 | ||
|
cd95c589de | ||
|
0924df8d13 | ||
|
0fea071352 | ||
|
c46e5ec450 | ||
|
6054c2eec8 | ||
|
dcbb4c484c | ||
|
76f01122c2 | ||
|
94bd9c6bc8 | ||
|
7ce0c6e37a | ||
|
9ea06594d1 | ||
|
ae791ab292 | ||
|
8b95053566 | ||
|
e0dd145bb4 | ||
|
4abea0e878 | ||
|
be97364b34 | ||
|
3c3955e583 | ||
|
22458cd445 | ||
|
3598e19894 | ||
|
9bd8b08544 | ||
|
dad5f57a03 | ||
|
818aa4c7d5 | ||
|
b4a1ac48bb | ||
|
0856fb4e31 | ||
|
0a114bd2bc | ||
|
427ef6a97d | ||
|
fce8ff7ce2 | ||
|
d1f0d5a7bf | ||
|
f60927edac | ||
|
8b2c07c9cb | ||
|
458e17bf31 | ||
|
324aa26ba4 | ||
|
6747669c2d | ||
|
1097b297d3 | ||
|
4669192a01 | ||
|
a2957a43d6 | ||
|
37d4a523bb | ||
|
ef4477d50c | ||
|
7f79bc358d |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="juloo.keyboard2" android:versionCode="35" android:versionName="1.23.0" android:hardwareAccelerated="false">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="juloo.keyboard2" android:versionCode="36" android:versionName="1.24.0" android:hardwareAccelerated="false">
|
||||||
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="33"/>
|
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="33"/>
|
||||||
<application android:label="@string/app_name" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="false">
|
<application android:label="@string/app_name" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="false">
|
||||||
<service android:name="juloo.keyboard2.Keyboard2" android:label="@string/app_name" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true" android:directBootAware="true">
|
<service android:name="juloo.keyboard2.Keyboard2" android:label="@string/app_name" android:permission="android.permission.BIND_INPUT_METHOD" android:exported="true" android:directBootAware="true">
|
||||||
|
@@ -149,6 +149,7 @@ To check that `strings.xml` is formatted correctly, run
|
|||||||
|
|
||||||
The store description is found in `metadata/android/<locale>/`,
|
The store description is found in `metadata/android/<locale>/`,
|
||||||
`short_description.txt` and `full_description.txt`.
|
`short_description.txt` and `full_description.txt`.
|
||||||
|
The short description must not exceed 80 characters.
|
||||||
Translating changelogs is not useful.
|
Translating changelogs is not useful.
|
||||||
|
|
||||||
The app name might be partially translated, the "unexpected" word should remain
|
The app name might be partially translated, the "unexpected" word should remain
|
||||||
|
@@ -20,6 +20,9 @@ Now perfect for everyday use.
|
|||||||
|
|
||||||
This application contains no ads, doesn't make any network requests and is Open Source.
|
This application contains no ads, doesn't make any network requests and is Open Source.
|
||||||
|
|
||||||
|
## Similar apps
|
||||||
|
* [Calculator++](https://github.com/Bubu/android-calculatorpp) - Calculator with a similar UX, swipe to corners for advanced math symbols and operators. Works up to Android 13 but maybe unmaintained.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
For instructions on building the application, see
|
For instructions on building the application, see
|
||||||
|
@@ -1,24 +1,27 @@
|
|||||||
# res/xml/arab_alt.xml
|
# res/xml/arab_alt.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: !, ", ', +, -, /, :, ;, <, =, >, ?, [, \, ], _, |, ~
|
Layout includes some ASCII punctuation but not all, missing: !, ", ', +, -, /, :, ;, <, =, >, ?, [, \, ], _, |, ~
|
||||||
1 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
2 warnings
|
||||||
# res/xml/arab_pc_ckb.xml
|
# res/xml/arab_pc_ckb.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: ", %, ', +, ,, ., :, ;, <, =, >, ?, `, |, ~
|
Layout includes some ASCII punctuation but not all, missing: ", %, ', +, ,, ., :, ;, <, =, >, ?, `, |, ~
|
||||||
1 warnings
|
1 warnings
|
||||||
# res/xml/arab_pc_ir.xml
|
# res/xml/arab_pc_ir.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: ", $, %, ', *, ,, /, ;, <, =, >, ?, [, \, ], ^, _, `, {, |, }, ~
|
Duplicate keys: (, )
|
||||||
1 warnings
|
Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, }
|
||||||
|
2 warnings
|
||||||
# res/xml/arab_pc.xml
|
# res/xml/arab_pc.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, |
|
Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, |
|
||||||
1 warnings
|
1 warnings
|
||||||
# res/xml/beng_national.xml
|
# res/xml/beng_national.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: $
|
Layout includes some ASCII punctuation but not all, missing: $
|
||||||
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
Layout doesn't specify a script.
|
Layout doesn't specify a script.
|
||||||
2 warnings
|
3 warnings
|
||||||
# res/xml/beng_provat.xml
|
# res/xml/beng_provat.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
|
Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
|
||||||
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
Layout doesn't specify a script.
|
Layout doesn't specify a script.
|
||||||
2 warnings
|
3 warnings
|
||||||
Not a layout file: res/xml/bottom_row.xml
|
|
||||||
# res/xml/cyrl_jcuken_ru.xml
|
# res/xml/cyrl_jcuken_ru.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/cyrl_jcuken_uk.xml
|
# res/xml/cyrl_jcuken_uk.xml
|
||||||
@@ -28,17 +31,16 @@ Layout includes some ASCII punctuation but not all, missing: ~
|
|||||||
1 warnings
|
1 warnings
|
||||||
# res/xml/deva_alt.xml
|
# res/xml/deva_alt.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, @, [, \, ], ^, _, `, {, |, }, ~
|
Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, @, [, \, ], ^, _, `, {, |, }, ~
|
||||||
1 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
2 warnings
|
||||||
# res/xml/deva_inscript.xml
|
# res/xml/deva_inscript.xml
|
||||||
|
Duplicate keys: , ।
|
||||||
Layout includes some ASCII punctuation but not all, missing: ", $, ', ^, _, `, |
|
Layout includes some ASCII punctuation but not all, missing: ", $, ', ^, _, `, |
|
||||||
1 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
# res/xml/greekmath.xml
|
|
||||||
Layout includes some ASCII punctuation but not all, missing: !, ", #, $, %, &, ', (, ), *, +, ,, -, /, :, ;, <, >, ?, @, [, \, ], _, `, {, |, }, ~
|
|
||||||
Layout redefines the bottom row but some important keys are missing, missing: change_method, config, ctrl, switch_emoji, switch_second
|
|
||||||
Layout doesn't specify a script.
|
|
||||||
3 warnings
|
3 warnings
|
||||||
# res/xml/grek_qwerty.xml
|
# res/xml/grek_qwerty.xml
|
||||||
0 warnings
|
Duplicate keys: ;
|
||||||
|
1 warnings
|
||||||
# res/xml/hang_dubeolsik_kr.xml
|
# res/xml/hang_dubeolsik_kr.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/hebr_1_il.xml
|
# res/xml/hebr_1_il.xml
|
||||||
@@ -49,15 +51,21 @@ Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {
|
|||||||
1 warnings
|
1 warnings
|
||||||
# res/xml/latn_azerty_fr.xml
|
# res/xml/latn_azerty_fr.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
|
# res/xml/latn_bepo_fr.xml
|
||||||
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
1 warnings
|
||||||
# res/xml/latn_bone.xml
|
# res/xml/latn_bone.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: $
|
Layout includes some ASCII punctuation but not all, missing: $
|
||||||
1 warnings
|
Layout redefines the bottom row but some important keys are missing, missing: switch_backward
|
||||||
|
2 warnings
|
||||||
# res/xml/latn_colemak.xml
|
# res/xml/latn_colemak.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_dvorak.xml
|
# res/xml/latn_dvorak.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_neo2.xml
|
# res/xml/latn_neo2.xml
|
||||||
0 warnings
|
Duplicate keys: -
|
||||||
|
Layout redefines the bottom row but some important keys are missing, missing: switch_forward
|
||||||
|
2 warnings
|
||||||
# res/xml/latn_qwerty_br.xml
|
# res/xml/latn_qwerty_br.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_qwerty_es.xml
|
# res/xml/latn_qwerty_es.xml
|
||||||
@@ -73,9 +81,11 @@ Layout includes some ASCII punctuation but not all, missing: $
|
|||||||
# res/xml/latn_qwerty_ro.xml
|
# res/xml/latn_qwerty_ro.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_qwerty_se.xml
|
# res/xml/latn_qwerty_se.xml
|
||||||
0 warnings
|
Duplicate keys: !, ', ,, -, ., ?
|
||||||
|
1 warnings
|
||||||
# res/xml/latn_qwerty_tr.xml
|
# res/xml/latn_qwerty_tr.xml
|
||||||
0 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
1 warnings
|
||||||
# res/xml/latn_qwerty_us.xml
|
# res/xml/latn_qwerty_us.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_qwerty_vi.xml
|
# res/xml/latn_qwerty_vi.xml
|
||||||
@@ -83,34 +93,25 @@ Layout includes some ASCII punctuation but not all, missing: \
|
|||||||
1 warnings
|
1 warnings
|
||||||
# res/xml/latn_qwertz_cz_multifunctional.xml
|
# res/xml/latn_qwertz_cz_multifunctional.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: `
|
Layout includes some ASCII punctuation but not all, missing: `
|
||||||
1 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
2 warnings
|
||||||
# res/xml/latn_qwertz_cz.xml
|
# res/xml/latn_qwertz_cz.xml
|
||||||
0 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
1 warnings
|
||||||
# res/xml/latn_qwertz_de.xml
|
# res/xml/latn_qwertz_de.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
|
# res/xml/latn_qwertz_fr_ch.xml
|
||||||
|
0 warnings
|
||||||
# res/xml/latn_qwertz_hu.xml
|
# res/xml/latn_qwertz_hu.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
# res/xml/latn_qwertz_sk.xml
|
# res/xml/latn_qwertz_sk.xml
|
||||||
Layout includes some ASCII punctuation but not all, missing: \, `
|
Layout includes some ASCII punctuation but not all, missing: \, `
|
||||||
1 warnings
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
|
2 warnings
|
||||||
# res/xml/latn_qwertz.xml
|
# res/xml/latn_qwertz.xml
|
||||||
0 warnings
|
0 warnings
|
||||||
Not a layout file: res/xml/method.xml
|
# res/xml/urdu_phonetic_ur.xml
|
||||||
Not a layout file: res/xml/number_row.xml
|
Duplicate keys:
|
||||||
# res/xml/numeric.xml
|
Layout includes some ASCII punctuation but not all, missing: <, >, ?, `, |, ~
|
||||||
Layout includes some ASCII punctuation but not all, missing: &, ?, @, `
|
Layout doesn't define some important keys, missing: f11_placeholder, f12_placeholder
|
||||||
Layout redefines the bottom row but some important keys are missing, missing: change_method, config, switch_emoji, switch_numeric, switch_second
|
|
||||||
Layout doesn't specify a script.
|
|
||||||
3 warnings
|
3 warnings
|
||||||
# res/xml/numpad.xml
|
|
||||||
Layout includes some ASCII punctuation but not all, missing: !, ", #, $, %, &, ', (, ), ,, :, ;, <, >, ?, @, [, \, ], ^, _, `, {, |, }, ~
|
|
||||||
Layout doesn't define some important keys, missing: backspace, delete
|
|
||||||
Layout redefines the bottom row but some important keys are missing, missing: action, change_method, config, ctrl, down, enter, fn, left, right, space, switch_emoji, switch_numeric, switch_second, up
|
|
||||||
Layout doesn't specify a script.
|
|
||||||
4 warnings
|
|
||||||
# res/xml/pin.xml
|
|
||||||
Layout includes some ASCII punctuation but not all, missing: !, ", $, %, &, ', ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~
|
|
||||||
Layout redefines the bottom row but some important keys are missing, missing: change_method, config, ctrl, fn, switch_emoji, switch_second
|
|
||||||
Layout doesn't specify a script.
|
|
||||||
3 warnings
|
|
||||||
Not a layout file: res/xml/settings.xml
|
|
||||||
|
@@ -3,6 +3,11 @@ import sys
|
|||||||
|
|
||||||
warning_count = 0
|
warning_count = 0
|
||||||
|
|
||||||
|
KNOWN_NOT_LAYOUT = set([
|
||||||
|
"res/xml/number_row.xml", "res/xml/numpad.xml", "res/xml/pin.xml",
|
||||||
|
"res/xml/bottom_row.xml", "res/xml/settings.xml", "res/xml/method.xml",
|
||||||
|
"res/xml/greekmath.xml", "res/xml/numeric.xml" ])
|
||||||
|
|
||||||
def warn(msg):
|
def warn(msg):
|
||||||
global warning_count
|
global warning_count
|
||||||
print(msg)
|
print(msg)
|
||||||
@@ -31,27 +36,42 @@ def unexpected_keys(keys, symbols, msg):
|
|||||||
|
|
||||||
def parse_layout(fname):
|
def parse_layout(fname):
|
||||||
keys = set()
|
keys = set()
|
||||||
|
dup = set()
|
||||||
root = ET.parse(fname).getroot()
|
root = ET.parse(fname).getroot()
|
||||||
if root.tag != "keyboard":
|
if root.tag != "keyboard":
|
||||||
return None
|
return None
|
||||||
for row in root:
|
for row in root:
|
||||||
for key in row:
|
for key in row:
|
||||||
for attr in key.keys():
|
for attr in key.keys():
|
||||||
keys.add(key.get(attr).removeprefix("\\"))
|
if attr.startswith("key"):
|
||||||
return root, keys
|
k = key.get(attr).removeprefix("\\")
|
||||||
|
if k in keys: dup.add(k)
|
||||||
|
keys.add(k)
|
||||||
|
return root, keys, dup
|
||||||
|
|
||||||
def check_layout(layout):
|
def check_layout(layout):
|
||||||
root, keys = layout
|
root, keys, dup = layout
|
||||||
|
if len(dup) > 0: warn("Duplicate keys: " + key_list_str(dup))
|
||||||
missing_some_of(keys, "~!@#$%^&*(){}`[]=\\-_;:/.,?<>'\"+|", "ASCII punctuation")
|
missing_some_of(keys, "~!@#$%^&*(){}`[]=\\-_;:/.,?<>'\"+|", "ASCII punctuation")
|
||||||
missing_some_of(keys, "0123456789", "digits")
|
missing_some_of(keys, "0123456789", "digits")
|
||||||
missing_some_of(keys, ["f11_placeholder", "f12_placeholder"])
|
missing_required(keys,
|
||||||
missing_some_of(keys, ["esc", "tab"])
|
["esc", "tab", "backspace", "delete",
|
||||||
missing_required(keys, ["backspace", "delete"], "Layout doesn't define some important keys")
|
"f11_placeholder", "f12_placeholder"],
|
||||||
|
"Layout doesn't define some important keys")
|
||||||
|
unexpected_keys(keys,
|
||||||
|
["copy", "paste", "cut", "selectAll", "shareText",
|
||||||
|
"pasteAsPlainText", "undo", "redo", "replaceText",
|
||||||
|
"textAssist", "autofill" ],
|
||||||
|
"Layout contains editing keys")
|
||||||
|
unexpected_keys(keys,
|
||||||
|
[ "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",
|
||||||
|
"f10", "f11", "f12" ],
|
||||||
|
"Layout contains function keys")
|
||||||
|
|
||||||
bottom_row_keys = [
|
bottom_row_keys = [
|
||||||
"ctrl", "fn", "switch_numeric", "change_method", "switch_emoji",
|
"ctrl", "fn", "switch_numeric", "change_method", "switch_emoji",
|
||||||
"config", "switch_second", "enter", "action", "left", "up", "right",
|
"config", "switch_forward", "switch_backward", "enter", "action",
|
||||||
"down", "space"
|
"left", "up", "right", "down", "space"
|
||||||
]
|
]
|
||||||
|
|
||||||
if root.get("bottom_row") == "false":
|
if root.get("bottom_row") == "false":
|
||||||
@@ -65,6 +85,8 @@ def check_layout(layout):
|
|||||||
warn("Layout doesn't specify a script.")
|
warn("Layout doesn't specify a script.")
|
||||||
|
|
||||||
for fname in sys.argv[1:]:
|
for fname in sys.argv[1:]:
|
||||||
|
if fname in KNOWN_NOT_LAYOUT:
|
||||||
|
continue
|
||||||
layout = parse_layout(fname)
|
layout = parse_layout(fname)
|
||||||
if layout == None:
|
if layout == None:
|
||||||
print("Not a layout file: %s" % fname)
|
print("Not a layout file: %s" % fname)
|
||||||
|
@@ -54,10 +54,10 @@ def generate_arrays(out, layouts):
|
|||||||
item.text = s
|
item.text = s
|
||||||
elem.append(item)
|
elem.append(item)
|
||||||
return elem
|
return elem
|
||||||
none_item = [ ("none", "None") ]
|
system_item = [ ("system", "@string/pref_layout_e_system") ]
|
||||||
custom_item = [ ("custom", "@string/pref_layout_e_custom") ]
|
custom_item = [ ("custom", "@string/pref_layout_e_custom") ]
|
||||||
values_items, entries_items = zip(*(none_item + layouts + custom_item)) # unzip
|
values_items, entries_items = zip(*(system_item + layouts + custom_item)) # unzip
|
||||||
ids_items = map(lambda s: "@xml/%s" % s if s not in ["none", "custom"] else "-1", values_items)
|
ids_items = map(lambda s: "@xml/%s" % s if s not in ["system", "custom"] else "-1", values_items)
|
||||||
root = XML.Element("resources")
|
root = XML.Element("resources")
|
||||||
root.append(XML.Comment(text="DO NOT EDIT. This file is generated, see gen_layouts.py."))
|
root.append(XML.Comment(text="DO NOT EDIT. This file is generated, see gen_layouts.py."))
|
||||||
root.append(mk_array("string-array", "pref_layout_values", values_items))
|
root.append(mk_array("string-array", "pref_layout_values", values_items))
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Diese Tastatur zeichnet sich dadurch aus, dass man zusätzliche Zeichen durch Wischgesten in Richtung der Tastenecken eingeben kann.
|
Diese Tastatur zeichnet sich dadurch aus, dass man zusätzliche Zeichen durch Wischgesten in Richtung der Tastenecken eingeben kann.
|
||||||
|
|
||||||
Die Anwendung wurde ursprünglich für das Programmieren in Termux entwickelt.
|
Die Anwendung wurde ursprünglich für das Programmieren in Termux entwickelt.
|
||||||
Mittlerweile ist sie auch für den täglichen Gebrauch perfekt geeignet.
|
Mittlerweile ist sie auch für den täglichen Gebrauch perfekt geeignet.
|
||||||
|
9
metadata/android/en-US/changelogs/36.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Allow selecting any number of standard and custom layouts.
|
||||||
|
Allow adding custom keys to the keyboard.
|
||||||
|
Changed behavior of auto-added keys (often dead-keys).
|
||||||
|
New layouts.
|
||||||
|
Improved layouts and language support.
|
||||||
|
Improved the space bar slider, and many more.
|
||||||
|
Updated translations.
|
||||||
|
|
||||||
|
Thanks to the contributors: @ChasmSolacer, @ElucGeek, @GoRaN909, @RZHSSNZDH, @Shareef101, @Validbit, @eandersons, @nitsvga, @polyctena, @sdrapha, @syskill
|
6
metadata/android/es-ES/full_description.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
La característica principal es que hay acceso a más caractéres deslizando hacia las esquinas de las teclas.
|
||||||
|
|
||||||
|
Esta aplicación fue originalmente diseñada para programadores que usaran Termux.
|
||||||
|
Ahora es perfecta para uso cotidiano.
|
||||||
|
|
||||||
|
La misma no contiene ningún anuncio/publicidad, no realiza peticiones de red y es de Fuente Abierta.
|
@@ -1 +1 @@
|
|||||||
Un teclado virtual ligero para desarrolladores.
|
Un teclado virtual ligero para Android consciente de su privacidad.
|
||||||
|
@@ -1 +1 @@
|
|||||||
Легкая виртуальная клавиатура для пользователей, заботящихся о своей конфиденциальности.
|
Легкая клавиатура для пользователей, заботящихся о конфиденциальности.
|
||||||
|
4
res/layout/dialog_edit_text.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">
|
||||||
|
<EditText android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp"/>
|
||||||
|
</LinearLayout>
|
@@ -2,7 +2,8 @@
|
|||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
|
||||||
<TextView style="@style/paragraph" android:text="@string/launcher_description"/>
|
<TextView style="@style/paragraph" android:text="@string/launcher_description"/>
|
||||||
<Button style="@style/paragraph" android:text="@string/launcher_button_imesettings" android:onClick="launch_imesettings" android:layout_width="wrap_content"/>
|
<Button style="@style/paragraph" android:text="@string/launcher_button_imesettings" android:onClick="launch_imesettings" android:layout_width="wrap_content"/>
|
||||||
<TextView style="@style/paragraph" android:text="@string/launcher_sourcecode" android:autoLink="web"/>
|
<TextView style="@style/paragraph" android:text="@string/launcher_sourcecode"/>
|
||||||
|
<TextView style="@style/paragraph" android:text="https://github.com/Julow/Unexpected-Keyboard" android:autoLink="web" android:linksClickable="true"/>
|
||||||
<TextView android:id="@+id/launcher_tryhere_text" style="@style/paragraph" android:text="@string/launcher_tryhere"/>
|
<TextView android:id="@+id/launcher_tryhere_text" style="@style/paragraph" android:text="@string/launcher_tryhere"/>
|
||||||
<EditText android:id="@+id/launcher_tryhere_area" style="@style/paragraph" android:inputType="text"/>
|
<EditText android:id="@+id/launcher_tryhere_area" style="@style/paragraph" android:inputType="text"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
4
res/layout/pref_layouts_add_btn.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||||
|
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pref_layouts_add" android:textAppearance="?android:attr/textAppearanceListItemSmall"/>
|
||||||
|
</LinearLayout>
|
4
res/layout/pref_listgroup_add_btn.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center">
|
||||||
|
<View android:layout_width="@dimen/pref_button_size" android:layout_height="@dimen/pref_button_size" android:background="@android:drawable/ic_menu_add"/>
|
||||||
|
</LinearLayout>
|
3
res/layout/pref_listgroup_group.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center">
|
||||||
|
</LinearLayout>
|
4
res/layout/pref_listgroup_item_widget.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal">
|
||||||
|
<Button android:id="@+id/pref_listgroup_remove_btn" android:layout_width="@dimen/pref_button_size" android:layout_height="@dimen/pref_button_size" android:layout_gravity="center" android:background="@android:drawable/ic_menu_close_clear_cancel"/>
|
||||||
|
</LinearLayout>
|
@@ -3,46 +3,49 @@
|
|||||||
<string name="app_name" product="debug">Klávesnice Unexpected (pro ladění)</string>
|
<string name="app_name" product="debug">Klávesnice Unexpected (pro ladění)</string>
|
||||||
<string name="app_name" product="default">Klávesnice Unexpected</string>
|
<string name="app_name" product="default">Klávesnice Unexpected</string>
|
||||||
<string name="settings_activity_label">Nastavení Klávesnice Unexpected</string>
|
<string name="settings_activity_label">Nastavení Klávesnice Unexpected</string>
|
||||||
<!-- <string name="pref_portrait">In portrait mode</string> -->
|
<string name="pref_portrait">V režimu na výšku</string>
|
||||||
<!-- <string name="pref_landscape">In landscape mode</string> -->
|
<string name="pref_landscape">V režimu na šířku</string>
|
||||||
<string name="pref_category_layout">Rozvržení</string>
|
<string name="pref_category_layout">Rozvržení</string>
|
||||||
<!-- <string name="pref_label_brightness">Adjust label brightness</string> -->
|
<string name="pref_label_brightness">Upravit jas nápisu</string>
|
||||||
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
<string name="pref_keyboard_opacity">Upravit průhlednost pozadí klávesnice</string>
|
||||||
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
<string name="pref_key_opacity">Upravit průhlednost kláves</string>
|
||||||
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
<string name="pref_key_activated_opacity">Upravit průhlednost stisknutých kláves</string>
|
||||||
<string name="pref_layout_title">Změnit rozvržení klávesnice</string>
|
<string name="pref_layout_e_system">Dle nastavení systému</string>
|
||||||
<string name="pref_layout_e_system">V nastavení systému</string>
|
<string name="pref_layout_e_custom">Vlastní rozvržení</string>
|
||||||
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
<string name="pref_layouts_add">Přidat alternativní rozložení</string>
|
||||||
<string name="pref_accents_title">(Univerzální) Diakritická znaménka</string>
|
<string name="pref_layouts_item">Rozložení %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_all_installed">Zobrazovat znaménka pro všechny instalované systémové jazyky</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_selected">Zobrazovat znaménka pouze pro současně zvolený jazyk</string>
|
<string name="pref_custom_layout_title">Vlastní rozvržení</string>
|
||||||
<string name="pref_accents_e_none">Skrýt (univerzální) diakritická znaménka</string>
|
<string name="pref_show_numpad_title">Zobrazit NumPad</string>
|
||||||
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
<string name="pref_show_numpad_never">Nikdy</string>
|
||||||
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
<string name="pref_show_numpad_landscape">Pouze v režimu na šířku</string>
|
||||||
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
<string name="pref_show_numpad_always">Vždy</string>
|
||||||
<!-- <string name="pref_show_numpad_always">Always</string> -->
|
<string name="pref_number_row_title">Zobrazit řádek s čísly</string>
|
||||||
<!-- <string name="pref_number_row_title">Show number row</string> -->
|
<string name="pref_number_row_summary">Přidá řádek s čísly nad klávesnici, pokud je NumPad skrytý</string>
|
||||||
<!-- <string name="pref_number_row_summary">Add a number row at the top of the keyboard when the numpad is hidden</string> -->
|
<string name="pref_numpad_layout">Rozložení NumPadu</string>
|
||||||
<!-- <string name="pref_numpad_layout">NumPad layout</string> -->
|
<string name="pref_numpad_layout_e_high_first">Vyšší číslice jako první (horní řádek 789)</string>
|
||||||
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
<string name="pref_numpad_layout_e_low_first">Nižší číslice jako první (horní řádek 123)</string>
|
||||||
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
<string name="pref_extra_keys_title">Přidat klávesy do klávesnice</string>
|
||||||
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
<string name="pref_extra_keys_custom">Přidat vlastní klávesy</string>
|
||||||
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
<string name="pref_extra_keys_internal">Výbrané klávesy k přidaní do klávesnice</string>
|
||||||
|
<string name="pref_second_layout_title">Vedlejší rozvržení</string>
|
||||||
<string name="pref_second_layout_none">Žádné</string>
|
<string name="pref_second_layout_none">Žádné</string>
|
||||||
<string name="pref_category_typing">Psaní</string>
|
<string name="pref_category_typing">Psaní</string>
|
||||||
<string name="pref_swipe_dist_title">Vzdálenost posunutí prstem</string>
|
<string name="pref_swipe_dist_title">Vzdálenost posunutí prstem</string>
|
||||||
<string name="pref_swipe_dist_summary">Jak daleko je třeba posunout prst pro napsaní znaku/diakritiky v rozích klávey (%s)</string>
|
<string name="pref_swipe_dist_summary">Jak daleko je třeba posunout prst pro zadání znaku/znaménka v rohu klávey (%s)</string>
|
||||||
<string name="pref_long_timeout_title">Časová prodleva opakování znaků</string>
|
<string name="pref_long_timeout_title">Časová prodleva opakování znaků</string>
|
||||||
<string name="pref_long_interval_title">Interval opakování znaků</string>
|
<string name="pref_long_interval_title">Interval opakování znaků</string>
|
||||||
<string name="pref_lock_double_tap_title">Dvojklik pro aktivaci caps lock(u)</string>
|
<string name="pref_lock_double_tap_title">Dvojklik pro aktivaci Capslock(u)</string>
|
||||||
<string name="pref_lock_double_tap_summary">Dvojklik namísto držení modifikačních kláves po nějakou dobu</string>
|
<string name="pref_lock_double_tap_summary">Dvojklik namísto držení modifikačních kláves po nějakou dobu</string>
|
||||||
<!-- <string name="pref_category_behavior">Behavior</string> -->
|
<string name="pref_category_behavior">Chování</string>
|
||||||
<string name="pref_autocapitalisation_title">Automatická kapitalizace</string>
|
<string name="pref_autocapitalisation_title">Automatická kapitalizace</string>
|
||||||
<string name="pref_autocapitalisation_summary">Stiskne Shift na začátku věty</string>
|
<string name="pref_autocapitalisation_summary">Stiskne Shift na začátku věty</string>
|
||||||
<!-- <string name="pref_switch_input_immediate_title">Switch to the last used keyboard</string> -->
|
<string name="pref_switch_input_immediate_title">Přepnout na posledně užívanou klávesnici</string>
|
||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<string name="pref_switch_input_immediate_summary">Jak bude klávesa pro přepnutí klávesnice reagovat</string>
|
||||||
<string name="pref_vibrate_title">Vibrace</string>
|
<string name="pref_vibrate_title">Vibrace</string>
|
||||||
<string name="pref_vibrate_summary">Zapnout/Vypnout vibrace při stisku klávesy</string>
|
<string name="pref_vibrate_summary">Preference intenzity vibrací při stisku klávesy</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Rozvržení zadávání PIN kódu</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Při psaní čísel, datumů a telefonních čísel</string>
|
||||||
<string name="pref_category_style">Styl</string>
|
<string name="pref_category_style">Styl</string>
|
||||||
<string name="pref_margin_bottom_title">Spodní odsazení</string>
|
<string name="pref_margin_bottom_title">Spodní odsazení</string>
|
||||||
<string name="pref_keyboard_height_title">Výška klávesnice</string>
|
<string name="pref_keyboard_height_title">Výška klávesnice</string>
|
||||||
@@ -54,9 +57,9 @@
|
|||||||
<string name="pref_theme_e_dark">Tmavý</string>
|
<string name="pref_theme_e_dark">Tmavý</string>
|
||||||
<string name="pref_theme_e_light">Světlý</string>
|
<string name="pref_theme_e_light">Světlý</string>
|
||||||
<string name="pref_theme_e_black">Černý</string>
|
<string name="pref_theme_e_black">Černý</string>
|
||||||
<!-- <string name="pref_theme_e_altblack">Alternative Black</string> -->
|
<string name="pref_theme_e_altblack">Černý (alternativní)</string>
|
||||||
<!-- <string name="pref_theme_e_white">White</string> -->
|
<string name="pref_theme_e_white">Bílý</string>
|
||||||
<!-- <string name="pref_theme_e_epaper">ePaper</string> -->
|
<string name="pref_theme_e_epaper">ePapír</string>
|
||||||
<string name="pref_swipe_dist_e_very_short">Velmi krátká</string>
|
<string name="pref_swipe_dist_e_very_short">Velmi krátká</string>
|
||||||
<string name="pref_swipe_dist_e_short">Krátká</string>
|
<string name="pref_swipe_dist_e_short">Krátká</string>
|
||||||
<string name="pref_swipe_dist_e_default">Běžná</string>
|
<string name="pref_swipe_dist_e_default">Běžná</string>
|
||||||
@@ -64,22 +67,38 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Velmi dlouhá</string>
|
<string name="pref_swipe_dist_e_very_far">Velmi dlouhá</string>
|
||||||
<string name="pref_key_horizontal_space">Horizontální mezery mezi klávesami</string>
|
<string name="pref_key_horizontal_space">Horizontální mezery mezi klávesami</string>
|
||||||
<string name="pref_key_vertical_space">Vertikální mezery mezi klávesami</string>
|
<string name="pref_key_vertical_space">Vertikální mezery mezi klávesami</string>
|
||||||
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
<string name="pref_vibration_e_disabled">Deaktivovány</string>
|
||||||
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
<string name="pref_vibration_e_system">Dle systému</string>
|
||||||
<!-- <string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string> -->
|
<string name="pref_vibration_e_strong">Silné</string>
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<string name="pref_vibration_e_medium">Střední</string>
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<string name="pref_vibration_e_light">Slabé</string>
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_medium">Medium</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_light">Light</string> -->
|
|
||||||
<string name="key_action_next">Další</string>
|
<string name="key_action_next">Další</string>
|
||||||
<string name="key_action_done">Dokončit</string>
|
<string name="key_action_done">Dokončit</string>
|
||||||
<string name="key_action_go">Spustit</string>
|
<string name="key_action_go">Spustit</string>
|
||||||
<string name="key_action_prev">Předchozí</string>
|
<string name="key_action_prev">Předchozí</string>
|
||||||
<string name="key_action_search">Hledat</string>
|
<string name="key_action_search">Hledat</string>
|
||||||
<string name="key_action_send">Odeslat</string>
|
<string name="key_action_send">Odeslat</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<string name="launcher_button_imesettings">Aktivovat klávesnici</string>
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<string name="launcher_description">Tato aplikace je pouhou virtuální klávesnicí. Přejděte do systémového nastavení, kliknutím na tlačítko níže a aktivujte ji.</string>
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<string name="launcher_sourcecode">Toto je volná, open-source aplikace. Její zdrojový kód, či hlášení chyb, naleznete na Githubu.</string>
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<string name="launcher_tryhere">Po aktivaci můžete klávesnici rovnou vyzkoušet zde:</string>
|
||||||
|
<string name="key_descr_capslock">Caps lock</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Řecké a matematické symboly</string>
|
||||||
|
<string name="key_descr_voice_typing">Hlasové zadávání</string>
|
||||||
|
<string name="key_descr_copy">Kopírovat</string>
|
||||||
|
<string name="key_descr_paste">Vložit</string>
|
||||||
|
<string name="key_descr_cut">Vyjmout</string>
|
||||||
|
<string name="key_descr_selectAll">Označit vše</string>
|
||||||
|
<string name="key_descr_shareText">Sdílet text</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Vložit jako prostý text</string>
|
||||||
|
<string name="key_descr_undo">Zpět</string>
|
||||||
|
<string name="key_descr_redo">Znovu</string>
|
||||||
|
<string name="key_descr_replaceText">Nahradit</string>
|
||||||
|
<string name="key_descr_textAssist">Asistovat</string>
|
||||||
|
<string name="key_descr_autofill">Předvyplnit</string>
|
||||||
|
<string name="key_descr_ª">Indikátor řadové číslovky</string>
|
||||||
|
<string name="key_descr_º">Indikátor řadové číslovky</string>
|
||||||
|
<string name="key_descr_superscript">Horní index</string>
|
||||||
|
<string name="key_descr_subscript">Dolní index</string>
|
||||||
|
<string name="pref_category_advanced">Pokročilé</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Deckkraft des Tastaturhintergrunds anpassen</string>
|
<string name="pref_keyboard_opacity">Deckkraft des Tastaturhintergrunds anpassen</string>
|
||||||
<string name="pref_key_opacity">Deckkraft der Tasten anpassen</string>
|
<string name="pref_key_opacity">Deckkraft der Tasten anpassen</string>
|
||||||
<string name="pref_key_activated_opacity">Deckkraft gedrückter Tasten anpassen</string>
|
<string name="pref_key_activated_opacity">Deckkraft gedrückter Tasten anpassen</string>
|
||||||
<string name="pref_layout_title">Tastaturlayout ändern</string>
|
|
||||||
<string name="pref_layout_e_system">Systemeinstellung</string>
|
<string name="pref_layout_e_system">Systemeinstellung</string>
|
||||||
<string name="pref_layout_e_custom">Eigenes Layout</string>
|
<string name="pref_layout_e_custom">Eigenes Layout</string>
|
||||||
<string name="pref_accents_title">Akzente</string>
|
<string name="pref_layouts_add">Alternatives Layout hinzufügen</string>
|
||||||
<string name="pref_accents_e_all_installed">Akzente für alle installierten Sprachen anzeigen</string>
|
<string name="pref_layouts_item">Layout %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Akzente nur für die gewählte Sprache anzeigen</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Akzente verbergen</string>
|
<string name="pref_custom_layout_title">Eigenes Layout</string>
|
||||||
<string name="pref_show_numpad_title">Ziffernblock anzeigen</string>
|
<string name="pref_show_numpad_title">Ziffernblock anzeigen</string>
|
||||||
<string name="pref_show_numpad_never">Nie</string>
|
<string name="pref_show_numpad_never">Nie</string>
|
||||||
<string name="pref_show_numpad_landscape">Nur im Querformat</string>
|
<string name="pref_show_numpad_landscape">Nur im Querformat</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Hohe Ziffern zuerst</string>
|
<string name="pref_numpad_layout_e_high_first">Hohe Ziffern zuerst</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Niedrige Ziffern zuerst</string>
|
<string name="pref_numpad_layout_e_low_first">Niedrige Ziffern zuerst</string>
|
||||||
<string name="pref_extra_keys_title">Zusätzliche Zeichen zur Tastatur hinzufügen</string>
|
<string name="pref_extra_keys_title">Zusätzliche Zeichen zur Tastatur hinzufügen</string>
|
||||||
|
<string name="pref_extra_keys_custom">Benutzerdefinierte Tasten hinzufügen</string>
|
||||||
|
<string name="pref_extra_keys_internal">Tasten auswählen, die der Tastatur hinzugefügt werden sollen</string>
|
||||||
<string name="pref_second_layout_title">Zweites Layout</string>
|
<string name="pref_second_layout_title">Zweites Layout</string>
|
||||||
<string name="pref_second_layout_none">Keines</string>
|
<string name="pref_second_layout_none">Keines</string>
|
||||||
<string name="pref_category_typing">Tippen</string>
|
<string name="pref_category_typing">Tippen</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Verhalten der Tastaturumschalttaste</string>
|
<string name="pref_switch_input_immediate_summary">Verhalten der Tastaturumschalttaste</string>
|
||||||
<string name="pref_vibrate_title">Vibration</string>
|
<string name="pref_vibrate_title">Vibration</string>
|
||||||
<string name="pref_vibrate_summary">Vibration bei Tastendruck ein-/ausschalten</string>
|
<string name="pref_vibrate_summary">Vibration bei Tastendruck ein-/ausschalten</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">PIN-Eingabe-Layout</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Für die Nummern-, Datums- und Telefonnummern-Eingabe</string>
|
||||||
<string name="pref_category_style">Design</string>
|
<string name="pref_category_style">Design</string>
|
||||||
<string name="pref_margin_bottom_title">Unterer Abstand</string>
|
<string name="pref_margin_bottom_title">Unterer Abstand</string>
|
||||||
<string name="pref_keyboard_height_title">Höhe der Tastatur</string>
|
<string name="pref_keyboard_height_title">Höhe der Tastatur</string>
|
||||||
@@ -64,14 +67,11 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Sehr weit</string>
|
<string name="pref_swipe_dist_e_very_far">Sehr weit</string>
|
||||||
<string name="pref_key_horizontal_space">Horizontaler Abstand zwischen den Tasten</string>
|
<string name="pref_key_horizontal_space">Horizontaler Abstand zwischen den Tasten</string>
|
||||||
<string name="pref_key_vertical_space">Vertikaler Abstand zwischen den Tasten</string>
|
<string name="pref_key_vertical_space">Vertikaler Abstand zwischen den Tasten</string>
|
||||||
<string name="pref_category_advanced">Erweitert</string>
|
<string name="pref_vibration_e_disabled">Deaktiviert</string>
|
||||||
<string name="pref_custom_layout_title">Eigenes Layout</string>
|
<string name="pref_vibration_e_system">System</string>
|
||||||
<string name="pref_custom_layout_summary">Bitte Sourcecode ansehen. Diese Option ist nicht zur Verwendung vorgesehen.</string>
|
<string name="pref_vibration_e_strong">Stark</string>
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<string name="pref_vibration_e_medium">Mittel</string>
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<string name="pref_vibration_e_light">Schwach</string>
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_medium">Medium</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_light">Light</string> -->
|
|
||||||
<string name="key_action_next">Nächstes</string>
|
<string name="key_action_next">Nächstes</string>
|
||||||
<string name="key_action_done">Fertig</string>
|
<string name="key_action_done">Fertig</string>
|
||||||
<string name="key_action_go">Los</string>
|
<string name="key_action_go">Los</string>
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Senden</string>
|
<string name="key_action_send">Senden</string>
|
||||||
<string name="launcher_button_imesettings">Tastatur aktivieren</string>
|
<string name="launcher_button_imesettings">Tastatur aktivieren</string>
|
||||||
<string name="launcher_description">Diese App ist eine virtuelle Tastatur. Tippe auf den Button unten und aktivere Unexpected Keyboard in den Systemeinstellungen.</string>
|
<string name="launcher_description">Diese App ist eine virtuelle Tastatur. Tippe auf den Button unten und aktivere Unexpected Keyboard in den Systemeinstellungen.</string>
|
||||||
<string name="launcher_sourcecode">Dies ist eine freie und quelloffene App. Du findest den Quellcode auf <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>. Dort können auch Bugs gemeldet werden.</string>
|
<string name="launcher_sourcecode">Dies ist eine freie und quelloffene App. Du findest den Quellcode auf Github. Dort können auch Bugs gemeldet werden.</string>
|
||||||
<string name="launcher_tryhere">Nach Aktivierung kannst du die Tastatur hier ausprobieren:</string>
|
<string name="launcher_tryhere">Nach Aktivierung kannst du die Tastatur hier ausprobieren:</string>
|
||||||
|
<string name="key_descr_capslock">Feststelltaste</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Griechische & mathematische Symbole</string>
|
||||||
|
<string name="key_descr_voice_typing">Spracheingabe</string>
|
||||||
|
<string name="key_descr_copy">Kopieren</string>
|
||||||
|
<string name="key_descr_paste">Einfügen</string>
|
||||||
|
<string name="key_descr_cut">Ausschneiden</string>
|
||||||
|
<string name="key_descr_selectAll">Alles auswählen</string>
|
||||||
|
<string name="key_descr_shareText">Text teilen</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Unformatiert einfügen</string>
|
||||||
|
<string name="key_descr_undo">Rückgängig</string>
|
||||||
|
<string name="key_descr_redo">Wiederholen</string>
|
||||||
|
<string name="key_descr_replaceText">Ersetzen</string>
|
||||||
|
<string name="key_descr_textAssist">Assistieren</string>
|
||||||
|
<string name="key_descr_autofill">Automatische Vervollständigung</string>
|
||||||
|
<string name="key_descr_ª">Ordinalzeichen</string>
|
||||||
|
<string name="key_descr_º">Ordinalzeichen</string>
|
||||||
|
<string name="key_descr_superscript">Hochgestellt</string>
|
||||||
|
<string name="key_descr_subscript">Tiefgestellt</string>
|
||||||
|
<string name="pref_category_advanced">Erweitert</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -1,48 +1,51 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- <string name="app_name" product="debug">Unexpected Keyboard (debug)</string> -->
|
<string name="app_name" product="debug">Unexpected Keyboard (debug)</string>
|
||||||
<!-- <string name="app_name" product="default">Unexpected Keyboard</string> -->
|
<string name="app_name" product="default">Unexpected Keyboard</string>
|
||||||
<string name="settings_activity_label">Ajustes de Unexpected Keyboard</string>
|
<string name="settings_activity_label">Ajustes de Unexpected Keyboard</string>
|
||||||
<!-- <string name="pref_portrait">In portrait mode</string> -->
|
<string name="pref_portrait">En modo retrato</string>
|
||||||
<!-- <string name="pref_landscape">In landscape mode</string> -->
|
<string name="pref_landscape">En modo paisaje</string>
|
||||||
<string name="pref_category_layout">Formato</string>
|
<string name="pref_category_layout">Formato</string>
|
||||||
<!-- <string name="pref_label_brightness">Adjust label brightness</string> -->
|
<string name="pref_label_brightness">Ajustar brillo de etiqueta</string>
|
||||||
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
<string name="pref_keyboard_opacity">Ajustar opacidad del fondo del teclado</string>
|
||||||
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
<string name="pref_key_opacity">Ajustar opacidad de teclas</string>
|
||||||
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
<string name="pref_key_activated_opacity">Ajustar opacidad de teclas apretadas</string>
|
||||||
<string name="pref_layout_title">Cambiar formato de teclado</string>
|
|
||||||
<string name="pref_layout_e_system">Ajustes del sistema</string>
|
<string name="pref_layout_e_system">Ajustes del sistema</string>
|
||||||
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
<string name="pref_layout_e_custom">Formato personalizado</string>
|
||||||
<string name="pref_accents_title">Acentos</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Mostrar acentos para todos los lenguajes instalados</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Solo mostrar acentos para el lenguaje seleccionado</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Ocultar acentos</string>
|
<string name="pref_custom_layout_title">Formato personalizado</string>
|
||||||
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
<string name="pref_show_numpad_title">Mostrar pad numérico</string>
|
||||||
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
<string name="pref_show_numpad_never">Nunca</string>
|
||||||
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
<string name="pref_show_numpad_landscape">Solo en modo paisaje</string>
|
||||||
<!-- <string name="pref_show_numpad_always">Always</string> -->
|
<string name="pref_show_numpad_always">Siempre</string>
|
||||||
<!-- <string name="pref_number_row_title">Show number row</string> -->
|
<string name="pref_number_row_title">Mostrar fila númerica</string>
|
||||||
<!-- <string name="pref_number_row_summary">Add a number row at the top of the keyboard when the numpad is hidden</string> -->
|
<string name="pref_number_row_summary">Agrega una fila de numeros en la cima del teclado mientras el pad numérico esté oculto</string>
|
||||||
<!-- <string name="pref_numpad_layout">NumPad layout</string> -->
|
<string name="pref_numpad_layout">Formato del pad numérico</string>
|
||||||
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
<string name="pref_numpad_layout_e_high_first">Dígitos descendientes</string>
|
||||||
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
<string name="pref_numpad_layout_e_low_first">Dígitos ascendientes</string>
|
||||||
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
<string name="pref_extra_keys_title">Agregar teclas</string>
|
||||||
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
<string name="pref_extra_keys_custom">Agregar teclas personalizadas</string>
|
||||||
<!-- <string name="pref_second_layout_none">None</string> -->
|
<string name="pref_extra_keys_internal">Selecciona teclas para agregar al teclado</string>
|
||||||
<string name="pref_category_typing">Escribiendo</string>
|
<string name="pref_second_layout_title">Formato secundario</string>
|
||||||
|
<string name="pref_second_layout_none">Ninguno</string>
|
||||||
|
<string name="pref_category_typing">Escritura</string>
|
||||||
<string name="pref_swipe_dist_title">Distancia para deslizar</string>
|
<string name="pref_swipe_dist_title">Distancia para deslizar</string>
|
||||||
<string name="pref_swipe_dist_summary">Distancia de caracteres en las esquinas de las letras (%s)</string>
|
<string name="pref_swipe_dist_summary">Distancia de caracteres en las esquinas de las letras (%s)</string>
|
||||||
<string name="pref_long_timeout_title">Tiempo de espera de repetición de tecla</string>
|
<string name="pref_long_timeout_title">Tiempo de espera de repetición de tecla</string>
|
||||||
<string name="pref_long_interval_title">Intervalo de repetición de tecla</string>
|
<string name="pref_long_interval_title">Intervalo de repetición de tecla</string>
|
||||||
<!-- <string name="pref_lock_double_tap_title">Double tap on shift for caps lock</string> -->
|
<string name="pref_lock_double_tap_title">Doble toque al Shift para bloquear las mayúsculas</string>
|
||||||
<!-- <string name="pref_lock_double_tap_summary">You can lock any modifier by holding it</string> -->
|
<string name="pref_lock_double_tap_summary">Se puede bloquear cualquier modificador manteniéndolo apretado</string>
|
||||||
<!-- <string name="pref_category_behavior">Behavior</string> -->
|
<string name="pref_category_behavior">Comportamiento</string>
|
||||||
<!-- <string name="pref_autocapitalisation_title">Automatic capitalisation</string> -->
|
<string name="pref_autocapitalisation_title">Capitalización automática</string>
|
||||||
<!-- <string name="pref_autocapitalisation_summary">Press Shift at the beginning of a sentence</string> -->
|
<string name="pref_autocapitalisation_summary">Apretar Shift al principio de una oración</string>
|
||||||
<!-- <string name="pref_switch_input_immediate_title">Switch to the last used keyboard</string> -->
|
<string name="pref_switch_input_immediate_title">Cambiar al último teclado usado</string>
|
||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<string name="pref_switch_input_immediate_summary">Comportamiento de la tecla para cambiar formatos</string>
|
||||||
<string name="pref_vibrate_title">Vibración</string>
|
<string name="pref_vibrate_title">Vibración</string>
|
||||||
<string name="pref_vibrate_summary">Habilitar/deshabilitar vibración al presionar una tecla</string>
|
<string name="pref_vibrate_summary">Habilitar/deshabilitar vibración al presionar una tecla</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Estilo</string>
|
<string name="pref_category_style">Estilo</string>
|
||||||
<string name="pref_margin_bottom_title">Margen del pie</string>
|
<string name="pref_margin_bottom_title">Margen del pie</string>
|
||||||
<string name="pref_keyboard_height_title">Altura del teclado</string>
|
<string name="pref_keyboard_height_title">Altura del teclado</string>
|
||||||
@@ -54,32 +57,48 @@
|
|||||||
<string name="pref_theme_e_dark">Oscuro</string>
|
<string name="pref_theme_e_dark">Oscuro</string>
|
||||||
<string name="pref_theme_e_light">Claro</string>
|
<string name="pref_theme_e_light">Claro</string>
|
||||||
<string name="pref_theme_e_black">Negro</string>
|
<string name="pref_theme_e_black">Negro</string>
|
||||||
<!-- <string name="pref_theme_e_altblack">Alternative Black</string> -->
|
<string name="pref_theme_e_altblack">Negro Alternativo</string>
|
||||||
<!-- <string name="pref_theme_e_white">White</string> -->
|
<string name="pref_theme_e_white">Blanco</string>
|
||||||
<!-- <string name="pref_theme_e_epaper">ePaper</string> -->
|
<string name="pref_theme_e_epaper">ePaper</string>
|
||||||
<string name="pref_swipe_dist_e_very_short">Muy corto</string>
|
<string name="pref_swipe_dist_e_very_short">Muy corta</string>
|
||||||
<string name="pref_swipe_dist_e_short">Corto</string>
|
<string name="pref_swipe_dist_e_short">Corta</string>
|
||||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||||
<string name="pref_swipe_dist_e_far">Lejano</string>
|
<string name="pref_swipe_dist_e_far">Lejana</string>
|
||||||
<string name="pref_swipe_dist_e_very_far">Muy lejano</string>
|
<string name="pref_swipe_dist_e_very_far">Muy lejana</string>
|
||||||
<string name="pref_key_horizontal_space">Espaciado horizontal entre las teclas</string>
|
<string name="pref_key_horizontal_space">Espaciado horizontal entre las teclas</string>
|
||||||
<string name="pref_key_vertical_space">Espaciado vertical entre las teclas</string>
|
<string name="pref_key_vertical_space">Espaciado vertical entre las teclas</string>
|
||||||
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
<string name="pref_vibration_e_disabled">Deshabilitada</string>
|
||||||
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
<string name="pref_vibration_e_system">Sistema</string>
|
||||||
<!-- <string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string> -->
|
<string name="pref_vibration_e_strong">Fuerte</string>
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<string name="pref_vibration_e_medium">Media</string>
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<string name="pref_vibration_e_light">Suave</string>
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_medium">Medium</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_light">Light</string> -->
|
|
||||||
<string name="key_action_next">Siguiente</string>
|
<string name="key_action_next">Siguiente</string>
|
||||||
<string name="key_action_done">Hecho</string>
|
<string name="key_action_done">Hecho</string>
|
||||||
<string name="key_action_go">Ir</string>
|
<string name="key_action_go">Ir</string>
|
||||||
<string name="key_action_prev">Anterior</string>
|
<string name="key_action_prev">Anterior</string>
|
||||||
<string name="key_action_search">Buscar</string>
|
<string name="key_action_search">Buscar</string>
|
||||||
<string name="key_action_send">Enviar</string>
|
<string name="key_action_send">Enviar</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<string name="launcher_button_imesettings">Habilitar teclado</string>
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<string name="launcher_description">Esta aplicación es un teclado virtual. Apretar el botón de abajo te facilitará habilitarlo.</string>
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<string name="launcher_sourcecode">Esta es una aplicación gratuita, libre y de fuente abierta. EL código fuente se puede encontrar también para reportar errores en Github.</string>
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<string name="launcher_tryhere">Tras habilitar, debajo se puede probar el teclado:</string>
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">Avanzado</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">تنظیم کدر بودن پسزمینه صفحه کلید</string>
|
<string name="pref_keyboard_opacity">تنظیم کدر بودن پسزمینه صفحه کلید</string>
|
||||||
<string name="pref_key_opacity">تنظیم کدر بودن کلید</string>
|
<string name="pref_key_opacity">تنظیم کدر بودن کلید</string>
|
||||||
<string name="pref_key_activated_opacity">تنظیم کدر بودن کلید فشرده شده</string>
|
<string name="pref_key_activated_opacity">تنظیم کدر بودن کلید فشرده شده</string>
|
||||||
<string name="pref_layout_title">تغییر طرح صفحه کلید</string>
|
|
||||||
<string name="pref_layout_e_system">تنظیمات سامانه</string>
|
<string name="pref_layout_e_system">تنظیمات سامانه</string>
|
||||||
<string name="pref_layout_e_custom">طرح صفارشی</string>
|
<string name="pref_layout_e_custom">طرح صفارشی</string>
|
||||||
<string name="pref_accents_title">لهجهها</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">نمایش لهجهها برای تمام زبانهی نصب شده</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">فقط نمایش لهجهها برای زبانهای انتخاب شده</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">پنهان کردن لهجهها</string>
|
<string name="pref_custom_layout_title">طرح شخصی</string>
|
||||||
<string name="pref_show_numpad_title">نمایش پد شمارهها</string>
|
<string name="pref_show_numpad_title">نمایش پد شمارهها</string>
|
||||||
<string name="pref_show_numpad_never">هرگز</string>
|
<string name="pref_show_numpad_never">هرگز</string>
|
||||||
<string name="pref_show_numpad_landscape">فقط در حالت افقی</string>
|
<string name="pref_show_numpad_landscape">فقط در حالت افقی</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">ابتدا اعداد بزرگ</string>
|
<string name="pref_numpad_layout_e_high_first">ابتدا اعداد بزرگ</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">ابتدا اعداد کوچک</string>
|
<string name="pref_numpad_layout_e_low_first">ابتدا اعداد کوچک</string>
|
||||||
<string name="pref_extra_keys_title">افزودن کلیدها به صفحه کلید</string>
|
<string name="pref_extra_keys_title">افزودن کلیدها به صفحه کلید</string>
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<string name="pref_second_layout_title">طرح دوم</string>
|
<string name="pref_second_layout_title">طرح دوم</string>
|
||||||
<string name="pref_second_layout_none">هیچ</string>
|
<string name="pref_second_layout_none">هیچ</string>
|
||||||
<string name="pref_category_typing">درحال نوشتن</string>
|
<string name="pref_category_typing">درحال نوشتن</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">رفتار کلید تغییردهنده صفحه کلید</string>
|
<string name="pref_switch_input_immediate_summary">رفتار کلید تغییردهنده صفحه کلید</string>
|
||||||
<string name="pref_vibrate_title">لرزش</string>
|
<string name="pref_vibrate_title">لرزش</string>
|
||||||
<string name="pref_vibrate_summary">فعال/غیرفعال کردن لرزش در زمان فشار دادن کلیدها</string>
|
<string name="pref_vibrate_summary">فعال/غیرفعال کردن لرزش در زمان فشار دادن کلیدها</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">سبک</string>
|
<string name="pref_category_style">سبک</string>
|
||||||
<string name="pref_margin_bottom_title">حاشیه پایین</string>
|
<string name="pref_margin_bottom_title">حاشیه پایین</string>
|
||||||
<string name="pref_keyboard_height_title">ارتفاع صفحه کلید</string>
|
<string name="pref_keyboard_height_title">ارتفاع صفحه کلید</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">بسیار دور</string>
|
<string name="pref_swipe_dist_e_very_far">بسیار دور</string>
|
||||||
<string name="pref_key_horizontal_space">فاصله افقی بین کلیدها</string>
|
<string name="pref_key_horizontal_space">فاصله افقی بین کلیدها</string>
|
||||||
<string name="pref_key_vertical_space">فاصله عمودی بین کلیدها</string>
|
<string name="pref_key_vertical_space">فاصله عمودی بین کلیدها</string>
|
||||||
<string name="pref_category_advanced">پیشرفته</string>
|
|
||||||
<string name="pref_custom_layout_title">طرح شخصی</string>
|
|
||||||
<string name="pref_custom_layout_summary">کد منبع را ببینید. این گزینه قرار نیست استفاده شود.</string>
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">ارسال</string>
|
<string name="key_action_send">ارسال</string>
|
||||||
<string name="launcher_button_imesettings">فعال کردن صفحه کلید</string>
|
<string name="launcher_button_imesettings">فعال کردن صفحه کلید</string>
|
||||||
<string name="launcher_description">این برنامه یک صفحه کلید مجازی است. با کلیک روی گزینه زیر به تنظیمات سامانه بروید و صفحه کلید غیرمنتظره را فعال کنید.</string>
|
<string name="launcher_description">این برنامه یک صفحه کلید مجازی است. با کلیک روی گزینه زیر به تنظیمات سامانه بروید و صفحه کلید غیرمنتظره را فعال کنید.</string>
|
||||||
<string name="launcher_sourcecode">این یک برنامه آزاد و منبعباز است. شما میتوانید پیدا کنید کد منبع را و گزارش کنید باگها را در <a href="https://github.com/Julow/Unexpected-Keyboard/">گیتهاب</a>.</string>
|
<string name="launcher_sourcecode">این یک برنامه متن باز و آزاد است. شما میتوانید کد منبع را در گیتهاب پیدا کرده و نیز باگها را گزارش کنید.</string>
|
||||||
<string name="launcher_tryhere">بعد از فعالسازی، صفحه کلید را اینجا امتحان کنید:</string>
|
<string name="launcher_tryhere">بعد از فعالسازی، صفحه کلید را اینجا امتحان کنید:</string>
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">پیشرفته</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Transparence du clavier</string>
|
<string name="pref_keyboard_opacity">Transparence du clavier</string>
|
||||||
<string name="pref_key_opacity">Transparence des touches</string>
|
<string name="pref_key_opacity">Transparence des touches</string>
|
||||||
<string name="pref_key_activated_opacity">Transparence des touches pressées</string>
|
<string name="pref_key_activated_opacity">Transparence des touches pressées</string>
|
||||||
<string name="pref_layout_title">Disposition des touches</string>
|
|
||||||
<string name="pref_layout_e_system">Paramètre système</string>
|
<string name="pref_layout_e_system">Paramètre système</string>
|
||||||
<string name="pref_layout_e_custom">Disposition personnalisée</string>
|
<string name="pref_layout_e_custom">Disposition personnalisée</string>
|
||||||
<string name="pref_accents_title">Accents</string>
|
<string name="pref_layouts_add">Ajouter un clavier alternatif</string>
|
||||||
<string name="pref_accents_e_all_installed">Afficher les accents pour les langues installées</string>
|
<string name="pref_layouts_item">Disposition %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Afficher les accents pour la langue sélectionnée</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Cacher les accents</string>
|
<string name="pref_custom_layout_title">Disposition personnalisée</string>
|
||||||
<string name="pref_show_numpad_title">Afficher le pavé numérique</string>
|
<string name="pref_show_numpad_title">Afficher le pavé numérique</string>
|
||||||
<string name="pref_show_numpad_never">Jamais</string>
|
<string name="pref_show_numpad_never">Jamais</string>
|
||||||
<string name="pref_show_numpad_landscape">Seulement en mode paysage</string>
|
<string name="pref_show_numpad_landscape">Seulement en mode paysage</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Du plus haut au plus bas</string>
|
<string name="pref_numpad_layout_e_high_first">Du plus haut au plus bas</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Du plus bas au plus haut</string>
|
<string name="pref_numpad_layout_e_low_first">Du plus bas au plus haut</string>
|
||||||
<string name="pref_extra_keys_title">Ajouter des touches au clavier</string>
|
<string name="pref_extra_keys_title">Ajouter des touches au clavier</string>
|
||||||
|
<string name="pref_extra_keys_custom">Ajouter des touches personnalisées</string>
|
||||||
|
<string name="pref_extra_keys_internal">Sélectionner les touches à ajouter au clavier</string>
|
||||||
<string name="pref_second_layout_title">Disposition secondaire</string>
|
<string name="pref_second_layout_title">Disposition secondaire</string>
|
||||||
<string name="pref_second_layout_none">Aucune</string>
|
<string name="pref_second_layout_none">Aucune</string>
|
||||||
<string name="pref_category_typing">Saisie</string>
|
<string name="pref_category_typing">Saisie</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Comportement de la touche de changement de clavier</string>
|
<string name="pref_switch_input_immediate_summary">Comportement de la touche de changement de clavier</string>
|
||||||
<string name="pref_vibrate_title">Vibreur</string>
|
<string name="pref_vibrate_title">Vibreur</string>
|
||||||
<string name="pref_vibrate_summary">Vibration a chaque touche</string>
|
<string name="pref_vibrate_summary">Vibration a chaque touche</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Clavier PIN</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Lors de la saisie de nombres, de dates et de numéros de téléphone</string>
|
||||||
<string name="pref_category_style">Style</string>
|
<string name="pref_category_style">Style</string>
|
||||||
<string name="pref_margin_bottom_title">Marge du bas</string>
|
<string name="pref_margin_bottom_title">Marge du bas</string>
|
||||||
<string name="pref_keyboard_height_title">Hauteur du clavier</string>
|
<string name="pref_keyboard_height_title">Hauteur du clavier</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Très longue</string>
|
<string name="pref_swipe_dist_e_very_far">Très longue</string>
|
||||||
<string name="pref_key_horizontal_space">Espacement horizontal entre les touches</string>
|
<string name="pref_key_horizontal_space">Espacement horizontal entre les touches</string>
|
||||||
<string name="pref_key_vertical_space">Espacement vertical entre les touches</string>
|
<string name="pref_key_vertical_space">Espacement vertical entre les touches</string>
|
||||||
<string name="pref_category_advanced">Avancé</string>
|
|
||||||
<string name="pref_custom_layout_title">Disposition personnalisée</string>
|
|
||||||
<string name="pref_custom_layout_summary">Cette option n\'est pas faite pour être utilisée.</string>
|
|
||||||
<string name="pref_vibration_e_disabled">Désactivé</string>
|
<string name="pref_vibration_e_disabled">Désactivé</string>
|
||||||
<string name="pref_vibration_e_system">Système</string>
|
<string name="pref_vibration_e_system">Système</string>
|
||||||
<string name="pref_vibration_e_strong">Fort</string>
|
<string name="pref_vibration_e_strong">Fort</string>
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Envoyer</string>
|
<string name="key_action_send">Envoyer</string>
|
||||||
<string name="launcher_button_imesettings">Activer le clavier</string>
|
<string name="launcher_button_imesettings">Activer le clavier</string>
|
||||||
<string name="launcher_description">Cette application est un clavier virtuel. Activez-le dans les paramètres système en cliquant sur le bouton ci-dessous.</string>
|
<string name="launcher_description">Cette application est un clavier virtuel. Activez-le dans les paramètres système en cliquant sur le bouton ci-dessous.</string>
|
||||||
<string name="launcher_sourcecode">Cette application est libre et open-source. Lisez le source code et reportez des problèmes sur <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string>
|
<string name="launcher_sourcecode">Cette application est libre et open-source. Lisez le source code et reportez des problèmes sur Github.</string>
|
||||||
<string name="launcher_tryhere">Après l\'avoir activé, vous pouvez l\'essayer ici:</string>
|
<string name="launcher_tryhere">Après l\'avoir activé, vous pouvez l\'essayer ici:</string>
|
||||||
|
<string name="key_descr_capslock">Verrouillage majuscules</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Symboles mathématiques</string>
|
||||||
|
<string name="key_descr_voice_typing">Saisie vocale</string>
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">Avancé</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
||||||
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
||||||
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
||||||
<string name="pref_layout_title">Cambia layout tastiera</string>
|
|
||||||
<string name="pref_layout_e_system">Impostazioni di sistema</string>
|
<string name="pref_layout_e_system">Impostazioni di sistema</string>
|
||||||
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
||||||
<string name="pref_accents_title">Accenti</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Mostra accenti per tutte le lingue installate</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Mostra accenti solo per le lingue selezionate</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Nascondi accenti</string>
|
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
||||||
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
||||||
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
||||||
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
||||||
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
||||||
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
||||||
<string name="pref_second_layout_none">Nessuno</string>
|
<string name="pref_second_layout_none">Nessuno</string>
|
||||||
<string name="pref_category_typing">Digitando</string>
|
<string name="pref_category_typing">Digitando</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||||
<string name="pref_vibrate_title">Vibrazione</string>
|
<string name="pref_vibrate_title">Vibrazione</string>
|
||||||
<string name="pref_vibrate_summary">Abilita/Disabilita Vibrazione alla pressione dei tasti</string>
|
<string name="pref_vibrate_summary">Abilita/Disabilita Vibrazione alla pressione dei tasti</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Stile</string>
|
<string name="pref_category_style">Stile</string>
|
||||||
<string name="pref_margin_bottom_title">Margine inferiore</string>
|
<string name="pref_margin_bottom_title">Margine inferiore</string>
|
||||||
<string name="pref_keyboard_height_title">Altezza tastiera</string>
|
<string name="pref_keyboard_height_title">Altezza tastiera</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Molto distante</string>
|
<string name="pref_swipe_dist_e_very_far">Molto distante</string>
|
||||||
<string name="pref_key_horizontal_space">Spazio orizzontale tra i tasti</string>
|
<string name="pref_key_horizontal_space">Spazio orizzontale tra i tasti</string>
|
||||||
<string name="pref_key_vertical_space">Spazio verticale tra i tasti</string>
|
<string name="pref_key_vertical_space">Spazio verticale tra i tasti</string>
|
||||||
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Invia</string>
|
<string name="key_action_send">Invia</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on Github.</string> -->
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
||||||
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
||||||
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
||||||
<string name="pref_layout_title">키보드 레이아웃 변경</string>
|
|
||||||
<string name="pref_layout_e_system">시스템 세팅</string>
|
<string name="pref_layout_e_system">시스템 세팅</string>
|
||||||
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
||||||
<string name="pref_accents_title">악센트</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">설치된 모든 언어의 악센트 표시</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">선택한 언어의 악센트만 표시</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">모든 언어의 악센트 숨기기</string>
|
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
||||||
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
||||||
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
||||||
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
||||||
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
||||||
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
||||||
<!-- <string name="pref_second_layout_none">None</string> -->
|
<!-- <string name="pref_second_layout_none">None</string> -->
|
||||||
<string name="pref_category_typing">타자</string>
|
<string name="pref_category_typing">타자</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||||
<string name="pref_vibrate_title">진동</string>
|
<string name="pref_vibrate_title">진동</string>
|
||||||
<string name="pref_vibrate_summary">키 누를 때 진동 키거/끄기</string>
|
<string name="pref_vibrate_summary">키 누를 때 진동 키거/끄기</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">스타일</string>
|
<string name="pref_category_style">스타일</string>
|
||||||
<string name="pref_margin_bottom_title">아래 넓이</string>
|
<string name="pref_margin_bottom_title">아래 넓이</string>
|
||||||
<string name="pref_keyboard_height_title">키보드 높이</string>
|
<string name="pref_keyboard_height_title">키보드 높이</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">매우 넓음</string>
|
<string name="pref_swipe_dist_e_very_far">매우 넓음</string>
|
||||||
<string name="pref_key_horizontal_space">키보드 양 옆 간격</string>
|
<string name="pref_key_horizontal_space">키보드 양 옆 간격</string>
|
||||||
<string name="pref_key_vertical_space">키보드 세로 간격</string>
|
<string name="pref_key_vertical_space">키보드 세로 간격</string>
|
||||||
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">보내기</string>
|
<string name="key_action_send">보내기</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on Github.</string> -->
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Pielāgot tastatūras fona necaurredzamību</string>
|
<string name="pref_keyboard_opacity">Pielāgot tastatūras fona necaurredzamību</string>
|
||||||
<string name="pref_key_opacity">Pielāgot taustiņu necaurredzamību</string>
|
<string name="pref_key_opacity">Pielāgot taustiņu necaurredzamību</string>
|
||||||
<string name="pref_key_activated_opacity">Pielāgot piespiesta taustiņa necaurredzamību</string>
|
<string name="pref_key_activated_opacity">Pielāgot piespiesta taustiņa necaurredzamību</string>
|
||||||
<string name="pref_layout_title">Mainīt tastatūras izkārtojumu</string>
|
|
||||||
<string name="pref_layout_e_system">Ierīces iestatījumi</string>
|
<string name="pref_layout_e_system">Ierīces iestatījumi</string>
|
||||||
<string name="pref_layout_e_custom">Pielāgots izkārtojums</string>
|
<string name="pref_layout_e_custom">Pielāgots izkārtojums</string>
|
||||||
<string name="pref_accents_title">Uzsvara zīmes</string>
|
<string name="pref_layouts_add">Pievienot aizstājējizkārtojumu</string>
|
||||||
<string name="pref_accents_e_all_installed">Rādīt uzsvara zīmes visām uzstādītajām valodām</string>
|
<string name="pref_layouts_item">Izkārtojums %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Rādīt uzsvara zīmes tikai atlasītajām valodām</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Paslēpt uzsvara zīmes</string>
|
<string name="pref_custom_layout_title">Pielāgots izkārtojums</string>
|
||||||
<string name="pref_show_numpad_title">Rādīt ciparnīcu</string>
|
<string name="pref_show_numpad_title">Rādīt ciparnīcu</string>
|
||||||
<string name="pref_show_numpad_never">Nekad</string>
|
<string name="pref_show_numpad_never">Nekad</string>
|
||||||
<string name="pref_show_numpad_landscape">Tikai guleniskajā skatā</string>
|
<string name="pref_show_numpad_landscape">Tikai guleniskajā skatā</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Vispirms lielākie cipari</string>
|
<string name="pref_numpad_layout_e_high_first">Vispirms lielākie cipari</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Vispirms mazākie cipari</string>
|
<string name="pref_numpad_layout_e_low_first">Vispirms mazākie cipari</string>
|
||||||
<string name="pref_extra_keys_title">Pievienot tastatūrai taustiņus</string>
|
<string name="pref_extra_keys_title">Pievienot tastatūrai taustiņus</string>
|
||||||
|
<string name="pref_extra_keys_custom">Pievienot pielāgotus taustiņus</string>
|
||||||
|
<string name="pref_extra_keys_internal">Atlasīt taustiņus, ko pievienot tastatūrai</string>
|
||||||
<string name="pref_second_layout_title">Otrējais izkārtojums</string>
|
<string name="pref_second_layout_title">Otrējais izkārtojums</string>
|
||||||
<string name="pref_second_layout_none">Neviens</string>
|
<string name="pref_second_layout_none">Neviens</string>
|
||||||
<string name="pref_category_typing">Rakstīšana</string>
|
<string name="pref_category_typing">Rakstīšana</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Tastatūras pārslēgšanas taustiņa uzvedība</string>
|
<string name="pref_switch_input_immediate_summary">Tastatūras pārslēgšanas taustiņa uzvedība</string>
|
||||||
<string name="pref_vibrate_title">Trīcēšana</string>
|
<string name="pref_vibrate_title">Trīcēšana</string>
|
||||||
<string name="pref_vibrate_summary">Iespējot/atspējot taustiņa piespiešanas trīcēšanu</string>
|
<string name="pref_vibrate_summary">Iespējot/atspējot taustiņa piespiešanas trīcēšanu</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Piespraust ievadīšanas izkārtojumu</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Kad ievada skaitļus, datumus un tālruņa numurus</string>
|
||||||
<string name="pref_category_style">Izskata pielāgojumi</string>
|
<string name="pref_category_style">Izskata pielāgojumi</string>
|
||||||
<string name="pref_margin_bottom_title">Apakšējā apmale</string>
|
<string name="pref_margin_bottom_title">Apakšējā apmale</string>
|
||||||
<string name="pref_keyboard_height_title">Tastatūras augstums</string>
|
<string name="pref_keyboard_height_title">Tastatūras augstums</string>
|
||||||
@@ -64,22 +67,40 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Ļoti tāls</string>
|
<string name="pref_swipe_dist_e_very_far">Ļoti tāls</string>
|
||||||
<string name="pref_key_horizontal_space">Līmeniskais attālums starp taustiņiem</string>
|
<string name="pref_key_horizontal_space">Līmeniskais attālums starp taustiņiem</string>
|
||||||
<string name="pref_key_vertical_space">Stateniskais attālums starp taustiņiem</string>
|
<string name="pref_key_vertical_space">Stateniskais attālums starp taustiņiem</string>
|
||||||
<string name="pref_category_advanced">Papildu</string>
|
<string name="pref_vibration_e_disabled">Atspējota</string>
|
||||||
<string name="pref_custom_layout_title">Pielāgots izkārtojums</string>
|
<string name="pref_vibration_e_system">Sistēmas</string>
|
||||||
<string name="pref_custom_layout_summary">Skatīt pirmkodu. Šī iespēja nav paredzēta izmantošanai.</string>
|
<string name="pref_vibration_e_strong">Spēcīga</string>
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<string name="pref_vibration_e_medium">Vidēja</string>
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<string name="pref_vibration_e_light">Vāja</string>
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_medium">Medium</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_light">Light</string> -->
|
|
||||||
<string name="key_action_next">Nākamais</string>
|
<string name="key_action_next">Nākamais</string>
|
||||||
<string name="key_action_done">Darīts</string>
|
<string name="key_action_done">Darīts</string>
|
||||||
<string name="key_action_go">Aiziet</string>
|
<string name="key_action_go">Aiziet</string>
|
||||||
<string name="key_action_prev">Iepriekšējais</string>
|
<string name="key_action_prev">Iepriekšējais</string>
|
||||||
<string name="key_action_search">Meklēt</string>
|
<string name="key_action_search">Meklēt</string>
|
||||||
<string name="key_action_send">Sūtīt</string>
|
<string name="key_action_send">Sūtīt</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<string name="launcher_button_imesettings">Iespējot tastatūru</string>
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<string name="launcher_description">Šī lietotne ir virtuālā tastatūra.
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
Ar zemāk esošo pogu var atvērt sistēmas iestatījumus un iespējot Unexpected Keyboard.</string>
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<string name="launcher_sourcecode">Šī ir bezmaksas un atvērtā pirmkoda lietotne.
|
||||||
|
GitHub var atrast pirmkodu un ziņot par nepilnībām.</string>
|
||||||
|
<string name="launcher_tryhere">Pēc iespējošanas šeit var izmēģināt tastatūru:</string>
|
||||||
|
<string name="key_descr_capslock">Burtslēgs</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Grieķu un matemātikas rakstzīmes</string>
|
||||||
|
<string name="key_descr_voice_typing">Rakstīšana ar balsi</string>
|
||||||
|
<string name="key_descr_copy">Ievietot starpliktuvē</string>
|
||||||
|
<string name="key_descr_paste">Ielīmēt</string>
|
||||||
|
<string name="key_descr_cut">Izgriezt</string>
|
||||||
|
<string name="key_descr_selectAll">Iezīmēt visu</string>
|
||||||
|
<string name="key_descr_shareText">Kopīgot tekstu</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Ielīmēt kā vienkāršu tekstu</string>
|
||||||
|
<string name="key_descr_undo">Atsaukt</string>
|
||||||
|
<string name="key_descr_redo">Atatsaukt</string>
|
||||||
|
<string name="key_descr_replaceText">Aizvietot</string>
|
||||||
|
<string name="key_descr_textAssist">Palīgs</string>
|
||||||
|
<string name="key_descr_autofill">Automātiskā aizpilde</string>
|
||||||
|
<string name="key_descr_ª">Kārtas rādītājs</string>
|
||||||
|
<string name="key_descr_º">Kārtas rādītājs</string>
|
||||||
|
<string name="key_descr_superscript">Augšraksts</string>
|
||||||
|
<string name="key_descr_subscript">Apakšraksts</string>
|
||||||
|
<string name="pref_category_advanced">Papildu</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Nieprzezroczystość tła klawiatury</string>
|
<string name="pref_keyboard_opacity">Nieprzezroczystość tła klawiatury</string>
|
||||||
<string name="pref_key_opacity">Nieprzezroczystość klawisza</string>
|
<string name="pref_key_opacity">Nieprzezroczystość klawisza</string>
|
||||||
<string name="pref_key_activated_opacity">Nieprzezroczystość naciśniętego klawisza</string>
|
<string name="pref_key_activated_opacity">Nieprzezroczystość naciśniętego klawisza</string>
|
||||||
<string name="pref_layout_title">Zmień układ klawiatury</string>
|
|
||||||
<string name="pref_layout_e_system">Systemowy</string>
|
<string name="pref_layout_e_system">Systemowy</string>
|
||||||
<string name="pref_layout_e_custom">Własny układ</string>
|
<string name="pref_layout_e_custom">Własny układ</string>
|
||||||
<string name="pref_accents_title">Znaki diakrytyczne</string>
|
<string name="pref_layouts_add">Dodaj dodatkowy układ</string>
|
||||||
<string name="pref_accents_e_all_installed">Pokaż znaki diakryt. dla wszystkich zainstalowanych języków</string>
|
<string name="pref_layouts_item">Układ %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Pokaż znaki diakryt. tylko dla wybranego języka</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Ukryj znaki diakrytyczne</string>
|
<string name="pref_custom_layout_title">Własny układ</string>
|
||||||
<string name="pref_show_numpad_title">Pokaż klawiaturę numeryczną</string>
|
<string name="pref_show_numpad_title">Pokaż klawiaturę numeryczną</string>
|
||||||
<string name="pref_show_numpad_never">Nigdy</string>
|
<string name="pref_show_numpad_never">Nigdy</string>
|
||||||
<string name="pref_show_numpad_landscape">Tylko w orientacji poziomej</string>
|
<string name="pref_show_numpad_landscape">Tylko w orientacji poziomej</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Od największej cyfry</string>
|
<string name="pref_numpad_layout_e_high_first">Od największej cyfry</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Od najmniejszej cyfry</string>
|
<string name="pref_numpad_layout_e_low_first">Od najmniejszej cyfry</string>
|
||||||
<string name="pref_extra_keys_title">Dodaj klawisze do klawiatury</string>
|
<string name="pref_extra_keys_title">Dodaj klawisze do klawiatury</string>
|
||||||
|
<string name="pref_extra_keys_custom">Dodaj niestandardowe klawisze</string>
|
||||||
|
<string name="pref_extra_keys_internal">Wybierz klawisze, które chcesz dodać do klawiatury</string>
|
||||||
<string name="pref_second_layout_title">Drugi układ</string>
|
<string name="pref_second_layout_title">Drugi układ</string>
|
||||||
<string name="pref_second_layout_none">Żaden</string>
|
<string name="pref_second_layout_none">Żaden</string>
|
||||||
<string name="pref_category_typing">Pisanie</string>
|
<string name="pref_category_typing">Pisanie</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Działanie klawisza przełączającego klawiaturę</string>
|
<string name="pref_switch_input_immediate_summary">Działanie klawisza przełączającego klawiaturę</string>
|
||||||
<string name="pref_vibrate_title">Wibracje</string>
|
<string name="pref_vibrate_title">Wibracje</string>
|
||||||
<string name="pref_vibrate_summary">Wł./wył. wibrację przy naciśnięciu klawisza</string>
|
<string name="pref_vibrate_summary">Wł./wył. wibrację przy naciśnięciu klawisza</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Układ klawiatury PIN</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Podczas wpisywania liczb, dat i numerów telefonu</string>
|
||||||
<string name="pref_category_style">Styl</string>
|
<string name="pref_category_style">Styl</string>
|
||||||
<string name="pref_margin_bottom_title">Margines dolny</string>
|
<string name="pref_margin_bottom_title">Margines dolny</string>
|
||||||
<string name="pref_keyboard_height_title">Wysokość klawiatury</string>
|
<string name="pref_keyboard_height_title">Wysokość klawiatury</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Bardzo duża</string>
|
<string name="pref_swipe_dist_e_very_far">Bardzo duża</string>
|
||||||
<string name="pref_key_horizontal_space">Odległość pomiędzy klawiszami w poziomie</string>
|
<string name="pref_key_horizontal_space">Odległość pomiędzy klawiszami w poziomie</string>
|
||||||
<string name="pref_key_vertical_space">Odległość pomiędzy klawiszami w pionie</string>
|
<string name="pref_key_vertical_space">Odległość pomiędzy klawiszami w pionie</string>
|
||||||
<string name="pref_category_advanced">Zaawansowane</string>
|
|
||||||
<string name="pref_custom_layout_title">Własny układ</string>
|
|
||||||
<string name="pref_custom_layout_summary">Zobacz kod źródłowy. Ta opcja nie jest przeznaczona do użycia.</string>
|
|
||||||
<string name="pref_vibration_e_disabled">Wyłączone</string>
|
<string name="pref_vibration_e_disabled">Wyłączone</string>
|
||||||
<string name="pref_vibration_e_system">Systemowe</string>
|
<string name="pref_vibration_e_system">Systemowe</string>
|
||||||
<string name="pref_vibration_e_strong">Silne</string>
|
<string name="pref_vibration_e_strong">Silne</string>
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Wyślij</string>
|
<string name="key_action_send">Wyślij</string>
|
||||||
<string name="launcher_button_imesettings">Włącz klawiaturę</string>
|
<string name="launcher_button_imesettings">Włącz klawiaturę</string>
|
||||||
<string name="launcher_description">Ta aplikacja jest klawiaturą ekranową. Naciśnij poniższy przycisk, aby przejść do ustawień systemu i włącz Unexpected-Keyboard.</string>
|
<string name="launcher_description">Ta aplikacja jest klawiaturą ekranową. Naciśnij poniższy przycisk, aby przejść do ustawień systemu i włącz Unexpected-Keyboard.</string>
|
||||||
<string name="launcher_sourcecode">Jest to darmowa aplikacja o otwartym kodzie źródłowym. Możesz zobaczyć kod źródłowy oraz zgłosić błedy na <a href="https://github.com/Julow/Unexpected-Keyboard/">Githubie</a>.</string>
|
<string name="launcher_sourcecode">Jest to darmowa aplikacja o otwartym kodzie źródłowym. Możesz zobaczyć kod źródłowy oraz zgłosić błedy na Githubie.</string>
|
||||||
<string name="launcher_tryhere">Po jej włączeniu, możesz wypróbować klawiaturę tutaj:</string>
|
<string name="launcher_tryhere">Po jej włączeniu, możesz wypróbować klawiaturę tutaj:</string>
|
||||||
|
<string name="key_descr_capslock">Caps lock</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Symbole greckie i matematyczne</string>
|
||||||
|
<string name="key_descr_voice_typing">Pisanie głosowe</string>
|
||||||
|
<string name="key_descr_copy">Kopiuj</string>
|
||||||
|
<string name="key_descr_paste">Wklej</string>
|
||||||
|
<string name="key_descr_cut">Wytnij</string>
|
||||||
|
<string name="key_descr_selectAll">Zaznacz wszystko</string>
|
||||||
|
<string name="key_descr_shareText">Udostępnij tekst</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Wklej sam tekst</string>
|
||||||
|
<string name="key_descr_undo">Cofnij</string>
|
||||||
|
<string name="key_descr_redo">Ponów</string>
|
||||||
|
<string name="key_descr_replaceText">Zamień</string>
|
||||||
|
<string name="key_descr_textAssist">Asystent</string>
|
||||||
|
<string name="key_descr_autofill">Autouzupełnianie</string>
|
||||||
|
<string name="key_descr_ª">Wskaźnik porządkowy (żeński)</string>
|
||||||
|
<string name="key_descr_º">Wskaźnik porządkowy (męski)</string>
|
||||||
|
<string name="key_descr_superscript">Indeks górny</string>
|
||||||
|
<string name="key_descr_subscript">Indeks dolny</string>
|
||||||
|
<string name="pref_category_advanced">Zaawansowane</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Ajustar opacidade do fundo do teclado</string>
|
<string name="pref_keyboard_opacity">Ajustar opacidade do fundo do teclado</string>
|
||||||
<string name="pref_key_opacity">Ajustar opacidade das teclas</string>
|
<string name="pref_key_opacity">Ajustar opacidade das teclas</string>
|
||||||
<string name="pref_key_activated_opacity">Ajustar opacidade das teclas pressionadas</string>
|
<string name="pref_key_activated_opacity">Ajustar opacidade das teclas pressionadas</string>
|
||||||
<string name="pref_layout_title">Mudar layout do teclado</string>
|
|
||||||
<string name="pref_layout_e_system">Mesmo do sistema</string>
|
<string name="pref_layout_e_system">Mesmo do sistema</string>
|
||||||
<string name="pref_layout_e_custom">Layout personalizado</string>
|
<string name="pref_layout_e_custom">Layout personalizado</string>
|
||||||
<string name="pref_accents_title">Acentos</string>
|
<string name="pref_layouts_add">Adicione um layout alternativo</string>
|
||||||
<string name="pref_accents_e_all_installed">Mostrar acentos para todos os idiomas instalados</string>
|
<string name="pref_layouts_item">Layout %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Mostrar acentos só para o idioma selecionado</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Ocultar acentos</string>
|
<string name="pref_custom_layout_title">Layout personalizado</string>
|
||||||
<string name="pref_show_numpad_title">Mostrar Teclado Numérico</string>
|
<string name="pref_show_numpad_title">Mostrar Teclado Numérico</string>
|
||||||
<string name="pref_show_numpad_never">Nunca</string>
|
<string name="pref_show_numpad_never">Nunca</string>
|
||||||
<string name="pref_show_numpad_landscape">Somente no modo paisagem</string>
|
<string name="pref_show_numpad_landscape">Somente no modo paisagem</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Dígitos maiores primeiro</string>
|
<string name="pref_numpad_layout_e_high_first">Dígitos maiores primeiro</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Dígitos menores primeiro</string>
|
<string name="pref_numpad_layout_e_low_first">Dígitos menores primeiro</string>
|
||||||
<string name="pref_extra_keys_title">Adicionar teclas ao teclado</string>
|
<string name="pref_extra_keys_title">Adicionar teclas ao teclado</string>
|
||||||
|
<string name="pref_extra_keys_custom">Adicionar teclas customizadas</string>
|
||||||
|
<string name="pref_extra_keys_internal">Selecione teclas para serem adicionadas ao teclado</string>
|
||||||
<string name="pref_second_layout_title">Layout secundário</string>
|
<string name="pref_second_layout_title">Layout secundário</string>
|
||||||
<string name="pref_second_layout_none">Nenhum</string>
|
<string name="pref_second_layout_none">Nenhum</string>
|
||||||
<string name="pref_category_typing">Digitação</string>
|
<string name="pref_category_typing">Digitação</string>
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
<string name="pref_swipe_dist_summary">Distância até acionar os cantos das teclas (%s)</string>
|
<string name="pref_swipe_dist_summary">Distância até acionar os cantos das teclas (%s)</string>
|
||||||
<string name="pref_long_timeout_title">Tempo até repetir tecla</string>
|
<string name="pref_long_timeout_title">Tempo até repetir tecla</string>
|
||||||
<string name="pref_long_interval_title">Intervalo de repetição de tecla</string>
|
<string name="pref_long_interval_title">Intervalo de repetição de tecla</string>
|
||||||
<string name="pref_lock_double_tap_title">Tecle duas vezes no shift para caixa alta</string>
|
<string name="pref_lock_double_tap_title">Tecle duas vezes no shift para travá-lo acionado</string>
|
||||||
<string name="pref_lock_double_tap_summary">Ao invés de apertar e segurar por um tempo</string>
|
<string name="pref_lock_double_tap_summary">Ao invés de apertar e segurar por um tempo</string>
|
||||||
<string name="pref_category_behavior">Comportamento</string>
|
<string name="pref_category_behavior">Comportamento</string>
|
||||||
<string name="pref_autocapitalisation_title">Capitalização automática</string>
|
<string name="pref_autocapitalisation_title">Capitalização automática</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Comportamento da tecla de troca de teclado</string>
|
<string name="pref_switch_input_immediate_summary">Comportamento da tecla de troca de teclado</string>
|
||||||
<string name="pref_vibrate_title">Vibração</string>
|
<string name="pref_vibrate_title">Vibração</string>
|
||||||
<string name="pref_vibrate_summary">Ativar/desativar vibração ao digitar</string>
|
<string name="pref_vibrate_summary">Ativar/desativar vibração ao digitar</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Layout PIN</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">Quando digitando números, datas ou números de telefone</string>
|
||||||
<string name="pref_category_style">Estilo</string>
|
<string name="pref_category_style">Estilo</string>
|
||||||
<string name="pref_margin_bottom_title">Margem inferior</string>
|
<string name="pref_margin_bottom_title">Margem inferior</string>
|
||||||
<string name="pref_keyboard_height_title">Altura do teclado</string>
|
<string name="pref_keyboard_height_title">Altura do teclado</string>
|
||||||
@@ -64,14 +67,11 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Muito longo</string>
|
<string name="pref_swipe_dist_e_very_far">Muito longo</string>
|
||||||
<string name="pref_key_horizontal_space">Distância horizontal entre teclas</string>
|
<string name="pref_key_horizontal_space">Distância horizontal entre teclas</string>
|
||||||
<string name="pref_key_vertical_space">Distância vertical entre teclas</string>
|
<string name="pref_key_vertical_space">Distância vertical entre teclas</string>
|
||||||
<string name="pref_category_advanced">Avançado</string>
|
<string name="pref_vibration_e_disabled">Desabilitado</string>
|
||||||
<string name="pref_custom_layout_title">Layout personalizado</string>
|
<string name="pref_vibration_e_system">Sistema</string>
|
||||||
<string name="pref_custom_layout_summary">Veja o código-fonte. Esta opção não deve ser usada.</string>
|
<string name="pref_vibration_e_strong">Intenso</string>
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<string name="pref_vibration_e_medium">Médio</string>
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<string name="pref_vibration_e_light">Suave</string>
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_medium">Medium</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_light">Light</string> -->
|
|
||||||
<string name="key_action_next">Próximo</string>
|
<string name="key_action_next">Próximo</string>
|
||||||
<string name="key_action_done">Pronto</string>
|
<string name="key_action_done">Pronto</string>
|
||||||
<string name="key_action_go">Ir</string>
|
<string name="key_action_go">Ir</string>
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Enviar</string>
|
<string name="key_action_send">Enviar</string>
|
||||||
<string name="launcher_button_imesettings">Ativar teclado</string>
|
<string name="launcher_button_imesettings">Ativar teclado</string>
|
||||||
<string name="launcher_description">Este app é um teclado virtual. Vá para as configurações do sistema clicando no botão abaixo e ative o Teclado Unexpected.</string>
|
<string name="launcher_description">Este app é um teclado virtual. Vá para as configurações do sistema clicando no botão abaixo e ative o Teclado Unexpected.</string>
|
||||||
<string name="launcher_sourcecode">Este app é gratuito é de código aberto. Você pode consultar o código ou fazer sugestões em <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string>
|
<string name="launcher_sourcecode">Este app é gratuito é de código aberto. Você pode consultar o código ou fazer sugestões em Github.</string>
|
||||||
<string name="launcher_tryhere">Após ativar, experimente aqui:</string>
|
<string name="launcher_tryhere">Após ativar, experimente aqui:</string>
|
||||||
|
<string name="key_descr_capslock">Caps lock</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Grego & símbolos matemáticos</string>
|
||||||
|
<string name="key_descr_voice_typing">Digitação por voz</string>
|
||||||
|
<string name="key_descr_copy">Copiar</string>
|
||||||
|
<string name="key_descr_paste">Colar</string>
|
||||||
|
<string name="key_descr_cut">Cortar</string>
|
||||||
|
<string name="key_descr_selectAll">Selecionar tudo</string>
|
||||||
|
<string name="key_descr_shareText">Compartilhar texto</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Colar texto não formatado</string>
|
||||||
|
<string name="key_descr_undo">Desfazer</string>
|
||||||
|
<string name="key_descr_redo">Refazer</string>
|
||||||
|
<string name="key_descr_replaceText">Substituir</string>
|
||||||
|
<string name="key_descr_textAssist">Assistente</string>
|
||||||
|
<string name="key_descr_autofill">Autopreenchimento</string>
|
||||||
|
<string name="key_descr_ª">Indicador Ordinal</string>
|
||||||
|
<string name="key_descr_º">Indicador Ordinal</string>
|
||||||
|
<string name="key_descr_superscript">Sobrescrito</string>
|
||||||
|
<string name="key_descr_subscript">Subscrito</string>
|
||||||
|
<string name="pref_category_advanced">Avançado</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Modifică opacitatea fundalului tastaturii</string>
|
<string name="pref_keyboard_opacity">Modifică opacitatea fundalului tastaturii</string>
|
||||||
<string name="pref_key_opacity">Modifică opacitatea tastelor</string>
|
<string name="pref_key_opacity">Modifică opacitatea tastelor</string>
|
||||||
<string name="pref_key_activated_opacity">Modifică opacitatea tastei apăsate</string>
|
<string name="pref_key_activated_opacity">Modifică opacitatea tastei apăsate</string>
|
||||||
<string name="pref_layout_title">Schimbă aranjamentul tastaturii</string>
|
|
||||||
<string name="pref_layout_e_system">Setări de Sistem</string>
|
<string name="pref_layout_e_system">Setări de Sistem</string>
|
||||||
<string name="pref_layout_e_custom">Aranjament personalizat</string>
|
<string name="pref_layout_e_custom">Aranjament personalizat</string>
|
||||||
<string name="pref_accents_title">Accente</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Arată accentele pentru toate limbile instalate</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Aratp accentele doar pentru limba selectată</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Ascunde accentele</string>
|
<string name="pref_custom_layout_title">Aranjament personalizat</string>
|
||||||
<string name="pref_show_numpad_title">Arată NumPad</string>
|
<string name="pref_show_numpad_title">Arată NumPad</string>
|
||||||
<string name="pref_show_numpad_never">Niciodată</string>
|
<string name="pref_show_numpad_never">Niciodată</string>
|
||||||
<string name="pref_show_numpad_landscape">Doar în mod panoramă</string>
|
<string name="pref_show_numpad_landscape">Doar în mod panoramă</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Mai întâi cifrele mari</string>
|
<string name="pref_numpad_layout_e_high_first">Mai întâi cifrele mari</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Mai întâi cifrele mici</string>
|
<string name="pref_numpad_layout_e_low_first">Mai întâi cifrele mici</string>
|
||||||
<string name="pref_extra_keys_title">Adaugă taste pe tastatură</string>
|
<string name="pref_extra_keys_title">Adaugă taste pe tastatură</string>
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<string name="pref_second_layout_title">Aranjament secundar</string>
|
<string name="pref_second_layout_title">Aranjament secundar</string>
|
||||||
<string name="pref_second_layout_none">Nimic</string>
|
<string name="pref_second_layout_none">Nimic</string>
|
||||||
<string name="pref_category_typing">Tipărire</string>
|
<string name="pref_category_typing">Tipărire</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Comportamentul tastei pentru schimbarea tastaturii</string>
|
<string name="pref_switch_input_immediate_summary">Comportamentul tastei pentru schimbarea tastaturii</string>
|
||||||
<string name="pref_vibrate_title">Vibrație</string>
|
<string name="pref_vibrate_title">Vibrație</string>
|
||||||
<string name="pref_vibrate_summary">Activați/dezactivați vibrația la apăsarea tastelor</string>
|
<string name="pref_vibrate_summary">Activați/dezactivați vibrația la apăsarea tastelor</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Stil</string>
|
<string name="pref_category_style">Stil</string>
|
||||||
<string name="pref_margin_bottom_title">Marginea de jos</string>
|
<string name="pref_margin_bottom_title">Marginea de jos</string>
|
||||||
<string name="pref_keyboard_height_title">Înălțimea tastaturii</string>
|
<string name="pref_keyboard_height_title">Înălțimea tastaturii</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Foarte depărtată</string>
|
<string name="pref_swipe_dist_e_very_far">Foarte depărtată</string>
|
||||||
<string name="pref_key_horizontal_space">Distanța orizontală dintre taste</string>
|
<string name="pref_key_horizontal_space">Distanța orizontală dintre taste</string>
|
||||||
<string name="pref_key_vertical_space">Distanța verticală dintre taste</string>
|
<string name="pref_key_vertical_space">Distanța verticală dintre taste</string>
|
||||||
<string name="pref_category_advanced">Setări avansate</string>
|
|
||||||
<string name="pref_custom_layout_title">Aranjament personalizat</string>
|
|
||||||
<string name="pref_custom_layout_summary">Deschide codul sursă. Această opțiune nu e destinată spre folosință.</string>
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Trimite</string>
|
<string name="key_action_send">Trimite</string>
|
||||||
<string name="launcher_button_imesettings">Activează tastatura</string>
|
<string name="launcher_button_imesettings">Activează tastatura</string>
|
||||||
<string name="launcher_description">Această aplicație este o tastatură virtuală. Accesați setările sistemului făcând clic pe butonul de mai jos și activați tastatura Unexpected.</string>
|
<string name="launcher_description">Această aplicație este o tastatură virtuală. Accesați setările sistemului făcând clic pe butonul de mai jos și activați tastatura Unexpected.</string>
|
||||||
<string name="launcher_sourcecode">Aceasta este o aplicație gratuită și open source. Puteți găsi codul sursă sau raporta erori folosind link-ul <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string>
|
<string name="launcher_sourcecode">Aceasta este o aplicație gratuită și open source. Puteți găsi codul sursă sau raporta erori folosind link-ul Github.</string>
|
||||||
<string name="launcher_tryhere">După activare, puteți să încercați tastatura aici:</string>
|
<string name="launcher_tryhere">După activare, puteți să încercați tastatura aici:</string>
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">Setări avansate</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
|
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
|
||||||
<string name="pref_key_opacity">Изменить прозрачность клавиш</string>
|
<string name="pref_key_opacity">Изменить прозрачность клавиш</string>
|
||||||
<string name="pref_key_activated_opacity">Изменить прозрачность нажатой клавиши</string>
|
<string name="pref_key_activated_opacity">Изменить прозрачность нажатой клавиши</string>
|
||||||
<string name="pref_layout_title">Изменить раскладку клавиатуры</string>
|
|
||||||
<string name="pref_layout_e_system">Системные настройки</string>
|
<string name="pref_layout_e_system">Системные настройки</string>
|
||||||
<string name="pref_layout_e_custom">Пользовательская раскладка</string>
|
<string name="pref_layout_e_custom">Пользовательская раскладка</string>
|
||||||
<string name="pref_accents_title">Акцент</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Показывать акценты для всех установленных языков</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Показывать акценты только для выбранного языка</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Скрыть акценты</string>
|
<string name="pref_custom_layout_title">Пользовательская раскладка</string>
|
||||||
<string name="pref_show_numpad_title">Показывать NumPad</string>
|
<string name="pref_show_numpad_title">Показывать NumPad</string>
|
||||||
<string name="pref_show_numpad_never">Никогда</string>
|
<string name="pref_show_numpad_never">Никогда</string>
|
||||||
<string name="pref_show_numpad_landscape">Только в ландшафтном режиме</string>
|
<string name="pref_show_numpad_landscape">Только в ландшафтном режиме</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Старшие цифры сверху</string>
|
<string name="pref_numpad_layout_e_high_first">Старшие цифры сверху</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Младшие цифры сверху</string>
|
<string name="pref_numpad_layout_e_low_first">Младшие цифры сверху</string>
|
||||||
<string name="pref_extra_keys_title">Добавить клавиши на клавиатуру</string>
|
<string name="pref_extra_keys_title">Добавить клавиши на клавиатуру</string>
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<string name="pref_second_layout_title">Дополнительная раскладка</string>
|
<string name="pref_second_layout_title">Дополнительная раскладка</string>
|
||||||
<string name="pref_second_layout_none">Нет</string>
|
<string name="pref_second_layout_none">Нет</string>
|
||||||
<string name="pref_category_typing">Печать</string>
|
<string name="pref_category_typing">Печать</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Поведение клавиши переключения клавиатуры</string>
|
<string name="pref_switch_input_immediate_summary">Поведение клавиши переключения клавиатуры</string>
|
||||||
<string name="pref_vibrate_title">Вибрация</string>
|
<string name="pref_vibrate_title">Вибрация</string>
|
||||||
<string name="pref_vibrate_summary">Включение/выключение вибрации при нажатии клавиши</string>
|
<string name="pref_vibrate_summary">Включение/выключение вибрации при нажатии клавиши</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Стиль</string>
|
<string name="pref_category_style">Стиль</string>
|
||||||
<string name="pref_margin_bottom_title">Нижняя граница поля</string>
|
<string name="pref_margin_bottom_title">Нижняя граница поля</string>
|
||||||
<string name="pref_keyboard_height_title">Высота клавиатуры</string>
|
<string name="pref_keyboard_height_title">Высота клавиатуры</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Очень далеко</string>
|
<string name="pref_swipe_dist_e_very_far">Очень далеко</string>
|
||||||
<string name="pref_key_horizontal_space">Горизонтальное расстояние между клавишами</string>
|
<string name="pref_key_horizontal_space">Горизонтальное расстояние между клавишами</string>
|
||||||
<string name="pref_key_vertical_space">Расстояние по вертикали между клавишами</string>
|
<string name="pref_key_vertical_space">Расстояние по вертикали между клавишами</string>
|
||||||
<string name="pref_category_advanced">Расширенные настройки</string>
|
|
||||||
<string name="pref_custom_layout_title">Пользовательская раскладка</string>
|
|
||||||
<string name="pref_custom_layout_summary">Откройте исходный код. Эта параметр не предназначен для использования.</string>
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Отправить</string>
|
<string name="key_action_send">Отправить</string>
|
||||||
<string name="launcher_button_imesettings">Включить клавиатуру</string>
|
<string name="launcher_button_imesettings">Включить клавиатуру</string>
|
||||||
<string name="launcher_description">Данное приложение является виртуальной клавиатурой. Зайдите в настройки, нажав кнопку внизу и активируйте Unexpected-Keyboard.</string>
|
<string name="launcher_description">Данное приложение является виртуальной клавиатурой. Зайдите в настройки, нажав кнопку внизу и активируйте Unexpected-Keyboard.</string>
|
||||||
<string name="launcher_sourcecode">Это бесплатное приложение с открытым исходным кодом. Вы можете изучить код или сообщить об ошибках по ссылке <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string>
|
<string name="launcher_sourcecode">Это бесплатное приложение с открытым исходным кодом. Вы можете изучить код или сообщить об ошибках по ссылке Github.</string>
|
||||||
<string name="launcher_tryhere">После активации вы можете попробовать клавиатуру прямо здесь:</string>
|
<string name="launcher_tryhere">После активации вы можете попробовать клавиатуру прямо здесь:</string>
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">Расширенные настройки</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
|
||||||
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
<!-- <string name="pref_key_opacity">Adjust key opacity</string> -->
|
||||||
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
<!-- <string name="pref_key_activated_opacity">Adjust pressed key opacity</string> -->
|
||||||
<string name="pref_layout_title">Klavye Düzenini Değiştir</string>
|
|
||||||
<string name="pref_layout_e_system">Sistem Ayarları</string>
|
<string name="pref_layout_e_system">Sistem Ayarları</string>
|
||||||
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
<!-- <string name="pref_layout_e_custom">Custom layout</string> -->
|
||||||
<string name="pref_accents_title">Aksanlar</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Yüklü tüm dillerin aksanlarını göster</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Sadece seçili dilin aksanlarını göster</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">Aksanları gizle</string>
|
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
||||||
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
<!-- <string name="pref_show_numpad_title">Show NumPad</string> -->
|
||||||
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
<!-- <string name="pref_show_numpad_never">Never</string> -->
|
||||||
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
<!-- <string name="pref_show_numpad_landscape">Only in landscape mode</string> -->
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_high_first">High digits first</string> -->
|
||||||
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
<!-- <string name="pref_numpad_layout_e_low_first">Low digits first</string> -->
|
||||||
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
<!-- <string name="pref_extra_keys_title">Add keys to the keyboard</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
<!-- <string name="pref_second_layout_title">Secondary layout</string> -->
|
||||||
<string name="pref_second_layout_none">Hiçbiri</string>
|
<string name="pref_second_layout_none">Hiçbiri</string>
|
||||||
<string name="pref_category_typing">Yazma</string>
|
<string name="pref_category_typing">Yazma</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||||
<string name="pref_vibrate_title">Titreşim</string>
|
<string name="pref_vibrate_title">Titreşim</string>
|
||||||
<string name="pref_vibrate_summary">Tuşa basıldığında titreşimi etkinleştir</string>
|
<string name="pref_vibrate_summary">Tuşa basıldığında titreşimi etkinleştir</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Stil</string>
|
<string name="pref_category_style">Stil</string>
|
||||||
<string name="pref_margin_bottom_title">Alt boşluk</string>
|
<string name="pref_margin_bottom_title">Alt boşluk</string>
|
||||||
<string name="pref_keyboard_height_title">Klavye yüksekliği</string>
|
<string name="pref_keyboard_height_title">Klavye yüksekliği</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Çok uzun</string>
|
<string name="pref_swipe_dist_e_very_far">Çok uzun</string>
|
||||||
<string name="pref_key_horizontal_space">Tuşlar arasındaki yatay boşluk</string>
|
<string name="pref_key_horizontal_space">Tuşlar arasındaki yatay boşluk</string>
|
||||||
<string name="pref_key_vertical_space">Tuşlar arasındaki dikey boşluk</string>
|
<string name="pref_key_vertical_space">Tuşlar arasındaki dikey boşluk</string>
|
||||||
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_title">Custom layout</string> -->
|
|
||||||
<!-- <string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string> -->
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">Gönder</string>
|
<string name="key_action_send">Gönder</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on Github.</string> -->
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<!-- <string name="pref_category_advanced">Advanced</string> -->
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,15 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Tùy chỉnh độ trong suốt của bàn phím</string>
|
<string name="pref_keyboard_opacity">Tùy chỉnh độ trong suốt của bàn phím</string>
|
||||||
<string name="pref_key_opacity">Tùy chỉnh độ trong suốt của phím</string>
|
<string name="pref_key_opacity">Tùy chỉnh độ trong suốt của phím</string>
|
||||||
<string name="pref_key_activated_opacity">Tùy chỉnh độ trong suốt của phím khi nhấn</string>
|
<string name="pref_key_activated_opacity">Tùy chỉnh độ trong suốt của phím khi nhấn</string>
|
||||||
<string name="pref_layout_title">Thay đổi bố cục bàn phím</string>
|
|
||||||
<string name="pref_layout_e_system">Hệ thống</string>
|
<string name="pref_layout_e_system">Hệ thống</string>
|
||||||
<string name="pref_layout_e_custom">Tùy chỉnh bố cục</string>
|
<string name="pref_layout_e_custom">Tùy chỉnh bố cục</string>
|
||||||
<string name="pref_accents_title">Dấu phụ</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">Hiển thị cho các ngôn ngữ đã cài đặt</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">Chỉ hiển thị cho các ngôn ngữ đã chọn</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">
|
<string name="pref_custom_layout_title">Tùy chỉnh bố cục</string>
|
||||||
Ẩn dấu phụ
|
|
||||||
</string>
|
|
||||||
<string name="pref_show_numpad_title">Hiện NumPad</string>
|
<string name="pref_show_numpad_title">Hiện NumPad</string>
|
||||||
<string name="pref_show_numpad_never">Không bao giờ</string>
|
<string name="pref_show_numpad_never">Không bao giờ</string>
|
||||||
<string name="pref_show_numpad_landscape">Chỉ trong chế độ phong cảnh</string>
|
<string name="pref_show_numpad_landscape">Chỉ trong chế độ phong cảnh</string>
|
||||||
@@ -29,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">Số lớn nhất trước</string>
|
<string name="pref_numpad_layout_e_high_first">Số lớn nhất trước</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Số nhỏ nhất trước</string>
|
<string name="pref_numpad_layout_e_low_first">Số nhỏ nhất trước</string>
|
||||||
<string name="pref_extra_keys_title">Thêm phím vào bàn phím</string>
|
<string name="pref_extra_keys_title">Thêm phím vào bàn phím</string>
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<string name="pref_second_layout_title">Bố cục phụ</string>
|
<string name="pref_second_layout_title">Bố cục phụ</string>
|
||||||
<string name="pref_second_layout_none">Không</string>
|
<string name="pref_second_layout_none">Không</string>
|
||||||
<string name="pref_category_typing">Gõ</string>
|
<string name="pref_category_typing">Gõ</string>
|
||||||
@@ -45,6 +44,8 @@
|
|||||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||||
<string name="pref_vibrate_title">Sự rung</string>
|
<string name="pref_vibrate_title">Sự rung</string>
|
||||||
<string name="pref_vibrate_summary">Bật/tắt rung khi nhấn</string>
|
<string name="pref_vibrate_summary">Bật/tắt rung khi nhấn</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">Kiểu cách</string>
|
<string name="pref_category_style">Kiểu cách</string>
|
||||||
<string name="pref_margin_bottom_title">Căn lề dưới</string>
|
<string name="pref_margin_bottom_title">Căn lề dưới</string>
|
||||||
<string name="pref_keyboard_height_title">Chiều cao bàn phím</string>
|
<string name="pref_keyboard_height_title">Chiều cao bàn phím</string>
|
||||||
@@ -66,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Rất xa</string>
|
<string name="pref_swipe_dist_e_very_far">Rất xa</string>
|
||||||
<string name="pref_key_horizontal_space">Khoảng cách giữa các phím theo chiều ngang</string>
|
<string name="pref_key_horizontal_space">Khoảng cách giữa các phím theo chiều ngang</string>
|
||||||
<string name="pref_key_vertical_space">Khoảng cách giữa các phím theo chiều dọc</string>
|
<string name="pref_key_vertical_space">Khoảng cách giữa các phím theo chiều dọc</string>
|
||||||
<string name="pref_category_advanced">Nâng cao</string>
|
|
||||||
<string name="pref_custom_layout_title">Tùy chỉnh bố cục</string>
|
|
||||||
<string name="pref_custom_layout_summary">Hãy xem mã nguồn. Lựa chọn này không có mục đích sử dụng.</string>
|
|
||||||
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
<!-- <string name="pref_vibration_e_disabled">Disabled</string> -->
|
||||||
<!-- <string name="pref_vibration_e_system">System</string> -->
|
<!-- <string name="pref_vibration_e_system">System</string> -->
|
||||||
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
<!-- <string name="pref_vibration_e_strong">Strong</string> -->
|
||||||
@@ -82,6 +80,25 @@
|
|||||||
<string name="key_action_send">Gửi</string>
|
<string name="key_action_send">Gửi</string>
|
||||||
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
<!-- <string name="launcher_button_imesettings">Enable keyboard</string> -->
|
||||||
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
<!-- <string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string> -->
|
||||||
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string> -->
|
<!-- <string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on Github.</string> -->
|
||||||
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
<!-- <string name="launcher_tryhere">After enabling, you can try the keyboard here:</string> -->
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">Nâng cao</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">调整键盘背景透明度</string>
|
<string name="pref_keyboard_opacity">调整键盘背景透明度</string>
|
||||||
<string name="pref_key_opacity">调整按键透明度</string>
|
<string name="pref_key_opacity">调整按键透明度</string>
|
||||||
<string name="pref_key_activated_opacity">调整按下的按键的透明度</string>
|
<string name="pref_key_activated_opacity">调整按下的按键的透明度</string>
|
||||||
<string name="pref_layout_title">改变键盘布局</string>
|
|
||||||
<string name="pref_layout_e_system">系统设置</string>
|
<string name="pref_layout_e_system">系统设置</string>
|
||||||
<string name="pref_layout_e_custom">自定义布局</string>
|
<string name="pref_layout_e_custom">自定义布局</string>
|
||||||
<string name="pref_accents_title">声调</string>
|
<!-- <string name="pref_layouts_add">Add an alternate layout</string> -->
|
||||||
<string name="pref_accents_e_all_installed">显示所有安装的语言的声调符号</string>
|
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
|
||||||
<string name="pref_accents_e_selected">只显示选择的语言的声调符号</string>
|
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
|
||||||
<string name="pref_accents_e_none">隐藏声调符号</string>
|
<string name="pref_custom_layout_title">自定义布局</string>
|
||||||
<string name="pref_show_numpad_title">显示数字小键盘</string>
|
<string name="pref_show_numpad_title">显示数字小键盘</string>
|
||||||
<string name="pref_show_numpad_never">从不</string>
|
<string name="pref_show_numpad_never">从不</string>
|
||||||
<string name="pref_show_numpad_landscape">只在横屏显示</string>
|
<string name="pref_show_numpad_landscape">只在横屏显示</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">大数字在上方</string>
|
<string name="pref_numpad_layout_e_high_first">大数字在上方</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">小数字在上方</string>
|
<string name="pref_numpad_layout_e_low_first">小数字在上方</string>
|
||||||
<string name="pref_extra_keys_title">选择要显示的按键</string>
|
<string name="pref_extra_keys_title">选择要显示的按键</string>
|
||||||
|
<!-- <string name="pref_extra_keys_custom">Add custom keys</string> -->
|
||||||
|
<!-- <string name="pref_extra_keys_internal">Select keys to add to the keyboard</string> -->
|
||||||
<string name="pref_second_layout_title">第二键盘布局</string>
|
<string name="pref_second_layout_title">第二键盘布局</string>
|
||||||
<string name="pref_second_layout_none">无</string>
|
<string name="pref_second_layout_none">无</string>
|
||||||
<string name="pref_category_typing">输入</string>
|
<string name="pref_category_typing">输入</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">切换键盘按钮的行为</string>
|
<string name="pref_switch_input_immediate_summary">切换键盘按钮的行为</string>
|
||||||
<string name="pref_vibrate_title">振动</string>
|
<string name="pref_vibrate_title">振动</string>
|
||||||
<string name="pref_vibrate_summary">启用或者禁用按下按键时振动</string>
|
<string name="pref_vibrate_summary">启用或者禁用按下按键时振动</string>
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||||
|
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||||
<string name="pref_category_style">样式</string>
|
<string name="pref_category_style">样式</string>
|
||||||
<string name="pref_margin_bottom_title">键盘下边距</string>
|
<string name="pref_margin_bottom_title">键盘下边距</string>
|
||||||
<string name="pref_keyboard_height_title">键盘高度</string>
|
<string name="pref_keyboard_height_title">键盘高度</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">非常长</string>
|
<string name="pref_swipe_dist_e_very_far">非常长</string>
|
||||||
<string name="pref_key_horizontal_space">按键的左右边距</string>
|
<string name="pref_key_horizontal_space">按键的左右边距</string>
|
||||||
<string name="pref_key_vertical_space">按键的上下边距</string>
|
<string name="pref_key_vertical_space">按键的上下边距</string>
|
||||||
<string name="pref_category_advanced">高级设置</string>
|
|
||||||
<string name="pref_custom_layout_title">自定义布局</string>
|
|
||||||
<string name="pref_custom_layout_summary">请查看源代码。这个选项不应该在正常情况下使用。</string>
|
|
||||||
<string name="pref_vibration_e_disabled">禁用</string>
|
<string name="pref_vibration_e_disabled">禁用</string>
|
||||||
<string name="pref_vibration_e_system">使用系统振动强度</string>
|
<string name="pref_vibration_e_system">使用系统振动强度</string>
|
||||||
<string name="pref_vibration_e_strong">强</string>
|
<string name="pref_vibration_e_strong">强</string>
|
||||||
@@ -80,6 +80,25 @@
|
|||||||
<string name="key_action_send">发送</string>
|
<string name="key_action_send">发送</string>
|
||||||
<string name="launcher_button_imesettings">启用键盘</string>
|
<string name="launcher_button_imesettings">启用键盘</string>
|
||||||
<string name="launcher_description">这是一个虚拟键盘软件。点击按钮进入系统设置,然后启用 Unexpected-Keyboard 即可使用。</string>
|
<string name="launcher_description">这是一个虚拟键盘软件。点击按钮进入系统设置,然后启用 Unexpected-Keyboard 即可使用。</string>
|
||||||
<string name="launcher_sourcecode">这是一个免费且开源的软件。你可以在 <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a> 上找到源代码或者反馈 bug。</string>
|
<string name="launcher_sourcecode">这是一个免费且开源的软件。你可以在 Github 上找到源代码或者反馈 bug。</string>
|
||||||
<string name="launcher_tryhere">启用键盘后,可以在这里测试效果:</string>
|
<string name="launcher_tryhere">启用键盘后,可以在这里测试效果:</string>
|
||||||
|
<!-- <string name="key_descr_capslock">Caps lock</string> -->
|
||||||
|
<!-- <string name="key_descr_switch_greekmath">Greek & math symbols</string> -->
|
||||||
|
<!-- <string name="key_descr_voice_typing">Voice typing</string> -->
|
||||||
|
<!-- <string name="key_descr_copy">Copy</string> -->
|
||||||
|
<!-- <string name="key_descr_paste">Paste</string> -->
|
||||||
|
<!-- <string name="key_descr_cut">Cut</string> -->
|
||||||
|
<!-- <string name="key_descr_selectAll">Select all</string> -->
|
||||||
|
<!-- <string name="key_descr_shareText">Share text</string> -->
|
||||||
|
<!-- <string name="key_descr_pasteAsPlainText">Paste as plain text</string> -->
|
||||||
|
<!-- <string name="key_descr_undo">Undo</string> -->
|
||||||
|
<!-- <string name="key_descr_redo">Redo</string> -->
|
||||||
|
<!-- <string name="key_descr_replaceText">Replace</string> -->
|
||||||
|
<!-- <string name="key_descr_textAssist">Assist</string> -->
|
||||||
|
<!-- <string name="key_descr_autofill">Autofill</string> -->
|
||||||
|
<!-- <string name="key_descr_ª">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_º">Ordinal Indicator</string> -->
|
||||||
|
<!-- <string name="key_descr_superscript">Superscript</string> -->
|
||||||
|
<!-- <string name="key_descr_subscript">Subscript</string> -->
|
||||||
|
<string name="pref_category_advanced">高级设置</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -1,10 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string-array name="pref_accents_entries">
|
|
||||||
<item>@string/pref_accents_e_all_installed</item>
|
|
||||||
<item>@string/pref_accents_e_selected</item>
|
|
||||||
<item>@string/pref_accents_e_none</item>
|
|
||||||
</string-array>
|
|
||||||
<string-array name="pref_show_numpad_values">
|
<string-array name="pref_show_numpad_values">
|
||||||
<item>never</item>
|
<item>never</item>
|
||||||
<item>landscape</item>
|
<item>landscape</item>
|
||||||
@@ -23,11 +18,6 @@
|
|||||||
<item>@string/pref_numpad_layout_e_high_first</item>
|
<item>@string/pref_numpad_layout_e_high_first</item>
|
||||||
<item>@string/pref_numpad_layout_e_low_first</item>
|
<item>@string/pref_numpad_layout_e_low_first</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="pref_accents_values">
|
|
||||||
<item>1</item>
|
|
||||||
<item>2</item>
|
|
||||||
<item>4</item>
|
|
||||||
</string-array>
|
|
||||||
<string-array name="pref_theme_entries">
|
<string-array name="pref_theme_entries">
|
||||||
<item>@string/pref_theme_e_system</item>
|
<item>@string/pref_theme_e_system</item>
|
||||||
<item>@string/pref_theme_e_dark</item>
|
<item>@string/pref_theme_e_dark</item>
|
||||||
|
@@ -3,7 +3,4 @@
|
|||||||
<declare-styleable name="ExtraKeyCheckBoxPreference">
|
<declare-styleable name="ExtraKeyCheckBoxPreference">
|
||||||
<attr name="index" format="integer"/>
|
<attr name="index" format="integer"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
<declare-styleable name="LayoutListPreference">
|
|
||||||
<attr name="defaultString" format="string"/>
|
|
||||||
</declare-styleable>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<!--DO NOT EDIT. This file is generated, see gen_layouts.py.-->
|
<!--DO NOT EDIT. This file is generated, see gen_layouts.py.-->
|
||||||
<string-array name="pref_layout_values">
|
<string-array name="pref_layout_values">
|
||||||
<item>none</item>
|
<item>system</item>
|
||||||
<item>latn_qwerty_us</item>
|
<item>latn_qwerty_us</item>
|
||||||
<item>latn_colemak</item>
|
<item>latn_colemak</item>
|
||||||
<item>latn_dvorak</item>
|
<item>latn_dvorak</item>
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
<item>hebr_1_il</item>
|
<item>hebr_1_il</item>
|
||||||
<item>hebr_2_il</item>
|
<item>hebr_2_il</item>
|
||||||
<item>latn_azerty_fr</item>
|
<item>latn_azerty_fr</item>
|
||||||
|
<item>latn_bepo_fr</item>
|
||||||
<item>latn_bone</item>
|
<item>latn_bone</item>
|
||||||
<item>latn_neo2</item>
|
<item>latn_neo2</item>
|
||||||
<item>latn_qwerty_br</item>
|
<item>latn_qwerty_br</item>
|
||||||
@@ -38,18 +39,20 @@
|
|||||||
<item>latn_qwertz_cz</item>
|
<item>latn_qwertz_cz</item>
|
||||||
<item>latn_qwertz_cz_multifunctional</item>
|
<item>latn_qwertz_cz_multifunctional</item>
|
||||||
<item>latn_qwertz_de</item>
|
<item>latn_qwertz_de</item>
|
||||||
|
<item>latn_qwertz_fr_ch</item>
|
||||||
<item>latn_qwertz_hu</item>
|
<item>latn_qwertz_hu</item>
|
||||||
<item>latn_qwertz_sk</item>
|
<item>latn_qwertz_sk</item>
|
||||||
|
<item>urdu_phonetic_ur</item>
|
||||||
<item>custom</item>
|
<item>custom</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="pref_layout_entries">
|
<string-array name="pref_layout_entries">
|
||||||
<item>None</item>
|
<item>@string/pref_layout_e_system</item>
|
||||||
<item>QWERTY (US)</item>
|
<item>QWERTY (US)</item>
|
||||||
<item>Colemak</item>
|
<item>Colemak</item>
|
||||||
<item>Dvorak</item>
|
<item>Dvorak</item>
|
||||||
<item>Arabic Alt</item>
|
<item>Arabic Alt</item>
|
||||||
<item>Arabic PC</item>
|
<item>Arabic PC</item>
|
||||||
<item>Arabic (کوردی)</item>
|
<item>Kurdish (کوردی)</item>
|
||||||
<item>Persian PC</item>
|
<item>Persian PC</item>
|
||||||
<item>বাংলা (জাতীয়)</item>
|
<item>বাংলা (জাতীয়)</item>
|
||||||
<item>বাংলা (প্রভাত)</item>
|
<item>বাংলা (প্রভাত)</item>
|
||||||
@@ -63,6 +66,7 @@
|
|||||||
<item>Hebrew 1</item>
|
<item>Hebrew 1</item>
|
||||||
<item>Hebrew 2</item>
|
<item>Hebrew 2</item>
|
||||||
<item>AZERTY (Français)</item>
|
<item>AZERTY (Français)</item>
|
||||||
|
<item>BEPO (Français)</item>
|
||||||
<item>Bone</item>
|
<item>Bone</item>
|
||||||
<item>Neo 2</item>
|
<item>Neo 2</item>
|
||||||
<item>QWERTY (Brasileiro)</item>
|
<item>QWERTY (Brasileiro)</item>
|
||||||
@@ -79,8 +83,10 @@
|
|||||||
<item>QWERTZ (Czech)</item>
|
<item>QWERTZ (Czech)</item>
|
||||||
<item>QWERTZ Multifunctional (Czech)</item>
|
<item>QWERTZ Multifunctional (Czech)</item>
|
||||||
<item>QWERTZ (Deutsch)</item>
|
<item>QWERTZ (Deutsch)</item>
|
||||||
|
<item>QWERTZ (Swiss French)</item>
|
||||||
<item>QWERTZ (Magyar)</item>
|
<item>QWERTZ (Magyar)</item>
|
||||||
<item>QWERTZ (Slovak)</item>
|
<item>QWERTZ (Slovak)</item>
|
||||||
|
<item>Urdu Phonetic</item>
|
||||||
<item>@string/pref_layout_e_custom</item>
|
<item>@string/pref_layout_e_custom</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<integer-array name="layout_ids">
|
<integer-array name="layout_ids">
|
||||||
@@ -104,6 +110,7 @@
|
|||||||
<item>@xml/hebr_1_il</item>
|
<item>@xml/hebr_1_il</item>
|
||||||
<item>@xml/hebr_2_il</item>
|
<item>@xml/hebr_2_il</item>
|
||||||
<item>@xml/latn_azerty_fr</item>
|
<item>@xml/latn_azerty_fr</item>
|
||||||
|
<item>@xml/latn_bepo_fr</item>
|
||||||
<item>@xml/latn_bone</item>
|
<item>@xml/latn_bone</item>
|
||||||
<item>@xml/latn_neo2</item>
|
<item>@xml/latn_neo2</item>
|
||||||
<item>@xml/latn_qwerty_br</item>
|
<item>@xml/latn_qwerty_br</item>
|
||||||
@@ -120,8 +127,10 @@
|
|||||||
<item>@xml/latn_qwertz_cz</item>
|
<item>@xml/latn_qwertz_cz</item>
|
||||||
<item>@xml/latn_qwertz_cz_multifunctional</item>
|
<item>@xml/latn_qwertz_cz_multifunctional</item>
|
||||||
<item>@xml/latn_qwertz_de</item>
|
<item>@xml/latn_qwertz_de</item>
|
||||||
|
<item>@xml/latn_qwertz_fr_ch</item>
|
||||||
<item>@xml/latn_qwertz_hu</item>
|
<item>@xml/latn_qwertz_hu</item>
|
||||||
<item>@xml/latn_qwertz_sk</item>
|
<item>@xml/latn_qwertz_sk</item>
|
||||||
|
<item>@xml/urdu_phonetic_ur</item>
|
||||||
<item>-1</item>
|
<item>-1</item>
|
||||||
</integer-array>
|
</integer-array>
|
||||||
</resources>
|
</resources>
|
@@ -10,13 +10,12 @@
|
|||||||
<string name="pref_keyboard_opacity">Adjust keyboard background opacity</string>
|
<string name="pref_keyboard_opacity">Adjust keyboard background opacity</string>
|
||||||
<string name="pref_key_opacity">Adjust key opacity</string>
|
<string name="pref_key_opacity">Adjust key opacity</string>
|
||||||
<string name="pref_key_activated_opacity">Adjust pressed key opacity</string>
|
<string name="pref_key_activated_opacity">Adjust pressed key opacity</string>
|
||||||
<string name="pref_layout_title">Change keyboard layout</string>
|
|
||||||
<string name="pref_layout_e_system">System settings</string>
|
<string name="pref_layout_e_system">System settings</string>
|
||||||
<string name="pref_layout_e_custom">Custom layout</string>
|
<string name="pref_layout_e_custom">Custom layout</string>
|
||||||
<string name="pref_accents_title">Accents</string>
|
<string name="pref_layouts_add">Add an alternate layout</string>
|
||||||
<string name="pref_accents_e_all_installed">Show accents for all installed languages</string>
|
<string name="pref_layouts_item">Layout %1$d: %2$s</string>
|
||||||
<string name="pref_accents_e_selected">Only show accents for the selected language</string>
|
<string name="pref_layouts_remove_custom">Remove layout</string>
|
||||||
<string name="pref_accents_e_none">Hide accents</string>
|
<string name="pref_custom_layout_title">Custom layout</string>
|
||||||
<string name="pref_show_numpad_title">Show NumPad</string>
|
<string name="pref_show_numpad_title">Show NumPad</string>
|
||||||
<string name="pref_show_numpad_never">Never</string>
|
<string name="pref_show_numpad_never">Never</string>
|
||||||
<string name="pref_show_numpad_landscape">Only in landscape mode</string>
|
<string name="pref_show_numpad_landscape">Only in landscape mode</string>
|
||||||
@@ -27,6 +26,8 @@
|
|||||||
<string name="pref_numpad_layout_e_high_first">High digits first</string>
|
<string name="pref_numpad_layout_e_high_first">High digits first</string>
|
||||||
<string name="pref_numpad_layout_e_low_first">Low digits first</string>
|
<string name="pref_numpad_layout_e_low_first">Low digits first</string>
|
||||||
<string name="pref_extra_keys_title">Add keys to the keyboard</string>
|
<string name="pref_extra_keys_title">Add keys to the keyboard</string>
|
||||||
|
<string name="pref_extra_keys_custom">Add custom keys</string>
|
||||||
|
<string name="pref_extra_keys_internal">Select keys to add to the keyboard</string>
|
||||||
<string name="pref_second_layout_title">Secondary layout</string>
|
<string name="pref_second_layout_title">Secondary layout</string>
|
||||||
<string name="pref_second_layout_none">None</string>
|
<string name="pref_second_layout_none">None</string>
|
||||||
<string name="pref_category_typing">Typing</string>
|
<string name="pref_category_typing">Typing</string>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
<string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string>
|
<string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string>
|
||||||
<string name="pref_vibrate_title">Vibration</string>
|
<string name="pref_vibrate_title">Vibration</string>
|
||||||
<string name="pref_vibrate_summary">Enable/disable vibration on keypress</string>
|
<string name="pref_vibrate_summary">Enable/disable vibration on keypress</string>
|
||||||
|
<string name="pref_pin_entry_enabled_title">Pin entry layout</string>
|
||||||
|
<string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string>
|
||||||
<string name="pref_category_style">Style</string>
|
<string name="pref_category_style">Style</string>
|
||||||
<string name="pref_margin_bottom_title">Margin bottom</string>
|
<string name="pref_margin_bottom_title">Margin bottom</string>
|
||||||
<string name="pref_keyboard_height_title">Keyboard height</string>
|
<string name="pref_keyboard_height_title">Keyboard height</string>
|
||||||
@@ -64,9 +67,6 @@
|
|||||||
<string name="pref_swipe_dist_e_very_far">Very far</string>
|
<string name="pref_swipe_dist_e_very_far">Very far</string>
|
||||||
<string name="pref_key_horizontal_space">Horizontal spacing between the keys</string>
|
<string name="pref_key_horizontal_space">Horizontal spacing between the keys</string>
|
||||||
<string name="pref_key_vertical_space">Vertical spacing between the keys</string>
|
<string name="pref_key_vertical_space">Vertical spacing between the keys</string>
|
||||||
<string name="pref_category_advanced">Advanced</string>
|
|
||||||
<string name="pref_custom_layout_title">Custom layout</string>
|
|
||||||
<string name="pref_custom_layout_summary">See the source code. This option is not meant to be used.</string>
|
|
||||||
<string name="pref_vibration_e_disabled">Disabled</string>
|
<string name="pref_vibration_e_disabled">Disabled</string>
|
||||||
<string name="pref_vibration_e_system">System</string>
|
<string name="pref_vibration_e_system">System</string>
|
||||||
<string name="pref_vibration_e_strong">Strong</string>
|
<string name="pref_vibration_e_strong">Strong</string>
|
||||||
@@ -80,6 +80,26 @@
|
|||||||
<string name="key_action_send">Send</string>
|
<string name="key_action_send">Send</string>
|
||||||
<string name="launcher_button_imesettings">Enable keyboard</string>
|
<string name="launcher_button_imesettings">Enable keyboard</string>
|
||||||
<string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string>
|
<string name="launcher_description">This application is a virtual keyboard. Go to the system settings by clicking on the button below and enable Unexpected-Keyboard.</string>
|
||||||
<string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on <a href="https://github.com/Julow/Unexpected-Keyboard/">Github</a>.</string>
|
<string name="launcher_sourcecode">This is an free and open source application. You can find the source code or report bugs on Github.</string>
|
||||||
<string name="launcher_tryhere">After enabling, you can try the keyboard here:</string>
|
<string name="launcher_tryhere">After enabling, you can try the keyboard here:</string>
|
||||||
|
<string name="key_descr_capslock">Caps lock</string>
|
||||||
|
<string name="key_descr_switch_greekmath">Greek & math symbols</string>
|
||||||
|
<string name="key_descr_voice_typing">Voice typing</string>
|
||||||
|
<string name="key_descr_copy">Copy</string>
|
||||||
|
<string name="key_descr_paste">Paste</string>
|
||||||
|
<string name="key_descr_cut">Cut</string>
|
||||||
|
<string name="key_descr_selectAll">Select all</string>
|
||||||
|
<string name="key_descr_shareText">Share text</string>
|
||||||
|
<string name="key_descr_pasteAsPlainText">Paste as plain text</string>
|
||||||
|
<string name="key_descr_undo">Undo</string>
|
||||||
|
<string name="key_descr_redo">Redo</string>
|
||||||
|
<string name="key_descr_replaceText">Replace</string>
|
||||||
|
<string name="key_descr_textAssist">Assist</string>
|
||||||
|
<string name="key_descr_autofill">Autofill</string>
|
||||||
|
<string name="key_descr_ª">Ordinal Indicator</string>
|
||||||
|
<string name="key_descr_º">Ordinal Indicator</string>
|
||||||
|
<string name="key_descr_superscript">Superscript</string>
|
||||||
|
<string name="key_descr_subscript">Subscript</string>
|
||||||
|
<!-- Unused -->
|
||||||
|
<string name="pref_category_advanced">Advanced</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
<dimen name="emoji_type_button_height">56dp</dimen>
|
<dimen name="emoji_type_button_height">56dp</dimen>
|
||||||
<dimen name="emoji_grid_height">250dp</dimen>
|
<dimen name="emoji_grid_height">250dp</dimen>
|
||||||
<dimen name="emoji_text_size">28dp</dimen>
|
<dimen name="emoji_text_size">28dp</dimen>
|
||||||
|
<dimen name="pref_button_size">28dp</dimen>
|
||||||
<bool name="debug_logs" product="debug">true</bool>
|
<bool name="debug_logs" product="debug">true</bool>
|
||||||
<bool name="debug_logs" product="default">false</bool>
|
<bool name="debug_logs" product="default">false</bool>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -11,8 +11,8 @@
|
|||||||
<key key0="ه" key1="÷" key2="٨" key3="*"/>
|
<key key0="ه" key1="÷" key2="٨" key3="*"/>
|
||||||
<key key0="خ" key1="×" key2="٩" key3="("/>
|
<key key0="خ" key1="×" key2="٩" key3="("/>
|
||||||
<key key0="ح" key1="؛" key2="٠" key3=")"/>
|
<key key0="ح" key1="؛" key2="٠" key3=")"/>
|
||||||
<key key0="ج" key1=">" key2="-" key3="_"/>
|
<key key0="ج" key1=">" key2="-" key3="_" key4="f11_placeholder"/>
|
||||||
<key key0="د" key1="<" key2="=" key3="ذ"/>
|
<key key0="د" key1="<" key2="=" key3="ذ" key4="f12_placeholder"/>
|
||||||
<!-- <key key0="ذ" key1="ّ" key3="\\" key4="|"/> -->
|
<!-- <key key0="ذ" key1="ّ" key3="\\" key4="|"/> -->
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<keyboard name="Arabic (کوردی)" script="arabic">
|
<keyboard name="Kurdish (کوردی)" script="arabic">
|
||||||
<row>
|
<row>
|
||||||
<key key0="ق" key1="ٯ" key2="١" key3="esc"/>
|
<key key0="ق" key1="ٯ" key2="١" key3="esc"/>
|
||||||
<key key0="و" key1="وو" key2="٢" key3="\@"/>
|
<key key0="و" key1="وو" key2="٢" key3="\@"/>
|
||||||
|
@@ -1,26 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Adapted from standard SIRI 9147 -->
|
<keyboard name="Persian PC" script="persian">
|
||||||
<keyboard name="Persian PC" script="arabic">
|
|
||||||
<row>
|
<row>
|
||||||
<key key0="ض" key2="۱"/>
|
<key key0="ض" key2="۱" key4="esc"/>
|
||||||
<key key0="ص" key2="۲"/>
|
<key key0="ص" key2="۲" key1="~" key3="\@"/>
|
||||||
<key key0="ث" key2="۳"/>
|
<key key0="ث" key2="۳" key1="!" key3="\#"/>
|
||||||
<key key0="ق" key2="۴"/>
|
<key key0="ق" key2="۴" key1="﷼" key3="$"/>
|
||||||
<key key0="ف" key2="۵"/>
|
<key key0="ف" key2="۵" key3="٪"/>
|
||||||
<key key0="غ" key1="۶" key2="،"/>
|
<key key0="غ" key2="۶" key1="،" key3="^"/>
|
||||||
<key key0="ع" key1="۷"/>
|
<key key0="ع" key2="۷" key3="&"/>
|
||||||
<key key0="ه" key1="۸"/>
|
<key key0="ه" key2="۸" key3="*"/>
|
||||||
<key key0="خ" key1="۹"/>
|
<key key0="خ" key2="۹" key3="(" key4=")"/>
|
||||||
<key key0="ح" key1="۰"/>
|
<key key0="ح" key2="۰"/>
|
||||||
<key key0="ج"/>
|
<key key0="ج" key1="f11_placeholder" key3="f12_placeholder"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="ش" key2="\@"/>
|
<key key0="ش" key2="tab"/>
|
||||||
<key key0="س" key2="\#"/>
|
<key key0="س"/>
|
||||||
<key key0="ی" key2="﷼"/>
|
<key key0="ی" key2="ئ"/>
|
||||||
<key key0="ب" key2="٪"/>
|
<key key0="ب"/>
|
||||||
<key key0="ل" key2="&"/>
|
<key key0="ل"/>
|
||||||
<key key0="ا" key1="آ" key2="ء" key4="-"/>
|
<key key0="ا" key1="آ" key4="ء" key2="-" key3="_"/>
|
||||||
<key key0="ت" key1="‌" key2="+"/>
|
<key key0="ت" key1="‌" key2="+"/>
|
||||||
<key key0="ن" key1="("/>
|
<key key0="ن" key1="("/>
|
||||||
<key key0="م" key1=")"/>
|
<key key0="م" key1=")"/>
|
||||||
@@ -28,15 +27,15 @@
|
|||||||
<key key0="گ"/>
|
<key key0="گ"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="ظ" key2="؟"/>
|
<key key0="ظ"/>
|
||||||
<key key0="ط"/>
|
<key key0="ط"/>
|
||||||
<key key0="ز" key2="«"/>
|
<key key0="ز" key2="«"/>
|
||||||
<key key0="ر" key2="»"/>
|
<key key0="ر" key2="»"/>
|
||||||
<key key0="ژ" key2="."/>
|
<key key0="ژ" key2="."/>
|
||||||
<key key0="ذ" key2=":"/>
|
<key key0="ذ" key2=":"/>
|
||||||
<key key0="د" key1="؛"/>
|
<key key0="د" key2="؛"/>
|
||||||
<key key0="پ" key1="!"/>
|
<key key0="پ" key2="؟"/>
|
||||||
<key key0="و" key1="ـ"/>
|
<key key0="و"/>
|
||||||
<key key0="چ"/>
|
<key key0="چ"/>
|
||||||
<key width="1.0" key0="backspace" key2="delete"/>
|
<key width="1.0" key0="backspace" key2="delete"/>
|
||||||
</row>
|
</row>
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<row height="0.95">
|
<row height="0.95">
|
||||||
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key4="switch_numeric"/>
|
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key4="switch_numeric"/>
|
||||||
<key width="1.1" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
<key width="1.1" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
||||||
<key width="4.4" key0="space" key7="switch_second" key5="left" key6="right" slider="true"/>
|
<key width="4.4" key0="space" key7="switch_forward" key8="switch_backward" key5="cursor_left" key6="cursor_right" slider="true"/>
|
||||||
<key width="1.1" key0="loc voice_typing" key7="up" key6="right" key5="left" key8="down"/>
|
<key width="1.1" key7="up" key6="right" key5="left" key8="down"/>
|
||||||
<key width="1.7" key0="enter" key2="action"/>
|
<key width="1.7" key0="enter" key1="loc voice_typing" key2="action"/>
|
||||||
</row>
|
</row>
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="2.0" key0="shift" key2="loc capslock"/>
|
<key width="2.0" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="w" key3="<" key4=">"/>
|
<key key0="w" key3="<" key4=">"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key1="loc †"/>
|
||||||
<key key0="c" key1="accent_cedille" key3="," key4="\?"/>
|
<key key0="c" key1="accent_cedille" key3="," key4="\?"/>
|
||||||
<key key0="v" key3=";" key4="."/>
|
<key key0="v" key3=";" key4="."/>
|
||||||
<key key0="b" key3=":" key4="/"/>
|
<key key0="b" key3=":" key4="/"/>
|
||||||
|
40
res/xml/latn_bepo_fr.xml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Inspired by the bépo layout, but adapted to smartphone -->
|
||||||
|
<keyboard name="BEPO (Français)" script="latin">
|
||||||
|
<row>
|
||||||
|
<key width="1.1" key0="b" key1="esc" key2="1" key4="|"/>
|
||||||
|
<key width="1.1" key0="é" key2="2" key4="è"/>
|
||||||
|
<key width="1.1" key0="p" key2="3"/>
|
||||||
|
<key width="1.1" key0="o" key2="4" key4="accent_circonflexe"/>
|
||||||
|
<key width="1.1" key0="v" key2="5" key4="{"/>
|
||||||
|
<key width="1.1" key0="d" key2="6" key4="}"/>
|
||||||
|
<key width="1.1" key0="l" key2="7" key4="("/>
|
||||||
|
<key width="1.1" key0="j" key2="8" key4=")"/>
|
||||||
|
<key width="1.1" key0="z" key2="9" key4="["/>
|
||||||
|
<key width="1.1" key0="w" key2="0" key4="]"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key width="1.1" key0="a" key1="tab" key4="à"/>
|
||||||
|
<key width="1.1" key0="u" key1="$" key4="ù"/>
|
||||||
|
<key width="1.1" key0="i" key4="&"/>
|
||||||
|
<key width="1.1" key0="e" key1="+" key2="accent_trema" key4="€"/>
|
||||||
|
<key width="1.1" key0="c" key1="=" key4="ç"/>
|
||||||
|
<key width="1.1" key0="t" key1="^" key4=";"/>
|
||||||
|
<key width="1.1" key0="s" key4="!"/>
|
||||||
|
<key width="1.1" key0="r" key4="\?"/>
|
||||||
|
<key width="1.1" key0="n" key1="`" key2="'" key4=":"/>
|
||||||
|
<key width="1.1" key0="m" key2="""/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key width="1.5" key0="shift" key2="capslock" key3="<"/>
|
||||||
|
<key key0="y" key4="%"/>
|
||||||
|
<key key0="x" key4="\@"/>
|
||||||
|
<key key0="k" key4="~"/>
|
||||||
|
<key key0="." key1="\#" key4="," key6="-" key8="_"/>
|
||||||
|
<key key0="q" key4="*"/>
|
||||||
|
<key key0="g" key3="/" key4="\\"/>
|
||||||
|
<key key0="h"/>
|
||||||
|
<key key0="f"/>
|
||||||
|
<key width="1.5" key0="backspace" key2="delete" key3=">"/>
|
||||||
|
</row>
|
||||||
|
</keyboard>
|
@@ -39,7 +39,7 @@
|
|||||||
<row height="0.95">
|
<row height="0.95">
|
||||||
<key width="1.8" key0="ctrl" key2="loc meta" key4="switch_numeric"/>
|
<key width="1.8" key0="ctrl" key2="loc meta" key4="switch_numeric"/>
|
||||||
<key width="1.2" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
<key width="1.2" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
||||||
<key width="4.0" key0="space" key7="switch_second" key8="0"/>
|
<key width="4.0" key0="space" key7="switch_forward" key8="0"/>
|
||||||
<key width="1.2" key7="up" key6="right" key5="left" key8="down"/>
|
<key width="1.2" key7="up" key6="right" key5="left" key8="down"/>
|
||||||
<key width="1.8" key0="enter" key3="action"/>
|
<key width="1.8" key0="enter" key3="action"/>
|
||||||
</row>
|
</row>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
<row height="0.95">
|
<row height="0.95">
|
||||||
<key width="1.8" key0="ctrl" key2="loc meta" key4="switch_numeric"/>
|
<key width="1.8" key0="ctrl" key2="loc meta" key4="switch_numeric"/>
|
||||||
<key width="1.2" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
<key width="1.2" key0="fn" key1="loc alt" key2="change_method" key3="switch_emoji" key4="config"/>
|
||||||
<key width="4.0" key0="space" key7="switch_second"/>
|
<key width="4.0" key0="space" key7="switch_second" key8="switch_backward"/>
|
||||||
<key width="1.2" key7="up" key6="right" key5="left" key8="down"/>
|
<key width="1.2" key7="up" key6="right" key5="left" key8="down"/>
|
||||||
<key key0="j" key4=";"/>
|
<key key0="j" key4=";"/>
|
||||||
<key width="1.8" key0="enter" key2="action"/>
|
<key width="1.8" key0="enter" key2="action"/>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="a" key2="tab" key4="`"/>
|
<key key0="a" key2="tab" key4="`"/>
|
||||||
<key key0="s" key1="'" key3="loc ß" key4="accent_cedille"/>
|
<key key0="s" key1="'" key2="loc §" key3="loc ß" key4="accent_cedille"/>
|
||||||
<key key0="d" key1="""/>
|
<key key0="d" key1="""/>
|
||||||
<key key0="f"/>
|
<key key0="f"/>
|
||||||
<key key0="g"/>
|
<key key0="g"/>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c"/>
|
<key key0="c"/>
|
||||||
<key key0="v"/>
|
<key key0="v"/>
|
||||||
<key key0="b"/>
|
<key key0="b"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="a" key2="tab" key4="`"/>
|
<key key0="a" key2="tab" key4="`"/>
|
||||||
<key key0="s" key2="¡" key3="loc ß"/>
|
<key key0="s" key1="loc §" key2="¡" key3="loc ß"/>
|
||||||
<key key0="d" key1="accent_grave" key3="accent_aigu"/>
|
<key key0="d" key1="accent_grave" key3="accent_aigu"/>
|
||||||
<key key0="f"/>
|
<key key0="f"/>
|
||||||
<key key0="g" key2="-" key3="_"/>
|
<key key0="g" key2="-" key3="_"/>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key1="loc †"/>
|
||||||
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/" key4="¿"/>
|
<key key0="b" key2="\?" key3="/" key4="¿"/>
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z" key3="<" key4=">"/>
|
<key key0="z" key3="<" key4=">"/>
|
||||||
<key key0="x" key4="\#"/>
|
<key key0="x" key1="loc †" key4="\#"/>
|
||||||
<key key0="c" key4="&"/>
|
<key key0="c" key4="&"/>
|
||||||
<key key0="v" key4="\@"/>
|
<key key0="v" key4="\@"/>
|
||||||
<key key0="b" key1="\?" key3="," key4=";"/>
|
<key key0="b" key1="\?" key3="," key4=";"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="ā" key2="tab"/>
|
<key shift="0.5" key0="a" key1="ā" key2="tab"/>
|
||||||
<key key0="s" key1="š" key3="loc ß" key4="loc accent_ogonek"/>
|
<key key0="s" key1="š" key2="loc §" key3="loc ß" key4="loc accent_ogonek"/>
|
||||||
<key key0="d"/>
|
<key key0="d"/>
|
||||||
<key key0="f" key1="loc accent_dot_above"/>
|
<key key0="f" key1="loc accent_dot_above"/>
|
||||||
<key key0="g" key1="ģ"/>
|
<key key0="g" key1="ģ"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z" key1="ž"/>
|
<key key0="z" key1="ž"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c" key1="č"/>
|
<key key0="c" key1="č"/>
|
||||||
<key key0="v"/>
|
<key key0="v"/>
|
||||||
<key key0="b" key2="\?" key3="<" key4=">"/>
|
<key key0="b" key2="\?" key3="<" key4=">"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="`" key3="æ" key4="å"/>
|
<key shift="0.5" key0="a" key1="tab" key2="`" key3="æ" key4="å"/>
|
||||||
<key key0="s" key1="loc accent_ring" key3="loc ß" key4="loc accent_ogonek"/>
|
<key key0="s" key1="loc accent_ring" key2="loc §" key3="loc ß" key4="loc accent_ogonek"/>
|
||||||
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
||||||
<key key0="f" key1="loc accent_dot_above"/>
|
<key key0="f" key1="loc accent_dot_above"/>
|
||||||
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="`" key4="ą"/>
|
<key shift="0.5" key0="a" key1="tab" key2="`" key4="ą"/>
|
||||||
<key key0="s" key1="loc accent_ring" key3="loc ß" key4="ś"/>
|
<key key0="s" key1="loc accent_ring" key2="loc §" key3="loc ß" key4="ś"/>
|
||||||
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
||||||
<key key0="f" key1="loc accent_dot_above" key4="loc accent_ogonek"/>
|
<key key0="f" key1="loc accent_dot_above" key4="loc accent_ogonek"/>
|
||||||
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z" key4="ż"/>
|
<key key0="z" key4="ż"/>
|
||||||
<key key0="x" key4="ź"/>
|
<key key0="x" key2="loc †" key4="ź"/>
|
||||||
<key key0="c" key1="loc accent_cedille" key2="<" key3="." key4="ć"/>
|
<key key0="c" key1="loc accent_cedille" key2="<" key3="." key4="ć"/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="â" key2="ă" key3="`" key4="tab"/>
|
<key shift="0.5" key0="a" key1="â" key2="ă" key3="`" key4="tab"/>
|
||||||
<key key0="s" key1="ș" key3="loc ß" key4="loc accent_ogonek"/>
|
<key key0="s" key1="ș" key2="loc §" key3="loc ß" key4="loc accent_ogonek"/>
|
||||||
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
||||||
<key key0="f" key1="loc accent_dot_above"/>
|
<key key0="f" key1="loc accent_dot_above"/>
|
||||||
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="a" key2="tab"/>
|
<key key0="a" key2="tab"/>
|
||||||
<key key0="s" key1="accent_ring" key3="loc ß"/>
|
<key key0="s" key1="accent_ring" key2="loc §" key3="loc ß"/>
|
||||||
<key key0="d" key3="accent_aigu"/>
|
<key key0="d" key3="accent_aigu"/>
|
||||||
<key key0="f" key1="accent_trema"/>
|
<key key0="f" key1="accent_trema"/>
|
||||||
<key key0="g"/>
|
<key key0="g"/>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c"/>
|
<key key0="c"/>
|
||||||
<key key0="v"/>
|
<key key0="v"/>
|
||||||
<key key0="b" key2=";" key4=","/>
|
<key key0="b" key2=";" key4=","/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="`"/>
|
<key shift="0.5" key0="a" key1="tab" key2="`"/>
|
||||||
<key key0="s" key1="ş"/>
|
<key key0="s" key1="ş" key2="loc §"/>
|
||||||
<key key0="d"/>
|
<key key0="d"/>
|
||||||
<key key0="f"/>
|
<key key0="f"/>
|
||||||
<key key0="g" key1="ğ" key2="-" key3="_"/>
|
<key key0="g" key1="ğ" key2="-" key3="_"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c" key1="ç" key2="<" key3="."/>
|
<key key0="c" key1="ç" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -35,7 +35,7 @@ See srcs/juloo.keyboard2/KeyValue.java for the keys that have a special meaning.
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="`"/>
|
<key shift="0.5" key0="a" key1="tab" key2="`"/>
|
||||||
<key key0="s" key1="loc accent_ring" key3="loc ß" key4="loc accent_ogonek"/>
|
<key key0="s" key1="loc accent_ring" key2="loc §" key3="loc ß" key4="loc accent_ogonek"/>
|
||||||
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
<key key0="d" key1="loc accent_grave" key2="loc £" key3="loc accent_aigu"/>
|
||||||
<key key0="f" key1="loc accent_dot_above"/>
|
<key key0="f" key1="loc accent_dot_above"/>
|
||||||
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
<key key0="g" key1="loc accent_caron" key2="-" key3="_"/>
|
||||||
@@ -47,7 +47,7 @@ See srcs/juloo.keyboard2/KeyValue.java for the keys that have a special meaning.
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key2="loc †"/>
|
||||||
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
<key key0="c" key1="loc accent_cedille" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="ă" key3="â"/>
|
<key shift="0.5" key0="a" key1="tab" key2="ă" key3="â"/>
|
||||||
<key key0="s" key1="accent_aigu"/>
|
<key key0="s" key1="accent_aigu" key2="loc §"/>
|
||||||
<key key0="d" key1="accent_bar" key2="₫" key3="đ"/>
|
<key key0="d" key1="accent_bar" key2="₫" key3="đ"/>
|
||||||
<key key0="f" key1="accent_grave"/>
|
<key key0="f" key1="accent_grave"/>
|
||||||
<key key0="g" key2="-" key3="_"/>
|
<key key0="g" key2="-" key3="_"/>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="z"/>
|
<key key0="z"/>
|
||||||
<key key0="x" key1="accent_tilde"/>
|
<key key0="x" key1="accent_tilde" key2="loc †"/>
|
||||||
<key key0="c" key2="<" key3="."/>
|
<key key0="c" key2="<" key3="."/>
|
||||||
<key key0="v" key2=">" key3=","/>
|
<key key0="v" key2=">" key3=","/>
|
||||||
<key key0="b" key2="\?" key3="/"/>
|
<key key0="b" key2="\?" key3="/"/>
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="y" key1=">" key2="|" key3="<"/>
|
<key key0="y" key1=">" key2="|" key3="<"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key1="loc †"/>
|
||||||
<key key0="c"/>
|
<key key0="c"/>
|
||||||
<key key0="v" />
|
<key key0="v" />
|
||||||
<key key0="b" key1=";" key3=","/>
|
<key key0="b" key1=";" key3=","/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="0.5" key0="a" key1="tab" key2="á" key3=";"/>
|
<key shift="0.5" key0="a" key1="tab" key2="á" key3=";"/>
|
||||||
<key key0="s" key4="š"/>
|
<key key0="s" key1="loc §" key4="š"/>
|
||||||
<key key0="d" key4="ď"/>
|
<key key0="d" key4="ď"/>
|
||||||
<key key0="f" key3="["/>
|
<key key0="f" key3="["/>
|
||||||
<key key0="g" key3="]"/>
|
<key key0="g" key3="]"/>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="y" key2="ý"/>
|
<key key0="y" key2="ý"/>
|
||||||
<key key0="x" key3="\#"/>
|
<key key0="x" key1="loc †" key3="\#"/>
|
||||||
<key key0="c" key3="&" key4="č"/>
|
<key key0="c" key3="&" key4="č"/>
|
||||||
<key key0="v" key3="\@"/>
|
<key key0="v" key3="\@"/>
|
||||||
<key key0="b" key1="<" key2=">" key3="{" key4="}"/>
|
<key key0="b" key1="<" key2=">" key3="{" key4="}"/>
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="y" key1="÷" key2="ý"/>
|
<key key0="y" key1="÷" key2="ý"/>
|
||||||
<key key0="x" key1="∙" key3="×"/>
|
<key key0="x" key1="∙" key3="×" key4="loc †"/>
|
||||||
<key key0="c" key1="\#" key2="γ" key3="&" key4="č"/>
|
<key key0="c" key1="\#" key2="γ" key3="&" key4="č"/>
|
||||||
<key key0="v" key1="|" key3="\@"/>
|
<key key0="v" key1="|" key3="\@"/>
|
||||||
<key key0="b" key1=";" key2="♭" key3=":" key4="β"/>
|
<key key0="b" key1=";" key2="♭" key3=":" key4="β"/>
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key shift="0.5" key0="y" key1=">" key2="|" key3="<"/>
|
<key shift="0.5" key0="y" key1=">" key2="|" key3="<"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key1="loc †"/>
|
||||||
<key key0="c"/>
|
<key key0="c"/>
|
||||||
<key key0="v"/>
|
<key key0="v"/>
|
||||||
<key key0="b" key1=";" key3=","/>
|
<key key0="b" key1=";" key3=","/>
|
||||||
|
42
res/xml/latn_qwertz_fr_ch.xml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Freely adapted from standard SN 074021:1999-01 by Eluc -->
|
||||||
|
<keyboard name="QWERTZ (Swiss French)" script="latin">
|
||||||
|
<row>
|
||||||
|
<key key0="q" key1="§" key2="1" key4="esc"/>
|
||||||
|
<key key0="w" key1="^" key2="2" key3=""" key4="\@"/>
|
||||||
|
<key key0="e" key2="3" key3="\#" key4="€"/>
|
||||||
|
<key key0="r" key2="4" key3="$" key4="f11_placeholder"/>
|
||||||
|
<key key0="t" key2="5" key3="%" key4="f12_placeholder"/>
|
||||||
|
<key key0="z" key2="6" key3="&"/>
|
||||||
|
<key key0="u" key1="ù" key2="7" key3="{" key4="}"/>
|
||||||
|
<key key0="i" key2="8" key3="[" key4="]"/>
|
||||||
|
<key key0="o" key1="œ" key2="9" key3="(" key4=")"/>
|
||||||
|
<key key0="p" key2="0" key3="=" key4="\?"/>
|
||||||
|
<key key0="è" key2="ü" key3="!"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key key0="a" key1="æ" key2="tab"/>
|
||||||
|
<key key0="s" key1="`" key3="ß" key4="£"/>
|
||||||
|
<key key0="d"/>
|
||||||
|
<key key0="f" key1="~"/>
|
||||||
|
<key key0="g"/>
|
||||||
|
<key key0="h" key3="+"/>
|
||||||
|
<key key0="j" key3="*"/>
|
||||||
|
<key key0="k" key3="/"/>
|
||||||
|
<key key0="l" key1="'" key3="\\"/>
|
||||||
|
<key key0="é" key1="ë" key2="ö"/>
|
||||||
|
<key key0="à" key1="ï" key2="ä"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
|
<key key0="y" key1=">" key2="|" key3="<"/>
|
||||||
|
<key key0="x"/>
|
||||||
|
<key key0="c" key3="ç"/>
|
||||||
|
<key key0="v"/>
|
||||||
|
<key key0="b" key1=";" key3=","/>
|
||||||
|
<key key0="n" key1=":" key3="."/>
|
||||||
|
<key key0="m" key1="_" key3="-"/>
|
||||||
|
<key key0="ê" key1="â" key2="î" key3="ô" key4="û"/>
|
||||||
|
<key width="1.5" key0="backspace" key2="delete"/>
|
||||||
|
</row>
|
||||||
|
</keyboard>
|
@@ -26,7 +26,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
<key key0="y" key3="<" key4=">"/>
|
<key key0="y" key3="<" key4=">"/>
|
||||||
<key key0="x" key4="\#"/>
|
<key key0="x" key1="loc †" key4="\#"/>
|
||||||
<key key0="c" key4="&"/>
|
<key key0="c" key4="&"/>
|
||||||
<key key0="v" key4="\@"/>
|
<key key0="v" key4="\@"/>
|
||||||
<key key0="b" key1="\?" key3="," key4=";"/>
|
<key key0="b" key1="\?" key3="," key4=";"/>
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key key0="a" key1="tab" key3="á" key4="ä"/>
|
<key key0="a" key1="tab" key3="á" key4="ä"/>
|
||||||
<key key0="s" key3="ś" key4="š"/>
|
<key key0="s" key1="loc §" key3="ś" key4="š"/>
|
||||||
<key key0="d" key4="ď"/>
|
<key key0="d" key4="ď"/>
|
||||||
<key key0="f" key1="%" key2="*"/>
|
<key key0="f" key1="%" key2="*"/>
|
||||||
<key key0="g" key2="^"/>
|
<key key0="g" key2="^"/>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<row>
|
<row>
|
||||||
<key key0="shift" key2="loc capslock"/>
|
<key key0="shift" key2="loc capslock"/>
|
||||||
<key key0="y" key1="$" key3="ý"/>
|
<key key0="y" key1="$" key3="ý"/>
|
||||||
<key key0="x"/>
|
<key key0="x" key1="loc †"/>
|
||||||
<key key0="c" key4="č"/>
|
<key key0="c" key4="č"/>
|
||||||
<key key0="v" key4="\@"/>
|
<key key0="v" key4="\@"/>
|
||||||
<key key0="b" key1="\#" key2="&" key3="-" key4="_"/>
|
<key key0="b" key1="\#" key2="&" key3="-" key4="_"/>
|
||||||
|
@@ -4,32 +4,34 @@
|
|||||||
<subtype android:label="%s" android:languageTag="be" android:imeSubtypeLocale="be_BY" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_jcuken_ru,extra_keys=ґ|є|і|ї|ў"/>
|
<subtype android:label="%s" android:languageTag="be" android:imeSubtypeLocale="be_BY" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_jcuken_ru,extra_keys=ґ|є|і|ї|ў"/>
|
||||||
<subtype android:label="%s" android:languageTag="bg" android:imeSubtypeLocale="bg_BG" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_yaverti,extra_keys=€"/>
|
<subtype android:label="%s" android:languageTag="bg" android:imeSubtypeLocale="bg_BG" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_yaverti,extra_keys=€"/>
|
||||||
<subtype android:label="%s" android:languageTag="bn" android:imeSubtypeLocale="bn_BD" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=৳"/>
|
<subtype android:label="%s" android:languageTag="bn" android:imeSubtypeLocale="bn_BD" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=৳"/>
|
||||||
<subtype android:label="%s" android:languageTag="cs" android:imeSubtypeLocale="cs_CZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_cz,extra_keys=a|accent_cedille|accent_circonflexe"/>
|
<subtype android:label="%s" android:languageTag="cs" android:imeSubtypeLocale="cs_CZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_cz,extra_keys=accent_aigu:á:é:í:ó:ú:ý|accent_ring:ů|accent_caron:č:ě:ň:ř:š:ž:ď:ť"/>
|
||||||
<subtype android:label="%s" android:languageTag="de" android:imeSubtypeLocale="de_DE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_de,extra_keys=accent_trema|ß|€"/>
|
<subtype android:label="%s" android:languageTag="de" android:imeSubtypeLocale="de_DE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_de,extra_keys=accent_trema:ä:ö:ü|ß|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="el" android:imeSubtypeLocale="el" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=grek_qwerty,extra_keys=£|€"/>
|
<subtype android:label="%s" android:languageTag="el" android:imeSubtypeLocale="el" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=grek_qwerty,extra_keys=£|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="en-GB" android:imeSubtypeLocale="en_GB" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=£|€"/>
|
<subtype android:label="%s" android:languageTag="en-GB" android:imeSubtypeLocale="en_GB" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=£|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="en-US" android:imeSubtypeLocale="en_US" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
|
<subtype android:label="%s" android:languageTag="en-US" android:imeSubtypeLocale="en_US" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
|
||||||
<subtype android:label="%s" android:languageTag="es" android:imeSubtypeLocale="es_ES" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_es,extra_keys=accent_grave|accent_aigu|accent_tilde|accent_trema|€"/>
|
<subtype android:label="%s" android:languageTag="es" android:imeSubtypeLocale="es_ES" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_es,extra_keys=accent_aigu:á:é:í:ó:ú|accent_tilde:ñ|accent_grave|accent_trema|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="fr" android:imeSubtypeLocale="fr_FR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave|accent_aigu|accent_circonflexe|accent_cedille|accent_trema|€"/>
|
<subtype android:label="%s" android:languageTag="fa" android:imeSubtypeLocale="fa_IR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="default_layout=arab_pc_ir"/>
|
||||||
|
<subtype android:label="%s" android:languageTag="fr-CH" android:imeSubtypeLocale="fr_CH" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_fr_ch,extra_keys=accent_grave:à:è:ù|accent_aigu:é|accent_circonflexe:â:ê:ô|accent_cedille:ç|accent_trema:ë:ï:ü:ÿ|€"/>
|
||||||
|
<subtype android:label="%s" android:languageTag="fr-FR" android:imeSubtypeLocale="fr_FR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave:à:è:ù|accent_aigu:é|accent_circonflexe:â:ê:ô|accent_cedille:ç|accent_trema:ë:ï:ü:ÿ|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="he" android:imeSubtypeLocale="he_IL" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hebrew,default_layout=hebr_1_il,extra_keys=₪|€"/>
|
<subtype android:label="%s" android:languageTag="he" android:imeSubtypeLocale="he_IL" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hebrew,default_layout=hebr_1_il,extra_keys=₪|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="hi" android:imeSubtypeLocale="hi_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
<subtype android:label="%s" android:languageTag="hi" android:imeSubtypeLocale="hi_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
||||||
<subtype android:label="%s" android:languageTag="hu" android:imeSubtypeLocale="hu_HU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_hu,extra_keys=accent_aigu|accent_trema|accent_ogonek|€"/>
|
<subtype android:label="%s" android:languageTag="hu" android:imeSubtypeLocale="hu_HU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_hu,extra_keys=accent_aigu:á:é:í:ó:ú|accent_trema:ö:ü|accent_ogonek|accent_double_aigu:ő:ű|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="is" android:imeSubtypeLocale="is_IS" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=ð|þ|ö|æ|accent_aigu"/>
|
<subtype android:label="%s" android:languageTag="is" android:imeSubtypeLocale="is_IS" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=ð|þ|æ|accent_trema:ö|accent_aigu:á:é:í:ó:ú:ý"/>
|
||||||
<subtype android:label="%s" android:languageTag="it" android:imeSubtypeLocale="it_IT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=accent_grave|accent_aigu|€|ə"/>
|
<subtype android:label="%s" android:languageTag="it" android:imeSubtypeLocale="it_IT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=accent_grave:à:è:ì:ò:ù|accent_aigu:é:ó|accent_circonflexe:î|€|ə"/>
|
||||||
<subtype android:label="%s" android:languageTag="ko" android:imeSubtypeLocale="ko_KR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hangul,default_layout=latn_qwerty_us"/>
|
<subtype android:label="%s" android:languageTag="ko" android:imeSubtypeLocale="ko_KR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hangul,default_layout=latn_qwerty_us"/>
|
||||||
<subtype android:label="%s" android:languageTag="lt" android:imeSubtypeLocale="lt_LT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=accent_ogonek|accent_caron|accent_dot_above|accent_macron|€"/>
|
<subtype android:label="%s" android:languageTag="lt" android:imeSubtypeLocale="lt_LT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us,extra_keys=accent_ogonek:ą:ę:į:ų|accent_caron:č:š:ž|accent_dot_above:ė|accent_macron:ū|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="lv" android:imeSubtypeLocale="lv_LV" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lv,extra_keys=accent_caron|accent_cedille|accent_macron|€"/>
|
<subtype android:label="%s" android:languageTag="lv" android:imeSubtypeLocale="lv_LV" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lv,extra_keys=accent_macron:ā:ē:ī:ū|accent_caron:č:š:ž|accent_ogonek:ķ:ļ:ņ|accent_cedille:ģ|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="mr" android:imeSubtypeLocale="mr_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
<subtype android:label="%s" android:languageTag="mr" android:imeSubtypeLocale="mr_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
||||||
<subtype android:label="%s" android:languageTag="ne" android:imeSubtypeLocale="ne_NE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
<subtype android:label="%s" android:languageTag="ne" android:imeSubtypeLocale="ne_NE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
||||||
<subtype android:label="%s" android:languageTag="nl-BE" android:imeSubtypeLocale="nl_BE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave|accent_aigu|accent_circonflexe|accent_cedille|accent_trema|€"/>
|
<subtype android:label="%s" android:languageTag="nl-BE" android:imeSubtypeLocale="nl_BE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave:è|accent_aigu:á:é:í:ó:ú:ý:j́|accent_circonflexe:ê|accent_cedille:ç|accent_trema|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="no" android:imeSubtypeLocale="no_NO" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_no,extra_keys=€|æ|å|ø"/>
|
<subtype android:label="%s" android:languageTag="no" android:imeSubtypeLocale="no_NO" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_no,extra_keys=€|æ|å|ø|accent_aigu:é:ó|accent_grave:è:ò:ù|accent_circonflexe:ê:ô"/>
|
||||||
<subtype android:label="%s" android:languageTag="pl" android:imeSubtypeLocale="pl_PL" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_pl"/>
|
<subtype android:label="%s" android:languageTag="pl" android:imeSubtypeLocale="pl_PL" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_pl"/>
|
||||||
<subtype android:label="%s" android:languageTag="pt" android:imeSubtypeLocale="pt_BR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_pt,extra_keys=accent_aigu|accent_cedille|accent_circonflexe|accent_grave|accent_tilde|€"/>
|
<subtype android:label="%s" android:languageTag="pt" android:imeSubtypeLocale="pt_BR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_pt,extra_keys=accent_aigu:á:é:í:ó:ú|accent_cedille:ç|accent_circonflexe:â:ê:ô|accent_grave:à:ò|accent_tilde:ã:õ|€|ª|º"/>
|
||||||
<subtype android:label="%s" android:languageTag="ro" android:imeSubtypeLocale="ro_RO" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_ro,extra_keys=ă|â|î|ș|ț|€|$"/>
|
<subtype android:label="%s" android:languageTag="ro" android:imeSubtypeLocale="ro_RO" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_ro,extra_keys=ă|â|î|ș|ț|€|$"/>
|
||||||
<subtype android:label="%s" android:languageTag="ru" android:imeSubtypeLocale="ru_RU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_jcuken_ru"/>
|
<subtype android:label="%s" android:languageTag="ru" android:imeSubtypeLocale="ru_RU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_jcuken_ru"/>
|
||||||
<subtype android:label="%s" android:languageTag="sk" android:imeSubtypeLocale="sk_SK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_sk,extra_keys=é|ě|ŕ|ř|ť|ž|ü|ú|ů|í|ö|ó|ô|á|ä|ś|š|ď|ĺ|ľ|ý|č|ň"/>
|
<subtype android:label="%s" android:languageTag="sk" android:imeSubtypeLocale="sk_SK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_sk,extra_keys=accent_caron:ě:ř:ž:š:č:ň:ď:ľ:ť|accent_ring:ů|accent_circonflexe:ô|accent_trema:ä:ü:ö|accent_aigu:á:é:í:ó:ú:ŕ:ś:ĺ:ý"/>
|
||||||
<subtype android:label="%s" android:languageTag="sv" android:imeSubtypeLocale="sv_SE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_se,extra_keys=accent_aigu|accent_trema|accent_ring|€"/>
|
<subtype android:label="%s" android:languageTag="sv" android:imeSubtypeLocale="sv_SE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_se,extra_keys=accent_aigu:á|accent_trema:ä:ö|accent_ring:å|€"/>
|
||||||
<subtype android:label="%s" android:languageTag="tr" android:imeSubtypeLocale="tr_TR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_tr,extra_keys=accent_cedille|accent_trema|₺|ı|ğ"/>
|
<subtype android:label="%s" android:languageTag="tr" android:imeSubtypeLocale="tr_TR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_tr,extra_keys=accent_cedille:ç:ş|accent_trema:ö:ü|accent_circonflexe:â:î:û|₺|ı|ğ"/>
|
||||||
<subtype android:label="%s" android:languageTag="uk" android:imeSubtypeLocale="uk_UA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_jcuken_uk,extra_keys=ґ|є|і|ї"/>
|
<subtype android:label="%s" android:languageTag="uk" android:imeSubtypeLocale="uk_UA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_jcuken_uk,extra_keys=ґ|є|і|ї|₴"/>
|
||||||
<subtype android:label="%s" android:languageTag="vi" android:imeSubtypeLocale="vi_VN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_vi"/>
|
<subtype android:label="%s" android:languageTag="vi" android:imeSubtypeLocale="vi_VN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_vi"/>
|
||||||
</input-method>
|
</input-method>
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<key shift="1.0" key0="4" indication="GHI"/>
|
<key shift="1.0" key0="4" indication="GHI"/>
|
||||||
<key key0="5" indication="JKL"/>
|
<key key0="5" indication="JKL"/>
|
||||||
<key key0="6" indication="MNO"/>
|
<key key0="6" indication="MNO"/>
|
||||||
<key key0="(" key3=":" key4="-"/>
|
<key key0="(" key2="=" key3=":" key4="-"/>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<key shift="1.0" key0="7" indication="PQRS"/>
|
<key shift="1.0" key0="7" indication="PQRS"/>
|
||||||
|
@@ -1,49 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<PreferenceCategory android:title="@string/pref_category_layout">
|
<PreferenceCategory android:title="@string/pref_category_layout">
|
||||||
<juloo.keyboard2.LayoutListPreference android:key="layout" android:title="@string/pref_layout_title" app:defaultString="@string/pref_layout_e_system"/>
|
<juloo.keyboard2.LayoutsPreference/>
|
||||||
<juloo.keyboard2.LayoutListPreference android:key="second_layout" android:title="@string/pref_second_layout_title" app:defaultString="@string/pref_second_layout_none"/>
|
|
||||||
<ListPreference android:key="accents" android:title="@string/pref_accents_title" android:summary="%s" android:defaultValue="1" android:entries="@array/pref_accents_entries" android:entryValues="@array/pref_accents_values"/>
|
|
||||||
<ListPreference android:key="show_numpad" android:title="@string/pref_show_numpad_title" android:summary="%s" android:defaultValue="1" android:entries="@array/pref_show_numpad_entries" android:entryValues="@array/pref_show_numpad_values"/>
|
|
||||||
<CheckBoxPreference android:key="number_row" android:title="@string/pref_number_row_title" android:summary="@string/pref_number_row_summary" android:defaultValue="false"/>
|
|
||||||
<PreferenceScreen android:title="@string/pref_extra_keys_title">
|
<PreferenceScreen android:title="@string/pref_extra_keys_title">
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="0"/>
|
<PreferenceCategory android:title="@string/pref_extra_keys_custom">
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="1"/>
|
<juloo.keyboard2.CustomExtraKeysPreference/>
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="2"/>
|
</PreferenceCategory>
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="3"/>
|
<juloo.keyboard2.ExtraKeysPreference android:title="@string/pref_extra_keys_internal"/>
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="4"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="5"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="6"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="7"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="8"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="9"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="10"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="11"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="12"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="13"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="14"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="15"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="16"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="17"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="18"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="19"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="20"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="21"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="22"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="23"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="24"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="25"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="26"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="27"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="28"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="29"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="30"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="31"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="32"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="33"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="34"/>
|
|
||||||
<juloo.keyboard2.ExtraKeyCheckBoxPreference app:index="35"/>
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
<CheckBoxPreference android:key="number_row" android:title="@string/pref_number_row_title" android:summary="@string/pref_number_row_summary" android:defaultValue="false"/>
|
||||||
|
<ListPreference android:key="show_numpad" android:title="@string/pref_show_numpad_title" android:summary="%s" android:defaultValue="1" android:entries="@array/pref_show_numpad_entries" android:entryValues="@array/pref_show_numpad_values"/>
|
||||||
<ListPreference android:key="numpad_layout" android:title="@string/pref_numpad_layout" android:summary="%s" android:defaultValue="high_first" android:entries="@array/pref_numpad_layout_entries" android:entryValues="@array/pref_numpad_layout_values"/>
|
<ListPreference android:key="numpad_layout" android:title="@string/pref_numpad_layout" android:summary="%s" android:defaultValue="high_first" android:entries="@array/pref_numpad_layout_entries" android:entryValues="@array/pref_numpad_layout_values"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/pref_category_typing">
|
<PreferenceCategory android:title="@string/pref_category_typing">
|
||||||
@@ -56,6 +22,7 @@
|
|||||||
<CheckBoxPreference android:key="autocapitalisation" android:title="@string/pref_autocapitalisation_title" android:summary="@string/pref_autocapitalisation_summary" android:defaultValue="true"/>
|
<CheckBoxPreference android:key="autocapitalisation" android:title="@string/pref_autocapitalisation_title" android:summary="@string/pref_autocapitalisation_summary" android:defaultValue="true"/>
|
||||||
<CheckBoxPreference android:key="switch_input_immediate" android:title="@string/pref_switch_input_immediate_title" android:summary="@string/pref_switch_input_immediate_summary" android:defaultValue="false"/>
|
<CheckBoxPreference android:key="switch_input_immediate" android:title="@string/pref_switch_input_immediate_title" android:summary="@string/pref_switch_input_immediate_summary" android:defaultValue="false"/>
|
||||||
<ListPreference android:key="vibration_behavior" android:title="@string/pref_vibrate_title" android:summary="@string/pref_vibrate_summary" android:defaultValue="system" android:entries="@array/pref_vibration_entries" android:entryValues="@array/pref_vibration_values"/>
|
<ListPreference android:key="vibration_behavior" android:title="@string/pref_vibrate_title" android:summary="@string/pref_vibrate_summary" android:defaultValue="system" android:entries="@array/pref_vibration_entries" android:entryValues="@array/pref_vibration_values"/>
|
||||||
|
<CheckBoxPreference android:key="pin_entry_enabled" android:title="@string/pref_pin_entry_enabled_title" android:summary="@string/pref_pin_entry_enabled_summary" android:defaultValue="true"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/pref_category_style">
|
<PreferenceCategory android:title="@string/pref_category_style">
|
||||||
<ListPreference android:key="theme" android:title="@string/pref_theme" android:summary="%s" android:defaultValue="system" android:entries="@array/pref_theme_entries" android:entryValues="@array/pref_theme_values"/>
|
<ListPreference android:key="theme" android:title="@string/pref_theme" android:summary="%s" android:defaultValue="system" android:entries="@array/pref_theme_entries" android:entryValues="@array/pref_theme_values"/>
|
||||||
@@ -79,7 +46,4 @@
|
|||||||
<juloo.common.IntSlideBarPreference android:key="key_vertical_space" android:title="@string/pref_key_vertical_space" android:summary="%sdp" android:defaultValue="2" min="0" max="8"/>
|
<juloo.common.IntSlideBarPreference android:key="key_vertical_space" android:title="@string/pref_key_vertical_space" android:summary="%sdp" android:defaultValue="2" min="0" max="8"/>
|
||||||
<juloo.common.IntSlideBarPreference android:key="key_horizontal_space" android:title="@string/pref_key_horizontal_space" android:summary="%sdp" android:defaultValue="2" min="0" max="8"/>
|
<juloo.common.IntSlideBarPreference android:key="key_horizontal_space" android:title="@string/pref_key_horizontal_space" android:summary="%sdp" android:defaultValue="2" min="0" max="8"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/pref_category_advanced">
|
|
||||||
<EditTextPreference android:key="custom_layout" android:title="@string/pref_custom_layout_title" android:summary="@string/pref_custom_layout_summary" android:inputType="text|textMultiLine|textLongMessage"/>
|
|
||||||
</PreferenceCategory>
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
37
res/xml/urdu_phonetic_ur.xml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<keyboard name="Urdu Phonetic" script="urdu">
|
||||||
|
<row>
|
||||||
|
<key key0="ق" key3=" " key4="esc" key7="1"/>
|
||||||
|
<key key0="و" key2="ؤ" key3="\@" key7="2"/>
|
||||||
|
<key key0="ع" key1="!" key3="\#" key7="3"/>
|
||||||
|
<key key0="ر" key2="ڑ" key3="$" key7="4"/>
|
||||||
|
<key key0="ت" key2="ٹ" key3="%" key7="5"/>
|
||||||
|
<key key0="ے" key3="^" key7="6"/>
|
||||||
|
<key key0="ئ" key2="ء" key3="&" key7="7"/>
|
||||||
|
<key key0="ی" key3="*" key7="8"/>
|
||||||
|
<key key0="ہ" key1="'" key2=""" key3="(" key4=")" key7="9" key8="ۃ"/>
|
||||||
|
<key key0="پ" key1="ٰ" key2="0" key3="؟" key5="ٓ" key7="ٗ" key8="ٖ"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key width="1.1" key0="ا" key1="tab" key2="آ" key4="أ"/>
|
||||||
|
<key width="1.1" key0="س" key2="ص"/>
|
||||||
|
<key width="1.1" key0="د" key2="ڈ" key4=" "/>
|
||||||
|
<key width="1.1" key0="ف" key2="پھ"/>
|
||||||
|
<key width="1.15" key0="گ" key1="-" key2="غ" key3="_" key4="گھ"/>
|
||||||
|
<key width="1.1" key0="ھ" key1="=" key2="ح" key3="+"/>
|
||||||
|
<key width="1.1" key0="ج" key1="}" key2="ض" key3="{" key4="جھ"/>
|
||||||
|
<key width="1.1" key0="ک" key1="]" key2="خ" key3="[" key4="کھ"/>
|
||||||
|
<key width="1.15" key0="ل" key1="َ" key3="." key5="ْ" key7="ُ" key8="ِ"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||||
|
<key key0="ز" key2="ذ"/>
|
||||||
|
<key key0="ش" key2="ژ"/>
|
||||||
|
<key key0="چ" key2="ث" key3="۔" key4="چھ"/>
|
||||||
|
<key key0="ط" key2="ظ" key3=","/>
|
||||||
|
<key key0="ب" key2="بھ" key3="/" key4="\\"/>
|
||||||
|
<key key0="ن" key2="ں" key3=";" key4=":"/>
|
||||||
|
<key key0="م" key5="ّ" key6="ً" key7="ٌ" key8="ٍ"/>
|
||||||
|
<key width="1.5" key0="backspace" key2="delete"/>
|
||||||
|
</row>
|
||||||
|
</keyboard>
|
@@ -3,11 +3,11 @@ package juloo.keyboard2;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -25,9 +25,8 @@ final class Config
|
|||||||
public final float sublabelTextSize;
|
public final float sublabelTextSize;
|
||||||
|
|
||||||
// From preferences
|
// From preferences
|
||||||
public KeyboardData layout; // Or 'null' for the system defaults
|
/** [null] represent the [system] layout. */
|
||||||
public KeyboardData second_layout; // Or 'null' for none
|
public List<KeyboardData> layouts;
|
||||||
public KeyboardData custom_layout; // Might be 'null'
|
|
||||||
public boolean show_numpad = false;
|
public boolean show_numpad = false;
|
||||||
// From the 'numpad_layout' option, also apply to the numeric pane.
|
// From the 'numpad_layout' option, also apply to the numeric pane.
|
||||||
public boolean inverse_numpad = false;
|
public boolean inverse_numpad = false;
|
||||||
@@ -48,20 +47,20 @@ final class Config
|
|||||||
public int keyActivatedOpacity; // 0 - 255
|
public int keyActivatedOpacity; // 0 - 255
|
||||||
public boolean double_tap_lock_shift;
|
public boolean double_tap_lock_shift;
|
||||||
public float characterSize; // Ratio
|
public float characterSize; // Ratio
|
||||||
public int accents; // Values are R.values.pref_accents_v_*
|
|
||||||
public int theme; // Values are R.style.*
|
public int theme; // Values are R.style.*
|
||||||
public boolean autocapitalisation;
|
public boolean autocapitalisation;
|
||||||
public boolean switch_input_immediate;
|
public boolean switch_input_immediate;
|
||||||
|
public boolean pin_entry_enabled;
|
||||||
|
|
||||||
// Dynamically set
|
// Dynamically set
|
||||||
public boolean shouldOfferSwitchingToNextInputMethod;
|
public boolean shouldOfferSwitchingToNextInputMethod;
|
||||||
public boolean shouldOfferSwitchingToSecond;
|
|
||||||
public boolean shouldOfferVoiceTyping;
|
public boolean shouldOfferVoiceTyping;
|
||||||
public String actionLabel; // Might be 'null'
|
public String actionLabel; // Might be 'null'
|
||||||
public int actionId; // Meaningful only when 'actionLabel' isn't 'null'
|
public int actionId; // Meaningful only when 'actionLabel' isn't 'null'
|
||||||
public boolean swapEnterActionKey; // Swap the "enter" and "action" keys
|
public boolean swapEnterActionKey; // Swap the "enter" and "action" keys
|
||||||
public ExtraKeys extra_keys_subtype;
|
public ExtraKeys extra_keys_subtype;
|
||||||
public Set<KeyValue> extra_keys_param;
|
public Set<KeyValue> extra_keys_param;
|
||||||
|
public List<KeyValue> extra_keys_custom;
|
||||||
|
|
||||||
public final IKeyEventHandler handler;
|
public final IKeyEventHandler handler;
|
||||||
public boolean orientation_landscape = false;
|
public boolean orientation_landscape = false;
|
||||||
@@ -78,7 +77,6 @@ final class Config
|
|||||||
refresh(res);
|
refresh(res);
|
||||||
// initialized later
|
// initialized later
|
||||||
shouldOfferSwitchingToNextInputMethod = false;
|
shouldOfferSwitchingToNextInputMethod = false;
|
||||||
shouldOfferSwitchingToSecond = false;
|
|
||||||
shouldOfferVoiceTyping = false;
|
shouldOfferVoiceTyping = false;
|
||||||
actionLabel = null;
|
actionLabel = null;
|
||||||
actionId = 0;
|
actionId = 0;
|
||||||
@@ -114,9 +112,7 @@ final class Config
|
|||||||
{
|
{
|
||||||
keyboardHeightPercent = _prefs.getInt("keyboard_height", 35);
|
keyboardHeightPercent = _prefs.getInt("keyboard_height", 35);
|
||||||
}
|
}
|
||||||
layout = layout_of_string(res, _prefs.getString("layout", "none"));
|
layouts = LayoutsPreference.load_from_preferences(res, _prefs);
|
||||||
second_layout = tweak_secondary_layout(layout_of_string(res, _prefs.getString("second_layout", "none")));
|
|
||||||
custom_layout = KeyboardData.load_string(_prefs.getString("custom_layout", ""));
|
|
||||||
inverse_numpad = _prefs.getString("numpad_layout", "default").equals("low_first");
|
inverse_numpad = _prefs.getString("numpad_layout", "default").equals("low_first");
|
||||||
number_row = _prefs.getBoolean("number_row", false);
|
number_row = _prefs.getBoolean("number_row", false);
|
||||||
// The baseline for the swipe distance correspond to approximately the
|
// The baseline for the swipe distance correspond to approximately the
|
||||||
@@ -150,11 +146,12 @@ final class Config
|
|||||||
characterSize =
|
characterSize =
|
||||||
_prefs.getFloat("character_size", 1.f)
|
_prefs.getFloat("character_size", 1.f)
|
||||||
* characterSizeScale;
|
* characterSizeScale;
|
||||||
accents = Integer.valueOf(_prefs.getString("accents", "1"));
|
|
||||||
theme = getThemeId(res, _prefs.getString("theme", ""));
|
theme = getThemeId(res, _prefs.getString("theme", ""));
|
||||||
autocapitalisation = _prefs.getBoolean("autocapitalisation", true);
|
autocapitalisation = _prefs.getBoolean("autocapitalisation", true);
|
||||||
switch_input_immediate = _prefs.getBoolean("switch_input_immediate", false);
|
switch_input_immediate = _prefs.getBoolean("switch_input_immediate", false);
|
||||||
extra_keys_param = ExtraKeyCheckBoxPreference.get_extra_keys(_prefs);
|
extra_keys_param = ExtraKeysPreference.get_extra_keys(_prefs);
|
||||||
|
extra_keys_custom = CustomExtraKeysPreference.get(_prefs);
|
||||||
|
pin_entry_enabled = _prefs.getBoolean("pin_entry_enabled", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyValue action_key()
|
KeyValue action_key()
|
||||||
@@ -170,6 +167,7 @@ final class Config
|
|||||||
* - Replace the action key to show the right label
|
* - Replace the action key to show the right label
|
||||||
* - Swap the enter and action keys
|
* - Swap the enter and action keys
|
||||||
* - Add the optional numpad and number row
|
* - Add the optional numpad and number row
|
||||||
|
* - Add the extra keys
|
||||||
*/
|
*/
|
||||||
public KeyboardData modify_layout(KeyboardData kw)
|
public KeyboardData modify_layout(KeyboardData kw)
|
||||||
{
|
{
|
||||||
@@ -178,9 +176,17 @@ final class Config
|
|||||||
// first iteration then automatically added.
|
// first iteration then automatically added.
|
||||||
final Set<KeyValue> extra_keys = new HashSet<KeyValue>();
|
final Set<KeyValue> extra_keys = new HashSet<KeyValue>();
|
||||||
final Set<KeyValue> remove_keys = new HashSet<KeyValue>();
|
final Set<KeyValue> remove_keys = new HashSet<KeyValue>();
|
||||||
if (extra_keys_subtype != null)
|
|
||||||
extra_keys_subtype.compute(extra_keys, kw.script);
|
|
||||||
extra_keys.addAll(extra_keys_param);
|
extra_keys.addAll(extra_keys_param);
|
||||||
|
extra_keys.addAll(extra_keys_custom);
|
||||||
|
if (extra_keys_subtype != null)
|
||||||
|
{
|
||||||
|
Set<KeyValue> present = new HashSet<KeyValue>();
|
||||||
|
kw.getKeys(present);
|
||||||
|
present.addAll(extra_keys_param);
|
||||||
|
present.addAll(extra_keys_custom);
|
||||||
|
extra_keys_subtype.compute(extra_keys,
|
||||||
|
new ExtraKeys.Query(kw.script, present));
|
||||||
|
}
|
||||||
boolean number_row = this.number_row && !show_numpad;
|
boolean number_row = this.number_row && !show_numpad;
|
||||||
if (number_row)
|
if (number_row)
|
||||||
KeyboardData.number_row.getKeys(remove_keys);
|
KeyboardData.number_row.getKeys(remove_keys);
|
||||||
@@ -208,8 +214,10 @@ final class Config
|
|||||||
case ACTION:
|
case ACTION:
|
||||||
return (swapEnterActionKey && action_key != null) ?
|
return (swapEnterActionKey && action_key != null) ?
|
||||||
KeyValue.getKeyByName("enter") : action_key;
|
KeyValue.getKeyByName("enter") : action_key;
|
||||||
case SWITCH_SECOND:
|
case SWITCH_FORWARD:
|
||||||
return shouldOfferSwitchingToSecond ? key : null;
|
return (layouts.size() > 1) ? key : null;
|
||||||
|
case SWITCH_BACKWARD:
|
||||||
|
return (layouts.size() > 2) ? key : null;
|
||||||
case SWITCH_VOICE_TYPING:
|
case SWITCH_VOICE_TYPING:
|
||||||
return shouldOfferVoiceTyping ? key : null;
|
return shouldOfferVoiceTyping ? key : null;
|
||||||
}
|
}
|
||||||
@@ -281,30 +289,13 @@ final class Config
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Modify a layout to turn it into a secondary layout by changing the
|
|
||||||
"switch_second" key. */
|
|
||||||
KeyboardData tweak_secondary_layout(KeyboardData layout)
|
|
||||||
{
|
|
||||||
if (layout == null)
|
|
||||||
return null;
|
|
||||||
return layout.mapKeys(new KeyboardData.MapKeyValues() {
|
|
||||||
public KeyValue apply(KeyValue key, boolean localized)
|
|
||||||
{
|
|
||||||
if (key.getKind() == KeyValue.Kind.Event
|
|
||||||
&& key.getEvent() == KeyValue.Event.SWITCH_SECOND)
|
|
||||||
return KeyValue.getKeyByName("switch_second_back");
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private float get_dip_pref(DisplayMetrics dm, String pref_name, float def)
|
private float get_dip_pref(DisplayMetrics dm, String pref_name, float def)
|
||||||
{
|
{
|
||||||
float value;
|
float value;
|
||||||
try { value = _prefs.getInt(pref_name, -1); }
|
try { value = _prefs.getInt(pref_name, -1); }
|
||||||
catch (Exception e) { value = _prefs.getFloat(pref_name, -1f); }
|
catch (Exception e) { value = _prefs.getFloat(pref_name, -1f); }
|
||||||
if (value < 0f)
|
if (value < 0f)
|
||||||
return (def);
|
value = def;
|
||||||
return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, dm));
|
return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, dm));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,36 +329,6 @@ final class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Obtained from XML. */
|
|
||||||
static List<String> layout_ids_str = null;
|
|
||||||
static TypedArray layout_ids_res = null;
|
|
||||||
|
|
||||||
/** Might return [null] if the selected layout is "system", "custom" or if
|
|
||||||
the name is not recognized. */
|
|
||||||
public KeyboardData layout_of_string(Resources res, String name)
|
|
||||||
{
|
|
||||||
if (layout_ids_str == null)
|
|
||||||
{
|
|
||||||
layout_ids_str = Arrays.asList(res.getStringArray(R.array.pref_layout_values));
|
|
||||||
layout_ids_res = res.obtainTypedArray(R.array.layout_ids);
|
|
||||||
}
|
|
||||||
int i = layout_ids_str.indexOf(name);
|
|
||||||
if (i >= 0)
|
|
||||||
{
|
|
||||||
int id = layout_ids_res.getResourceId(i, 0);
|
|
||||||
if (id > 0)
|
|
||||||
return KeyboardData.load(res, id);
|
|
||||||
// Fallthrough
|
|
||||||
}
|
|
||||||
switch (name)
|
|
||||||
{
|
|
||||||
case "custom": return custom_layout;
|
|
||||||
case "system":
|
|
||||||
case "none":
|
|
||||||
default: return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char inverse_numpad_char(char c)
|
char inverse_numpad_char(char c)
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
@@ -387,6 +348,7 @@ final class Config
|
|||||||
public static void initGlobalConfig(SharedPreferences prefs, Resources res,
|
public static void initGlobalConfig(SharedPreferences prefs, Resources res,
|
||||||
IKeyEventHandler handler)
|
IKeyEventHandler handler)
|
||||||
{
|
{
|
||||||
|
migrate(prefs);
|
||||||
_globalConfig = new Config(prefs, res, handler);
|
_globalConfig = new Config(prefs, res, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -399,4 +361,45 @@ final class Config
|
|||||||
{
|
{
|
||||||
public void key_up(KeyValue value, Pointers.Modifiers flags);
|
public void key_up(KeyValue value, Pointers.Modifiers flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Config migrations. */
|
||||||
|
|
||||||
|
private static int CONFIG_VERSION = 1;
|
||||||
|
|
||||||
|
public static void migrate(SharedPreferences prefs)
|
||||||
|
{
|
||||||
|
int saved_version = prefs.getInt("version", 0);
|
||||||
|
Logs.debug_config_migration(saved_version, CONFIG_VERSION);
|
||||||
|
if (saved_version == CONFIG_VERSION)
|
||||||
|
return;
|
||||||
|
SharedPreferences.Editor e = prefs.edit();
|
||||||
|
e.putInt("version", CONFIG_VERSION);
|
||||||
|
// Migrations might run on an empty [prefs] for new installs, in this case
|
||||||
|
// they set the default values of complex options.
|
||||||
|
switch (saved_version) // Fallback switch
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
// Primary, secondary and custom layout options are merged into the new
|
||||||
|
// Layouts option. This also sets the default value.
|
||||||
|
List<LayoutsPreference.Layout> l = new ArrayList<LayoutsPreference.Layout>();
|
||||||
|
l.add(migrate_layout(prefs.getString("layout", "system")));
|
||||||
|
String snd_layout = prefs.getString("second_layout", "none");
|
||||||
|
if (snd_layout != null && !snd_layout.equals("none"))
|
||||||
|
l.add(migrate_layout(snd_layout));
|
||||||
|
String custom_layout = prefs.getString("custom_layout", "");
|
||||||
|
if (custom_layout != null && !custom_layout.equals(""))
|
||||||
|
l.add(new LayoutsPreference.CustomLayout(custom_layout));
|
||||||
|
LayoutsPreference.save_to_preferences(e, l);
|
||||||
|
case 1:
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
e.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static LayoutsPreference.Layout migrate_layout(String name)
|
||||||
|
{
|
||||||
|
if (name == null || name.equals("system"))
|
||||||
|
return new LayoutsPreference.SystemLayout();
|
||||||
|
return new LayoutsPreference.NamedLayout(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
67
srcs/juloo.keyboard2/CustomExtraKeysPreference.java
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.preference.Preference;
|
||||||
|
import android.preference.PreferenceCategory;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
/** Allows to enter custom keys to be added to the keyboard. This shows up at
|
||||||
|
the top of the "Add keys to the keyboard" option. */
|
||||||
|
public class CustomExtraKeysPreference extends ListGroupPreference<String>
|
||||||
|
{
|
||||||
|
/** This pref stores a list of strings encoded as JSON. */
|
||||||
|
static final String KEY = "custom_extra_keys";
|
||||||
|
static final ListGroupPreference.Serializer<String> SERIALIZER =
|
||||||
|
new ListGroupPreference.StringSerializer();
|
||||||
|
|
||||||
|
public CustomExtraKeysPreference(Context context, AttributeSet attrs)
|
||||||
|
{
|
||||||
|
super(context, attrs);
|
||||||
|
setKey(KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<KeyValue> get(SharedPreferences prefs)
|
||||||
|
{
|
||||||
|
List<KeyValue> kvs = new ArrayList<KeyValue>();
|
||||||
|
List<String> key_names = load_from_preferences(KEY, prefs, null, SERIALIZER);
|
||||||
|
if (key_names != null)
|
||||||
|
{
|
||||||
|
for (String key_name : key_names)
|
||||||
|
kvs.add(KeyValue.makeStringKey(key_name));
|
||||||
|
}
|
||||||
|
return kvs;
|
||||||
|
}
|
||||||
|
|
||||||
|
String label_of_value(String value, int i) { return value; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void select(final SelectionCallback<String> callback)
|
||||||
|
{
|
||||||
|
new AlertDialog.Builder(getContext())
|
||||||
|
.setView(R.layout.dialog_edit_text)
|
||||||
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){
|
||||||
|
public void onClick(DialogInterface dialog, int which)
|
||||||
|
{
|
||||||
|
EditText input = (EditText)((AlertDialog)dialog).findViewById(R.id.text);
|
||||||
|
final String k = input.getText().toString();
|
||||||
|
if (!k.equals(""))
|
||||||
|
callback.select(k);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
Serializer<String> get_serializer() { return SERIALIZER; }
|
||||||
|
}
|
@@ -1,110 +0,0 @@
|
|||||||
package juloo.keyboard2;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.TypedArray;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.preference.CheckBoxPreference;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class ExtraKeyCheckBoxPreference extends CheckBoxPreference
|
|
||||||
{
|
|
||||||
public static String[] extra_keys = new String[]
|
|
||||||
{
|
|
||||||
"alt",
|
|
||||||
"meta",
|
|
||||||
"voice_typing",
|
|
||||||
"accent_aigu",
|
|
||||||
"accent_grave",
|
|
||||||
"accent_double_aigu",
|
|
||||||
"accent_dot_above",
|
|
||||||
"accent_circonflexe",
|
|
||||||
"accent_tilde",
|
|
||||||
"accent_cedille",
|
|
||||||
"accent_trema",
|
|
||||||
"accent_ring",
|
|
||||||
"accent_caron",
|
|
||||||
"accent_macron",
|
|
||||||
"accent_ogonek",
|
|
||||||
"accent_breve",
|
|
||||||
"accent_slash",
|
|
||||||
"accent_bar",
|
|
||||||
"accent_dot_below",
|
|
||||||
"accent_hook_above",
|
|
||||||
"accent_horn",
|
|
||||||
"€",
|
|
||||||
"ß",
|
|
||||||
"£",
|
|
||||||
"switch_greekmath",
|
|
||||||
"capslock",
|
|
||||||
"copy",
|
|
||||||
"paste",
|
|
||||||
"cut",
|
|
||||||
"selectAll",
|
|
||||||
"shareText",
|
|
||||||
"pasteAsPlainText",
|
|
||||||
"undo",
|
|
||||||
"redo",
|
|
||||||
"replaceText",
|
|
||||||
"textAssist",
|
|
||||||
"autofill",
|
|
||||||
};
|
|
||||||
|
|
||||||
public static boolean default_checked(String name)
|
|
||||||
{
|
|
||||||
switch (name)
|
|
||||||
{
|
|
||||||
case "voice_typing":
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean _key_font;
|
|
||||||
|
|
||||||
public ExtraKeyCheckBoxPreference(Context context, AttributeSet attrs)
|
|
||||||
{
|
|
||||||
super(context, attrs);
|
|
||||||
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ExtraKeyCheckBoxPreference);
|
|
||||||
int index = a.getInteger(R.styleable.ExtraKeyCheckBoxPreference_index, 0);
|
|
||||||
a.recycle();
|
|
||||||
String key_name = extra_keys[index];
|
|
||||||
KeyValue kv = KeyValue.getKeyByName(key_name);
|
|
||||||
String title = kv.getString();
|
|
||||||
String descr = KeyValue.getKeyDescription(key_name);
|
|
||||||
if (descr != null)
|
|
||||||
title += " (" + descr + ")";
|
|
||||||
setKey(pref_key_of_key_name(key_name));
|
|
||||||
setDefaultValue(default_checked(key_name));
|
|
||||||
setTitle(title);
|
|
||||||
_key_font = kv.hasFlags(KeyValue.FLAG_KEY_FONT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onBindView(View view)
|
|
||||||
{
|
|
||||||
super.onBindView(view);
|
|
||||||
TextView title = (TextView)view.findViewById(android.R.id.title);
|
|
||||||
title.setTypeface(_key_font ? Theme.getKeyFont(getContext()) : null);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String pref_key_of_key_name(String key_name)
|
|
||||||
{
|
|
||||||
return "extra_key_" + key_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Set<KeyValue> get_extra_keys(SharedPreferences prefs)
|
|
||||||
{
|
|
||||||
HashSet<KeyValue> ks = new HashSet<KeyValue>();
|
|
||||||
for (String key_name : extra_keys)
|
|
||||||
{
|
|
||||||
if (prefs.getBoolean(pref_key_of_key_name(key_name), default_checked(key_name)))
|
|
||||||
ks.add(KeyValue.getKeyByName(key_name));
|
|
||||||
}
|
|
||||||
return ks;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,6 +1,9 @@
|
|||||||
package juloo.keyboard2;
|
package juloo.keyboard2;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -8,50 +11,118 @@ import java.util.Set;
|
|||||||
|
|
||||||
class ExtraKeys
|
class ExtraKeys
|
||||||
{
|
{
|
||||||
Map<String, List<KeyValue>> _keys_per_script;
|
public static final ExtraKeys EMPTY = new ExtraKeys(Collections.EMPTY_LIST);
|
||||||
|
|
||||||
public ExtraKeys()
|
Collection<ExtraKey> _ks;
|
||||||
|
|
||||||
|
public ExtraKeys(Collection<ExtraKey> ks)
|
||||||
{
|
{
|
||||||
_keys_per_script = new HashMap<String, List<KeyValue>>();
|
_ks = ks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add_keys_for_script(String script, List<KeyValue> kvs)
|
/** Add the keys that should be added to the keyboard into [dst]. Keys
|
||||||
|
already added to [dst] might have an impact, see [ExtraKey.compute]. */
|
||||||
|
public void compute(Set<KeyValue> dst, Query q)
|
||||||
{
|
{
|
||||||
List<KeyValue> ks = _keys_per_script.get(script);
|
for (ExtraKey k : _ks)
|
||||||
if (ks == null) ks = new ArrayList<KeyValue>();
|
k.compute(dst, q);
|
||||||
ks.addAll(kvs);
|
|
||||||
_keys_per_script.put(script, ks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Add the keys that should be added to the keyboard into [dst]. [null] is
|
public static ExtraKeys parse(String script, String str)
|
||||||
a valid script. */
|
|
||||||
public void compute(Set<KeyValue> dst, String script)
|
|
||||||
{
|
{
|
||||||
if (script == null)
|
Collection<ExtraKey> dst = new ArrayList<ExtraKey>();
|
||||||
{
|
|
||||||
for (String sc : _keys_per_script.keySet())
|
|
||||||
get_keys_of_script(dst, sc);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
get_keys_of_script(dst, null);
|
|
||||||
get_keys_of_script(dst, script);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void get_keys_of_script(Set<KeyValue> dst, String script)
|
|
||||||
{
|
|
||||||
List<KeyValue> ks = _keys_per_script.get(script);
|
|
||||||
if (ks != null)
|
|
||||||
dst.addAll(ks);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<KeyValue> parse_extra_keys(String str)
|
|
||||||
{
|
|
||||||
List<KeyValue> dst = new ArrayList<KeyValue>();
|
|
||||||
String[] ks = str.split("\\|");
|
String[] ks = str.split("\\|");
|
||||||
for (int i = 0; i < ks.length; i++)
|
for (int i = 0; i < ks.length; i++)
|
||||||
dst.add(KeyValue.getKeyByName(ks[i]));
|
dst.add(ExtraKey.parse(ks[i], script));
|
||||||
return dst;
|
return new ExtraKeys(dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Merge identical keys. This is required to decide whether to add
|
||||||
|
alternatives. Script is generalized (set to null) on any conflict. */
|
||||||
|
public static ExtraKeys merge(List<ExtraKeys> kss)
|
||||||
|
{
|
||||||
|
Map<KeyValue, ExtraKey> merged_keys = new HashMap<KeyValue, ExtraKey>();
|
||||||
|
for (ExtraKeys ks : kss)
|
||||||
|
for (ExtraKey k : ks._ks)
|
||||||
|
{
|
||||||
|
ExtraKey k2 = merged_keys.get(k.kv);
|
||||||
|
if (k2 != null)
|
||||||
|
k = k.merge_with(k2);
|
||||||
|
merged_keys.put(k.kv, k);
|
||||||
|
}
|
||||||
|
return new ExtraKeys(merged_keys.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
final static class ExtraKey
|
||||||
|
{
|
||||||
|
/** The key to add. */
|
||||||
|
final KeyValue kv;
|
||||||
|
/** The key will be added to layouts of the same script. If null, might be
|
||||||
|
added to layouts of any script. */
|
||||||
|
final String script;
|
||||||
|
/** The key will not be added to layout that already contain all the
|
||||||
|
alternatives. */
|
||||||
|
final List<KeyValue> alternatives;
|
||||||
|
|
||||||
|
ExtraKey(KeyValue kv_, String script_, List<KeyValue> alts_)
|
||||||
|
{
|
||||||
|
kv = kv_;
|
||||||
|
script = script_;
|
||||||
|
alternatives = alts_;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Whether the key should be added to the keyboard. */
|
||||||
|
public void compute(Set<KeyValue> dst, Query q)
|
||||||
|
{
|
||||||
|
// Add the alternative if it's the only one. The list of alternatives is
|
||||||
|
// enforced to be complete by the merging step. The same [kv] will not
|
||||||
|
// appear again in the list of extra keys with a different list of
|
||||||
|
// alternatives.
|
||||||
|
// Selecting the dead key in the "Add key to the keyboard" option would
|
||||||
|
// disable this behavior for a key.
|
||||||
|
boolean use_alternative = (alternatives.size() == 1 && !dst.contains(kv));
|
||||||
|
if
|
||||||
|
((q.script == null || script == null || q.script.equals(script))
|
||||||
|
&& (alternatives.size() == 0 || !q.present.containsAll(alternatives)))
|
||||||
|
dst.add(use_alternative ? alternatives.get(0) : kv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return a new key from two. [kv] are expected to be equal. [script] is
|
||||||
|
generalized to [null] on any conflict. [alternatives] are concatenated.
|
||||||
|
*/
|
||||||
|
public ExtraKey merge_with(ExtraKey k2)
|
||||||
|
{
|
||||||
|
String script_ =
|
||||||
|
(script != null && k2.script != null && script.equals(k2.script))
|
||||||
|
? script : null;
|
||||||
|
List<KeyValue> alts = new ArrayList<KeyValue>(alternatives);
|
||||||
|
alts.addAll(k2.alternatives);
|
||||||
|
return new ExtraKey(kv, script_, alts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Extra keys are of the form "key name" or "key name:alt 1:alt 2". */
|
||||||
|
public static ExtraKey parse(String str, String script)
|
||||||
|
{
|
||||||
|
String[] strs = str.split(":");
|
||||||
|
KeyValue kv = KeyValue.getKeyByName(strs[0]);
|
||||||
|
KeyValue[] alts = new KeyValue[strs.length-1];
|
||||||
|
for (int i = 1; i < strs.length; i++)
|
||||||
|
alts[i-1] = KeyValue.getKeyByName(strs[i]);
|
||||||
|
return new ExtraKey(kv, script, Arrays.asList(alts));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static class Query
|
||||||
|
{
|
||||||
|
/** Script of the current layout. Might be null. */
|
||||||
|
final String script;
|
||||||
|
/** Keys present on the layout. */
|
||||||
|
final Set<KeyValue> present;
|
||||||
|
|
||||||
|
public Query(String script_, Set<KeyValue> present_)
|
||||||
|
{
|
||||||
|
script = script_;
|
||||||
|
present = present_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
171
srcs/juloo.keyboard2/ExtraKeysPreference.java
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.preference.CheckBoxPreference;
|
||||||
|
import android.preference.PreferenceCategory;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/** This class implements the "extra keys" preference but also defines the
|
||||||
|
possible extra keys. */
|
||||||
|
public class ExtraKeysPreference extends PreferenceCategory
|
||||||
|
{
|
||||||
|
/** Array of the keys that can be selected. */
|
||||||
|
public static String[] extra_keys = new String[]
|
||||||
|
{
|
||||||
|
"alt",
|
||||||
|
"meta",
|
||||||
|
"voice_typing",
|
||||||
|
"accent_aigu",
|
||||||
|
"accent_grave",
|
||||||
|
"accent_double_aigu",
|
||||||
|
"accent_dot_above",
|
||||||
|
"accent_circonflexe",
|
||||||
|
"accent_tilde",
|
||||||
|
"accent_cedille",
|
||||||
|
"accent_trema",
|
||||||
|
"accent_ring",
|
||||||
|
"accent_caron",
|
||||||
|
"accent_macron",
|
||||||
|
"accent_ogonek",
|
||||||
|
"accent_breve",
|
||||||
|
"accent_slash",
|
||||||
|
"accent_bar",
|
||||||
|
"accent_dot_below",
|
||||||
|
"accent_hook_above",
|
||||||
|
"accent_horn",
|
||||||
|
"€",
|
||||||
|
"ß",
|
||||||
|
"£",
|
||||||
|
"§",
|
||||||
|
"†",
|
||||||
|
"ª",
|
||||||
|
"º",
|
||||||
|
"switch_greekmath",
|
||||||
|
"capslock",
|
||||||
|
"copy",
|
||||||
|
"paste",
|
||||||
|
"cut",
|
||||||
|
"selectAll",
|
||||||
|
"shareText",
|
||||||
|
"pasteAsPlainText",
|
||||||
|
"undo",
|
||||||
|
"redo",
|
||||||
|
"replaceText",
|
||||||
|
"textAssist",
|
||||||
|
"autofill",
|
||||||
|
"superscript",
|
||||||
|
"subscript",
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Whether an extra key is enabled by default. */
|
||||||
|
public static boolean default_checked(String name)
|
||||||
|
{
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case "voice_typing":
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Text that describe a key. Might be null. */
|
||||||
|
static String key_description(Resources res, String name)
|
||||||
|
{
|
||||||
|
int id = 0;
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case "capslock": id = R.string.key_descr_capslock; break;
|
||||||
|
case "switch_greekmath": id = R.string.key_descr_switch_greekmath; break;
|
||||||
|
case "voice_typing": id = R.string.key_descr_voice_typing; break;
|
||||||
|
case "copy": id = R.string.key_descr_copy; break;
|
||||||
|
case "paste": id = R.string.key_descr_paste; break;
|
||||||
|
case "cut": id = R.string.key_descr_cut; break;
|
||||||
|
case "selectAll": id = R.string.key_descr_selectAll; break;
|
||||||
|
case "shareText": id = R.string.key_descr_shareText; break;
|
||||||
|
case "pasteAsPlainText": id = R.string.key_descr_pasteAsPlainText; break;
|
||||||
|
case "undo": id = R.string.key_descr_undo; break;
|
||||||
|
case "redo": id = R.string.key_descr_redo; break;
|
||||||
|
case "textAssist": id = R.string.key_descr_textAssist; break;
|
||||||
|
case "autofill": id = R.string.key_descr_autofill; break;
|
||||||
|
case "ª": id = R.string.key_descr_ª; break;
|
||||||
|
case "º": id = R.string.key_descr_º; break;
|
||||||
|
case "superscript": id = R.string.key_descr_superscript; break;
|
||||||
|
case "subscript": id = R.string.key_descr_subscript; break;
|
||||||
|
}
|
||||||
|
if (id == 0)
|
||||||
|
return null;
|
||||||
|
return res.getString(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get the set of enabled extra keys. */
|
||||||
|
public static Set<KeyValue> get_extra_keys(SharedPreferences prefs)
|
||||||
|
{
|
||||||
|
HashSet<KeyValue> ks = new HashSet<KeyValue>();
|
||||||
|
for (String key_name : extra_keys)
|
||||||
|
{
|
||||||
|
if (prefs.getBoolean(pref_key_of_key_name(key_name),
|
||||||
|
default_checked(key_name)))
|
||||||
|
ks.add(KeyValue.getKeyByName(key_name));
|
||||||
|
}
|
||||||
|
return ks;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean _attached = false; /** Whether it has already been attached. */
|
||||||
|
|
||||||
|
public ExtraKeysPreference(Context context, AttributeSet attrs)
|
||||||
|
{
|
||||||
|
super(context, attrs);
|
||||||
|
setOrderingAsAdded(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAttachedToActivity()
|
||||||
|
{
|
||||||
|
if (_attached)
|
||||||
|
return;
|
||||||
|
_attached = true;
|
||||||
|
for (String key_name : extra_keys)
|
||||||
|
addPreference(new ExtraKeyCheckBoxPreference(getContext(), key_name,
|
||||||
|
default_checked(key_name)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String pref_key_of_key_name(String key_name)
|
||||||
|
{
|
||||||
|
return "extra_key_" + key_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class ExtraKeyCheckBoxPreference extends CheckBoxPreference
|
||||||
|
{
|
||||||
|
boolean _key_font;
|
||||||
|
|
||||||
|
public ExtraKeyCheckBoxPreference(Context ctx, String key_name,
|
||||||
|
boolean default_checked)
|
||||||
|
{
|
||||||
|
super(ctx);
|
||||||
|
KeyValue kv = KeyValue.getKeyByName(key_name);
|
||||||
|
String title = kv.getString();
|
||||||
|
String descr = key_description(ctx.getResources(), key_name);
|
||||||
|
if (descr != null)
|
||||||
|
title += " (" + descr + ")";
|
||||||
|
setKey(pref_key_of_key_name(key_name));
|
||||||
|
setDefaultValue(default_checked);
|
||||||
|
setTitle(title);
|
||||||
|
_key_font = kv.hasFlags(KeyValue.FLAG_KEY_FONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onBindView(View view)
|
||||||
|
{
|
||||||
|
super.onBindView(view);
|
||||||
|
TextView title = (TextView)view.findViewById(android.R.id.title);
|
||||||
|
title.setTypeface(_key_font ? Theme.getKeyFont(getContext()) : null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -3,6 +3,8 @@ package juloo.keyboard2;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
import android.view.inputmethod.ExtractedText;
|
||||||
|
import android.view.inputmethod.ExtractedTextRequest;
|
||||||
import android.view.inputmethod.InputConnection;
|
import android.view.inputmethod.InputConnection;
|
||||||
|
|
||||||
class KeyEventHandler implements Config.IKeyEventHandler
|
class KeyEventHandler implements Config.IKeyEventHandler
|
||||||
@@ -39,33 +41,9 @@ class KeyEventHandler implements Config.IKeyEventHandler
|
|||||||
case Char: send_text(String.valueOf(key.getChar())); break;
|
case Char: send_text(String.valueOf(key.getChar())); break;
|
||||||
case String: send_text(key.getString()); break;
|
case String: send_text(key.getString()); break;
|
||||||
case Event: _recv.handle_event_key(key.getEvent()); break;
|
case Event: _recv.handle_event_key(key.getEvent()); break;
|
||||||
case Keyevent:
|
case Keyevent: send_key_down_up(key.getKeyevent(), mods); break;
|
||||||
handleKeyUpWithModifier(key.getKeyevent(), mods);
|
case Modifier: break;
|
||||||
break;
|
case Editing: handle_editing_key(key.getEditing(), mods); break;
|
||||||
case Modifier:
|
|
||||||
break;
|
|
||||||
case Editing:
|
|
||||||
send_context_menu_action(action_of_editing_key(key.getEditing()));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int action_of_editing_key(KeyValue.Editing e)
|
|
||||||
{
|
|
||||||
switch (e)
|
|
||||||
{
|
|
||||||
case COPY: return android.R.id.copy;
|
|
||||||
case PASTE: return android.R.id.paste;
|
|
||||||
case CUT: return android.R.id.cut;
|
|
||||||
case SELECT_ALL: return android.R.id.selectAll;
|
|
||||||
case SHARE: return android.R.id.shareText;
|
|
||||||
case PASTE_PLAIN: return android.R.id.pasteAsPlainText;
|
|
||||||
case UNDO: return android.R.id.undo;
|
|
||||||
case REDO: return android.R.id.redo;
|
|
||||||
case REPLACE: return android.R.id.replaceText;
|
|
||||||
case ASSIST: return android.R.id.textAssist;
|
|
||||||
case AUTOFILL: return android.R.id.autofill;
|
|
||||||
default: return -1; // sad
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +86,7 @@ class KeyEventHandler implements Config.IKeyEventHandler
|
|||||||
/*
|
/*
|
||||||
* Don't set KeyEvent.FLAG_SOFT_KEYBOARD.
|
* Don't set KeyEvent.FLAG_SOFT_KEYBOARD.
|
||||||
*/
|
*/
|
||||||
void handleKeyUpWithModifier(int keyCode, Pointers.Modifiers mods)
|
void send_key_down_up(int keyCode, Pointers.Modifiers mods)
|
||||||
{
|
{
|
||||||
int metaState = 0;
|
int metaState = 0;
|
||||||
for (int i = 0; i < mods.size(); i++)
|
for (int i = 0; i < mods.size(); i++)
|
||||||
@@ -147,6 +125,88 @@ class KeyEventHandler implements Config.IKeyEventHandler
|
|||||||
conn.performContextMenuAction(id);
|
conn.performContextMenuAction(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handle_editing_key(KeyValue.Editing ev, Pointers.Modifiers mods)
|
||||||
|
{
|
||||||
|
switch (ev)
|
||||||
|
{
|
||||||
|
case COPY: send_context_menu_action(android.R.id.copy); break;
|
||||||
|
case PASTE: send_context_menu_action(android.R.id.paste); break;
|
||||||
|
case CUT: send_context_menu_action(android.R.id.cut); break;
|
||||||
|
case SELECT_ALL: send_context_menu_action(android.R.id.selectAll); break;
|
||||||
|
case SHARE: send_context_menu_action(android.R.id.shareText); break;
|
||||||
|
case PASTE_PLAIN: send_context_menu_action(android.R.id.pasteAsPlainText); break;
|
||||||
|
case UNDO: send_context_menu_action(android.R.id.undo); break;
|
||||||
|
case REDO: send_context_menu_action(android.R.id.redo); break;
|
||||||
|
case REPLACE: send_context_menu_action(android.R.id.replaceText); break;
|
||||||
|
case ASSIST: send_context_menu_action(android.R.id.textAssist); break;
|
||||||
|
case AUTOFILL: send_context_menu_action(android.R.id.autofill); break;
|
||||||
|
case CURSOR_LEFT: move_cursor(-1, mods); break;
|
||||||
|
case CURSOR_RIGHT: move_cursor(1, mods); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static ExtractedTextRequest _move_cursor_req = null;
|
||||||
|
|
||||||
|
/** Query the cursor position. The extracted text is empty. Returns [null] if
|
||||||
|
the editor doesn't support this operation. */
|
||||||
|
ExtractedText get_cursor_pos(InputConnection conn)
|
||||||
|
{
|
||||||
|
if (_move_cursor_req == null)
|
||||||
|
{
|
||||||
|
_move_cursor_req = new ExtractedTextRequest();
|
||||||
|
_move_cursor_req.hintMaxChars = 0;
|
||||||
|
}
|
||||||
|
return conn.getExtractedText(_move_cursor_req, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Move the cursor right or left, if possible without sending key events.
|
||||||
|
Unlike arrow keys, the selection is not removed even if shift is not on. */
|
||||||
|
void move_cursor(int d, Pointers.Modifiers mods)
|
||||||
|
{
|
||||||
|
InputConnection conn = _recv.getCurrentInputConnection();
|
||||||
|
if (conn == null)
|
||||||
|
return;
|
||||||
|
ExtractedText et = get_cursor_pos(conn);
|
||||||
|
if (et == null) // Editor doesn't support moving the cursor
|
||||||
|
{
|
||||||
|
move_cursor_fallback(d, mods);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int sel_start = et.selectionStart;
|
||||||
|
int sel_end = et.selectionEnd;
|
||||||
|
// Continue expanding the selection even if shift is not pressed
|
||||||
|
if (sel_end != sel_start)
|
||||||
|
{
|
||||||
|
sel_end += d;
|
||||||
|
if (sel_end == sel_start) // Avoid making the selection empty
|
||||||
|
sel_end += d;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sel_end += d;
|
||||||
|
// Leave 'sel_start' where it is if shift is pressed
|
||||||
|
if (!mods.has(KeyValue.Modifier.SHIFT))
|
||||||
|
sel_start = sel_end;
|
||||||
|
}
|
||||||
|
conn.setSelection(sel_start, sel_end);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Send arrow keys as a fallback for editors that do not support
|
||||||
|
[getExtractedText] like Termux. */
|
||||||
|
void move_cursor_fallback(int d, Pointers.Modifiers mods)
|
||||||
|
{
|
||||||
|
while (d < 0)
|
||||||
|
{
|
||||||
|
send_key_down_up(KeyEvent.KEYCODE_DPAD_LEFT, mods);
|
||||||
|
d++;
|
||||||
|
}
|
||||||
|
while (d > 0)
|
||||||
|
{
|
||||||
|
send_key_down_up(KeyEvent.KEYCODE_DPAD_RIGHT, mods);
|
||||||
|
d--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static interface IReceiver
|
public static interface IReceiver
|
||||||
{
|
{
|
||||||
public void handle_event_key(KeyValue.Event ev);
|
public void handle_event_key(KeyValue.Event ev);
|
||||||
|
@@ -237,6 +237,10 @@ class KeyModifier
|
|||||||
case '!': return "¡";
|
case '!': return "¡";
|
||||||
case '?': return "¿";
|
case '?': return "¿";
|
||||||
case '|': return "¦";
|
case '|': return "¦";
|
||||||
|
case '§': return "¶";
|
||||||
|
case '†': return "‡";
|
||||||
|
case '×': return "∙";
|
||||||
|
case ' ': return "nbsp";
|
||||||
// arrows
|
// arrows
|
||||||
case '↖': return "⇖";
|
case '↖': return "⇖";
|
||||||
case '↑': return "⇑";
|
case '↑': return "⇑";
|
||||||
@@ -255,6 +259,8 @@ class KeyModifier
|
|||||||
case 'y': return "¥";
|
case 'y': return "¥";
|
||||||
case 'c': return "¢";
|
case 'c': return "¢";
|
||||||
case 'p': return "₱";
|
case 'p': return "₱";
|
||||||
|
case 'h': return "₴";
|
||||||
|
case 'b': return "₿";
|
||||||
case '€': case '£': return "removed"; // Avoid showing these twice
|
case '€': case '£': return "removed"; // Avoid showing these twice
|
||||||
// alternating greek letters
|
// alternating greek letters
|
||||||
case 'π': return "ϖ";
|
case 'π': return "ϖ";
|
||||||
@@ -352,8 +358,28 @@ class KeyModifier
|
|||||||
case 'ं': return "ॕ";
|
case 'ं': return "ॕ";
|
||||||
case '़': return "ॎ";
|
case '़': return "ॎ";
|
||||||
case 'ऽ': return "ॽ";
|
case 'ऽ': return "ॽ";
|
||||||
// other
|
// Persian numbers
|
||||||
case ' ': return "nbsp";
|
case '۱': return "f1";
|
||||||
|
case '۲': return "f2";
|
||||||
|
case '۳': return "f3";
|
||||||
|
case '۴': return "f4";
|
||||||
|
case '۵': return "f5";
|
||||||
|
case '۶': return "f6";
|
||||||
|
case '۷': return "f7";
|
||||||
|
case '۸': return "f8";
|
||||||
|
case '۹': return "f9";
|
||||||
|
case '۰': return "f10";
|
||||||
|
// Arabic numbers
|
||||||
|
case '١': return "f1";
|
||||||
|
case '٢': return "f2";
|
||||||
|
case '٣': return "f3";
|
||||||
|
case '٤': return "f4";
|
||||||
|
case '٥': return "f5";
|
||||||
|
case '٦': return "f6";
|
||||||
|
case '٧': return "f7";
|
||||||
|
case '٨': return "f8";
|
||||||
|
case '٩': return "f9";
|
||||||
|
case '٠': return "f10";
|
||||||
default: return null;
|
default: return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -704,13 +730,36 @@ class KeyModifier
|
|||||||
case '8': return '⁸';
|
case '8': return '⁸';
|
||||||
case '9': return '⁹';
|
case '9': return '⁹';
|
||||||
case '0': return '⁰';
|
case '0': return '⁰';
|
||||||
case 'i': return 'ⁱ';
|
|
||||||
case '+': return '⁺';
|
case '+': return '⁺';
|
||||||
case '-': return '⁻';
|
case '-': return '⁻';
|
||||||
case '=': return '⁼';
|
case '=': return '⁼';
|
||||||
case '(': return '⁽';
|
case '(': return '⁽';
|
||||||
case ')': return '⁾';
|
case ')': return '⁾';
|
||||||
|
case 'a': return 'ᵃ';
|
||||||
|
case 'b': return 'ᵇ';
|
||||||
|
case 'c': return 'ᶜ';
|
||||||
|
case 'd': return 'ᵈ';
|
||||||
|
case 'e': return 'ᵉ';
|
||||||
|
case 'f': return 'ᶠ';
|
||||||
|
case 'g': return 'ᵍ';
|
||||||
|
case 'h': return 'ʰ';
|
||||||
|
case 'i': return 'ⁱ';
|
||||||
|
case 'j': return 'ʲ';
|
||||||
|
case 'k': return 'ᵏ';
|
||||||
|
case 'l': return 'ˡ';
|
||||||
|
case 'm': return 'ᵐ';
|
||||||
case 'n': return 'ⁿ';
|
case 'n': return 'ⁿ';
|
||||||
|
case 'o': return 'ᵒ';
|
||||||
|
case 'p': return 'ᵖ';
|
||||||
|
case 'r': return 'ʳ';
|
||||||
|
case 's': return 'ˢ';
|
||||||
|
case 't': return 'ᵗ';
|
||||||
|
case 'u': return 'ᵘ';
|
||||||
|
case 'v': return 'ᵛ';
|
||||||
|
case 'w': return 'ʷ';
|
||||||
|
case 'x': return 'ˣ';
|
||||||
|
case 'y': return 'ʸ';
|
||||||
|
case 'z': return 'ᶻ';
|
||||||
default: return c;
|
default: return c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -737,10 +786,23 @@ class KeyModifier
|
|||||||
case '=': return '₌';
|
case '=': return '₌';
|
||||||
case '(': return '₍';
|
case '(': return '₍';
|
||||||
case ')': return '₎';
|
case ')': return '₎';
|
||||||
case 'e': return 'ₑ';
|
|
||||||
case 'a': return 'ₐ';
|
case 'a': return 'ₐ';
|
||||||
case 'x': return 'ₓ';
|
case 'e': return 'ₑ';
|
||||||
|
case 'h': return 'ₕ';
|
||||||
|
case 'i': return 'ᵢ';
|
||||||
|
case 'j': return 'ⱼ';
|
||||||
|
case 'k': return 'ₖ';
|
||||||
|
case 'l': return 'ₗ';
|
||||||
|
case 'm': return 'ₘ';
|
||||||
|
case 'n': return 'ₙ';
|
||||||
case 'o': return 'ₒ';
|
case 'o': return 'ₒ';
|
||||||
|
case 'p': return 'ₚ';
|
||||||
|
case 'r': return 'ᵣ';
|
||||||
|
case 's': return 'ₛ';
|
||||||
|
case 't': return 'ₜ';
|
||||||
|
case 'u': return 'ᵤ';
|
||||||
|
case 'v': return 'ᵥ';
|
||||||
|
case 'x': return 'ₓ';
|
||||||
default: return c;
|
default: return c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -15,8 +15,8 @@ final class KeyValue
|
|||||||
CHANGE_METHOD,
|
CHANGE_METHOD,
|
||||||
CHANGE_METHOD_PREV,
|
CHANGE_METHOD_PREV,
|
||||||
ACTION,
|
ACTION,
|
||||||
SWITCH_SECOND,
|
SWITCH_FORWARD,
|
||||||
SWITCH_SECOND_BACK,
|
SWITCH_BACKWARD,
|
||||||
SWITCH_GREEKMATH,
|
SWITCH_GREEKMATH,
|
||||||
CAPS_LOCK,
|
CAPS_LOCK,
|
||||||
SWITCH_VOICE_TYPING,
|
SWITCH_VOICE_TYPING,
|
||||||
@@ -70,6 +70,8 @@ final class KeyValue
|
|||||||
SHARE,
|
SHARE,
|
||||||
ASSIST,
|
ASSIST,
|
||||||
AUTOFILL,
|
AUTOFILL,
|
||||||
|
CURSOR_LEFT,
|
||||||
|
CURSOR_RIGHT,
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum Placeholder
|
public static enum Placeholder
|
||||||
@@ -278,10 +280,20 @@ final class KeyValue
|
|||||||
return keyeventKey(String.valueOf((char)symbol), code, flags | FLAG_KEY_FONT);
|
return keyeventKey(String.valueOf((char)symbol), code, flags | FLAG_KEY_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static KeyValue editingKey(String symbol, Editing action)
|
private static KeyValue editingKey(String symbol, Editing action, int flags)
|
||||||
{
|
{
|
||||||
return new KeyValue(symbol, Kind.Editing, action.ordinal(),
|
return new KeyValue(symbol, Kind.Editing, action.ordinal(),
|
||||||
FLAG_SPECIAL | FLAG_SECONDARY | FLAG_SMALLER_FONT);
|
flags | FLAG_SPECIAL | FLAG_SECONDARY);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static KeyValue editingKey(String symbol, Editing action)
|
||||||
|
{
|
||||||
|
return editingKey(symbol, action, FLAG_SMALLER_FONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static KeyValue editingKey(int symbol, Editing action)
|
||||||
|
{
|
||||||
|
return editingKey(String.valueOf((char)symbol), action, FLAG_KEY_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** A key that do nothing but has a unique ID. */
|
/** A key that do nothing but has a unique ID. */
|
||||||
@@ -290,12 +302,13 @@ final class KeyValue
|
|||||||
return new KeyValue("", Kind.Placeholder, id.ordinal(), 0);
|
return new KeyValue("", Kind.Placeholder, id.ordinal(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static KeyValue fallbackMakeKey(String name)
|
/** Make a key that types a string. */
|
||||||
|
public static KeyValue makeStringKey(String str)
|
||||||
{
|
{
|
||||||
if (name.length() == 1)
|
if (str.length() == 1)
|
||||||
return new KeyValue(name, Kind.Char, name.charAt(0), 0);
|
return new KeyValue(str, Kind.Char, str.charAt(0), 0);
|
||||||
else
|
else
|
||||||
return new KeyValue(name, Kind.String, 0, 0);
|
return new KeyValue(str, Kind.String, 0, FLAG_SMALLER_FONT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static KeyValue getKeyByName(String name)
|
public static KeyValue getKeyByName(String name)
|
||||||
@@ -305,33 +318,34 @@ final class KeyValue
|
|||||||
/* These symbols have special meaning when in `res/xml` and are escaped in
|
/* These symbols have special meaning when in `res/xml` and are escaped in
|
||||||
standard layouts. The backslash is not stripped when parsed from the
|
standard layouts. The backslash is not stripped when parsed from the
|
||||||
custom layout option. */
|
custom layout option. */
|
||||||
case "\\?": return fallbackMakeKey("?");
|
case "\\?": return makeStringKey("?");
|
||||||
case "\\#": return fallbackMakeKey("#");
|
case "\\#": return makeStringKey("#");
|
||||||
case "\\@": return fallbackMakeKey("@");
|
case "\\@": return makeStringKey("@");
|
||||||
case "\\\\": return fallbackMakeKey("\\");
|
case "\\\\": return makeStringKey("\\");
|
||||||
|
|
||||||
case "shift": return modifierKey(0x0A, Modifier.SHIFT, 0);
|
/* Modifiers and dead-keys */
|
||||||
|
case "shift": return modifierKey(0xE00A, Modifier.SHIFT, 0);
|
||||||
case "ctrl": return modifierKey("Ctrl", Modifier.CTRL, 0);
|
case "ctrl": return modifierKey("Ctrl", Modifier.CTRL, 0);
|
||||||
case "alt": return modifierKey("Alt", Modifier.ALT, 0);
|
case "alt": return modifierKey("Alt", Modifier.ALT, 0);
|
||||||
case "accent_aigu": return diacritic(0x50, Modifier.AIGU);
|
case "accent_aigu": return diacritic(0xE050, Modifier.AIGU);
|
||||||
case "accent_caron": return diacritic(0x51, Modifier.CARON);
|
case "accent_caron": return diacritic(0xE051, Modifier.CARON);
|
||||||
case "accent_cedille": return diacritic(0x52, Modifier.CEDILLE);
|
case "accent_cedille": return diacritic(0xE052, Modifier.CEDILLE);
|
||||||
case "accent_circonflexe": return diacritic(0x53, Modifier.CIRCONFLEXE);
|
case "accent_circonflexe": return diacritic(0xE053, Modifier.CIRCONFLEXE);
|
||||||
case "accent_grave": return diacritic(0x54, Modifier.GRAVE);
|
case "accent_grave": return diacritic(0xE054, Modifier.GRAVE);
|
||||||
case "accent_macron": return diacritic(0x55, Modifier.MACRON);
|
case "accent_macron": return diacritic(0xE055, Modifier.MACRON);
|
||||||
case "accent_ring": return diacritic(0x56, Modifier.RING);
|
case "accent_ring": return diacritic(0xE056, Modifier.RING);
|
||||||
case "accent_tilde": return diacritic(0x57, Modifier.TILDE);
|
case "accent_tilde": return diacritic(0xE057, Modifier.TILDE);
|
||||||
case "accent_trema": return diacritic(0x58, Modifier.TREMA);
|
case "accent_trema": return diacritic(0xE058, Modifier.TREMA);
|
||||||
case "accent_ogonek": return diacritic(0x59, Modifier.OGONEK);
|
case "accent_ogonek": return diacritic(0xE059, Modifier.OGONEK);
|
||||||
case "accent_dot_above": return diacritic(0x5A, Modifier.DOT_ABOVE);
|
case "accent_dot_above": return diacritic(0xE05A, Modifier.DOT_ABOVE);
|
||||||
case "accent_double_aigu": return diacritic(0x5B, Modifier.DOUBLE_AIGU);
|
case "accent_double_aigu": return diacritic(0xE05B, Modifier.DOUBLE_AIGU);
|
||||||
case "accent_slash": return diacritic(0x5C, Modifier.SLASH);
|
case "accent_slash": return diacritic(0xE05C, Modifier.SLASH);
|
||||||
case "accent_arrow_right": return diacritic(0x5D, Modifier.ARROW_RIGHT);
|
case "accent_arrow_right": return diacritic(0xE05D, Modifier.ARROW_RIGHT);
|
||||||
case "accent_breve": return diacritic(0x5E, Modifier.BREVE);
|
case "accent_breve": return diacritic(0xE05E, Modifier.BREVE);
|
||||||
case "accent_bar": return diacritic(0x5F, Modifier.BAR);
|
case "accent_bar": return diacritic(0xE05F, Modifier.BAR);
|
||||||
case "accent_dot_below": return diacritic(0x60, Modifier.DOT_BELOW);
|
case "accent_dot_below": return diacritic(0xE060, Modifier.DOT_BELOW);
|
||||||
case "accent_horn": return diacritic(0x61, Modifier.HORN);
|
case "accent_horn": return diacritic(0xE061, Modifier.HORN);
|
||||||
case "accent_hook_above": return diacritic(0x62, Modifier.HOOK_ABOVE);
|
case "accent_hook_above": return diacritic(0xE062, Modifier.HOOK_ABOVE);
|
||||||
case "superscript": return modifierKey("Sup", Modifier.SUPERSCRIPT, 0);
|
case "superscript": return modifierKey("Sup", Modifier.SUPERSCRIPT, 0);
|
||||||
case "subscript": return modifierKey("Sub", Modifier.SUBSCRIPT, 0);
|
case "subscript": return modifierKey("Sub", Modifier.SUBSCRIPT, 0);
|
||||||
case "ordinal": return modifierKey("Ord", Modifier.ORDINAL, 0);
|
case "ordinal": return modifierKey("Ord", Modifier.ORDINAL, 0);
|
||||||
@@ -340,32 +354,34 @@ final class KeyValue
|
|||||||
case "fn": return modifierKey("Fn", Modifier.FN, 0);
|
case "fn": return modifierKey("Fn", Modifier.FN, 0);
|
||||||
case "meta": return modifierKey("Meta", Modifier.META, 0);
|
case "meta": return modifierKey("Meta", Modifier.META, 0);
|
||||||
|
|
||||||
case "config": return eventKey(0x04, Event.CONFIG, FLAG_SMALLER_FONT);
|
/* Special event keys */
|
||||||
|
case "config": return eventKey(0xE004, Event.CONFIG, FLAG_SMALLER_FONT);
|
||||||
case "switch_text": return eventKey("ABC", Event.SWITCH_TEXT, FLAG_SMALLER_FONT);
|
case "switch_text": return eventKey("ABC", Event.SWITCH_TEXT, FLAG_SMALLER_FONT);
|
||||||
case "switch_numeric": return eventKey("123+", Event.SWITCH_NUMERIC, FLAG_SMALLER_FONT);
|
case "switch_numeric": return eventKey("123+", Event.SWITCH_NUMERIC, FLAG_SMALLER_FONT);
|
||||||
case "switch_emoji": return eventKey(0x01, Event.SWITCH_EMOJI, FLAG_SMALLER_FONT);
|
case "switch_emoji": return eventKey(0xE001, Event.SWITCH_EMOJI, FLAG_SMALLER_FONT);
|
||||||
case "switch_back_emoji": return eventKey("ABC", Event.SWITCH_BACK_EMOJI, 0);
|
case "switch_back_emoji": return eventKey("ABC", Event.SWITCH_BACK_EMOJI, 0);
|
||||||
case "switch_second": return eventKey(0x13, Event.SWITCH_SECOND, FLAG_SMALLER_FONT);
|
case "switch_forward": return eventKey(0xE013, Event.SWITCH_FORWARD, FLAG_SMALLER_FONT);
|
||||||
case "switch_second_back": return eventKey(0x14, Event.SWITCH_SECOND_BACK, FLAG_SMALLER_FONT);
|
case "switch_backward": return eventKey(0xE014, Event.SWITCH_BACKWARD, FLAG_SMALLER_FONT);
|
||||||
case "switch_greekmath": return eventKey("πλ∇¬", Event.SWITCH_GREEKMATH, FLAG_SMALLER_FONT);
|
case "switch_greekmath": return eventKey("πλ∇¬", Event.SWITCH_GREEKMATH, FLAG_SMALLER_FONT);
|
||||||
case "change_method": return eventKey(0x09, Event.CHANGE_METHOD, FLAG_SMALLER_FONT);
|
case "change_method": return eventKey(0xE009, Event.CHANGE_METHOD, FLAG_SMALLER_FONT);
|
||||||
case "change_method_prev": return eventKey(0x09, Event.CHANGE_METHOD_PREV, FLAG_SMALLER_FONT);
|
case "change_method_prev": return eventKey(0xE009, Event.CHANGE_METHOD_PREV, FLAG_SMALLER_FONT);
|
||||||
case "action": return eventKey("Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced
|
case "action": return eventKey("Action", Event.ACTION, FLAG_SMALLER_FONT); // Will always be replaced
|
||||||
case "capslock": return eventKey(0x12, Event.CAPS_LOCK, 0);
|
case "capslock": return eventKey(0xE012, Event.CAPS_LOCK, 0);
|
||||||
case "voice_typing": return eventKey(0x15, Event.SWITCH_VOICE_TYPING, FLAG_SMALLER_FONT);
|
case "voice_typing": return eventKey(0xE015, Event.SWITCH_VOICE_TYPING, FLAG_SMALLER_FONT);
|
||||||
|
|
||||||
|
/* Key events */
|
||||||
case "esc": return keyeventKey("Esc", KeyEvent.KEYCODE_ESCAPE, FLAG_SMALLER_FONT);
|
case "esc": return keyeventKey("Esc", KeyEvent.KEYCODE_ESCAPE, FLAG_SMALLER_FONT);
|
||||||
case "enter": return keyeventKey(0x0E, KeyEvent.KEYCODE_ENTER, 0);
|
case "enter": return keyeventKey(0xE00E, KeyEvent.KEYCODE_ENTER, 0);
|
||||||
case "up": return keyeventKey(0x05, KeyEvent.KEYCODE_DPAD_UP, 0);
|
case "up": return keyeventKey(0xE005, KeyEvent.KEYCODE_DPAD_UP, 0);
|
||||||
case "right": return keyeventKey(0x06, KeyEvent.KEYCODE_DPAD_RIGHT, 0);
|
case "right": return keyeventKey(0xE006, KeyEvent.KEYCODE_DPAD_RIGHT, 0);
|
||||||
case "down": return keyeventKey(0x07, KeyEvent.KEYCODE_DPAD_DOWN, 0);
|
case "down": return keyeventKey(0xE007, KeyEvent.KEYCODE_DPAD_DOWN, 0);
|
||||||
case "left": return keyeventKey(0x08, KeyEvent.KEYCODE_DPAD_LEFT, 0);
|
case "left": return keyeventKey(0xE008, KeyEvent.KEYCODE_DPAD_LEFT, 0);
|
||||||
case "page_up": return keyeventKey(0x02, KeyEvent.KEYCODE_PAGE_UP, 0);
|
case "page_up": return keyeventKey(0xE002, KeyEvent.KEYCODE_PAGE_UP, 0);
|
||||||
case "page_down": return keyeventKey(0x03, KeyEvent.KEYCODE_PAGE_DOWN, 0);
|
case "page_down": return keyeventKey(0xE003, KeyEvent.KEYCODE_PAGE_DOWN, 0);
|
||||||
case "home": return keyeventKey(0x0B, KeyEvent.KEYCODE_MOVE_HOME, 0);
|
case "home": return keyeventKey(0xE00B, KeyEvent.KEYCODE_MOVE_HOME, 0);
|
||||||
case "end": return keyeventKey(0x0C, KeyEvent.KEYCODE_MOVE_END, 0);
|
case "end": return keyeventKey(0xE00C, KeyEvent.KEYCODE_MOVE_END, 0);
|
||||||
case "backspace": return keyeventKey(0x11, KeyEvent.KEYCODE_DEL, 0);
|
case "backspace": return keyeventKey(0xE011, KeyEvent.KEYCODE_DEL, 0);
|
||||||
case "delete": return keyeventKey(0x10, KeyEvent.KEYCODE_FORWARD_DEL, 0);
|
case "delete": return keyeventKey(0xE010, KeyEvent.KEYCODE_FORWARD_DEL, 0);
|
||||||
case "insert": return keyeventKey("Ins", KeyEvent.KEYCODE_INSERT, FLAG_SMALLER_FONT);
|
case "insert": return keyeventKey("Ins", KeyEvent.KEYCODE_INSERT, FLAG_SMALLER_FONT);
|
||||||
case "f1": return keyeventKey("F1", KeyEvent.KEYCODE_F1, 0);
|
case "f1": return keyeventKey("F1", KeyEvent.KEYCODE_F1, 0);
|
||||||
case "f2": return keyeventKey("F2", KeyEvent.KEYCODE_F2, 0);
|
case "f2": return keyeventKey("F2", KeyEvent.KEYCODE_F2, 0);
|
||||||
@@ -379,8 +395,9 @@ final class KeyValue
|
|||||||
case "f10": return keyeventKey("F10", KeyEvent.KEYCODE_F10, 0);
|
case "f10": return keyeventKey("F10", KeyEvent.KEYCODE_F10, 0);
|
||||||
case "f11": return keyeventKey("F11", KeyEvent.KEYCODE_F11, FLAG_SMALLER_FONT);
|
case "f11": return keyeventKey("F11", KeyEvent.KEYCODE_F11, FLAG_SMALLER_FONT);
|
||||||
case "f12": return keyeventKey("F12", KeyEvent.KEYCODE_F12, FLAG_SMALLER_FONT);
|
case "f12": return keyeventKey("F12", KeyEvent.KEYCODE_F12, FLAG_SMALLER_FONT);
|
||||||
case "tab": return keyeventKey(0x0F, KeyEvent.KEYCODE_TAB, FLAG_SMALLER_FONT);
|
case "tab": return keyeventKey(0xE00F, KeyEvent.KEYCODE_TAB, FLAG_SMALLER_FONT);
|
||||||
|
|
||||||
|
/* Spaces */
|
||||||
case "\\t": return charKey("\\t", '\t', 0); // Send the tab character
|
case "\\t": return charKey("\\t", '\t', 0); // Send the tab character
|
||||||
case "space": return charKey("\r", ' ', FLAG_KEY_FONT | FLAG_SECONDARY);
|
case "space": return charKey("\r", ' ', FLAG_KEY_FONT | FLAG_SECONDARY);
|
||||||
case "nbsp": return charKey("\u237d", '\u00a0', FLAG_SMALLER_FONT);
|
case "nbsp": return charKey("\u237d", '\u00a0', FLAG_SMALLER_FONT);
|
||||||
@@ -397,10 +414,6 @@ final class KeyValue
|
|||||||
case "blt": return charKey("<", '>', 0);
|
case "blt": return charKey("<", '>', 0);
|
||||||
case "bgt": return charKey(">", '<', 0);
|
case "bgt": return charKey(">", '<', 0);
|
||||||
|
|
||||||
case "removed": return placeholderKey(Placeholder.REMOVED);
|
|
||||||
case "f11_placeholder": return placeholderKey(Placeholder.F11);
|
|
||||||
case "f12_placeholder": return placeholderKey(Placeholder.F12);
|
|
||||||
|
|
||||||
/* hebrew niqqud */
|
/* hebrew niqqud */
|
||||||
case "qamats": return charKey("\u05E7\u05B8", '\u05B8', 0); // kamatz
|
case "qamats": return charKey("\u05E7\u05B8", '\u05B8', 0); // kamatz
|
||||||
case "patah": return charKey("\u05E4\u05B7", '\u05B7', 0); // patach
|
case "patah": return charKey("\u05E4\u05B7", '\u05B7', 0); // patach
|
||||||
@@ -432,41 +445,31 @@ final class KeyValue
|
|||||||
case "zwj": return charKey("zwj", '\u200D', 0); // zero-width joiner (provides ligature)
|
case "zwj": return charKey("zwj", '\u200D', 0); // zero-width joiner (provides ligature)
|
||||||
case "zwnj": return charKey("zwnj", '\u200C', 0); // zero-width non joiner (prevents unintended ligature)
|
case "zwnj": return charKey("zwnj", '\u200C', 0); // zero-width non joiner (prevents unintended ligature)
|
||||||
|
|
||||||
case "copy": return editingKey("copy", Editing.COPY);
|
/* Editing keys */
|
||||||
case "paste": return editingKey("paste", Editing.PASTE);
|
case "copy": return editingKey(0xE030, Editing.COPY);
|
||||||
case "cut": return editingKey("cut", Editing.CUT);
|
case "paste": return editingKey(0xE032, Editing.PASTE);
|
||||||
case "selectAll": return editingKey("s. all", Editing.SELECT_ALL);
|
case "cut": return editingKey(0xE031, Editing.CUT);
|
||||||
case "shareText": return editingKey("share", Editing.SHARE);
|
case "selectAll": return editingKey(0xE033, Editing.SELECT_ALL);
|
||||||
case "pasteAsPlainText": return editingKey("<paste>", Editing.PASTE_PLAIN);
|
case "shareText": return editingKey(0xE034, Editing.SHARE);
|
||||||
case "undo": return editingKey("undo", Editing.UNDO);
|
case "pasteAsPlainText": return editingKey(0xE035, Editing.PASTE_PLAIN);
|
||||||
case "redo": return editingKey("redo", Editing.REDO);
|
case "undo": return editingKey(0xE036, Editing.UNDO);
|
||||||
case "replaceText": return editingKey("repl.", Editing.REPLACE);
|
case "redo": return editingKey(0xE037, Editing.REDO);
|
||||||
case "textAssist": return editingKey("assist", Editing.ASSIST);
|
case "replaceText": return editingKey("repl", Editing.REPLACE);
|
||||||
case "autofill": return editingKey("auto.", Editing.AUTOFILL);
|
case "textAssist": return editingKey(0xE038, Editing.ASSIST);
|
||||||
default: return fallbackMakeKey(name);
|
case "autofill": return editingKey("auto", Editing.AUTOFILL);
|
||||||
|
case "cursor_left": return editingKey(0xE008, Editing.CURSOR_LEFT);
|
||||||
|
case "cursor_right": return editingKey(0xE006, Editing.CURSOR_RIGHT);
|
||||||
|
|
||||||
|
/* Placeholder keys */
|
||||||
|
case "removed": return placeholderKey(Placeholder.REMOVED);
|
||||||
|
case "f11_placeholder": return placeholderKey(Placeholder.F11);
|
||||||
|
case "f12_placeholder": return placeholderKey(Placeholder.F12);
|
||||||
|
|
||||||
|
/* Fallback to a string key that types its name */
|
||||||
|
default: return makeStringKey(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static final HashMap<String, String> keys_descr = new HashMap<String, String>();
|
|
||||||
|
|
||||||
/* Some keys have a description attached. Return [null] if otherwise. */
|
|
||||||
public static String getKeyDescription(String name)
|
|
||||||
{
|
|
||||||
return keys_descr.get(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void addKeyDescr(String name, String descr)
|
|
||||||
{
|
|
||||||
keys_descr.put(name, descr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static {
|
|
||||||
/* Keys description is shown in the settings. */
|
|
||||||
addKeyDescr("capslock", "Caps lock");
|
|
||||||
addKeyDescr("switch_greekmath", "Greek & math symbols");
|
|
||||||
addKeyDescr("voice_typing", "Voice typing");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Substitute for [assert], which has no effect on Android.
|
// Substitute for [assert], which has no effect on Android.
|
||||||
private static void check(boolean b)
|
private static void check(boolean b)
|
||||||
{
|
{
|
||||||
|
@@ -18,6 +18,7 @@ import android.view.inputmethod.InputMethodSubtype;
|
|||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import java.util.AbstractMap.SimpleEntry;
|
import java.util.AbstractMap.SimpleEntry;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -26,13 +27,12 @@ import java.util.Set;
|
|||||||
public class Keyboard2 extends InputMethodService
|
public class Keyboard2 extends InputMethodService
|
||||||
implements SharedPreferences.OnSharedPreferenceChangeListener
|
implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
{
|
{
|
||||||
static private final String TAG = "Keyboard2";
|
|
||||||
|
|
||||||
private Keyboard2View _keyboardView;
|
private Keyboard2View _keyboardView;
|
||||||
private KeyEventHandler _keyeventhandler;
|
private KeyEventHandler _keyeventhandler;
|
||||||
// If not 'null', the layout to use instead of [_currentTextLayout].
|
// If not 'null', the layout to use instead of [_currentTextLayout].
|
||||||
private KeyboardData _currentSpecialLayout;
|
private KeyboardData _currentSpecialLayout;
|
||||||
private Current_text_layout _currentTextLayout;
|
/** Current layout index in [Config.layouts]. */
|
||||||
|
private int _currentTextLayout;
|
||||||
// Layout associated with the currently selected locale. Not 'null'.
|
// Layout associated with the currently selected locale. Not 'null'.
|
||||||
private KeyboardData _localeTextLayout;
|
private KeyboardData _localeTextLayout;
|
||||||
private ViewGroup _emojiPane = null;
|
private ViewGroup _emojiPane = null;
|
||||||
@@ -40,30 +40,36 @@ public class Keyboard2 extends InputMethodService
|
|||||||
|
|
||||||
private Config _config;
|
private Config _config;
|
||||||
|
|
||||||
private boolean _debug_logs = false;
|
|
||||||
|
|
||||||
/** Layout currently visible. */
|
/** Layout currently visible. */
|
||||||
KeyboardData current_layout()
|
KeyboardData current_layout()
|
||||||
{
|
{
|
||||||
if (_currentSpecialLayout != null)
|
if (_currentSpecialLayout != null)
|
||||||
return _currentSpecialLayout;
|
return _currentSpecialLayout;
|
||||||
KeyboardData layout;
|
KeyboardData layout = null;
|
||||||
if (_currentTextLayout == Current_text_layout.SECONDARY)
|
if (_currentTextLayout >= _config.layouts.size())
|
||||||
layout = _config.second_layout;
|
_currentTextLayout = 0;
|
||||||
else if (_config.layout == null)
|
if (_currentTextLayout < _config.layouts.size())
|
||||||
|
layout = _config.layouts.get(_currentTextLayout);
|
||||||
|
if (layout == null)
|
||||||
layout = _localeTextLayout;
|
layout = _localeTextLayout;
|
||||||
else
|
|
||||||
layout = _config.layout;
|
|
||||||
return _config.modify_layout(layout);
|
return _config.modify_layout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTextLayout(Current_text_layout layout)
|
void setTextLayout(int l)
|
||||||
{
|
{
|
||||||
_currentTextLayout = layout;
|
if (l == _currentTextLayout)
|
||||||
|
return;
|
||||||
|
_currentTextLayout = l;
|
||||||
_currentSpecialLayout = null;
|
_currentSpecialLayout = null;
|
||||||
_keyboardView.setKeyboard(current_layout());
|
_keyboardView.setKeyboard(current_layout());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void incrTextLayout(int delta)
|
||||||
|
{
|
||||||
|
int s = _config.layouts.size();
|
||||||
|
setTextLayout((_currentTextLayout + delta + s) % s);
|
||||||
|
}
|
||||||
|
|
||||||
void setSpecialLayout(KeyboardData l)
|
void setSpecialLayout(KeyboardData l)
|
||||||
{
|
{
|
||||||
_currentSpecialLayout = l;
|
_currentSpecialLayout = l;
|
||||||
@@ -75,19 +81,25 @@ public class Keyboard2 extends InputMethodService
|
|||||||
return KeyboardData.load(getResources(), layout_id);
|
return KeyboardData.load(getResources(), layout_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Load a layout that contains a numpad (eg. the pin entry). */
|
||||||
|
KeyboardData loadNumpad(int layout_id)
|
||||||
|
{
|
||||||
|
return _config.modify_numpad(KeyboardData.load(getResources(), layout_id));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate()
|
public void onCreate()
|
||||||
{
|
{
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
KeyboardData.init(getResources());
|
KeyboardData.init(getResources());
|
||||||
SharedPreferences prefs = DirectBootAwarePreferences.get_shared_preferences(this);
|
SharedPreferences prefs = DirectBootAwarePreferences.get_shared_preferences(this);
|
||||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
|
||||||
_keyeventhandler = new KeyEventHandler(getMainLooper(), this.new Receiver());
|
_keyeventhandler = new KeyEventHandler(getMainLooper(), this.new Receiver());
|
||||||
Config.initGlobalConfig(prefs, getResources(), _keyeventhandler);
|
Config.initGlobalConfig(prefs, getResources(), _keyeventhandler);
|
||||||
|
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||||
_config = Config.globalConfig();
|
_config = Config.globalConfig();
|
||||||
_keyboardView = (Keyboard2View)inflate_view(R.layout.keyboard);
|
_keyboardView = (Keyboard2View)inflate_view(R.layout.keyboard);
|
||||||
_keyboardView.reset();
|
_keyboardView.reset();
|
||||||
_debug_logs = getResources().getBoolean(R.bool.debug_logs);
|
Logs.set_debug_logs(getResources().getBoolean(R.bool.debug_logs));
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<InputMethodSubtype> getEnabledSubtypes(InputMethodManager imm)
|
private List<InputMethodSubtype> getEnabledSubtypes(InputMethodManager imm)
|
||||||
@@ -99,34 +111,24 @@ public class Keyboard2 extends InputMethodService
|
|||||||
return Arrays.asList();
|
return Arrays.asList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void extra_keys_of_subtype(ExtraKeys dst, InputMethodSubtype subtype)
|
private ExtraKeys extra_keys_of_subtype(InputMethodSubtype subtype)
|
||||||
{
|
{
|
||||||
String extra_keys = subtype.getExtraValueOf("extra_keys");
|
String extra_keys = subtype.getExtraValueOf("extra_keys");
|
||||||
String script = subtype.getExtraValueOf("script");
|
String script = subtype.getExtraValueOf("script");
|
||||||
if (extra_keys == null)
|
if (extra_keys != null)
|
||||||
return;
|
return ExtraKeys.parse(script, extra_keys);
|
||||||
dst.add_keys_for_script(script, ExtraKeys.parse_extra_keys(extra_keys));
|
return ExtraKeys.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshAccentsOption(InputMethodManager imm, InputMethodSubtype subtype)
|
private void refreshAccentsOption(InputMethodManager imm, InputMethodSubtype subtype)
|
||||||
{
|
{
|
||||||
ExtraKeys extra_keys = new ExtraKeys();
|
|
||||||
List<InputMethodSubtype> enabled_subtypes = getEnabledSubtypes(imm);
|
List<InputMethodSubtype> enabled_subtypes = getEnabledSubtypes(imm);
|
||||||
switch (_config.accents)
|
List<ExtraKeys> extra_keys = new ArrayList<ExtraKeys>();
|
||||||
{
|
// Gather extra keys from all enabled subtypes
|
||||||
// '3' was "all accents", now unused
|
extra_keys.add(extra_keys_of_subtype(subtype));
|
||||||
case 1: case 3:
|
for (InputMethodSubtype s : enabled_subtypes)
|
||||||
extra_keys_of_subtype(extra_keys, subtype);
|
extra_keys.add(extra_keys_of_subtype(s));
|
||||||
for (InputMethodSubtype s : enabled_subtypes)
|
_config.extra_keys_subtype = ExtraKeys.merge(extra_keys);
|
||||||
extra_keys_of_subtype(extra_keys, s);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
extra_keys_of_subtype(extra_keys, subtype);
|
|
||||||
break;
|
|
||||||
case 4: break;
|
|
||||||
default: throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
_config.extra_keys_subtype = extra_keys;
|
|
||||||
if (enabled_subtypes.size() > 1)
|
if (enabled_subtypes.size() > 1)
|
||||||
_config.shouldOfferSwitchingToNextInputMethod = true;
|
_config.shouldOfferSwitchingToNextInputMethod = true;
|
||||||
}
|
}
|
||||||
@@ -153,22 +155,13 @@ public class Keyboard2 extends InputMethodService
|
|||||||
{
|
{
|
||||||
String s = subtype.getExtraValueOf("default_layout");
|
String s = subtype.getExtraValueOf("default_layout");
|
||||||
if (s != null)
|
if (s != null)
|
||||||
default_layout = _config.layout_of_string(getResources(), s);
|
default_layout = LayoutsPreference.layout_of_string(getResources(), s);
|
||||||
refreshAccentsOption(imm, subtype);
|
refreshAccentsOption(imm, subtype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (default_layout == null)
|
if (default_layout == null)
|
||||||
default_layout = KeyboardData.load(getResources(), R.xml.latn_qwerty_us);
|
default_layout = loadLayout(R.xml.latn_qwerty_us);
|
||||||
_localeTextLayout = default_layout;
|
_localeTextLayout = default_layout;
|
||||||
if (_config.second_layout == null)
|
|
||||||
{
|
|
||||||
_config.shouldOfferSwitchingToSecond = false;
|
|
||||||
_currentTextLayout = Current_text_layout.PRIMARY;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_config.shouldOfferSwitchingToSecond = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String actionLabel_of_imeAction(int action)
|
private String actionLabel_of_imeAction(int action)
|
||||||
@@ -239,30 +232,21 @@ public class Keyboard2 extends InputMethodService
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void log_editor_info(EditorInfo info)
|
private KeyboardData refresh_special_layout(EditorInfo info)
|
||||||
{
|
|
||||||
LogPrinter p = new LogPrinter(Log.DEBUG, TAG);
|
|
||||||
info.dump(p, "");
|
|
||||||
if (info.extras != null)
|
|
||||||
Log.d(TAG, "extras: "+info.extras.toString());
|
|
||||||
Log.d(TAG, "swapEnterActionKey: "+_config.swapEnterActionKey);
|
|
||||||
Log.d(TAG, "actionLabel: "+_config.actionLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refresh_special_layout(EditorInfo info)
|
|
||||||
{
|
{
|
||||||
switch (info.inputType & InputType.TYPE_MASK_CLASS)
|
switch (info.inputType & InputType.TYPE_MASK_CLASS)
|
||||||
{
|
{
|
||||||
case InputType.TYPE_CLASS_NUMBER:
|
case InputType.TYPE_CLASS_NUMBER:
|
||||||
case InputType.TYPE_CLASS_PHONE:
|
case InputType.TYPE_CLASS_PHONE:
|
||||||
case InputType.TYPE_CLASS_DATETIME:
|
case InputType.TYPE_CLASS_DATETIME:
|
||||||
_currentSpecialLayout =
|
if (_config.pin_entry_enabled)
|
||||||
_config.modify_numpad(KeyboardData.load(getResources(), R.xml.pin));
|
return loadNumpad(R.xml.pin);
|
||||||
break;
|
else
|
||||||
|
return loadNumpad(R.xml.numeric);
|
||||||
default:
|
default:
|
||||||
_currentSpecialLayout = null;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -270,12 +254,11 @@ public class Keyboard2 extends InputMethodService
|
|||||||
{
|
{
|
||||||
refresh_config();
|
refresh_config();
|
||||||
refresh_action_label(info);
|
refresh_action_label(info);
|
||||||
refresh_special_layout(info);
|
_currentSpecialLayout = refresh_special_layout(info);
|
||||||
_keyboardView.setKeyboard(current_layout());
|
_keyboardView.setKeyboard(current_layout());
|
||||||
_keyeventhandler.started(info);
|
_keyeventhandler.started(info);
|
||||||
setInputView(_keyboardView);
|
setInputView(_keyboardView);
|
||||||
if (_debug_logs)
|
Logs.debug_startup_input_view(info, _config);
|
||||||
log_editor_info(info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -397,7 +380,7 @@ public class Keyboard2 extends InputMethodService
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SWITCH_NUMERIC:
|
case SWITCH_NUMERIC:
|
||||||
setSpecialLayout(_config.modify_numpad(loadLayout(R.xml.numeric)));
|
setSpecialLayout(loadNumpad(R.xml.numeric));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SWITCH_EMOJI:
|
case SWITCH_EMOJI:
|
||||||
@@ -427,17 +410,16 @@ public class Keyboard2 extends InputMethodService
|
|||||||
conn.performEditorAction(actionId);
|
conn.performEditorAction(actionId);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SWITCH_SECOND:
|
case SWITCH_FORWARD:
|
||||||
if (_config.second_layout != null)
|
incrTextLayout(1);
|
||||||
setTextLayout(Current_text_layout.SECONDARY);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SWITCH_SECOND_BACK:
|
case SWITCH_BACKWARD:
|
||||||
setTextLayout(Current_text_layout.PRIMARY);
|
incrTextLayout(-1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SWITCH_GREEKMATH:
|
case SWITCH_GREEKMATH:
|
||||||
setSpecialLayout(_config.modify_numpad(loadLayout(R.xml.greekmath)));
|
setSpecialLayout(loadNumpad(R.xml.greekmath));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAPS_LOCK:
|
case CAPS_LOCK:
|
||||||
@@ -477,10 +459,4 @@ public class Keyboard2 extends InputMethodService
|
|||||||
{
|
{
|
||||||
return View.inflate(new ContextThemeWrapper(this, _config.theme), layout, null);
|
return View.inflate(new ContextThemeWrapper(this, _config.theme), layout, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static enum Current_text_layout
|
|
||||||
{
|
|
||||||
PRIMARY,
|
|
||||||
SECONDARY
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -407,7 +407,12 @@ public class Keyboard2View extends View
|
|||||||
x += keyW / 2f;
|
x += keyW / 2f;
|
||||||
else
|
else
|
||||||
x += (a == Paint.Align.LEFT) ? subPadding : keyW - subPadding;
|
x += (a == Paint.Align.LEFT) ? subPadding : keyW - subPadding;
|
||||||
canvas.drawText(kv.getString(), x, y, p);
|
String label = kv.getString();
|
||||||
|
int label_len = label.length();
|
||||||
|
// Limit the label of string keys to 3 characters
|
||||||
|
if (label_len > 3 && kv.getKind() == KeyValue.Kind.String)
|
||||||
|
label_len = 3;
|
||||||
|
canvas.drawText(label, 0, label_len, x, y, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawIndication(Canvas canvas, String indication, float x,
|
private void drawIndication(Canvas canvas, String indication, float x,
|
||||||
|
@@ -398,7 +398,8 @@ class KeyboardData
|
|||||||
|
|
||||||
public Key withKeyValue(int i, KeyValue kv)
|
public Key withKeyValue(int i, KeyValue kv)
|
||||||
{
|
{
|
||||||
KeyValue[] ks = Arrays.copyOf(keys, keys.length);
|
KeyValue[] ks = new KeyValue[keys.length];
|
||||||
|
for (int j = 0; j < keys.length; j++) ks[j] = keys[j];
|
||||||
ks[i] = kv;
|
ks[i] = kv;
|
||||||
int flags = (keysflags & ~(ALL_FLAGS << i));
|
int flags = (keysflags & ~(ALL_FLAGS << i));
|
||||||
return new Key(ks, flags, width, shift, slider, indication);
|
return new Key(ks, flags, width, shift, slider, indication);
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
package juloo.keyboard2;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.content.res.TypedArray;
|
|
||||||
import android.preference.ListPreference;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
|
|
||||||
public class LayoutListPreference extends ListPreference
|
|
||||||
{
|
|
||||||
public LayoutListPreference(Context context, AttributeSet attrs)
|
|
||||||
{
|
|
||||||
super(context, attrs);
|
|
||||||
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LayoutListPreference);
|
|
||||||
String defaultString = a.getString(R.styleable.LayoutListPreference_defaultString);
|
|
||||||
a.recycle();
|
|
||||||
Resources res = context.getResources();
|
|
||||||
String[] entries = res.getStringArray(R.array.pref_layout_entries);
|
|
||||||
entries[0] = defaultString;
|
|
||||||
setEntries(entries);
|
|
||||||
setEntryValues(res.getStringArray(R.array.pref_layout_values));
|
|
||||||
setSummary("%s");
|
|
||||||
setDefaultValue("none");
|
|
||||||
}
|
|
||||||
}
|
|
266
srcs/juloo.keyboard2/LayoutsPreference.java
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
public class LayoutsPreference extends ListGroupPreference<LayoutsPreference.Layout>
|
||||||
|
{
|
||||||
|
static final String KEY = "layouts";
|
||||||
|
static final List<Layout> DEFAULT =
|
||||||
|
Collections.singletonList((Layout)new SystemLayout());
|
||||||
|
static final ListGroupPreference.Serializer<Layout> SERIALIZER =
|
||||||
|
new Serializer();
|
||||||
|
|
||||||
|
/** Text displayed for each layout in the dialog list. */
|
||||||
|
String[] _layout_display_names;
|
||||||
|
|
||||||
|
public LayoutsPreference(Context ctx, AttributeSet attrs)
|
||||||
|
{
|
||||||
|
super(ctx, attrs);
|
||||||
|
setKey(KEY);
|
||||||
|
Resources res = ctx.getResources();
|
||||||
|
_layout_display_names = res.getStringArray(R.array.pref_layout_entries);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Obtained from [res/values/layouts.xml]. */
|
||||||
|
static List<String> _unsafe_layout_ids_str = null;
|
||||||
|
static TypedArray _unsafe_layout_ids_res = null;
|
||||||
|
|
||||||
|
/** Layout internal names. Contains "system" and "custom". */
|
||||||
|
public static List<String> get_layout_names(Resources res)
|
||||||
|
{
|
||||||
|
if (_unsafe_layout_ids_str == null)
|
||||||
|
_unsafe_layout_ids_str = Arrays.asList(
|
||||||
|
res.getStringArray(R.array.pref_layout_values));
|
||||||
|
return _unsafe_layout_ids_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Layout resource id for a layout name. [-1] if not found. */
|
||||||
|
public static int layout_id_of_name(Resources res, String name)
|
||||||
|
{
|
||||||
|
if (_unsafe_layout_ids_res == null)
|
||||||
|
_unsafe_layout_ids_res = res.obtainTypedArray(R.array.layout_ids);
|
||||||
|
int i = get_layout_names(res).indexOf(name);
|
||||||
|
if (i >= 0)
|
||||||
|
return _unsafe_layout_ids_res.getResourceId(i, 0);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** [null] for the "system" layout. */
|
||||||
|
public static List<KeyboardData> load_from_preferences(Resources res, SharedPreferences prefs)
|
||||||
|
{
|
||||||
|
List<KeyboardData> layouts = new ArrayList<KeyboardData>();
|
||||||
|
for (Layout l : load_from_preferences(KEY, prefs, DEFAULT, SERIALIZER))
|
||||||
|
{
|
||||||
|
if (l instanceof NamedLayout)
|
||||||
|
layouts.add(layout_of_string(res, ((NamedLayout)l).name));
|
||||||
|
else if (l instanceof CustomLayout)
|
||||||
|
layouts.add(KeyboardData.load_string(((CustomLayout)l).xml));
|
||||||
|
else // instanceof SystemLayout
|
||||||
|
layouts.add(null);
|
||||||
|
}
|
||||||
|
return layouts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Does not call [prefs.commit()]. */
|
||||||
|
public static void save_to_preferences(SharedPreferences.Editor prefs, List<Layout> items)
|
||||||
|
{
|
||||||
|
save_to_preferences(KEY, prefs, items, SERIALIZER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static KeyboardData layout_of_string(Resources res, String name)
|
||||||
|
{
|
||||||
|
int id = layout_id_of_name(res, name);
|
||||||
|
if (id > 0)
|
||||||
|
return KeyboardData.load(res, id);
|
||||||
|
// Might happen when the app is downgraded, return the system layout.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSetInitialValue(boolean restoreValue, Object defaultValue)
|
||||||
|
{
|
||||||
|
super.onSetInitialValue(restoreValue, defaultValue);
|
||||||
|
if (_values.size() == 0)
|
||||||
|
set_values(new ArrayList<Layout>(DEFAULT), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
String label_of_layout(Layout l)
|
||||||
|
{
|
||||||
|
if (l instanceof NamedLayout)
|
||||||
|
{
|
||||||
|
String lname = ((NamedLayout)l).name;
|
||||||
|
int value_i = get_layout_names(getContext().getResources()).indexOf(lname);
|
||||||
|
return value_i < 0 ? lname : _layout_display_names[value_i];
|
||||||
|
}
|
||||||
|
else if (l instanceof CustomLayout)
|
||||||
|
return getContext().getString(R.string.pref_layout_e_custom);
|
||||||
|
else // instanceof SystemLayout
|
||||||
|
return getContext().getString(R.string.pref_layout_e_system);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String label_of_value(Layout value, int i)
|
||||||
|
{
|
||||||
|
return getContext().getString(R.string.pref_layouts_item, i + 1,
|
||||||
|
label_of_layout(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
AddButton on_attach_add_button(AddButton prev_btn)
|
||||||
|
{
|
||||||
|
if (prev_btn == null)
|
||||||
|
return new LayoutsAddButton(getContext());
|
||||||
|
return prev_btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean should_allow_remove_item(Layout value)
|
||||||
|
{
|
||||||
|
return (_values.size() > 1 && !(value instanceof CustomLayout));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ListGroupPreference.Serializer<Layout> get_serializer() { return SERIALIZER; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void select(final SelectionCallback callback)
|
||||||
|
{
|
||||||
|
ArrayAdapter layouts = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, _layout_display_names);
|
||||||
|
new AlertDialog.Builder(getContext())
|
||||||
|
.setView(R.layout.dialog_edit_text)
|
||||||
|
.setAdapter(layouts, new DialogInterface.OnClickListener(){
|
||||||
|
public void onClick(DialogInterface _dialog, int which)
|
||||||
|
{
|
||||||
|
String name = get_layout_names(getContext().getResources()).get(which);
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case "system":
|
||||||
|
callback.select(new SystemLayout());
|
||||||
|
break;
|
||||||
|
case "custom":
|
||||||
|
select_custom(callback, "");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
callback.select(new NamedLayout(name));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Dialog for specifying a custom layout. [initial_text] is the layout
|
||||||
|
description when modifying a layout. */
|
||||||
|
void select_custom(final SelectionCallback callback, String initial_text)
|
||||||
|
{
|
||||||
|
final EditText input = new EditText(getContext());
|
||||||
|
input.setText(initial_text);
|
||||||
|
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext())
|
||||||
|
.setView(input)
|
||||||
|
.setTitle(R.string.pref_custom_layout_title)
|
||||||
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){
|
||||||
|
public void onClick(DialogInterface _dialog, int _which)
|
||||||
|
{
|
||||||
|
callback.select(new CustomLayout(input.getText().toString()));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
// Might be true when modifying an existing layout
|
||||||
|
if (callback.allow_remove() && _values.size() > 1)
|
||||||
|
dialog.setNeutralButton(R.string.pref_layouts_remove_custom, new DialogInterface.OnClickListener(){
|
||||||
|
public void onClick(DialogInterface _dialog, int _which)
|
||||||
|
{
|
||||||
|
callback.select(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called when modifying a layout. Custom layouts behave differently. */
|
||||||
|
@Override
|
||||||
|
void select(final SelectionCallback callback, Layout prev_layout)
|
||||||
|
{
|
||||||
|
if (prev_layout instanceof CustomLayout)
|
||||||
|
select_custom(callback, ((CustomLayout)prev_layout).xml);
|
||||||
|
else
|
||||||
|
select(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
class LayoutsAddButton extends AddButton
|
||||||
|
{
|
||||||
|
public LayoutsAddButton(Context ctx)
|
||||||
|
{
|
||||||
|
super(ctx);
|
||||||
|
setLayoutResource(R.layout.pref_layouts_add_btn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A layout selected by the user. The only implementations are
|
||||||
|
[NamedLayout], [SystemLayout] and [CustomLayout]. */
|
||||||
|
interface Layout {}
|
||||||
|
|
||||||
|
static final class SystemLayout implements Layout
|
||||||
|
{
|
||||||
|
public SystemLayout() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The name of a layout defined in [res/xml]. */
|
||||||
|
static final class NamedLayout implements Layout
|
||||||
|
{
|
||||||
|
public final String name;
|
||||||
|
public NamedLayout(String n) { name = n; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The XML description of a custom layout. */
|
||||||
|
static final class CustomLayout implements Layout
|
||||||
|
{
|
||||||
|
public final String xml;
|
||||||
|
public CustomLayout(String c) { xml = c; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Named layouts are serialized to strings and custom layouts to JSON
|
||||||
|
objects with a [kind] field. */
|
||||||
|
static class Serializer implements ListGroupPreference.Serializer<Layout>
|
||||||
|
{
|
||||||
|
public Layout load_item(Object obj) throws JSONException
|
||||||
|
{
|
||||||
|
if (obj instanceof String)
|
||||||
|
{
|
||||||
|
String name = (String)obj;
|
||||||
|
if (name.equals("system"))
|
||||||
|
return new SystemLayout();
|
||||||
|
return new NamedLayout(name);
|
||||||
|
}
|
||||||
|
JSONObject obj_ = (JSONObject)obj;
|
||||||
|
switch (obj_.getString("kind"))
|
||||||
|
{
|
||||||
|
case "custom": return new CustomLayout(obj_.getString("xml"));
|
||||||
|
case "system": default: return new SystemLayout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object save_item(Layout v) throws JSONException
|
||||||
|
{
|
||||||
|
if (v instanceof NamedLayout)
|
||||||
|
return ((NamedLayout)v).name;
|
||||||
|
if (v instanceof CustomLayout)
|
||||||
|
return new JSONObject().put("kind", "custom")
|
||||||
|
.put("xml", ((CustomLayout)v).xml);
|
||||||
|
return new JSONObject().put("kind", "system");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
293
srcs/juloo.keyboard2/ListGroupPreference.java
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.preference.Preference;
|
||||||
|
import android.preference.PreferenceGroup;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
/** A list of preferences where the users can add items to the end and modify
|
||||||
|
and remove items. Backed by a string list. Implement user selection in
|
||||||
|
[select()]. */
|
||||||
|
public abstract class ListGroupPreference<E> extends PreferenceGroup
|
||||||
|
{
|
||||||
|
boolean _attached = false;
|
||||||
|
List<E> _values;
|
||||||
|
/** The "add" button currently displayed. */
|
||||||
|
AddButton _add_button = null;
|
||||||
|
|
||||||
|
public ListGroupPreference(Context context, AttributeSet attrs)
|
||||||
|
{
|
||||||
|
super(context, attrs);
|
||||||
|
setOrderingAsAdded(true);
|
||||||
|
setLayoutResource(R.layout.pref_listgroup_group);
|
||||||
|
_values = new ArrayList<E>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Overrideable */
|
||||||
|
|
||||||
|
/** The label to display on the item for a given value. */
|
||||||
|
abstract String label_of_value(E value, int i);
|
||||||
|
|
||||||
|
/** Called every time the list changes and allows to change the "Add" button
|
||||||
|
appearance.
|
||||||
|
[prev_btn] is the previously attached button, might be null. */
|
||||||
|
AddButton on_attach_add_button(AddButton prev_btn)
|
||||||
|
{
|
||||||
|
if (prev_btn == null)
|
||||||
|
return new AddButton(getContext());
|
||||||
|
return prev_btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called every time the list changes and allows to disable the "Remove"
|
||||||
|
buttons on every items. Might be used to enforce a minimum number of
|
||||||
|
items. */
|
||||||
|
boolean should_allow_remove_item(E _value)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Called when an item is added or modified. */
|
||||||
|
abstract void select(SelectionCallback<E> callback);
|
||||||
|
|
||||||
|
/** Called when an item is modified. */
|
||||||
|
void select(SelectionCallback<E> callback, E _old_value)
|
||||||
|
{
|
||||||
|
select(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A separate class is used as the same serializer must be used in the
|
||||||
|
static context. See [Serializer] below. */
|
||||||
|
abstract Serializer<E> get_serializer();
|
||||||
|
|
||||||
|
/** Load/save utils */
|
||||||
|
|
||||||
|
/** Read a value saved by preference from a [SharedPreferences] object.
|
||||||
|
[serializer] must be the same that is returned by [get_serializer()].
|
||||||
|
Returns [null] on error. */
|
||||||
|
static <E> List<E> load_from_preferences(String key,
|
||||||
|
SharedPreferences prefs, List<E> def, Serializer<E> serializer)
|
||||||
|
{
|
||||||
|
String s = prefs.getString(key, null);
|
||||||
|
return (s != null) ? load_from_string(s, serializer) : def;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Save items into the preferences. Does not call [prefs.commit()]. */
|
||||||
|
static <E> void save_to_preferences(String key, SharedPreferences.Editor prefs, List<E> items, Serializer<E> serializer)
|
||||||
|
{
|
||||||
|
prefs.putString(key, save_to_string(items, serializer));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Decode a list of string previously encoded with [save_to_string]. Returns
|
||||||
|
[null] on error. */
|
||||||
|
static <E> List<E> load_from_string(String inp, Serializer<E> serializer)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
List<E> l = new ArrayList<E>();
|
||||||
|
JSONArray arr = new JSONArray(inp);
|
||||||
|
for (int i = 0; i < arr.length(); i++)
|
||||||
|
l.add(serializer.load_item(arr.get(i)));
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
catch (JSONException e)
|
||||||
|
{
|
||||||
|
Logs.exn("load_from_string", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Encode a list of string so it can be passed to
|
||||||
|
[Preference.persistString()]. Decode with [load_from_string]. */
|
||||||
|
static <E> String save_to_string(List<E> items, Serializer<E> serializer)
|
||||||
|
{
|
||||||
|
List<Object> serialized_items = new ArrayList<Object>();
|
||||||
|
for (E it : items)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
serialized_items.add(serializer.save_item(it));
|
||||||
|
}
|
||||||
|
catch (JSONException e)
|
||||||
|
{
|
||||||
|
Logs.exn("save_to_string", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (new JSONArray(serialized_items)).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Protected API */
|
||||||
|
|
||||||
|
/** Set the values. If [persist] is [true], persist into the store. */
|
||||||
|
void set_values(List<E> vs, boolean persist)
|
||||||
|
{
|
||||||
|
_values = vs;
|
||||||
|
reattach();
|
||||||
|
if (persist)
|
||||||
|
persistString(save_to_string(vs, get_serializer()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_item(E v)
|
||||||
|
{
|
||||||
|
_values.add(v);
|
||||||
|
set_values(_values, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void change_item(int i, E v)
|
||||||
|
{
|
||||||
|
_values.set(i, v);
|
||||||
|
set_values(_values, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove_item(int i)
|
||||||
|
{
|
||||||
|
_values.remove(i);
|
||||||
|
set_values(_values, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Internal */
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSetInitialValue(boolean restoreValue, Object defaultValue)
|
||||||
|
{
|
||||||
|
String input = (restoreValue) ? getPersistedString(null) : (String)defaultValue;
|
||||||
|
if (input != null)
|
||||||
|
{
|
||||||
|
List<E> values = load_from_string(input, get_serializer());
|
||||||
|
if (values != null)
|
||||||
|
set_values(values, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAttachedToActivity()
|
||||||
|
{
|
||||||
|
super.onAttachedToActivity();
|
||||||
|
if (_attached)
|
||||||
|
return;
|
||||||
|
_attached = true;
|
||||||
|
reattach();
|
||||||
|
}
|
||||||
|
|
||||||
|
void reattach()
|
||||||
|
{
|
||||||
|
if (!_attached)
|
||||||
|
return;
|
||||||
|
removeAll();
|
||||||
|
int i = 0;
|
||||||
|
for (E v : _values)
|
||||||
|
{
|
||||||
|
addPreference(this.new Item(getContext(), i, v));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
_add_button = on_attach_add_button(_add_button);
|
||||||
|
_add_button.setOrder(Preference.DEFAULT_ORDER);
|
||||||
|
addPreference(_add_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Item extends Preference
|
||||||
|
{
|
||||||
|
final E _value;
|
||||||
|
final int _index;
|
||||||
|
|
||||||
|
public Item(Context ctx, int index, E value)
|
||||||
|
{
|
||||||
|
super(ctx);
|
||||||
|
_value = value;
|
||||||
|
_index = index;
|
||||||
|
setPersistent(false);
|
||||||
|
setTitle(label_of_value(value, index));
|
||||||
|
if (should_allow_remove_item(value))
|
||||||
|
setWidgetLayoutResource(R.layout.pref_listgroup_item_widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected View onCreateView(ViewGroup parent)
|
||||||
|
{
|
||||||
|
View v = super.onCreateView(parent);
|
||||||
|
View remove_btn = v.findViewById(R.id.pref_listgroup_remove_btn);
|
||||||
|
if (remove_btn != null)
|
||||||
|
remove_btn.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View _v)
|
||||||
|
{
|
||||||
|
remove_item(_index);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
v.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View _v)
|
||||||
|
{
|
||||||
|
select(new SelectionCallback<E>() {
|
||||||
|
public void select(E value)
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
remove_item(_index);
|
||||||
|
else
|
||||||
|
change_item(_index, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean allow_remove() { return true; }
|
||||||
|
}, _value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddButton extends Preference
|
||||||
|
{
|
||||||
|
public AddButton(Context ctx)
|
||||||
|
{
|
||||||
|
super(ctx);
|
||||||
|
setPersistent(false);
|
||||||
|
setLayoutResource(R.layout.pref_listgroup_add_btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onClick()
|
||||||
|
{
|
||||||
|
select(new SelectionCallback<E>() {
|
||||||
|
public void select(E value)
|
||||||
|
{
|
||||||
|
add_item(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean allow_remove() { return false; }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface SelectionCallback<E>
|
||||||
|
{
|
||||||
|
public void select(E value);
|
||||||
|
|
||||||
|
/** If this method returns [true], [null] might be passed to [select] to
|
||||||
|
remove the item. */
|
||||||
|
public boolean allow_remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Methods for serializing and deserializing abstract items.
|
||||||
|
[StringSerializer] is an implementation. */
|
||||||
|
public interface Serializer<E>
|
||||||
|
{
|
||||||
|
/** [obj] is an object returned by [save_item()]. */
|
||||||
|
E load_item(Object obj) throws JSONException;
|
||||||
|
|
||||||
|
/** Serialize an item into JSON. Might return an object that can be inserted
|
||||||
|
in a [JSONArray]. */
|
||||||
|
Object save_item(E v) throws JSONException;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class StringSerializer implements Serializer<String>
|
||||||
|
{
|
||||||
|
public String load_item(Object obj) { return (String)obj; }
|
||||||
|
public Object save_item(String v) { return v; }
|
||||||
|
}
|
||||||
|
}
|
51
srcs/juloo.keyboard2/Logs.java
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
import android.util.LogPrinter;
|
||||||
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
public final class Logs
|
||||||
|
{
|
||||||
|
static final String TAG = "juloo.keyboard2";
|
||||||
|
|
||||||
|
static LogPrinter _debug_logs = null;
|
||||||
|
|
||||||
|
public static void set_debug_logs(boolean d)
|
||||||
|
{
|
||||||
|
_debug_logs = d ? new LogPrinter(Log.DEBUG, TAG) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug_startup_input_view(EditorInfo info, Config conf)
|
||||||
|
{
|
||||||
|
if (_debug_logs == null)
|
||||||
|
return;
|
||||||
|
info.dump(_debug_logs, "");
|
||||||
|
if (info.extras != null)
|
||||||
|
_debug_logs.println("extras: "+info.extras.toString());
|
||||||
|
_debug_logs.println("swapEnterActionKey: "+conf.swapEnterActionKey);
|
||||||
|
_debug_logs.println("actionLabel: "+conf.actionLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug_config_migration(int from_version, int to_version)
|
||||||
|
{
|
||||||
|
debug("Migrating config version from " + from_version + " to " + to_version);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(String s)
|
||||||
|
{
|
||||||
|
if (_debug_logs != null)
|
||||||
|
_debug_logs.println(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void exn(String msg, Exception e)
|
||||||
|
{
|
||||||
|
Log.e(TAG, msg, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void trace()
|
||||||
|
{
|
||||||
|
if (_debug_logs != null)
|
||||||
|
_debug_logs.println(Log.getStackTraceString(new Exception()));
|
||||||
|
}
|
||||||
|
}
|
@@ -16,7 +16,12 @@ public class SettingsActivity extends PreferenceActivity
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
// The preferences can't be read when in direct-boot mode. Avoid crashing
|
// The preferences can't be read when in direct-boot mode. Avoid crashing
|
||||||
// and don't allow changing the settings.
|
// and don't allow changing the settings.
|
||||||
try { getPreferenceManager().getSharedPreferences(); }
|
// Run the config migration on this prefs as it might be different from the
|
||||||
|
// one used by the keyboard, which have been migrated.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Config.migrate(getPreferenceManager().getSharedPreferences());
|
||||||
|
}
|
||||||
catch (Exception _e) { fallbackEncrypted(); return; }
|
catch (Exception _e) { fallbackEncrypted(); return; }
|
||||||
addPreferencesFromResource(R.xml.settings);
|
addPreferencesFromResource(R.xml.settings);
|
||||||
}
|
}
|
||||||
|
@@ -20,13 +20,13 @@ public final class VibratorCompat
|
|||||||
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
|
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
|
||||||
break;
|
break;
|
||||||
case STRONG:
|
case STRONG:
|
||||||
vibrator_vibrate(v, 60);
|
vibrator_vibrate(v, 90);
|
||||||
break;
|
break;
|
||||||
case MEDIUM:
|
case MEDIUM:
|
||||||
vibrator_vibrate(v, 30);
|
vibrator_vibrate(v, 45);
|
||||||
break;
|
break;
|
||||||
case LIGHT:
|
case LIGHT:
|
||||||
vibrator_vibrate(v, 15);
|
vibrator_vibrate(v, 20);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
srcs/special_font/30.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>content-copy</title><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></svg>
|
After Width: | Height: | Size: 260 B |
2
srcs/special_font/31.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>content-cut</title><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></svg>
|
After Width: | Height: | Size: 648 B |
2
srcs/special_font/32.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>content-paste</title><path d="M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" /></svg>
|
After Width: | Height: | Size: 353 B |
2
srcs/special_font/33.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>select-all</title><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></svg>
|
After Width: | Height: | Size: 413 B |
2
srcs/special_font/34.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>share</title><path d="M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z" /></svg>
|
After Width: | Height: | Size: 193 B |
2
srcs/special_font/35.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>clipboard-multiple-outline</title><path d="M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z" /></svg>
|
After Width: | Height: | Size: 449 B |
2
srcs/special_font/36.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>undo-variant</title><path d="M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z" /></svg>
|
After Width: | Height: | Size: 315 B |
2
srcs/special_font/37.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>redo-variant</title><path d="M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z" /></svg>
|
After Width: | Height: | Size: 317 B |
2
srcs/special_font/38.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<!-- Material Design Icons -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>assistant</title><path d="M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11" /></svg>
|
After Width: | Height: | Size: 292 B |
@@ -1,11 +1,12 @@
|
|||||||
# The special font is used for the symbols of some keys. It is built from SVG
|
# The special font is used for the symbols of some keys. It is built from SVG
|
||||||
# files, one for each glyph.
|
# files, one for each glyph.
|
||||||
New()
|
New()
|
||||||
|
Reencode("unicode")
|
||||||
|
|
||||||
# Imports glyphs, first argument is file name for the generated font
|
# Imports glyphs, first argument is file name for the generated font
|
||||||
i = 2
|
i = 2
|
||||||
while (i < $argc)
|
while (i < $argc)
|
||||||
Select(Strtol($argv[i]:t:r, 16))
|
Select(Strtol($argv[i]:t:r, 16) + 0xE000)
|
||||||
Import($argv[i], 0, 0, 4.0, 0.1)
|
Import($argv[i], 0, 0, 4.0, 0.1)
|
||||||
AutoWidth(150)
|
AutoWidth(150)
|
||||||
i++
|
i++
|
||||||
|
@@ -7,31 +7,41 @@ import glob
|
|||||||
# - Sort in the same order as the baseline
|
# - Sort in the same order as the baseline
|
||||||
# The baseline is 'values/strings.xml', which is english.
|
# The baseline is 'values/strings.xml', which is english.
|
||||||
|
|
||||||
|
# Dict of strings. Key is the pair string name and product field (often None).
|
||||||
def parse_strings_file(file):
|
def parse_strings_file(file):
|
||||||
def key(ent): return ent.get("name"), ent.get("product")
|
def key(ent): return ent.get("name"), ent.get("product")
|
||||||
resrcs = ET.parse(file).getroot()
|
resrcs = ET.parse(file).getroot()
|
||||||
return { key(ent): ent for ent in resrcs if ent.tag == "string" }
|
return { key(ent): ent for ent in resrcs if ent.tag == "string" }
|
||||||
|
|
||||||
def dump_entry(out, entry, comment):
|
# Print the XML file back autoformatted. Takes the output of [sync].
|
||||||
out.write(" ")
|
def write_updated_strings(out, strings):
|
||||||
if comment: out.write("<!-- ")
|
|
||||||
out.write(ET.tostring(entry, "unicode").strip())
|
|
||||||
if comment: out.write(" -->")
|
|
||||||
out.write("\n")
|
|
||||||
|
|
||||||
def write_updated_strings(out, baseline, strings):
|
|
||||||
out.write('<?xml version="1.0" encoding="utf-8"?>\n<resources>\n')
|
out.write('<?xml version="1.0" encoding="utf-8"?>\n<resources>\n')
|
||||||
for key, baseline_entry in baseline.items():
|
for key, string, comment in strings:
|
||||||
if key in strings:
|
out.write(" ")
|
||||||
dump_entry(out, strings[key], False)
|
if comment: out.write("<!-- ")
|
||||||
else:
|
out.write(ET.tostring(string, "unicode").strip())
|
||||||
dump_entry(out, baseline_entry, True)
|
if comment: out.write(" -->")
|
||||||
|
out.write("\n")
|
||||||
out.write('</resources>\n')
|
out.write('</resources>\n')
|
||||||
|
|
||||||
|
# Print whether string file is uptodate.
|
||||||
|
def print_status(fname, strings):
|
||||||
|
# Number of commented-out strings
|
||||||
|
c = sum(1 for _, _, comment in strings if comment)
|
||||||
|
status = "uptodate" if c == 0 else "missing %d strings" % c
|
||||||
|
print("%s: %s" % (fname, status))
|
||||||
|
|
||||||
|
# Returns a list of tuples (key, string, commented).
|
||||||
|
def sync(baseline, strings):
|
||||||
|
return [
|
||||||
|
(key, strings[key], False) if key in strings else
|
||||||
|
(key, base_string, True)
|
||||||
|
for key, base_string in baseline.items() ]
|
||||||
|
|
||||||
baseline = parse_strings_file("res/values/strings.xml")
|
baseline = parse_strings_file("res/values/strings.xml")
|
||||||
|
|
||||||
for strings_file in glob.glob("res/values-*/strings.xml"):
|
for strings_file in glob.glob("res/values-*/strings.xml"):
|
||||||
print(strings_file)
|
strings = sync(baseline, dict(parse_strings_file(strings_file)))
|
||||||
strings = dict(parse_strings_file(strings_file))
|
|
||||||
with open(strings_file, "w", encoding="utf-8") as out:
|
with open(strings_file, "w", encoding="utf-8") as out:
|
||||||
write_updated_strings(out, baseline, strings)
|
write_updated_strings(out, strings)
|
||||||
|
print_status(strings_file, strings)
|
||||||
|