Compare commits

..

4 Commits

Author SHA1 Message Date
cknight828
6940e308f1 Add Kana JIS Japanese layout 2024-09-10 21:42:47 +02:00
Jules Aguillon
49944a743e Add Japanese dakuten and handakuten 2024-09-10 21:41:09 +02:00
Jules Aguillon
8339a1b480 Update generated code 2024-09-10 21:29:53 +02:00
cknight828
bb92b465d0 Add dakuon compose sequence 2024-09-09 00:19:18 +09:00
282 changed files with 4476 additions and 11351 deletions

View File

@@ -13,7 +13,7 @@ jobs:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- run: python3 gen_layouts.py - run: python3 gen_layouts.py
- name: "Run 'python3 gen_layouts.py' to update generated files" - name: "Check that the generated 'layouts.xml' is uptodate, otherwise run 'python3 gen_layouts.py'"
run: git diff --exit-code run: git diff --exit-code
check-layouts: check-layouts:
name: check_layout.output name: check_layout.output
@@ -22,5 +22,5 @@ jobs:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- run: python3 check_layout.py - run: python3 check_layout.py
- name: "Fix your layout accordingly or run 'python3 check_layout.py' to promote the warnings" - name: "Check that the generated 'check_layout.output' is uptodate, otherwise run 'python3 check_layout.py'"
run: git diff --exit-code run: git diff --exit-code

1
.gitignore vendored
View File

@@ -10,4 +10,3 @@
/build /build
# Directory _build is not used anymore # Directory _build is not used anymore
/_build /_build
/release

View File

@@ -10,13 +10,11 @@
</intent-filter> </intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method"/> <meta-data android:name="android.view.im" android:resource="@xml/method"/>
</service> </service>
<activity android:name="juloo.keyboard2.SettingsActivity" android:icon="@mipmap/ic_launcher" android:label="@string/settings_activity_label" android:theme="@style/appTheme" android:exported="true" android:directBootAware="true">
<activity android:name="juloo.keyboard2.SettingsActivity" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/settingsTheme" android:exported="true" android:directBootAware="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="juloo.keyboard2.LauncherActivity" android:icon="@mipmap/ic_launcher" android:theme="@style/appTheme" android:exported="true" android:directBootAware="true"> <activity android:name="juloo.keyboard2.LauncherActivity" android:icon="@mipmap/ic_launcher" android:theme="@style/appTheme" android:exported="true" android:directBootAware="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

View File

@@ -190,46 +190,18 @@ As translations need to be updated regularly, you can subscribe to this issue
to receive a notification when an update is needed: to receive a notification when an update is needed:
https://github.com/Julow/Unexpected-Keyboard/issues/373 https://github.com/Julow/Unexpected-Keyboard/issues/373
### Adding symbols to Shift, Fn, Compose and other modifiers ### Adding Compose key sequences
New key combinations can be added to builtin modifiers in the following files: New Compose sequences can be added into `srcs/compose/compose/extra.json`.
If a entirely new family of sequences were to be added, a new `.json` file can
be created in the same directory to host them.
- Shift in `srcs/compose/shift.json`. ### Adding key combinations
- Fn in `srcs/compose/fn.json`.
- Compose in `srcs/compose/compose/extra.json`.
- Other modifiers are defined in the `accent_*.json` files in `srcs/compose`.
Generated code must then be updated by running: Key combinations are defined in `srcs/juloo.keyboard2/KeyModifier.java`.
For example, keys modified by the `Fn` key are defined in method
`apply_fn_char`.
``` Keys with special meaning are defined in `KeyValue.java` in method
./gradlew compileComposeSequences `getKeyByName`. Their special action are defined in `KeyEventHandler.java` in
``` method `key_up`
These files describe each symbols that get transformed when a given modifier is
activated, in JSON format. For example:
Example from `fn.json`, when `Fn` is activated, `<` becomes `«`:
```json
{
"<": "«",
}
```
The result of a sequence can be a key name. See the list of key names in
[doc/Possible-key-values.md](doc/Possible-key-values.md). For example from
`fn.json`, when `Fn` is activated, space becomes `nbsp`:
```json
{
" ": "nbsp",
}
```
Compose sequences are made of several steps. For example, the sequence
`Compose V s = Š` is defined as:
```json
{
"V": {
"s": "Š"
}
}
```

View File

@@ -1,4 +1,4 @@
# Unexpected Keyboard [<img src="https://hosted.weblate.org/widget/unexpected-keyboard/svg-badge.svg" alt="État de la traduction" />](https://hosted.weblate.org/engage/unexpected-keyboard/) # Unexpected Keyboard
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" [<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid" alt="Get it on F-Droid"
@@ -24,15 +24,8 @@ Usage: to apply the symbols located in the corners of each key, slide your finge
| --- | --- | --- | | --- | --- | --- |
| <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" alt="Screenshot-4" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" alt="Screenshot-5" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" alt="Screenshot-6" /> | | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" alt="Screenshot-4" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" alt="Screenshot-5" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" alt="Screenshot-6" /> |
## Help translate the application
Improve the application translations [using Weblate](https://hosted.weblate.org/engage/unexpected-keyboard/).
[<img src="https://hosted.weblate.org/widget/unexpected-keyboard/multi-auto.svg" alt="État de la traduction" />](https://hosted.weblate.org/engage/unexpected-keyboard/)
## Similar apps ## 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.
* [Calculator++](https://git.bubu1.eu/Bubu/android-calculatorpp) - Calculator with a similar UX, swipe to corners for advanced math symbols and operators.
## Contributing ## Contributing

Binary file not shown.

View File

@@ -1,36 +1,26 @@
plugins { plugins {
id 'com.android.application' version '8.6.0' id 'com.android.application' version '8.1.1'
}
dependencies {
implementation "androidx.window:window-java:1.3.0"
implementation "androidx.core:core:1.16.0"
testImplementation "junit:junit:4.13.2"
} }
android { android {
namespace 'juloo.keyboard2' namespace 'juloo.keyboard2'
compileSdk 35 compileSdk 34
defaultConfig { defaultConfig {
applicationId "juloo.keyboard2" applicationId "juloo.keyboard2"
minSdk 21 minSdk 11
targetSdkVersion 35 targetSdkVersion 35
versionCode 48 versionCode 42
versionName "1.31.1" versionName "1.29.1"
} }
sourceSets { sourceSets {
main { main {
manifest.srcFile 'AndroidManifest.xml' manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['srcs/juloo.keyboard2'] java.srcDirs = ['srcs']
res.srcDirs = ['res', 'build/generated-resources'] res.srcDirs = ['res', 'build/generated-resources']
assets.srcDirs = ['assets'] assets.srcDirs = ['assets']
} }
test {
java.srcDirs = ['test']
}
} }
signingConfigs { signingConfigs {
@@ -84,8 +74,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_7
} }
lintOptions { lintOptions {
@@ -94,6 +84,9 @@ android {
} }
} }
dependencies {
}
tasks.register('buildKeyboardFont') { tasks.register('buildKeyboardFont') {
println "\nBuilding assets/special_font.ttf" println "\nBuilding assets/special_font.ttf"
mkdir "$buildDir" mkdir "$buildDir"
@@ -136,8 +129,12 @@ tasks.register('genLayoutsList') {
tasks.register('checkKeyboardLayouts') { tasks.register('checkKeyboardLayouts') {
println "\nChecking layouts" println "\nChecking layouts"
exec { exec {
def layouts = new File(projectDir, "srcs/layouts").listFiles().findAll {
it.name.endsWith(".xml")
}
workingDir = projectDir workingDir = projectDir
commandLine("python", "check_layout.py") commandLine("python", "check_layout.py", *layouts)
standardOutput = new FileOutputStream("${projectDir}/check_layout.output")
} }
} }

View File

@@ -1,23 +1,141 @@
arab_alt: Layout includes some ASCII punctuation but not all, missing: !, ", ', +, -, /, :, ;, <, =, >, ?, [, \, ], _, |, ~ # arab_alt
arab_hamvaj_tly: Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], _, `, {, |, } Layout includes some ASCII punctuation but not all, missing: !, ", ', +, -, /, :, ;, <, =, >, ?, [, \, ], _, |, ~
arab_pc: Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, | 1 warnings
arab_pc_ckb: Layout includes some ASCII punctuation but not all, missing: ", %, ', +, ,, ;, <, =, >, ?, `, |, ~ # arab_hamvaj_tly
arab_pc_ckb_fa: Layout includes some ASCII punctuation but not all, missing: ", #, $, %, &, ', ,, /, ;, ?, @, \, ^, `, |, ~ Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], _, `, {, |, }
arab_pc_hindu: Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, | Layout doesn't define some important keys, missing: loc esc
arab_pc_ir: Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, } 2 warnings
beng_national: Layout includes some ASCII punctuation but not all, missing: $ # arab_pc
beng_provat: Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, } Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, |
cyrl_lynyertdz_mk: Layout includes some ASCII punctuation but not all, missing: " 1 warnings
cyrl_yaverti: Layout includes some ASCII punctuation but not all, missing: ~ # arab_pc_ckb
cyrl_yxukeng_os: Layout includes some ASCII punctuation but not all, missing: ", #, $, &, ', @, [, ], ~ Layout includes some ASCII punctuation but not all, missing: ", %, ', +, ,, ., :, ;, <, =, >, ?, `, |, ~
deva_alt: Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~ 1 warnings
deva_inscript: Layout includes some ASCII punctuation but not all, missing: ", $, ', ^, _, `, | # arab_pc_hindu
hebr_1_il: Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {, } Layout includes some ASCII punctuation but not all, missing: !, ', +, ;, ?, \, |
hebr_2_il: Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {, } 1 warnings
kann_kannada: Layout includes some ASCII punctuation but not all, missing: #, $, %, (, ), *, +, /, <, =, >, [, \, ], ^, `, {, |, }, ~ # arab_pc_ir
latn_colemak: Some keys contain whitespaces, unexpected: ́ Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, }
latn_dvorak: Missing important key, missing: loc capslock 1 warnings
latn_neo2: Layout redefines the bottom row but some important keys are missing, missing: loc switch_clipboard # armenian_ph_am
latn_qwertz_cz_multifunctional: Layout includes some ASCII punctuation but not all, missing: ` 0 warnings
latn_qwertz_sk: Layout includes some ASCII punctuation but not all, missing: ` # beng_national
urdu_phonetic_ur: Layout includes some ASCII punctuation but not all, missing: <, >, ?, `, |, ~ Layout includes some ASCII punctuation but not all, missing: $
1 warnings
# beng_provat
Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
1 warnings
# cyrl_jcuken_ru
0 warnings
# cyrl_jcuken_uk
0 warnings
# cyrl_lynyertz_sr
0 warnings
# cyrl_ueishsht
0 warnings
# cyrl_yaverti
Layout includes some ASCII punctuation but not all, missing: ~
1 warnings
# deva_alt
Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~
Layout doesn't define some important keys, missing: loc esc, loc tab
2 warnings
# deva_inscript
Duplicate keys: ।
Layout includes some ASCII punctuation but not all, missing: ", $, ', ^, _, `, |
2 warnings
# grek_qwerty
Duplicate keys: ;
1 warnings
# guj_phonetic_in
Duplicate keys: ટ, ડ
1 warnings
# hang_dubeolsik_kr
Layout doesn't define some important keys, missing: loc esc, loc tab
1 warnings
# hebr_1_il
Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {, }
1 warnings
# hebr_2_il
Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {, }
1 warnings
# kana_jis_jp
0 warnings
# latn_azerty_fr
0 warnings
# latn_bepo_fr
0 warnings
# latn_bone
Layout includes some ASCII punctuation but not all, missing: $
Layout redefines the bottom row but some important keys are missing, missing: cursor_left, cursor_right, loc compose, loc end, loc home, loc page_down, loc page_up, loc switch_clipboard, loc switch_greekmath, loc voice_typing, switch_backward
2 warnings
# latn_colemak
Some keys contain whitespaces, unexpected: ́
1 warnings
# latn_dvorak
0 warnings
# latn_neo2
Layout redefines the bottom row but some important keys are missing, missing: loc switch_clipboard
1 warnings
# latn_qwerty_br
0 warnings
# latn_qwerty_cz
0 warnings
# latn_qwerty_da
0 warnings
# latn_qwerty_es
0 warnings
# latn_qwerty_gb
0 warnings
# latn_qwerty_hu
0 warnings
# latn_qwerty_jp
0 warnings
# latn_qwerty_lv
0 warnings
# latn_qwerty_no
0 warnings
# latn_qwerty_pl
0 warnings
# latn_qwerty_ro
0 warnings
# latn_qwerty_se
Duplicate keys: !, ', ,, -, ., ?
1 warnings
# latn_qwerty_sk
0 warnings
# latn_qwerty_sr
0 warnings
# latn_qwerty_tly
Duplicate keys: a, c, j, q
Layout doesn't define some important keys, missing: loc esc, loc tab
2 warnings
# latn_qwerty_tr
0 warnings
# latn_qwerty_us
0 warnings
# latn_qwerty_vi
0 warnings
# latn_qwertz
0 warnings
# latn_qwertz_cz
0 warnings
# latn_qwertz_cz_multifunctional
Layout includes some ASCII punctuation but not all, missing: `
1 warnings
# latn_qwertz_de
0 warnings
# latn_qwertz_fr_ch
0 warnings
# latn_qwertz_hu
0 warnings
# latn_qwertz_sk
Layout includes some ASCII punctuation but not all, missing: `
1 warnings
# shaw_imperial_en
0 warnings
# urdu_phonetic_ur
Duplicate keys:
Layout includes some ASCII punctuation but not all, missing: <, >, ?, `, |, ~
Some keys contain whitespaces, unexpected:
3 warnings

View File

@@ -1,8 +1,7 @@
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import sys, os, glob, re import sys, os
layout_file_name = 0 warning_count = 0
warnings = []
KNOWN_NOT_LAYOUT = set([ KNOWN_NOT_LAYOUT = set([
"number_row", "numpad", "pin", "number_row", "numpad", "pin",
@@ -11,16 +10,15 @@ KNOWN_NOT_LAYOUT = set([
"clipboard_bottom_row" ]) "clipboard_bottom_row" ])
KEY_ATTRIBUTES = set([ KEY_ATTRIBUTES = set([
"key0", "key1", "key2", "key3", "key4", "key5", "key6", "key7", "key8", "key0",
"c", "nw", "ne", "sw", "se", "w", "e", "n", "s" "key1", "key2", "key3", "key4", "key5", "key6", "key7", "key8",
"nw", "ne", "sw", "se", "w", "e", "n", "s"
]) ])
# Keys defined in KeyValue.java
known_keys = set()
def warn(msg): def warn(msg):
global warnings global warning_count
warnings.append("%s: %s" % (layout_file_name, msg)) print(msg)
warning_count += 1
def key_list_str(keys): def key_list_str(keys):
return ", ".join(sorted(list(keys))) return ", ".join(sorted(list(keys)))
@@ -76,7 +74,9 @@ def check_layout(layout):
if len(dup) > 0: warn("Duplicate keys: " + key_list_str(dup)) 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_required(keys, ["backspace", "delete"], "Layout doesn't define some important keys") missing_required(keys,
["loc esc", "loc tab", "backspace", "delete"],
"Layout doesn't define some important keys")
unexpected_keys(keys, unexpected_keys(keys,
["copy", "paste", "cut", "selectAll", "shareText", ["copy", "paste", "cut", "selectAll", "shareText",
"pasteAsPlainText", "undo", "redo" ], "pasteAsPlainText", "undo", "redo" ],
@@ -90,10 +90,6 @@ def check_layout(layout):
unexpected_keys(keys, filter(lambda k: k.strip()!=k, keys), "Some keys contain whitespaces") unexpected_keys(keys, filter(lambda k: k.strip()!=k, keys), "Some keys contain whitespaces")
unexpected_keys(keys, ["f11_placeholder", "f12_placeholder"], "These keys are now added automatically") unexpected_keys(keys, ["f11_placeholder", "f12_placeholder"], "These keys are now added automatically")
if root.get("script", "latin") == "latin":
missing_required(keys, ["shift", "loc capslock"], "Missing important key")
missing_required(keys, ["loc esc", "loc tab"], "Missing programming keys")
_, bottom_row_keys, _ = parse_row("res/xml/bottom_row.xml") _, bottom_row_keys, _ = parse_row("res/xml/bottom_row.xml")
if root.get("bottom_row") == "false": if root.get("bottom_row") == "false":
@@ -106,34 +102,15 @@ def check_layout(layout):
if root.get("script") == None: if root.get("script") == None:
warn("Layout doesn't specify a script.") warn("Layout doesn't specify a script.")
keys_without_loc = set(( k.removeprefix("loc ") for k in keys )) for fname in sorted(sys.argv[1:]):
# Keys with a len under 3 are often composed characters
special_keys = set(( k for k in keys_without_loc if len(k) > 3 and ":" not in k ))
unknown = special_keys.difference(known_keys)
if len(unknown) > 0:
warn("Layout contains unknown keys: %s" % key_list_str(unknown))
# Fill 'known_keys', which is used for some checks
def parse_known_keys():
global known_keys
with open("srcs/juloo.keyboard2/KeyValue.java", "r") as f:
known_keys = set(
( m.group(1) for m in re.finditer('case "([^"]+)":', f.read()) )
)
parse_known_keys()
for fname in sorted(glob.glob("srcs/layouts/*.xml")):
layout_id, _ = os.path.splitext(os.path.basename(fname)) layout_id, _ = os.path.splitext(os.path.basename(fname))
if layout_id in KNOWN_NOT_LAYOUT: if layout_id in KNOWN_NOT_LAYOUT:
continue continue
layout_file_name = layout_id
layout = parse_layout(fname) layout = parse_layout(fname)
if layout == None: if layout == None:
warn("Not a layout file") print("Not a layout file: %s" % layout_id)
else: else:
print("# %s" % layout_id)
warning_count = 0
check_layout(layout) check_layout(layout)
print("%d warnings" % warning_count)
with open("check_layout.output", "w") as out:
for w in warnings:
print(w, file=out)

View File

@@ -20,7 +20,7 @@ A layout XML file comprises tags that start with `<` and end with `>`.
* An optional `<modmap>`...`</modmap>` pair contains instructions if you want to change the behavior of a modifier key such as Shift. * An optional `<modmap>`...`</modmap>` pair contains instructions if you want to change the behavior of a modifier key such as Shift.
* Stand-alone tags include `<key`...`/>`, which defines a single key. * Stand-alone tags include `<key`...`/>`, which defines a single key.
A tag can have properties, defined using an equals sign and a pair of ASCII double quotes. For example, `<key c="a" />` defines the "a" key. The `c` property of the `key` tag says which key you are defining, and the tag's location inside `<row>`...`</row>` specifies where it will go in the row. A tag can have properties, defined using an equals sign and a pair of ASCII double quotes. For example, `<key key0="a" />` defines the "a" key. The `key0` property of the `key` tag says which key you are defining, and the tag's location inside `<row>`...`</row>` specifies where it will go in the row.
### Example ### Example
Here is a complete keyboard file with a single row containing an "a" key on the left and a "b" key on the right: Here is a complete keyboard file with a single row containing an "a" key on the left and a "b" key on the right:
@@ -28,42 +28,30 @@ Here is a complete keyboard file with a single row containing an "a" key on the
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<keyboard name="Simple example" script="latin"> <keyboard name="Simple example" script="latin">
<row> <row>
<key c="a" /> <key key0="a" />
<key c="b" /> <key key0="b" />
</row> </row>
</keyboard> </keyboard>
## Keyboard metadata ## Keyboard metadata
The `<keyboard>`...`</keyboard>` pair follows the declaration tag and encloses the whole keyboard. The following properties may be used (The first two appear in the example above): The `<keyboard>`...`</keyboard>` pair follows the declaration tag and encloses the whole keyboard. The following properties may be used (The first two appear in the example above):
* `name`: The name of the keyboard. The name you specify will appear in the Settings menu. If not present, the layout will just appear as “Custom layout”. * `name`: The name of the keyboard. The name you specify will appear in the Settings menu. If not present, the layout will just appear as “Custom layout”.
* `script`: The (main) writing system that the keyboard supports. The possible values are `arabic`, `armenian`, `bengali`, `cyrillic`, `devanagari`, `gujarati`, `hangul`, `hebrew`, `latin`, `persian`, `shavian`, and `urdu`. It defaults to `latin`. * `script`: The (main) writing system that the keyboard supports. The possible values are `arabic`, `armenian`, `bengali`, `cyrillic`, `devanagari`, `gujarati`, `hangul`, `hebrew`, `latin`, `persian`, `shavian`, and `urdu`. It defaults to `latin`.
* `numpad_script`: The script to use for the numpad. This is useful for scripts where a different, non-ASCII set of numerals is used, like Devanagari and Arabic. It defaults to the same as `script`. * `numpad_script`: The script to use for the numpad. This is useful for scripts where a different, non-ASCII set of numerals is used, like Devanagari and Arabic. It defaults to the same as `script`.
* `bottom_row`: Whether or not to show the common bottom row. It accepts `true` or `false`, and defaults to `true`. If your custom layout defines the bottom row, then specify `bottom_row="false"` to disable the built-in bottom row.
* `bottom_row`: Whether or not to show the built-in bottom row. It accepts `true` or `false`, and defaults to `true`. If your custom layout defines the bottom row, then specify `bottom_row="false"` to disable the built-in bottom row.
+ We recommend your layout use the built-in bottom row, because it is still evolving and your layout will incorporate innovations in future versions. However, to define your own, the current definition of the bottom row is in [bottom_row.xml](https://github.com/Julow/Unexpected-Keyboard/res/xml/bottom_row.xml). You can copypaste this XML into your custom layout as a starting point.
+ Likewise, the current definition of the top (number) row is in [number_row.xml](https://github.com/Julow/Unexpected-Keyboard/res/xml/number_row.xml).
* `embedded_number_row`: Whether the layout has an embedded number row, and thus the "Show number row" setting shouldn't add another one. It accepts `true` or `false`, and defaults to `false`.
* `locale_extra_keys`: Whether Unexpected should add language-dependent extra keys from [method.xml](../res/xml/method.xml) to this layout. It accepts `true` or `false`, and defaults to `true`. To disable these automatic additions, specify `locale_extra_keys="false"`. * `locale_extra_keys`: Whether Unexpected should add language-dependent extra keys from [method.xml](../res/xml/method.xml) to this layout. It accepts `true` or `false`, and defaults to `true`. To disable these automatic additions, specify `locale_extra_keys="false"`.
## Row ## Row
The `<row>`...`</row>` pair encloses one row on the keyboard. It has the following optional property: The `<row>`...`</row>` pair encloses one row on the keyboard. It has only one optional property:
* `height`: The height of the row: a positive floating-point value. * `height`: The height of the row: a positive floating-point value.
* `scale`: A positive floating-point value. If present, scale the width of each key so that the total is equal to the specified value, in key width unit.
A row's default height is 1.0 (one quarter of the keyboard height specified on the Settings menu). The `height` property makes the row taller or shorter than this. For example, if you define a 5-row keyboard but one row has `height="0.7"`, then the keyboard's total height is 4.7 units. If the total is different from 4.0, the keyboard will be taller or shorter than that specified in Settings. A row's default height is 1.0 (one quarter of the keyboard height specified on the Settings menu). The `height` property makes the row taller or shorter than this. For example, if you define a 5-row keyboard but one row has `height="0.7"`, then the keyboard's total height is 4.7 units. If the total is different from 4.0, the keyboard will be taller or shorter than that specified in Settings.
## Key ## Key
The `<key />` tag defines a key on the keyboard. Its position in the sequence of keys inside `<row>`...`</row>` indicates its position in the row from left to right. What the key does is defined by optional properties. The `<key />` tag defines a key on the keyboard. Its position in the sequence of keys inside `<row>`...`</row>` indicates its position in the row from left to right. What the key does is defined by optional properties.
### Taps ### Taps
What the key does when tapped is defined by the optional `c` property. For example, `<key c="a" />` defines the "a" key. Unexpected Keyboard provides a legend in the middle of the key. What the key does when tapped is defined by the optional `key0` property. For example, `<key key0="a" />` defines the "a" key. Unexpected Keyboard provides a legend in the middle of the key.
When the Shift modifier is tapped, the "a" key becomes the "A" key and the legend temporarily changes. The Fn modifier makes a different change. You can override this behavior with a modmap (see below). When the Shift modifier is tapped, the "a" key becomes the "A" key and the legend temporarily changes. The Fn modifier makes a different change. You can override this behavior with a modmap (see below).
@@ -75,7 +63,7 @@ The following optional properties define the effects of swipes:
<TD STYLE="width: 6em;">nw</TD><TD>n</TD><TD>ne</TD> <TD STYLE="width: 6em;">nw</TD><TD>n</TD><TD>ne</TD>
</TR> </TR>
<TR ALIGN=CENTER> <TR ALIGN=CENTER>
<TD>w</TD><TD>c</TD><TD>e</TD> <TD>w</TD><TD>&nbsp;</TD><TD>e</TD>
</TR> </TR>
<TR> <TR>
<TD>sw</TD><TD>s</TD><TD>se</TD> <TD>sw</TD><TD>s</TD><TD>se</TD>
@@ -88,7 +76,7 @@ The following optional properties define the effects of swipes:
<TD>key1</TD><TD>key7</TD><TD>key2</TD> <TD>key1</TD><TD>key7</TD><TD>key2</TD>
</TR> </TR>
<TR> <TR>
<TD>key5</TD><TD>key0</TD><TD>key6</TD> <TD>key5</TD><TD>&nbsp;</TD><TD>key6</TD>
</TR> </TR>
<TR> <TR>
<TD>key3</TD><TD>key8</TD><TD>key4</TD> <TD>key3</TD><TD>key8</TD><TD>key4</TD>
@@ -97,6 +85,7 @@ The following optional properties define the effects of swipes:
You can define a swipe only once with either compass-point or numeric notation. Unexpected Keyboard automatically puts a small legend in that direction from the center of the key. You can define a swipe only once with either compass-point or numeric notation. Unexpected Keyboard automatically puts a small legend in that direction from the center of the key.
* `slider`: If `slider="true"`, and the key also has `w` and `e` properties, then the key tracks horizontal finger motion precisely and sends the `w` and `e` keystrokes repeatedly. In built-in layouts, this makes the space bar send left and right characters as the user slides on the space bar.
* `anticircle`: The key value to send when doing an anti-clockwise gesture on the key. * `anticircle`: The key value to send when doing an anti-clockwise gesture on the key.
### Layout ### Layout
@@ -107,10 +96,10 @@ A key may have the following properties to control the row's layout:
Normally, a key's width is 1.0 unit. Unexpected Keyboard occupies the full width of the screen, and the row defining the highest number of units (in widths plus shifts) is as wide as the screen. A row whose width is a smaller number of units has empty space on the right. Normally, a key's width is 1.0 unit. Unexpected Keyboard occupies the full width of the screen, and the row defining the highest number of units (in widths plus shifts) is as wide as the screen. A row whose width is a smaller number of units has empty space on the right.
### Extra legend ### Extra legend
* `indication`: An optional extra legend to show under the main label. For example, `<key c="2" indication="ABC" />` displays ABC at the bottom of the 2 key, as on a pinpad or some telephones. If the key also defines a downward swipe with `s` or `key8`, the legends overlap. * `indication`: An optional extra legend to show under the main label. For example, `<key key0="2" indication="ABC" />` displays ABC at the bottom of the 2 key, as on a pinpad or some telephones. If the key also defines a downward swipe with `s` or `key8`, the legends overlap.
### Possible key values ### Possible key values
Built-in strings that assign a special function to a key are described in [this page](Possible-key-values.md). For example, `se="copy"` means a southeasterly swipe produces the Copy key. If a key value does not match any of the built-in strings, it outputs that text _verbatim_. For example, `c="a"` simply outputs the letter a. Built-in strings that assign a special function to a key are described in [this page](Possible-key-values.md). For example, `se="copy"` means a southeasterly swipe produces the Copy key. If a key value does not match any of the built-in strings, it outputs that text _verbatim_. For example, `key0="a"` simply outputs the letter a.
In a layout, a key value can also start with the `loc` prefix. These are place-holders; the tap or swipe does nothing unless enabled through the "Add keys to keyboard" option in the Settings menu, or implicitly enabled by the language the device is set to use. For example, `ne="loc accent_aigu"` says that a northeast swipe produces the acute accent combinatorial key—if enabled. In a layout, a key value can also start with the `loc` prefix. These are place-holders; the tap or swipe does nothing unless enabled through the "Add keys to keyboard" option in the Settings menu, or implicitly enabled by the language the device is set to use. For example, `ne="loc accent_aigu"` says that a northeast swipe produces the acute accent combinatorial key—if enabled.

View File

@@ -1,73 +1,43 @@
# Key values # Key values
A key value defines what a key on the keyboard does when pressed or swiped. This is an exhaustive list of special values accepted for the `key0` through `key8` or `nw` through `se` attributes on a key.
Key values appear in the following places: Any string that does not exactly match these will be printed verbatim.
A key can output multiple characters, but cannot combine multiple built-in key values.
- In custom layouts, they are the value of: the `c` attribute, the compass-point attributes `nw` ... `se`, and the old-style `key0` ... `key8` attributes. ## Escape codes
- Internally, they are used in the definition of the "Add keys to the keyboard" setting. Value | Escape code for
Key values can be any of the following:
- The name of a special key. A complete list of valid special keys follows.
- An arbitrary sequence of characters not containing `:`.
This results in a key that writes the specified characters.
- The syntax `legend:key_def`.
`legend` is the visible legend on the keyboard. It cannot contain `:`.
`key_def` can be:
+ The name of a special key, as listed below.
+ `'string'` An arbitrary string that can contain `:`. `'` can be added to the string as `` \' ``.
+ `keyevent:keycode` An Android keycode. They are listed as `KEYCODE_...` in [KeyEvent](https://developer.android.com/reference/android/view/KeyEvent#summary).
Examples:
+ `⏯:keyevent:85` A play/pause key (which has no effect in most apps).
+ `my@:'my.email@domain.com'` A key that sends an arbitrary string
- A macro, `legend:key_def1,key_def2,...`.
This results in a key with legend `legend` that behaves as if the sequence of `key_def` had been pressed in order.
Examples:
+ `CA:ctrl,a,ctrl,c` A key with legend CA that sends the sequence `ctrl+a`, `ctrl+c`.
+ `Cd:ctrl,backspace` A key with legend Cd that sends the shortcut `ctrl+backspace`.
### Escape codes
When defining a key value, several characters have special effects. If you want a character not to have its usual effect but to be taken literally, you should "escape" it in the usual way for XML:
To get this character... | ...you can type
:---- | :------ :---- | :------
A literal newline character, which is different from `enter` and `action` in certain apps. | `\n` `\?` | `?`
A literal tab character, which is different from `tab` in certain apps. | `\t` `\#` | `#`
`&` | `&amp;` `\@` | `@`
`<` | `&lt;` `\n` | Literal newline character. This is different from `enter` and `action` in certain apps.
`>` | `&gt;` `\t` | Literal tab character. This is different from `tab` in certain apps.
`"` | `&quot;` `\\` | `\`
The characters `\` (unless followed by n or t), `?`, `#`, and `@` do not need to be escaped when writing custom layouts. When writing a layout to be included in the app (in [srcs/layouts](https://github.com/Julow/Unexpected-Keyboard/tree/master/srcs/layouts)), they are represented by typing `\\`, `\?`, `\#`, and `\@`. XML escape codes also work, including:
The characters `,` and `:` can be escaped in a key value, using single quotes. For example, this macro defines a key with legend `http` that sends a string containing `:`: `<key c="http:home,'https://'" />` For simplicity, `,` and `:` cannot be escaped in the key legend. Value | Escape code for
:------- | :------
`&amp;` | `&`
`&lt;` | `<`
`&gt;` | `>`
`&quot;` | `"`
## Modifiers ## Modifiers
System modifiers are sent to the app, which can take app-specific action. System modifiers are sent to the app, which is free to do whatever they want in response.
The other modifiers only exist within the keyboard.
Value | Meaning Value | Meaning
:---------- | :------ :---------- | :------
`shift` | System modifier. `shift` | System modifier.
`ctrl` | System modifier. `ctrl` | System modifier.
`alt` | System modifier. `alt` | System modifier.
`meta` | System modifier. Equivalent to the Windows key. `meta` | System modifier. Equivalent to the Windows key.
`fn` | Activates Fn mode, which assigns letters and symbols to special characters. e.g. `fn` `!` = `¡`
`compose` | Compose key. Enables composing characters using Linux-like shortcuts; e.g. `Compose` `A` `single quote` types `Á` (A with acute accent).
`capslock` | Actives and locks Shift
The other modifiers take effect only within the keyboard. ## Special keys
Value | Meaning
:---------- | :------
`fn` | Activates Fn mode, which assigns letters and symbols to special characters. Example: `fn` `!` = `¡`
`compose` | Compose key. Enables composing characters using Linux-like shortcuts. Example: `Compose` `A` `'` types `Á` (A with acute accent).
`capslock` | Activates and locks Shift.
## App function keys
These keys are sent to apps, which are free to ignore them. The keyboard does not perform editing in response to these keys. These keys are sent to apps, which are free to ignore them. The keyboard does not perform editing in response to these keys.
`esc`, `enter`, `esc`, `enter`,
@@ -76,26 +46,12 @@ These keys are sent to apps, which are free to ignore them. The keyboard does no
`page_up`, `page_down`, `page_up`, `page_down`,
`home`, `end`, `home`, `end`,
`backspace`, `delete`, `backspace`, `delete`,
`insert`, `scroll_lock`, `insert`, `f1`-`f12`,
`f1`-`f12`,
`tab`, `copy`, `tab`, `copy`,
`paste`, `cut`, `paste`, `cut`,
`selectAll`, `pasteAsPlainText`, `selectAll`, `pasteAsPlainText`,
`undo`, `redo` `undo`, `redo`
## Keyboard editing actions
In contrast, these keys perform editing on the text without sending anything to the app.
Value | Meaning
:-------------------- | :------
`cursor_left` | Moves the cursor to the left with the slider gesture.
`cursor_right` | Moves the cursor to the right with the slider gesture.
`cursor_up` | Moves the cursor up with the slider gesture. Warning: this might make the cursor leave the text box.
`cursor_down` | Moves the cursor down with the slider gesture. Warning: this might make the cursor leave the text box.
`delete_word` | Delete the word to the left of the cursor.
`forward_delete_word` | Delete the word to the right of the cursor.
The values with `cursor_` are new in v1.31.0. Previous custom layouts specified the slider with `slider="true"`, which should be removed.
## Whitespace ## Whitespace
Value | Meaning Value | Meaning
:------ | :------ :------ | :------
@@ -105,6 +61,13 @@ Value | Meaning
`zwj` | Zero-width joiner. `zwj` | Zero-width joiner.
`zwnj` | Zero-width non-joiner. `zwnj` | Zero-width non-joiner.
## Keyboard editing actions
These keys perform editing on the text without sending keys that the app can interpret differently or ignore.
Value | Meaning
:----------------- | :------
`cursor_left` | Moves the cursor position to the left directly, without sending a `left` key event.
`cursor_right` | Moves the cursor position to the right directly, without sending a `right` key event.
## Other modifiers and diacritics ## Other modifiers and diacritics
Value | Meaning Value | Meaning
:------------------- | :------ :------------------- | :------
@@ -127,7 +90,6 @@ Value | Meaning
`accent_dot_below` | Dot below. `ạ` `accent_dot_below` | Dot below. `ạ`
`accent_horn` | Horn accent. `ơ` `accent_horn` | Horn accent. `ơ`
`accent_hook_above` | Hook accent. `ả` `accent_hook_above` | Hook accent. `ả`
`accent_double_grave` | Double grave accent. `ȁ`
`superscript` | Superscript. `ᵃ` `superscript` | Superscript. `ᵃ`
`subscript` | Subscript. `ₐ` `subscript` | Subscript. `ₐ`
`ordinal` | Turns `a` and `o` into `ª` and `º`. `ordinal` | Turns `a` and `o` into `ª` and `º`.
@@ -157,7 +119,7 @@ Keys ending in `_placeholder` are normally hidden unless the Fn key is pressed.
`ole`, `ole_placeholder`, `ole`, `ole_placeholder`,
`meteg`, `meteg_placeholder` `meteg`, `meteg_placeholder`
## Keyboard behavior keys ## Unexpected Keyboard specific
Value | Meaning Value | Meaning
:--------------------- | :------ :--------------------- | :------
`config` | Gear icon; opens Unexpected Keyboard settings. `config` | Gear icon; opens Unexpected Keyboard settings.
@@ -168,7 +130,6 @@ Value | Meaning
`switch_forward` | Change the keyboard layout, as long as Unexpected Keyboard has multiple keyboard layouts enabled in the settings. `switch_forward` | Change the keyboard layout, as long as Unexpected Keyboard has multiple keyboard layouts enabled in the settings.
`switch_backward` | Change the keyboard layout to the previous one in the list. `switch_backward` | Change the keyboard layout to the previous one in the list.
`switch_greekmath` | Switch to the Greek & Math Symbols layer. `switch_greekmath` | Switch to the Greek & Math Symbols layer.
`switch_clipboard` | Switch to the clipboard pane.
`change_method` | Open the input method picker dialog. `change_method` | Open the input method picker dialog.
`change_method_prev` | Switch to the previously used input method. `change_method_prev` | Switch to the previously used input method.
`action` | Performs a special context-sensitive operation related to the Enter key. For example, in the Twitter (X) app, `enter` adds a new line, while `action` posts. `action` | Performs a special context-sensitive operation related to the Enter key. For example, in the Twitter (X) app, `enter` adds a new line, while `action` posts.

View File

@@ -1,14 +0,0 @@
New supported languages: Albanian, Belgian, Estonian, Georgian, Hawaiian,
Irish, Kannada, Kazakh, Old Church Slavonic, Serbian, Tajiki, Tamil, Welsh
Added WORKMAN (US) layout.
Improved layouts for modern Hindi and Sanskrit, Greek, Kurdish, Persian, Czech.
New compose sequences and added combining diacritic keys.
New and improved themes.
Many bug fixes and improvements.
Many thanks to the contributors: @anaskaejdar @bokidori @cknight828 @cuhsy
@Danger-Mkh @DocJr90 @IYO-OYI @kalankaboom @Kxeo @marciozomb13 @ms-jagadeeshan
@npnpatidar @ptitgnu @quantenzitrone @Sestowner @solokot @Spike-from-NH
@tenextractor

View File

@@ -1 +0,0 @@
Bug fixes

View File

@@ -1 +0,0 @@
Bug fixes

View File

@@ -1 +0,0 @@
Bug fixes

View File

@@ -1,8 +0,0 @@
Delete a word with a circle gesture on the delete key.
Compose key can be unselected.
Improved space bar slider and added selection mode.
Lock shift with a circle gesture.
Improvements to layouts.
Various bug fixes and improvements to themes.
Huge thanks to the contributors: @0skar2 @chuckwagoncomputing @dzaima @eandersons Lokesh Kumar @lrvideckis @ms-jagadeeshan @quantenzitrone @Sestowner @solokot @Spike-from-NH @srikanban @tenextractor

View File

@@ -1,9 +0,0 @@
Bug fixes
Delete a word with a circle gesture on the delete key.
Compose key can be unselected.
Improved space bar slider and added selection mode.
Lock shift with a circle gesture.
Various bug fixes and improvements to themes and layouts.
Many thanks to the contributors: @HaleyHalcyon @Jaoheah @Spike-from-NH

View File

@@ -1,91 +0,0 @@
{
"version": "v1.0.0",
"entity": {
"type": "individual",
"role": "owner",
"name": "Julow",
"email": "jules@j3s.fr",
"description": "Open source developer and maintainer of Unexpected Keyboard.",
"webpageUrl": {
"url": "https://github.com/Julow"
}
},
"projects": [
{
"guid": "unexpected-keyboard",
"name": "Unexpected Keyboard",
"description": "Lightweight and privacy-conscious virtual keyboard for Android.",
"webpageUrl": {
"url": "https://github.com/Julow/Unexpected-Keyboard/"
},
"repositoryUrl": {
"url": "https://github.com/Julow/Unexpected-Keyboard/"
},
"licenses": [
"spdx:GPL-3.0",
"spdx:CC0-1.0"
],
"tags": [
"android",
"mobile",
"privacy",
"productivity",
"programming",
"user-experience"
]
}
],
"funding": {
"channels": [
{
"guid": "liberapay",
"type": "other",
"address": "https://liberapay.com/Julow/",
"description": "Recurring donations for funding Unexpected Keyboard."
},
{
"guid": "github-sponsors",
"type": "other",
"address": "https://github.com/sponsors/Julow",
"description": "Recurring donations for funding Unexpected Keyboard."
},
{
"guid": "paypal",
"type": "other",
"address": "https://paypal.me/JulesAguillon",
"description": "One-time donations for funding Unexpected-keyboard."
}
],
"plans": [
{
"guid": "fund-maintenance",
"status": "active",
"name": "Fund developer time",
"description": "Help the maintainers spend time on Unexpected Keyboard",
"amount": 0,
"currency": "EUR",
"frequency": "monthly",
"channels": [
"liberapay",
"github-sponsors",
"paypal"
]
},
{
"guid": "one-time-contribution",
"status": "active",
"name": "Fund developer time",
"description": "Help the maintainers spend time on Unexpected Keyboard",
"amount": 0,
"currency": "EUR",
"frequency": "one-time",
"channels": [
"liberapay",
"github-sponsors",
"paypal"
]
}
],
"history": []
}
}

View File

@@ -52,7 +52,7 @@ def generate_arrays(out, layouts):
values_items, entries_items = zip(*(system_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 ["system", "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, run 'gradle genLayoutsList'. ")) 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))
root.append(mk_array("string-array", "pref_layout_entries", entries_items)) root.append(mk_array("string-array", "pref_layout_entries", entries_items))
root.append(mk_array("integer-array", "layout_ids", ids_items)) root.append(mk_array("integer-array", "layout_ids", ids_items))

View File

@@ -1,524 +0,0 @@
#! /bin/env python3
"""
Script to generate a layout based on an existing.
Tuned to create Sinhala phonetic layout based on qwerty (US), but may be adoped
for other scripts. Look at dicts before the LayoutBuilder code.
Usage:
python3 gen_sinhala_phonetic_layout [-h|--help] [-v|--verbose] [-o|--output]
By default with no args will write to corresponding file in `srcs/layouts/`.
Script uses central symbol (in direction "c") to identify a key, which may not
be appropriate for base (reference) layouts other, than qwerty (US).
Warning will be printed to stderr if new symbol overrides some symbol of the
reference layout in directions other, than "c".
Exception will be rised on other
conflicts e. g. when trying to move a symbol into occupied position.
- Made with latn_qwerty_us.xml from commit `6b1551d`
- Made with Python 3.13
- Requires Python >= 3.11
"""
import argparse
import logging
from enum import StrEnum
from pathlib import Path
from xml.etree import ElementTree
class Placement(StrEnum):
C = 'c'
NW = 'nw'
N = 'n'
NE = 'ne'
E = 'e'
SE = 'se'
S = 's'
SW = 'sw'
W = 'w'
# Based on XKB Sinhala (phonetic)
KEYS_MAP: dict[str, tuple[str, str, str, str]] = {
# Row 1 ###########################################
'q': ('', '', '\u0DD8', '\u0DF2'),
'w': ('', '', '\u0DD0', '\u0DD1'),
'e': ('', '', '\u0DD9', '\u0DDA'),
'r': ('', '', '', ''), # In XKB virama is on layer 2
't': ('', '', '', ''),
'y': ('', '', '', ''), # In XKB virama is on layer 2
'u': ('', '', '\u0DD4', '\u0DD6'),
'i': ('', '', '\u0DD2', '\u0DD3'),
'o': ('', '', '\u0DDC', '\u0DDD'),
'p': ('', '', '', ''),
# Row 2 ###########################################
'a': ('', '', '\u0DCA', '\u0DCF'),
's': ('', '', '', ''),
'd': ('', '', '', ''),
'f': ('', '\u0D93', '', '\u0DDB'), # In XKB aiyanna placed otherwise
'g': ('', '', '', ''),
'h': ('', '\u0D83', '\u0DDE', ''),
'j': ('', '', '', ''),
'k': ('', '', '', ''),
'l': ('', '', '\u0DDF', '\u0DF3'),
# Row 3 ###########################################
'z': ('', '', '', ''), # In XKB contains bar, broken bar
'x': ('', '', '', ''),
'c': ('', '', '', ''),
'v': ('', '', '', ''),
'b': ('', '', '', ''),
'n': ('', '', '\u0D82', ''),
'm': ('', '', '', ''),
}
# How to place four levels of Key.
# Syntax: LEVEL: PLACEMENT | 'FROM_LEVEL+MODIFIER'
# The last means symbol on level FROM_LEVEL with modifier key MODIFIER gives
# key on level LEVEL
#
LEVELS_MAP = {
0: Placement.C,
1: Placement.NE,
2: '0+shift',
3: '1+shift',
}
# Additional modify keys combinations.
# Syntax:
# MODKEY: { A: B }
#
MODMAP_EXTRA: dict[str, dict[str, str]] = {
'shift': {
# Astrological numbers
'1': '',
'2': '',
'3': '',
'4': '',
'5': '',
'6': '',
'7': '',
'8': '',
'9': '',
'0': '',
# Kunddaliya
'.': '',
# Extra broken bar intead z key in XKB
'\u007C': '\u00A6',
# Special whitespaces
'zwj': 'zwnj',
},
'fn': {
# Sinhala archaic digits
'': '𑇡', # 1
'': '𑇢', # 2
'': '𑇣', # 3
'': '𑇤', # 4
'': '𑇥', # 5
'': '𑇦', # 6
'': '𑇧', # 7
'': '𑇨', # 8
'': '𑇩', # 9
'': '𑇪', # 10
'': '𑇫', # 20
'': '𑇬', # 30
'': '𑇭', # 40
'': '𑇮', # 50
'': '𑇯', # 60
'': '𑇰', # 70
'': '𑇱', # 80
'': '𑇲', # 90
'': '𑇳', # 100
'': '𑇴', # 1000
# Sinhala candrabindu for Sanskrit
'': '\u0D81',
},
}
# Table to move additional characters in reference layout.
# Format is (CENTRAL_CHAR, PLACEMENT): (CENTRAL_CHAR, PLACEMENT). E. g. to move
# char from key with central character "q", direction "se" to key with central
# character "w", direction "sw", add line:
# ('q', Placement.SE): ('w', Placement.SW),
#
# To delete a char, use None as destination placement. E.g.:
# ('q', Placment.SE): ('q', None)
#
# Moving of main char in central placement is not supported.
#
TRANSITIONS_MAP: dict[tuple[str, Placement], tuple[str, Placement | None]] = {
('q', Placement.SE): ('q', Placement.SW), # loc esc
('q', Placement.NE): ('q', Placement.SE), # 1
('w', Placement.NE): ('w', Placement.SE), # 2
('e', Placement.SE): ('r', Placement.NW), # loc €
('e', Placement.NE): ('e', Placement.SE), # 3
('r', Placement.NE): ('r', Placement.SE), # 4
('t', Placement.NE): ('t', Placement.SE), # 5
('y', Placement.NE): ('y', Placement.SE), # 6
('u', Placement.NE): ('u', Placement.SE), # 7
('i', Placement.NE): ('i', Placement.SE), # 8
('o', Placement.SE): ('p', Placement.SW), # )
('o', Placement.NE): ('o', Placement.SE), # 9
('p', Placement.NE): ('p', Placement.SE), # 0
('a', Placement.NE): ('a', Placement.NW), # `
('a', Placement.NW): ('a', Placement.SW), # loc tab
('s', Placement.NE): ('s', Placement.NW), # loc §
('g', Placement.SW): ('g', Placement.NW), # _
('g', Placement.NE): ('g', Placement.SW), # -
('h', Placement.SW): ('h', Placement.NW), # +
('h', Placement.NE): ('h', Placement.SW), # =
('l', Placement.NE): ('l', Placement.NW), # |
('x', Placement.NE): ('x', Placement.NW), # loc †
('c', Placement.NE): ('c', Placement.NW), # <
('b', Placement.NE): ('b', Placement.NW), # ?
('n', Placement.NE): ('n', Placement.NW), # :
('m', Placement.NE): ('m', Placement.NW), # "
}
# Add additional characters to arbitrary places.
# Syntax is CHAR: POSITION, where POSITION is a pari as in TRANSITIONS_MAP.
#
CHARS_EXTRA = {
# In XKB ZWJ is on `/` key, and ZWNJ is on spacebar
'zwj': ('m', Placement.SE),
}
# List of char unicode numbers and inclusive ranges of numbers to encode as XML
# numeric character references.
# Good for combining signs to not mess with quotes.
# Characters in line of the keyboard tag will not be escaped.
#
ESCAPE_LIST: list[int | tuple[int, int]] = [
# Sinhalese diacritics
(0xD81, 0xD83),
(0xDCA, 0xDDF),
]
# Default filename. Output path can be overrided with `-o` flag also.
LAYOUT_FILENAME = 'sinhala_phonetic.xml'
# Will be placed after XML declaration. Need to have proper <!-- --> tags.
COMMENT = '''
<!-- This file defines Sinhala layout.
Based on XKB Sinhala (phonetic) layout.
-->
'''
BASE_DIR = Path(__file__).parent
REFERENCE_LAYOUT_FILE = BASE_DIR / 'srcs/layouts/latn_qwerty_us.xml'
LOGGER = logging.getLogger(__name__)
KeysMapType = list[list[ElementTree.Element]]
class LayoutGenError(RuntimeError):
...
def xml_elem_to_str(element: ElementTree.Element) -> str:
return ElementTree.tostring(
element,
xml_declaration=False,
encoding='unicode').strip()
def keys_map_to_str(keys_map: KeysMapType) -> str:
""" Make laout rows map printable for debug purposes """
result = '[\n'
for row in keys_map:
result += ' ' * 4
for key in row:
result += str(key.attrib) + ', '
result += '\n'
result += ']'
return result
def is_in_escape_list(char: str | int) -> bool:
if isinstance(char, str):
char = ord(char)
for item in ESCAPE_LIST:
if isinstance(item, tuple) and char >= item[0] and char <= item[1]:
return True
elif isinstance(item, int):
if char == item:
return True
else:
TypeError(f'Unexpected item {item} of ESCAPE_LIST')
return False
def xml_encode_char(ch: str | int) -> str:
if isinstance(ch, str):
ch = ord(ch)
hex_val = hex(ch).split('x')[-1]
return f'&#x{hex_val.upper().zfill(4)};'
class LayoutBuilder:
XML_DECLARATION = "<?xml version='1.0' encoding='utf-8'?>"
def __init__(
self,
name: str = '',
script: str = '',
numpad_script: str = '',
comment: str = '',
) -> None:
"""
:param comment: MUST be a valid XML comment wrapped in <!-- tags -->
"""
attrs = {}
if name:
attrs['name'] = name
if script:
attrs['script'] = script
if numpad_script:
attrs['numpad_script'] = numpad_script
self._comment = None
if comment:
self._comment = comment.strip() or None
self._xml_keyboard = ElementTree.Element('keyboard', attrib=attrs)
self._modmap = ElementTree.Element('modmap')
@staticmethod
def _parse_reference_layout() -> list[ElementTree.Element]:
return ElementTree.parse(REFERENCE_LAYOUT_FILE).findall('row')
@staticmethod
def _move_untransited_to_new_map(
ref_map: KeysMapType,
new_map: KeysMapType
) -> None:
coordinates = [
(row_num, key_num)
for row_num in range(len(ref_map))
for key_num in range(len(ref_map[row_num]))
]
for row_num, key_num in coordinates:
old_key = ref_map[row_num][key_num]
new_key = new_map[row_num][key_num]
for k, val in old_key.attrib.items():
if (transited := new_key.attrib.get(k)) is not None:
msg = (
f'Transition of {transited} to'
f' {new_key.get(Placement.C)}:{k} conflictls with'
f' existing value "{val}"')
raise LayoutGenError(msg)
new_key.set(k, val)
@staticmethod
def _add_extra_chars_to_ref_map(
coord_map: dict[str, tuple[int, int]],
new_map: KeysMapType
) -> None:
for char, (to_key_name, to_plc) in CHARS_EXTRA.items():
if not (to_coord := coord_map.get(to_key_name)):
msg = f'Trying to add "{char}" to missing key "{to_key_name}"'
raise LayoutGenError(msg)
row_num, key_num = to_coord
key = new_map[row_num][key_num]
if (existing := key.get(to_plc)) is not None:
msg = f'Trying to add char to <{to_key_name}:{to_plc}>, but already contains "{existing}"'
raise LayoutGenError(msg)
key.set(to_plc, char)
LOGGER.info(
'Added "%s" to <%s:%s>',
char, to_key_name, to_plc)
@classmethod
def _apply_transitions(cls, ref_map: list) -> list:
coord_map: dict[str, tuple[int, int]] = {}
coordinates = [
(row_num, key_num)
for row_num in range(len(ref_map))
for key_num in range(len(ref_map[row_num]))
]
for row_num, key_num in coordinates:
row = ref_map[row_num]
key = row[key_num]
key_name = key.get(Placement.C)
if key_name in coord_map:
msg = f'Duplicated value "{key_name}" in central position'
raise LayoutGenError(msg)
coord_map[key_name] = (row_num, key_num)
# Make new map with empty keys
result_map = [[ElementTree.Element('key') for key in row] for row in ref_map]
# Place by transitions map on new places
for (from_key_name, from_plc), (to_key_name, to_plc) in TRANSITIONS_MAP.items():
if Placement.C in (from_plc, to_plc):
raise NotImplementedError('Transition from or to placment "c"')
if not (from_coord := coord_map.get(from_key_name)):
raise LayoutGenError(f'Transition from missing key {from_key_name}')
if not (to_coord := coord_map.get(to_key_name)):
raise LayoutGenError(f'Transition to missing key {to_key_name}')
from_key = ref_map[from_coord[0]][from_coord[1]]
to_key = result_map[to_coord[0]][to_coord[1]]
try:
val = from_key.attrib.pop(from_plc)
except KeyError:
msg = f'No value in key {from_key_name}, placement {from_plc} to move'
raise LayoutGenError(msg)
if to_plc is not None:
if to_key.get(to_plc):
msg = f'Second transition to key {to_key_name}, placement {to_plc}'
raise LayoutGenError(msg)
to_key.set(to_plc, val)
LOGGER.info(
'Moved "%s" from <%s:%s> to <%s:%s>',
val, from_key_name, from_plc, to_key_name, to_plc)
else:
LOGGER.info(
'Deleted "%s" from <%s:%s>',
val, from_key_name, from_plc)
# Fill new map with other values
cls._move_untransited_to_new_map(ref_map, new_map=result_map)
# Add additional characters
cls._add_extra_chars_to_ref_map(coord_map, new_map=result_map)
return result_map
@staticmethod
def _resolve_placement(
key: ElementTree.Element,
placement: Placement,
new_char: str
) -> None:
if placement != Placement.C:
central_char = key.get(Placement.C)
existing = key.get(placement)
if existing:
LOGGER.warning(
'Placement %s of key %s already occupied with %s',
placement, central_char, existing)
key.set(placement, new_char)
def _process_key(self, key: ElementTree.Element) -> ElementTree.Element:
central_char = key.get(Placement.C)
if not central_char:
return key
new_key_entry = KEYS_MAP.get(central_char)
if new_key_entry is None:
return key
for level, placement_spec in LEVELS_MAP.items():
if not (new_char := new_key_entry[level]):
continue
if '+' in placement_spec:
pair = placement_spec.split('+')
from_level, modkey = int(pair[0]), pair[1]
key_a = new_key_entry[from_level]
key_b = new_char
if key_a is None:
raise LayoutGenError(f'Tried to modife {key_a} to {key_b}')
ElementTree.SubElement(self._modmap, modkey, a=key_a, b=key_b)
else:
placement = Placement(placement_spec)
self._resolve_placement(key, placement=placement, new_char=new_char)
return key
@staticmethod
def _make_extra_modmap(modmap: ElementTree.Element) -> ElementTree.Element:
for modkey, ab_map in MODMAP_EXTRA.items():
for a, b in ab_map.items():
LOGGER.info('Adding modmap %s "%s" -> "%s"', modkey, a, b)
ElementTree.SubElement(modmap, modkey, a=a, b=b)
return modmap
@staticmethod
def _post_escape(data: str) -> str:
buf = ''
lines = data.splitlines(keepends=True)
for line in lines:
# Skip keyboard tag line to keep attributes
if '<keyboard ' in line:
buf += line
continue
for ch in line:
if is_in_escape_list(ch):
ch = xml_encode_char(ch)
buf += ch
return buf
def build(self) -> None:
raw_ref_rows = self._parse_reference_layout()
ref_rows = self._apply_transitions(raw_ref_rows)
for row in ref_rows:
new_row = ElementTree.SubElement(self._xml_keyboard, 'row')
for key in row:
LOGGER.debug(
'Processing reference entry %s',
xml_elem_to_str(key))
new_row.append(self._process_key(key))
self._modmap = self._make_extra_modmap(self._modmap)
self._xml_keyboard.append(self._modmap)
def get_xml(self) -> str:
ElementTree.indent(self._xml_keyboard)
body_raw = xml_elem_to_str(self._xml_keyboard)
body = self._post_escape(body_raw)
result = self.XML_DECLARATION + '\n'
if self._comment:
result += self._comment + '\n'
result += body + '\n'
return result
def get_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
prog='gen_sinhala_phonetic_layout',
description='Generate XKB-based Sinhala layout',)
parser.add_argument(
'-o',
'--output',
default=BASE_DIR / f'srcs/layouts/{LAYOUT_FILENAME}',
help='File to write result, `-` for stdout')
parser.add_argument(
'-v',
'--verbose',
help='More verbose logging',
action='store_true')
return parser.parse_args()
if __name__ == '__main__':
args = get_args()
logging.basicConfig(
level=logging.DEBUG if args.verbose else logging.WARNING,
format='%(levelname)s: %(message)s')
builder = LayoutBuilder(name='සිංහල', script='sinhala', comment=COMMENT)
builder.build()
content = builder.get_xml()
if args.output == '-':
print(content)
else:
with open(args.output, 'w') as file:
file.write(content)

View File

@@ -1,3 +1,3 @@
org.gradle.jvmargs=-Dfile.encoding=UTF-8 org.gradle.jvmargs=-Dfile.encoding=UTF-8
android.useAndroidX=true android.useAndroidX=false
android.nonTransitiveRClass=true android.nonTransitiveRClass=true

View File

@@ -1,6 +1,6 @@
#Mon Aug 21 18:13:41 CEST 2023 #Mon Aug 21 18:13:41 CEST 2023
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -1,25 +0,0 @@
<?xml version="1.0"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector android:name="vector" android:width="35dp" android:height="40dp" android:viewportWidth="35" android:viewportHeight="40">
<path android:name="trace" android:pathData="M 17.5 20 C 20 3 26 7 27.5 10" android:strokeColor="#09b3f1" android:strokeWidth="2" android:strokeLineCap="round"/>
<group android:name="pointer_g" android:translateX="27" android:translateY="10">
<path android:name="pointer" android:pathData="m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0" android:fillColor="#09b3f1" android:strokeColor="#09b3f1" android:strokeWidth="2"/>
</group>
</vector>
</aapt:attr>
<target android:name="trace">
<aapt:attr name="android:animation">
<set>
<objectAnimator android:propertyName="trimPathEnd" android:duration="700" android:valueFrom="0" android:valueTo="1" android:interpolator="@android:interpolator/linear_out_slow_in"/>
</set>
</aapt:attr>
</target>
<target android:name="pointer_g">
<aapt:attr name="android:animation">
<set>
<objectAnimator android:propertyXName="translateX" android:propertyYName="translateY" android:duration="700" android:pathData="M 17.5 20 C 20 3 26 7 27 10" android:interpolator="@android:interpolator/linear_out_slow_in"/>
</set>
</aapt:attr>
</target>
</animated-vector>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector android:name="vector" android:width="35dp" android:height="40dp" android:viewportWidth="35" android:viewportHeight="40">
<path android:name="trace" android:pathData="M 17.5 20.0 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31,4" android:fillColor="#09b3f1" android:strokeColor="#09b3f1" android:strokeWidth="2" android:strokeLineCap="round"/>
</vector>
</aapt:attr>
<target android:name="trace">
<aapt:attr name="android:animation">
<set>
<objectAnimator android:propertyName="pathData" android:duration="350" android:valueFrom="M 17.5 20.0 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 17.5,20.0" android:valueTo="M 31 4 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31,4" android:valueType="pathType" android:interpolator="@android:interpolator/linear_out_slow_in"/>
<objectAnimator android:propertyName="pathData" android:startOffset="400" android:duration="800" android:valueFrom="M 31 4 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31,4" android:valueTo="M 17.5 20.0 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31,4" android:valueType="pathType" android:interpolator="@android:interpolator/linear_out_slow_in"/>
</set>
</aapt:attr>
</target>
</animated-vector>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector android:name="vector" android:width="35dp" android:height="40dp" android:viewportWidth="35" android:viewportHeight="40">
<path android:name="trace" android:pathData=" M 31 4 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31 ,4" android:fillColor="#09b3f1" android:strokeColor="#09b3f1" android:strokeWidth="2" android:strokeLineCap="round"/>
</vector>
</aapt:attr>
<target android:name="trace">
<aapt:attr name="android:animation">
<set>
<objectAnimator android:propertyName="pathData" android:duration="700" android:valueFrom="M 17.5 20.0 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 17.5,20.0" android:valueTo=" M 31 4 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31 ,4" android:valueType="pathType" android:interpolator="@android:interpolator/linear_out_slow_in"/>
</set>
</aapt:attr>
</target>
</animated-vector>

View File

@@ -1,25 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="35dp"
android:height="40dp"
android:viewportWidth="35.0"
android:viewportHeight="40.0">
<path
android:pathData="M11.26,10.13L23.74,10.13A1.13,1.13 0,0 1,24.87 11.26L24.87,28.74A1.13,1.13 0,0 1,23.74 29.88L11.26,29.88A1.13,1.13 0,0 1,10.13 28.74L10.13,11.26A1.13,1.13 0,0 1,11.26 10.13z"
android:fillAlpha="1"
android:strokeColor="#404040"
android:fillColor="#333333"
android:strokeWidth="0.251"
android:strokeAlpha="1"/>
<path
android:pathData="m11.18,28.83l0,-0.54l2.9,0l0,0.54z"
android:fillColor="#cccccc"
android:strokeWidth="0.265729"/>
<path
android:pathData="m19.52,17.02 l0.26,0.81q-0.27,0.09 -0.61,0.12 -0.33,0.03 -0.73,0.03 0.41,0.18 0.62,0.47 0.21,0.28 0.21,0.7 0,0.45 -0.22,0.8 -0.22,0.35 -0.62,0.55 -0.41,0.2 -0.97,0.2 -0.2,0 -0.35,-0.02 -0.14,-0.02 -0.28,-0.06 -0.09,0.06 -0.15,0.17 -0.06,0.1 -0.06,0.21 0,0.14 0.11,0.24 0.12,0.1 0.46,0.1l0.8,0q0.49,0 0.87,0.17 0.38,0.17 0.59,0.46 0.22,0.29 0.22,0.65 0,0.69 -0.59,1.07 -0.59,0.38 -1.71,0.38 -0.79,0 -1.24,-0.16 -0.45,-0.16 -0.63,-0.48 -0.18,-0.32 -0.18,-0.78l0.88,0q0,0.24 0.09,0.4 0.1,0.16 0.35,0.24 0.26,0.08 0.74,0.08 0.48,0 0.77,-0.08 0.29,-0.08 0.41,-0.23 0.13,-0.15 0.13,-0.36 0,-0.28 -0.24,-0.43 -0.24,-0.15 -0.65,-0.15l-0.79,0q-0.65,0 -0.96,-0.27 -0.3,-0.27 -0.3,-0.62 0,-0.24 0.13,-0.45 0.14,-0.22 0.38,-0.38 -0.41,-0.22 -0.61,-0.53 -0.19,-0.31 -0.19,-0.76 0,-0.49 0.24,-0.85 0.24,-0.37 0.68,-0.57 0.44,-0.2 1,-0.2 0.55,0 0.92,-0.06 0.37,-0.06 0.64,-0.17 0.28,-0.11 0.55,-0.24zM17.41,18.15q-0.47,0 -0.7,0.27 -0.24,0.26 -0.24,0.68 0,0.44 0.24,0.7 0.24,0.26 0.71,0.26 0.43,0 0.66,-0.25 0.23,-0.25 0.23,-0.72 0,-0.47 -0.23,-0.71 -0.23,-0.24 -0.68,-0.24z"
android:fillColor="#fdfdfd"
android:strokeWidth="0.265729"/>
<path
android:pathData="m21.24,13.59l0,-0.53l2.4,0l0,0.53z"
android:fillColor="#cccccc"
android:strokeWidth="0.265729"/>
</vector>

View File

@@ -1,25 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="35dp"
android:height="40dp"
android:viewportWidth="35.0"
android:viewportHeight="40.0">
<path
android:pathData="M11.26,10.13L23.74,10.13A1.13,1.13 0,0 1,24.87 11.26L24.87,28.74A1.13,1.13 0,0 1,23.74 29.88L11.26,29.88A1.13,1.13 0,0 1,10.13 28.74L10.13,11.26A1.13,1.13 0,0 1,11.26 10.13z"
android:fillAlpha="1"
android:strokeColor="#404040"
android:fillColor="#333333"
android:strokeWidth="0.251"
android:strokeAlpha="1"/>
<path
android:pathData="m16.64,17.64l0,3.21q0,0.41 0.16,0.58 0.17,0.17 0.5,0.17 0.31,0 0.61,-0.19 0.29,-0.19 0.46,-0.46l0,-3.33l0.98,0l0,4.6l-0.84,0l-0.06,-0.59q-0.26,0.34 -0.65,0.53 -0.39,0.18 -0.8,0.18 -0.67,0 -1,-0.37 -0.33,-0.37 -0.33,-1.01l0,-3.33z"
android:fillColor="#fdfdfd"
android:strokeWidth="0.265729"/>
<path
android:pathData="m12.52,24.71q0.3,0 0.54,0.09 0.25,0.09 0.49,0.35l-0.37,0.33q-0.14,-0.16 -0.28,-0.23 -0.14,-0.08 -0.34,-0.08 -0.27,0 -0.41,0.15 -0.14,0.15 -0.14,0.39 0,0.17 0.08,0.31 0.08,0.14 0.23,0.22 0.15,0.08 0.33,0.08l1.58,0l0,0.46l-0.47,0l0,1.56q-0.1,0.12 -0.26,0.24 -0.16,0.12 -0.41,0.21 -0.24,0.08 -0.58,0.08 -0.45,0 -0.75,-0.17 -0.3,-0.17 -0.44,-0.45 -0.15,-0.28 -0.15,-0.6 0,-0.46 0.24,-0.74 0.24,-0.28 0.66,-0.37l0,-0.02q-0.25,-0.06 -0.4,-0.18 -0.15,-0.12 -0.22,-0.3 -0.07,-0.17 -0.07,-0.37 0,-0.26 0.14,-0.48 0.14,-0.22 0.4,-0.35 0.26,-0.13 0.6,-0.13zM13.18,26.79l-0.58,0q-0.28,0 -0.45,0.12 -0.17,0.12 -0.26,0.32 -0.08,0.19 -0.08,0.39 0,0.2 0.08,0.37 0.08,0.17 0.24,0.28 0.16,0.1 0.42,0.1 0.21,0 0.37,-0.07 0.16,-0.07 0.26,-0.19z"
android:fillColor="#cccccc"
android:strokeWidth="0.265729"/>
<path
android:pathData="m22.12,15.25 l-0.61,-0.19 1.54,-3.37l-1.84,0l0,-0.51l2.49,0l0,0.47z"
android:fillColor="#cccccc"
android:strokeWidth="0.265729"/>
</vector>

View File

@@ -1,21 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:fitsSystemWindows="true"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" 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"/>
<Button style="@style/paragraph" android:text="@string/launcher_button_imepicker" android:onClick="launch_imepicker" android:layout_width="wrap_content"/> <Button style="@style/paragraph" android:text="@string/launcher_button_imepicker" android:onClick="launch_imepicker" android:layout_width="wrap_content"/>
<LinearLayout style="@style/anim_box"> <VideoView android:id="@+id/launcher_intro_video" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="center"/>
<ImageView style="@style/anim" android:id="@+id/launcher_anim_swipe" android:background="@drawable/doc_key_u" android:src="@drawable/doc_anim_swipe"/>
<TextView style="@style/anim_text" android:text="7"/>
</LinearLayout>
<LinearLayout style="@style/anim_box">
<ImageView style="@style/anim" android:id="@+id/launcher_anim_circle" android:background="@drawable/doc_key_g" android:src="@drawable/doc_anim_circle"/>
<TextView style="@style/anim_text" android:text="G"/>
</LinearLayout>
<LinearLayout style="@style/anim_box">
<ImageView style="@style/anim" android:id="@+id/launcher_anim_round_trip" android:background="@drawable/doc_key_g" android:src="@drawable/doc_anim_round_trip"/>
<TextView style="@style/anim_text" android:text=""/>
</LinearLayout>
<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" android:hint="@string/launcher_tryhere_hint" android:importantForAutofill="no"/> <EditText android:id="@+id/launcher_tryhere_area" style="@style/paragraph" android:inputType="text" android:hint="@string/launcher_tryhere_hint" android:importantForAutofill="no"/>
<TextView style="@style/paragraph" android:text="@string/launcher_sourcecode"/> <TextView style="@style/paragraph" android:text="@string/launcher_sourcecode"/>

BIN
res/raw/intro_video.mp4 Normal file

Binary file not shown.

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Klávesnice Unexpected</string> <string name="app_name_release">Klávesnice Unexpected</string>
<string name="app_name_debug">Klávesnice Unexpected (pro ladění)</string> <string name="app_name_debug">Klávesnice Unexpected (pro ladění)</string>
<string name="short_description">Nenáročná virtuální klávesnice pro vývojáře.</string> <string name="short_description">Nenáročná virtuální klávesnice pro vývojáře.</string>
<string name="store_description">Hlavní funkcí je možnost psát více znaků posunutím kláves směrem k rohům.\n\nTato aplikace byla původně navržena pro programátory používající Termux.\nNyní je ideální pro každodenní použití.\n\nTato aplikace neobsahuje žádné reklamy, nevyužívá připojení k síti a je Open Source.</string> <string name="store_description">"Hlavní funkcí je možnost psát více znaků posunutím kláves směrem k rohům.
Tato aplikace byla původně navržena pro programátory používající Termux.
Nyní je ideální pro každodenní použití.
Tato aplikace neobsahuje žádné reklamy, nevyužívá připojení k síti a je Open Source."</string>
<string name="settings_activity_label">Nastavení Klávesnice Unexpected</string>
<string name="pref_portrait">V režimu na výšku</string> <string name="pref_portrait">V režimu na výšku</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">V režimu na šířku</string> <string name="pref_landscape">V režimu na šířku</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Rozvržení</string> <string name="pref_category_layout">Rozvržení</string>
<string name="pref_label_brightness">Upravit jas nápisu</string> <string name="pref_label_brightness">Upravit jas nápisu</string>
<string name="pref_keyboard_opacity">Upravit průhlednost pozadí klávesnice</string> <string name="pref_keyboard_opacity">Upravit průhlednost pozadí klávesnice</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Rozložení %1$d: %2$s</string> <string name="pref_layouts_item">Rozložení %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Odebrat rozložení</string> <string name="pref_layouts_remove_custom">Odebrat rozložení</string>
<string name="pref_custom_layout_title">Vlastní rozložení</string> <string name="pref_custom_layout_title">Vlastní rozložení</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</string> -->
<string name="pref_show_numpad_title">Zobrazit NumPad</string> <string name="pref_show_numpad_title">Zobrazit NumPad</string>
<string name="pref_show_numpad_never">Nikdy</string> <string name="pref_show_numpad_never">Nikdy</string>
<string name="pref_show_numpad_landscape">Pouze v režimu na šířku</string> <string name="pref_show_numpad_landscape">Pouze v režimu na šířku</string>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">Jak bude klávesa pro přepnutí klávesnice reagovat</string> <string name="pref_switch_input_immediate_summary">Jak bude klávesa pro přepnutí klávesnice reagovat</string>
<string name="pref_vibrate_custom">Vlastní vibrace</string> <string name="pref_vibrate_custom">Vlastní vibrace</string>
<string name="pref_vibrate_duration_title">Síla vibrace</string> <string name="pref_vibrate_duration_title">Síla vibrace</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Rozvržení zadávání PIN kódu</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Automaticky při psaní čísel, datumů a telefonních čísel</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (dle systému)</string> <string name="pref_theme_e_monet">Monet (dle systému)</string>
<string name="pref_theme_e_monetlight">Monet (Světlý)</string> <string name="pref_theme_e_monetlight">Monet (Světlý)</string>
<string name="pref_theme_e_monetdark">Monet (Tmavý)</string> <string name="pref_theme_e_monetdark">Monet (Tmavý)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</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>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Vložit</string> <string name="key_descr_paste">Vložit</string>
<string name="key_descr_cut">Vyjmout</string> <string name="key_descr_cut">Vyjmout</string>
<string name="key_descr_selectAll">Označit vše</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_pasteAsPlainText">Vložit jako prostý text</string>
<string name="key_descr_undo">Zpět</string> <string name="key_descr_undo">Zpět</string>
<string name="key_descr_redo">Znovu</string> <string name="key_descr_redo">Znovu</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Správce schránky</string> <string name="key_descr_clipboard">Správce schránky</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Nedávno kopírovaný text</string> <string name="clipboard_history_heading">Nedávno kopírovaný text</string>
<string name="clipboard_pin_heading">Připnout</string> <string name="clipboard_pin_heading">Připnout</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">Odebrat ze schránky?</string>
<string name="clipboard_remove_confirmed">Ano</string> <string name="clipboard_remove_confirmed">Ano</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (Debug)</string> <string name="app_name_debug">Unexpected Keyboard (Debug)</string>
<string name="short_description">Eine schlanke, datenschutzfreundliche Bildschirmtastatur für Android.</string> <string name="short_description">Eine schlanke, datenschutzfreundliche Bildschirmtastatur für Android.</string>
<string name="store_description">Diese Tastatur zeichnet sich dadurch aus, dass man zusätzliche Zeichen durch Wischgesten in Richtung der Tastenecken eingeben kann.\n\nDie Anwendung wurde ursprünglich für das Programmieren in Termux entwickelt.\nMittlerweile ist sie auch für den täglichen Gebrauch perfekt geeignet.\n\nDiese App enthält keine Werbung, benötigt keinen Netzwerkzugriff und ist quelloffen.</string> <string name="store_description">"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.
Mittlerweile ist sie auch für den täglichen Gebrauch perfekt geeignet.
Diese App enthält keine Werbung, benötigt keinen Netzwerkzugriff und ist quelloffen."</string>
<string name="settings_activity_label">Unexpected Keyboard - Einstellungen</string>
<string name="pref_portrait">Im Hochformatmodus</string> <string name="pref_portrait">Im Hochformatmodus</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">Im Querformatmodus</string> <string name="pref_landscape">Im Querformatmodus</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Layout</string> <string name="pref_category_layout">Layout</string>
<string name="pref_label_brightness">Helligkeit der Beschriftung anpassen</string> <string name="pref_label_brightness">Helligkeit der Beschriftung anpassen</string>
<string name="pref_keyboard_opacity">Deckkraft des Tastaturhintergrunds anpassen</string> <string name="pref_keyboard_opacity">Deckkraft des Tastaturhintergrunds anpassen</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Layout %1$d: %2$s</string> <string name="pref_layouts_item">Layout %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Layout entfernen</string> <string name="pref_layouts_remove_custom">Layout entfernen</string>
<string name="pref_custom_layout_title">Eigenes Layout</string> <string name="pref_custom_layout_title">Eigenes Layout</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Benutzerdefinierte Vibration</string> <string name="pref_vibrate_custom">Benutzerdefinierte Vibration</string>
<string name="pref_vibrate_duration_title">Vibrationsstärke</string> <string name="pref_vibrate_duration_title">Vibrationsstärke</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">PIN-Eingabe-Layout</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Für die Nummern-, Datums- und Telefonnummern-Eingabe</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (System)</string> <string name="pref_theme_e_monet">Monet (System)</string>
<string name="pref_theme_e_monetlight">Monet (Hell)</string> <string name="pref_theme_e_monetlight">Monet (Hell)</string>
<string name="pref_theme_e_monetdark">Monet (Dunkel)</string> <string name="pref_theme_e_monetdark">Monet (Dunkel)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Sehr kurz</string> <string name="pref_swipe_dist_e_very_short">Sehr kurz</string>
<string name="pref_swipe_dist_e_short">Kurz</string> <string name="pref_swipe_dist_e_short">Kurz</string>
<string name="pref_swipe_dist_e_default">Normal</string> <string name="pref_swipe_dist_e_default">Normal</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Einfügen</string> <string name="key_descr_paste">Einfügen</string>
<string name="key_descr_cut">Ausschneiden</string> <string name="key_descr_cut">Ausschneiden</string>
<string name="key_descr_selectAll">Alles auswählen</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_pasteAsPlainText">Unformatiert einfügen</string>
<string name="key_descr_undo">Rückgängig</string> <string name="key_descr_undo">Rückgängig</string>
<string name="key_descr_redo">Wiederholen</string> <string name="key_descr_redo">Wiederholen</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Pos1</string> <string name="key_descr_home">Pos1</string>
<string name="key_descr_end">Ende</string> <string name="key_descr_end">Ende</string>
<string name="key_descr_clipboard">Clipboard-Manager</string> <string name="key_descr_clipboard">Clipboard-Manager</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Zuletzt kopierter Text</string> <string name="clipboard_history_heading">Zuletzt kopierter Text</string>
<string name="clipboard_pin_heading">Angeheftet</string> <string name="clipboard_pin_heading">Angeheftet</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">Aus der Zwischenablage entfernen?</string>
<string name="clipboard_remove_confirmed">Ja</string> <string name="clipboard_remove_confirmed">Ja</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">Un teclado virtual ligero para Android consciente de su privacidad.</string> <string name="short_description">Un teclado virtual ligero para Android consciente de su privacidad.</string>
<string name="store_description">La característica principal es que hay acceso a más caractéres deslizando hacia las esquinas de las teclas.\n\nEsta aplicación fue originalmente diseñada para programadores que usaran Termux.\nAhora es perfecta para uso cotidiano.\n\nLa misma no contiene ningún anuncio/publicidad, no realiza peticiones de red y es de Fuente Abierta.</string> <string name="store_description">"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."</string>
<string name="settings_activity_label">Ajustes de Unexpected Keyboard</string>
<string name="pref_portrait">En modo vertical</string> <string name="pref_portrait">En modo vertical</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">En modo horizontal</string> <string name="pref_landscape">En modo horizontal</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Distribución</string> <string name="pref_category_layout">Distribución</string>
<string name="pref_label_brightness">Ajustar brillo de etiqueta</string> <string name="pref_label_brightness">Ajustar brillo de etiqueta</string>
<string name="pref_keyboard_opacity">Ajustar opacidad del fondo del teclado</string> <string name="pref_keyboard_opacity">Ajustar opacidad del fondo del teclado</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Diseño %1$d: %2$s</string> <string name="pref_layouts_item">Diseño %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Quitar diseño</string> <string name="pref_layouts_remove_custom">Quitar diseño</string>
<string name="pref_custom_layout_title">Diseño personalizado</string> <string name="pref_custom_layout_title">Diseño personalizado</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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">Solo en modo horizontal</string> <string name="pref_show_numpad_landscape">Solo en modo horizontal</string>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">Comportamiento de la tecla para cambiar diseño</string> <string name="pref_switch_input_immediate_summary">Comportamiento de la tecla para cambiar diseño</string>
<string name="pref_vibrate_custom">Vibración personalizada</string> <string name="pref_vibrate_custom">Vibración personalizada</string>
<string name="pref_vibrate_duration_title">Intensidad de vibración</string> <string name="pref_vibrate_duration_title">Intensidad de vibración</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Diseño de introducción de PIN</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Para escribir cifras, fechas y números telefónicos</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
<string name="pref_category_style">Estilo</string> <string name="pref_category_style">Estilo</string>
<string name="pref_margin_bottom_title">Margen inferior</string> <string name="pref_margin_bottom_title">Margen inferior</string>
<string name="pref_keyboard_height_title">Altura del teclado</string> <string name="pref_keyboard_height_title">Altura del teclado</string>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (de sistema)</string> <string name="pref_theme_e_monet">Monet (de sistema)</string>
<string name="pref_theme_e_monetlight">Monet (claro)</string> <string name="pref_theme_e_monetlight">Monet (claro)</string>
<string name="pref_theme_e_monetdark">Monet (oscuro)</string> <string name="pref_theme_e_monetdark">Monet (oscuro)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Muy corta</string> <string name="pref_swipe_dist_e_very_short">Muy corta</string>
<string name="pref_swipe_dist_e_short">Corta</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>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Pegar</string> <string name="key_descr_paste">Pegar</string>
<string name="key_descr_cut">Cortar</string> <string name="key_descr_cut">Cortar</string>
<string name="key_descr_selectAll">Seleccionar todo</string> <string name="key_descr_selectAll">Seleccionar todo</string>
<string name="key_descr_shareText">Compartir texto</string>
<string name="key_descr_pasteAsPlainText">Pegar como texto sin formato</string> <string name="key_descr_pasteAsPlainText">Pegar como texto sin formato</string>
<string name="key_descr_undo">Deshacer</string> <string name="key_descr_undo">Deshacer</string>
<string name="key_descr_redo">Rehacer</string> <string name="key_descr_redo">Rehacer</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Inicio</string> <string name="key_descr_home">Inicio</string>
<string name="key_descr_end">Fin</string> <string name="key_descr_end">Fin</string>
<string name="key_descr_clipboard">Arreglar portapapeles</string> <string name="key_descr_clipboard">Arreglar portapapeles</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Textos recién copiados</string> <string name="clipboard_history_heading">Textos recién copiados</string>
<string name="clipboard_pin_heading">Pegado</string> <string name="clipboard_pin_heading">Pegado</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">¿Sacar este portapapeles?</string>
<string name="clipboard_remove_confirmed"></string> <string name="clipboard_remove_confirmed"></string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">صفحه کلید غیرمنتظره</string> <string name="app_name_release">صفحه کلید غیرمنتظره</string>
<string name="app_name_debug">صفحه کلید غیرمنتظره</string> <string name="app_name_debug">صفحه کلید غیرمنتظره</string>
<!-- <string name="short_description">Lightweight and privacy-conscious virtual keyboard for Android.</string> --> <!-- <string name="short_description">Lightweight and privacy-conscious virtual keyboard for Android.</string> -->
<!-- <string name="store_description">The main feature is that you can type more characters by swiping the keys towards the corners.\n\nThis application was originally designed for programmers using Termux.\nNow perfect for everyday use.\n\nThis application contains no ads, doesn\'t make any network requests and is Open Source.</string> --> <!-- <string name="store_description">"The main feature is that you can type more characters by swiping the keys towards the corners.
This application was originally designed for programmers using Termux.
Now perfect for everyday use.
This application contains no ads, doesn't make any network requests and is Open Source."</string> -->
<string name="settings_activity_label">تنظیمات صفحه کلید غیرمنتظره</string>
<string name="pref_portrait">در حالت عمودی</string> <string name="pref_portrait">در حالت عمودی</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">در حالت افقی</string> <string name="pref_landscape">در حالت افقی</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">طرح</string> <string name="pref_category_layout">طرح</string>
<string name="pref_label_brightness">تنظیم برچسب روشنایی</string> <string name="pref_label_brightness">تنظیم برچسب روشنایی</string>
<string name="pref_keyboard_opacity">تنظیم کدر بودن پس‌زمینه صفحه کلید</string> <string name="pref_keyboard_opacity">تنظیم کدر بودن پس‌زمینه صفحه کلید</string>
@@ -19,9 +23,6 @@
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> --> <!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> --> <!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
<string name="pref_custom_layout_title">طرح شخصی</string> <string name="pref_custom_layout_title">طرح شخصی</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">رفتار کلید تغییردهنده صفحه کلید</string> <string name="pref_switch_input_immediate_summary">رفتار کلید تغییردهنده صفحه کلید</string>
<!-- <string name="pref_vibrate_custom">Custom vibration</string> --> <!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> --> <!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<!-- <string name="pref_theme_e_monet">Monet (System)</string> --> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> --> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> --> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">بسیار کوتاه</string> <string name="pref_swipe_dist_e_very_short">بسیار کوتاه</string>
<string name="pref_swipe_dist_e_short">کوتاه</string> <string name="pref_swipe_dist_e_short">کوتاه</string>
<string name="pref_swipe_dist_e_default">عادی</string> <string name="pref_swipe_dist_e_default">عادی</string>
@@ -109,6 +107,7 @@
<!-- <string name="key_descr_paste">Paste</string> --> <!-- <string name="key_descr_paste">Paste</string> -->
<!-- <string name="key_descr_cut">Cut</string> --> <!-- <string name="key_descr_cut">Cut</string> -->
<!-- <string name="key_descr_selectAll">Select all</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_pasteAsPlainText">Paste as plain text</string> -->
<!-- <string name="key_descr_undo">Undo</string> --> <!-- <string name="key_descr_undo">Undo</string> -->
<!-- <string name="key_descr_redo">Redo</string> --> <!-- <string name="key_descr_redo">Redo</string> -->
@@ -121,18 +120,8 @@
<!-- <string name="key_descr_home">Home</string> --> <!-- <string name="key_descr_home">Home</string> -->
<!-- <string name="key_descr_end">End</string> --> <!-- <string name="key_descr_end">End</string> -->
<!-- <string name="key_descr_clipboard">Clipboard manager</string> --> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<!-- <string name="clipboard_history_heading">Recently copied text</string> --> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="clipboard_pin_heading">Pinned</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="clipboard_remove_confirmed">Yes</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">Clavier virtuel léger et respectueux de la vie privée pour Android.</string> <string name="short_description">Clavier virtuel léger et respectueux de la vie privée pour Android.</string>
<string name="store_description">La fonctionnalité principale est l\'accès rapide à plus de caractères en balayant les touches vers les coins.\n\nCette application a été conçue à l\'origine pour les programmeurs utilisant Termux.\nElle est maintenant parfaite pour une utilisation quotidienne.\n\nCette application ne contient pas de publicité, n\'accède pas au réseau et est Open Source.</string> <string name="store_description">"La fonctionnalité principale est l'accès rapide à plus de caractères en balayant les touches vers les coins.
Cette application a été conçue à l'origine pour les programmeurs utilisant Termux.
Elle est maintenant parfaite pour une utilisation quotidienne.
Cette application ne contient pas de publicité, n'accède pas au réseau et est Open Source."</string>
<string name="settings_activity_label">Unexpected Keyboard Paramètres</string>
<string name="pref_portrait">En mode portrait</string> <string name="pref_portrait">En mode portrait</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">En mode landscape</string> <string name="pref_landscape">En mode landscape</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Disposition</string> <string name="pref_category_layout">Disposition</string>
<string name="pref_label_brightness">Luminosité des symboles</string> <string name="pref_label_brightness">Luminosité des symboles</string>
<string name="pref_keyboard_opacity">Transparence du clavier</string> <string name="pref_keyboard_opacity">Transparence du clavier</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Disposition %1$d: %2$s</string> <string name="pref_layouts_item">Disposition %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Supprimer</string> <string name="pref_layouts_remove_custom">Supprimer</string>
<string name="pref_custom_layout_title">Disposition personnalisée</string> <string name="pref_custom_layout_title">Disposition personnalisée</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Vibrations personnalisées</string> <string name="pref_vibrate_custom">Vibrations personnalisées</string>
<string name="pref_vibrate_duration_title">Intensité des vibrations</string> <string name="pref_vibrate_duration_title">Intensité des vibrations</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Clavier PIN</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</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_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -67,12 +66,11 @@
<string name="pref_theme_e_altblack">Noir 2</string> <string name="pref_theme_e_altblack">Noir 2</string>
<string name="pref_theme_e_white">Blanc</string> <string name="pref_theme_e_white">Blanc</string>
<string name="pref_theme_e_epaper">ePaper</string> <string name="pref_theme_e_epaper">ePaper</string>
<string name="pref_theme_e_desert">Désert</string> <string name="pref_theme_e_desert">Desert</string>
<string name="pref_theme_e_jungle">Jungle</string> <string name="pref_theme_e_jungle">Jungle</string>
<string name="pref_theme_e_monet">Monet (Système)</string> <string name="pref_theme_e_monet">Monet (Système)</string>
<string name="pref_theme_e_monetlight">Monet (Clair)</string> <string name="pref_theme_e_monetlight">Monet (Clair)</string>
<string name="pref_theme_e_monetdark">Monet (Sombre)</string> <string name="pref_theme_e_monetdark">Monet (Sombre)</string>
<string name="pref_theme_e_rosepine">Rosé Pine</string>
<string name="pref_swipe_dist_e_very_short">Très courte</string> <string name="pref_swipe_dist_e_very_short">Très courte</string>
<string name="pref_swipe_dist_e_short">Courte</string> <string name="pref_swipe_dist_e_short">Courte</string>
<string name="pref_swipe_dist_e_default">Normale</string> <string name="pref_swipe_dist_e_default">Normale</string>
@@ -89,7 +87,7 @@
<string name="pref_circle_sensitivity_e_low">Basse</string> <string name="pref_circle_sensitivity_e_low">Basse</string>
<string name="pref_circle_sensitivity_e_disabled">Désactivée</string> <string name="pref_circle_sensitivity_e_disabled">Désactivée</string>
<string name="key_action_next">Suiv.</string> <string name="key_action_next">Suiv.</string>
<string name="key_action_done">Fini</string> <string name="key_action_done">Fin</string>
<string name="key_action_go">Aller</string> <string name="key_action_go">Aller</string>
<string name="key_action_prev">Prec.</string> <string name="key_action_prev">Prec.</string>
<string name="key_action_search">Chercher</string> <string name="key_action_search">Chercher</string>
@@ -98,10 +96,10 @@
<string name="launcher_button_imepicker">Selectionner le keyboard</string> <string name="launcher_button_imepicker">Selectionner le keyboard</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 Github.</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="launcher_tryhere_hint">Essayer ici</string> <string name="launcher_tryhere_hint">Essayer ici</string>
<string name="key_descr_capslock">Verrouillage majuscules</string> <string name="key_descr_capslock">Verrouillage majuscules</string>
<string name="key_descr_compose">Composition</string> <string name="key_descr_compose">Compose</string>
<string name="key_descr_switch_greekmath">Symboles mathématiques</string> <string name="key_descr_switch_greekmath">Symboles mathématiques</string>
<string name="key_descr_change_method">Changer de clavier</string> <string name="key_descr_change_method">Changer de clavier</string>
<string name="key_descr_voice_typing">Saisie vocale</string> <string name="key_descr_voice_typing">Saisie vocale</string>
@@ -109,9 +107,10 @@
<string name="key_descr_paste">Coller</string> <string name="key_descr_paste">Coller</string>
<string name="key_descr_cut">Couper</string> <string name="key_descr_cut">Couper</string>
<string name="key_descr_selectAll">Sel. tout</string> <string name="key_descr_selectAll">Sel. tout</string>
<string name="key_descr_shareText">Partager</string>
<string name="key_descr_pasteAsPlainText">Copier en texte brut</string> <string name="key_descr_pasteAsPlainText">Copier en texte brut</string>
<string name="key_descr_undo">Annuler</string> <string name="key_descr_undo">Undo</string>
<string name="key_descr_redo">Refaire</string> <string name="key_descr_redo">Redo</string>
<string name="key_descr_ª">Ordinal</string> <string name="key_descr_ª">Ordinal</string>
<string name="key_descr_º">Ordinal</string> <string name="key_descr_º">Ordinal</string>
<string name="key_descr_superscript">Exposant</string> <string name="key_descr_superscript">Exposant</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Début</string> <string name="key_descr_home">Début</string>
<string name="key_descr_end">Fin</string> <string name="key_descr_end">Fin</string>
<string name="key_descr_clipboard">Presse-papiers</string> <string name="key_descr_clipboard">Presse-papiers</string>
<string name="key_descr_combining">Diacritique combinant</string>
<string name="key_descr_dead_key">Touche morte</string>
<string name="key_descr_zwj">Liant sans chasse</string>
<string name="key_descr_zwnj">Antiliant sans chasse</string>
<string name="key_descr_nbsp">Espace insécable</string>
<string name="key_descr_nnbsp">Espace fine insécable</string>
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Texte récemment copié</string> <string name="clipboard_history_heading">Texte récemment copié</string>
<string name="clipboard_pin_heading">Épinglé</string> <string name="clipboard_pin_heading">Épinglé</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">Supprimer ce presse-papiers ?</string>
<string name="clipboard_remove_confirmed">Oui</string> <string name="clipboard_remove_confirmed">Oui</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">Una Tastiera Virtuale Leggera Per La Programmazione</string> <string name="short_description">Una Tastiera Virtuale Leggera Per La Programmazione</string>
<!-- <string name="store_description">The main feature is that you can type more characters by swiping the keys towards the corners.\n\nThis application was originally designed for programmers using Termux.\nNow perfect for everyday use.\n\nThis application contains no ads, doesn\'t make any network requests and is Open Source.</string> --> <!-- <string name="store_description">"The main feature is that you can type more characters by swiping the keys towards the corners.
This application was originally designed for programmers using Termux.
Now perfect for everyday use.
This application contains no ads, doesn't make any network requests and is Open Source."</string> -->
<string name="settings_activity_label">Impostazioni di Unexpected Keyboard</string>
<!-- <string name="pref_portrait">In portrait mode</string> --> <!-- <string name="pref_portrait">In portrait mode</string> -->
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<!-- <string name="pref_landscape">In landscape mode</string> --> <!-- <string name="pref_landscape">In landscape mode</string> -->
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Layout</string> <string name="pref_category_layout">Layout</string>
<!-- <string name="pref_label_brightness">Adjust label brightness</string> --> <!-- <string name="pref_label_brightness">Adjust label brightness</string> -->
<!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> --> <!-- <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> -->
@@ -19,9 +23,6 @@
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> --> <!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> --> <!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
<!-- <string name="pref_custom_layout_title">Custom layout</string> --> <!-- <string name="pref_custom_layout_title">Custom layout</string> -->
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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> -->
@@ -49,10 +50,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_custom">Custom vibration</string> --> <!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> --> <!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<!-- <string name="pref_theme_e_monet">Monet (System)</string> --> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> --> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> --> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Veramente breve</string> <string name="pref_swipe_dist_e_very_short">Veramente breve</string>
<string name="pref_swipe_dist_e_short">Breve</string> <string name="pref_swipe_dist_e_short">Breve</string>
<string name="pref_swipe_dist_e_default">Normale</string> <string name="pref_swipe_dist_e_default">Normale</string>
@@ -109,6 +107,7 @@
<!-- <string name="key_descr_paste">Paste</string> --> <!-- <string name="key_descr_paste">Paste</string> -->
<!-- <string name="key_descr_cut">Cut</string> --> <!-- <string name="key_descr_cut">Cut</string> -->
<!-- <string name="key_descr_selectAll">Select all</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_pasteAsPlainText">Paste as plain text</string> -->
<!-- <string name="key_descr_undo">Undo</string> --> <!-- <string name="key_descr_undo">Undo</string> -->
<!-- <string name="key_descr_redo">Redo</string> --> <!-- <string name="key_descr_redo">Redo</string> -->
@@ -121,18 +120,8 @@
<!-- <string name="key_descr_home">Home</string> --> <!-- <string name="key_descr_home">Home</string> -->
<!-- <string name="key_descr_end">End</string> --> <!-- <string name="key_descr_end">End</string> -->
<!-- <string name="key_descr_clipboard">Clipboard manager</string> --> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<!-- <string name="clipboard_history_heading">Recently copied text</string> --> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="clipboard_pin_heading">Pinned</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="clipboard_remove_confirmed">Yes</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,16 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (Debug)</string> <string name="app_name_debug">Unexpected Keyboard (Debug)</string>
<string name="short_description">軽量でプライバシーに配慮したAndroid用仮想キーボード</string> <string name="short_description">軽量でプライバシーに配慮したAndroid用仮想キーボード</string>
<string name="store_description">このキーボードは、キーの角をスワイプすることで様々なキーを入力できます。\n\nこのアプリは元々はTermuxでのプログラミング用に設計されました。\nしかし、今では普段の入力にも適しています。\nPCキーボードでの半角入力を再現しています。日本語入力、変換は出来ません。\n\nこのアプリは広告を含まず、インターネットに接続せず、そしてオープンソースです。</string> <string name="store_description">"このキーボードは、キーの角をスワイプすることで様々なキーを入力できます。
このアプリは元々はTermuxでのプログラミング用に設計されました。
しかし、今では普段の入力にも適しています。
PCキーボードでの半角入力を再現しています。日本語入力、変換は出来ません。
このアプリは広告を含まず、インターネットに接続せず、そしてオープンソースです。"</string>
<string name="settings_activity_label">Unexpected Keyboardの設定</string>
<string name="pref_portrait">縦向き</string> <string name="pref_portrait">縦向き</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">横向き</string> <string name="pref_landscape">横向き</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">レイアウト</string> <string name="pref_category_layout">レイアウト</string>
<string name="pref_label_brightness">文字の明るさ</string> <string name="pref_label_brightness">文字の明るさ</string>
<string name="pref_keyboard_opacity">背景の不透明度</string> <string name="pref_keyboard_opacity">背景の不透明度</string>
@@ -19,9 +24,6 @@
<string name="pref_layouts_item">レイアウト %1$d: %2$s</string> <string name="pref_layouts_item">レイアウト %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">レイアウトを削除</string> <string name="pref_layouts_remove_custom">レイアウトを削除</string>
<string name="pref_custom_layout_title">カスタムレイアウト</string> <string name="pref_custom_layout_title">カスタムレイアウト</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +51,8 @@
<string name="pref_switch_input_immediate_summary">キーボード切替キーの挙動</string> <string name="pref_switch_input_immediate_summary">キーボード切替キーの挙動</string>
<string name="pref_vibrate_custom">キーボード独自の振動設定</string> <string name="pref_vibrate_custom">キーボード独自の振動設定</string>
<string name="pref_vibrate_duration_title">振動の時間</string> <string name="pref_vibrate_duration_title">振動の時間</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">PIN入力</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">数字・日付・電話番号入力時</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +72,6 @@
<string name="pref_theme_e_monet">Monet (システム)</string> <string name="pref_theme_e_monet">Monet (システム)</string>
<string name="pref_theme_e_monetlight">Monet (ライト)</string> <string name="pref_theme_e_monetlight">Monet (ライト)</string>
<string name="pref_theme_e_monetdark">Monet (ダーク)</string> <string name="pref_theme_e_monetdark">Monet (ダーク)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">短い</string> <string name="pref_swipe_dist_e_very_short">短い</string>
<string name="pref_swipe_dist_e_short">やや短い</string> <string name="pref_swipe_dist_e_short">やや短い</string>
<string name="pref_swipe_dist_e_default">普通</string> <string name="pref_swipe_dist_e_default">普通</string>
@@ -109,6 +108,7 @@
<string name="key_descr_paste">貼り付け</string> <string name="key_descr_paste">貼り付け</string>
<string name="key_descr_cut">切り取り</string> <string name="key_descr_cut">切り取り</string>
<string name="key_descr_selectAll">すべて選択</string> <string name="key_descr_selectAll">すべて選択</string>
<string name="key_descr_shareText">テキストを共有</string>
<string name="key_descr_pasteAsPlainText">書式なしで貼り付け</string> <string name="key_descr_pasteAsPlainText">書式なしで貼り付け</string>
<string name="key_descr_undo">元に戻す</string> <string name="key_descr_undo">元に戻す</string>
<string name="key_descr_redo">やり直し</string> <string name="key_descr_redo">やり直し</string>
@@ -121,18 +121,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">クリップボード</string> <string name="key_descr_clipboard">クリップボード</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">最近コピーしたテキスト</string> <string name="clipboard_history_heading">最近コピーしたテキスト</string>
<string name="clipboard_pin_heading">お気に入り</string> <string name="clipboard_pin_heading">お気に入り</string>
<string name="clipboard_remove_confirm">クリップボードから削除しますか?</string> <string name="clipboard_remove_confirm">クリップボードから削除しますか?</string>
<string name="clipboard_remove_confirmed">はい</string> <string name="clipboard_remove_confirmed">はい</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<!-- <string name="app_name_debug">Unexpected Keyboard (Debug)</string> --> <!-- <string name="app_name_debug">Unexpected Keyboard (Debug)</string> -->
<string name="short_description">개발자들을 위한 가벼운 가상 키보드.</string> <string name="short_description">개발자들을 위한 가벼운 가상 키보드.</string>
<string name="store_description">주요 기능은 모서리 방향으로 키를 스와이프하여 더 많은 문자를 입력할 수 있다는 것입니다.\n\n이 앱은 처음에는 Termux를 사용하는 프로그래머들을 위한 것으로 개발되었습니다.\n지금은 일상적인 용도로도 완벽합니다.\n\n이 응용 프로그램에는 광고가 없으며 네트워크 요청을 하지 않고 오픈 소스입니다.</string> <string name="store_description">"주요 기능은 모서리 방향으로 키를 스와이프하여 더 많은 문자를 입력할 수 있다는 것입니다.
이 앱은 처음에는 Termux를 사용하는 프로그래머들을 위한 것으로 개발되었습니다.
지금은 일상적인 용도로도 완벽합니다.
이 응용 프로그램에는 광고가 없으며 네트워크 요청을 하지 않고 오픈 소스입니다."</string>
<string name="settings_activity_label">Unexpected Keyboard 설정</string>
<string name="pref_portrait">세로 화면</string> <string name="pref_portrait">세로 화면</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">가로 화면</string> <string name="pref_landscape">가로 화면</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">레이아웃</string> <string name="pref_category_layout">레이아웃</string>
<string name="pref_label_brightness">라벨 밝기 조절</string> <string name="pref_label_brightness">라벨 밝기 조절</string>
<string name="pref_keyboard_opacity">키보드 배경 불투명도 조절</string> <string name="pref_keyboard_opacity">키보드 배경 불투명도 조절</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">레이아웃 %1$d: %2$s</string> <string name="pref_layouts_item">레이아웃 %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">레이아웃 제거</string> <string name="pref_layouts_remove_custom">레이아웃 제거</string>
<string name="pref_custom_layout_title">사용자 정의 레이아웃</string> <string name="pref_custom_layout_title">사용자 정의 레이아웃</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">키보드 전환 키의 동작 방식입니다.</string> <string name="pref_switch_input_immediate_summary">키보드 전환 키의 동작 방식입니다.</string>
<string name="pref_vibrate_custom">사용자 정의 진동</string> <string name="pref_vibrate_custom">사용자 정의 진동</string>
<string name="pref_vibrate_duration_title">진동 강도</string> <string name="pref_vibrate_duration_title">진동 강도</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Pin 입력 레이아웃</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">숫자를 입력할 때, 날짜와 전화번호를 입력할 때 해당 레이아웃이 사용됩니다.</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">모네트 (시스템)</string> <string name="pref_theme_e_monet">모네트 (시스템)</string>
<string name="pref_theme_e_monetlight">모네트 (라이트)</string> <string name="pref_theme_e_monetlight">모네트 (라이트)</string>
<string name="pref_theme_e_monetdark">모네트 (다크)</string> <string name="pref_theme_e_monetdark">모네트 (다크)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">매우 짧음</string> <string name="pref_swipe_dist_e_very_short">매우 짧음</string>
<string name="pref_swipe_dist_e_short">짧음</string> <string name="pref_swipe_dist_e_short">짧음</string>
<string name="pref_swipe_dist_e_default">보통</string> <string name="pref_swipe_dist_e_default">보통</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">붙여넣기</string> <string name="key_descr_paste">붙여넣기</string>
<string name="key_descr_cut">자르기</string> <string name="key_descr_cut">자르기</string>
<string name="key_descr_selectAll">전부 선택</string> <string name="key_descr_selectAll">전부 선택</string>
<string name="key_descr_shareText">텍스트 공유</string>
<string name="key_descr_pasteAsPlainText">일반 텍스트로 붙여넣기</string> <string name="key_descr_pasteAsPlainText">일반 텍스트로 붙여넣기</string>
<string name="key_descr_undo">실행 취소</string> <string name="key_descr_undo">실행 취소</string>
<string name="key_descr_redo">다시 실행</string> <string name="key_descr_redo">다시 실행</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home"></string> <string name="key_descr_home"></string>
<string name="key_descr_end">종료</string> <string name="key_descr_end">종료</string>
<string name="key_descr_clipboard">클립보드 관리자</string> <string name="key_descr_clipboard">클립보드 관리자</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">최근에 복사한 텍스트</string> <string name="clipboard_history_heading">최근에 복사한 텍스트</string>
<string name="clipboard_pin_heading">고정</string> <string name="clipboard_pin_heading">고정</string>
<string name="clipboard_remove_confirm">이 클립보드를 제거하시겠습니까?</string> <string name="clipboard_remove_confirm">이 클립보드를 제거하시겠습니까?</string>
<string name="clipboard_remove_confirmed"></string> <string name="clipboard_remove_confirmed"></string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (atkļūdošana)</string> <string name="app_name_debug">Unexpected Keyboard (atkļūdošana)</string>
<string name="short_description">Mazizmēra un privātumu ievērojoša virtuālā Android tastatūra.</string> <string name="short_description">Mazizmēra un privātumu ievērojoša virtuālā Android tastatūra.</string>
<string name="store_description">Galvenā iezīme ir iespēja ievadīt vairāk rakstzīmju ar pavilkšanu uz taustiņu stūriem.\n\nŠī lietotne sākotnēji tika izstrādāta programmētājiem, kas izmanto Termux.\nTagad lieliski piemērota izmantošanai ikdienā.\n\nŠī lietotne nesatur reklāmas, neveic nekādus tīkla pieprasījumus, un tās pirmkods ir pieejams visiem.</string> <string name="store_description">"Galvenā iezīme ir iespēja ievadīt vairāk rakstzīmju ar pavilkšanu uz taustiņu stūriem.
Šī lietotne sākotnēji tika izstrādāta programmētājiem, kas izmanto Termux.
Tagad lieliski piemērota izmantošanai ikdienā.
Šī lietotne nesatur reklāmas, neveic nekādus tīkla pieprasījumus, un tās pirmkods ir pieejams visiem."</string>
<string name="settings_activity_label">Unexpected Keyboard iestatījumi</string>
<string name="pref_portrait">Stateniski</string> <string name="pref_portrait">Stateniski</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">Guleniski</string> <string name="pref_landscape">Guleniski</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Izkārtojums</string> <string name="pref_category_layout">Izkārtojums</string>
<string name="pref_label_brightness">Pielāgot iezīmju spilgtumu</string> <string name="pref_label_brightness">Pielāgot iezīmju spilgtumu</string>
<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>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Izkārtojums %1$d: %2$s</string> <string name="pref_layouts_item">Izkārtojums %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Noņemt izkārtojumu</string> <string name="pref_layouts_remove_custom">Noņemt izkārtojumu</string>
<string name="pref_custom_layout_title">Pielāgots izkārtojums</string> <string name="pref_custom_layout_title">Pielāgots izkārtojums</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -37,7 +38,7 @@
<string name="pref_category_typing">Rakstīšana</string> <string name="pref_category_typing">Rakstīšana</string>
<string name="pref_swipe_dist_title">Pavilkšanas attālums</string> <string name="pref_swipe_dist_title">Pavilkšanas attālums</string>
<string name="pref_swipe_dist_summary">Taustiņu stūros esošo rakstzīmju attālums (%s)</string> <string name="pref_swipe_dist_summary">Taustiņu stūros esošo rakstzīmju attālums (%s)</string>
<string name="pref_long_timeout_title">Ilgas piespiešanas noildze</string> <string name="pref_long_timeout_title">Ilgas piepiešanas noildze</string>
<string name="pref_long_interval_title">Taustiņa atkārtošanās aizture</string> <string name="pref_long_interval_title">Taustiņa atkārtošanās aizture</string>
<string name="pref_keyrepeat_enabled">Taustiņa atkārtošanās ar ilgu piespiešanu</string> <string name="pref_keyrepeat_enabled">Taustiņa atkārtošanās ar ilgu piespiešanu</string>
<string name="pref_lock_double_tap_title">Divkāršs piesitiens burtslēgam</string> <string name="pref_lock_double_tap_title">Divkāršs piesitiens burtslēgam</string>
@@ -49,10 +50,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_custom">Pielāgota trīcēšana</string> <string name="pref_vibrate_custom">Pielāgota trīcēšana</string>
<string name="pref_vibrate_duration_title">Trīcēšanas stiprums</string> <string name="pref_vibrate_duration_title">Trīcēšanas stiprums</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Piespraust ievadīšanas izkārtojumu</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Kad ievada skaitļus, datumus un tālruņa numurus</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monē (sistēmas)</string> <string name="pref_theme_e_monet">Monē (sistēmas)</string>
<string name="pref_theme_e_monetlight">Monē (gaišs)</string> <string name="pref_theme_e_monetlight">Monē (gaišs)</string>
<string name="pref_theme_e_monetdark">Monē (tumšs)</string> <string name="pref_theme_e_monetdark">Monē (tumšs)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Ļoti tuvs</string> <string name="pref_swipe_dist_e_very_short">Ļoti tuvs</string>
<string name="pref_swipe_dist_e_short">Tuvs</string> <string name="pref_swipe_dist_e_short">Tuvs</string>
<string name="pref_swipe_dist_e_default">Vidējs</string> <string name="pref_swipe_dist_e_default">Vidējs</string>
@@ -96,8 +94,10 @@
<string name="key_action_send">Sūtīt</string> <string name="key_action_send">Sūtīt</string>
<string name="launcher_button_imesettings">Iespējot tastatūru</string> <string name="launcher_button_imesettings">Iespējot tastatūru</string>
<string name="launcher_button_imepicker">Izvēlēties tastatūru</string> <string name="launcher_button_imepicker">Izvēlēties tastatūru</string>
<string name="launcher_description">Šī lietotne ir virtuālā tastatūra. Ar zemāk esošo pogu var atvērt sistēmas iestatījumus un iespējot Unexpected Keyboard.</string> <string name="launcher_description">Šī lietotne ir virtuālā tastatūra.
<string name="launcher_sourcecode">Šī ir bezmaksas un atvērtā pirmkoda lietotne. GitHub var atrast pirmkodu un ziņot par nepilnībām.</string> Ar zemāk esošo pogu var atvērt sistēmas iestatījumus un iespējot Unexpected Keyboard.</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="launcher_tryhere">Pēc iespējošanas šeit var izmēģināt tastatūru:</string>
<string name="launcher_tryhere_hint">Izmēģināt šeit</string> <string name="launcher_tryhere_hint">Izmēģināt šeit</string>
<string name="key_descr_capslock">Burtslēgs</string> <string name="key_descr_capslock">Burtslēgs</string>
@@ -109,6 +109,7 @@
<string name="key_descr_paste">Ielīmēt</string> <string name="key_descr_paste">Ielīmēt</string>
<string name="key_descr_cut">Izgriezt</string> <string name="key_descr_cut">Izgriezt</string>
<string name="key_descr_selectAll">Iezīmēt visu</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_pasteAsPlainText">Ielīmēt kā vienkāršu tekstu</string>
<string name="key_descr_undo">Atsaukt</string> <string name="key_descr_undo">Atsaukt</string>
<string name="key_descr_redo">Atatsaukt</string> <string name="key_descr_redo">Atatsaukt</string>
@@ -121,18 +122,8 @@
<string name="key_descr_home">Sākums</string> <string name="key_descr_home">Sākums</string>
<string name="key_descr_end">Beigas</string> <string name="key_descr_end">Beigas</string>
<string name="key_descr_clipboard">Starpliktuves pārvaldnieks</string> <string name="key_descr_clipboard">Starpliktuves pārvaldnieks</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Nesen starpliktuvē ievietots teksts</string> <string name="clipboard_history_heading">Nesen starpliktuvē ievietots teksts</string>
<string name="clipboard_pin_heading">Piesprausts</string> <string name="clipboard_pin_heading">Piesprausts</string>
<string name="clipboard_remove_confirm">Noņemt šo starpliktuves vienumu?</string> <string name="clipboard_remove_confirm">Noņemt šo starpliktuves vienumu?</string>
<string name="clipboard_remove_confirmed"></string> <string name="clipboard_remove_confirmed"></string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">Lekka i dbająca o prywatność klawiatura wirtualna dla Androida.</string> <string name="short_description">Lekka i dbająca o prywatność klawiatura wirtualna dla Androida.</string>
<string name="store_description">Główną cechą tej klawiatury jest możliwość wprowadzania więcej znaków poprzez przesuwanie po klawiszach do ich rogów.\n\nTa aplikacja została pierwotnie zaprojektowana z myślą o programistach używających Termuxa.\nObecnie nadaje się doskonale do codziennego użytku.\n\nAplikacja nie zawiera reklam, nie żąda dostępu do internetu, a jej kod źródłowy jest dostępny publicznie.</string> <string name="store_description">"Główną cechą tej klawiatury jest możliwość wprowadzania więcej znaków poprzez przesuwanie po klawiszach do ich rogów.
Ta aplikacja została pierwotnie zaprojektowana z myślą o programistach używających Termuxa.
Obecnie nadaje się doskonale do codziennego użytku.
Aplikacja nie zawiera reklam, nie żąda dostępu do internetu, a jej kod źródłowy jest dostępny publicznie."</string>
<string name="settings_activity_label">Ustawienia Unexpected Keyboard</string>
<string name="pref_portrait">W widoku pionowym</string> <string name="pref_portrait">W widoku pionowym</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">W widoku poziomym</string> <string name="pref_landscape">W widoku poziomym</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Układ</string> <string name="pref_category_layout">Układ</string>
<string name="pref_label_brightness">Dostosuj jasność znaków</string> <string name="pref_label_brightness">Dostosuj jasność znaków</string>
<string name="pref_keyboard_opacity">Nieprzezroczystość tła klawiatury</string> <string name="pref_keyboard_opacity">Nieprzezroczystość tła klawiatury</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Układ %1$d: %2$s</string> <string name="pref_layouts_item">Układ %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Usuń układ</string> <string name="pref_layouts_remove_custom">Usuń układ</string>
<string name="pref_custom_layout_title">Własny układ</string> <string name="pref_custom_layout_title">Własny układ</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Własna wibracja</string> <string name="pref_vibrate_custom">Własna wibracja</string>
<string name="pref_vibrate_duration_title">Intensywność wibracji</string> <string name="pref_vibrate_duration_title">Intensywność wibracji</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Układ klawiatury PIN</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Podczas wpisywania liczb, dat i numerów telefonu</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (Systemowy)</string> <string name="pref_theme_e_monet">Monet (Systemowy)</string>
<string name="pref_theme_e_monetlight">Monet (Jasny)</string> <string name="pref_theme_e_monetlight">Monet (Jasny)</string>
<string name="pref_theme_e_monetdark">Monet (Ciemny)</string> <string name="pref_theme_e_monetdark">Monet (Ciemny)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Bardzo mała</string> <string name="pref_swipe_dist_e_very_short">Bardzo mała</string>
<string name="pref_swipe_dist_e_short">Mała</string> <string name="pref_swipe_dist_e_short">Mała</string>
<string name="pref_swipe_dist_e_default">Normalna</string> <string name="pref_swipe_dist_e_default">Normalna</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Wklej</string> <string name="key_descr_paste">Wklej</string>
<string name="key_descr_cut">Wytnij</string> <string name="key_descr_cut">Wytnij</string>
<string name="key_descr_selectAll">Zaznacz wszystko</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_pasteAsPlainText">Wklej sam tekst</string>
<string name="key_descr_undo">Cofnij</string> <string name="key_descr_undo">Cofnij</string>
<string name="key_descr_redo">Ponów</string> <string name="key_descr_redo">Ponów</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Zarządzanie schowkiem</string> <string name="key_descr_clipboard">Zarządzanie schowkiem</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Ostatnio skopiowane elementy</string> <string name="clipboard_history_heading">Ostatnio skopiowane elementy</string>
<string name="clipboard_pin_heading">Przypięte</string> <string name="clipboard_pin_heading">Przypięte</string>
<string name="clipboard_remove_confirm">Usunąć ten element ze schowka?</string> <string name="clipboard_remove_confirm">Usunąć ten element ze schowka?</string>
<string name="clipboard_remove_confirmed">Tak</string> <string name="clipboard_remove_confirmed">Tak</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Teclado Unexpected</string> <string name="app_name_release">Teclado Unexpected</string>
<string name="app_name_debug">Teclado Unexpected</string> <string name="app_name_debug">Teclado Unexpected</string>
<string name="short_description">Um teclado virtual leve para desenvolvedores.</string> <string name="short_description">Um teclado virtual leve para desenvolvedores.</string>
<string name="store_description">A principal característica é que você pode digitar mais caracteres deslizando as teclas para os cantos.\n\nO app foi criado originalmente para desenvolvedores que usam Termux.\nAgora aperfeiçoado para o uso diário.\n\nEste aplicativo não contém anúncios, não faz nenhuma solicitação de rede e é Open Source.</string> <string name="store_description">"A principal característica é que você pode digitar mais caracteres deslizando as teclas para os cantos.
O app foi criado originalmente para desenvolvedores que usam Termux.
Agora aperfeiçoado para o uso diário.
Este aplicativo não contém anúncios, não faz nenhuma solicitação de rede e é Open Source."</string>
<string name="settings_activity_label">Configurações</string>
<string name="pref_portrait">No modo retrato</string> <string name="pref_portrait">No modo retrato</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">No modo paisagem</string> <string name="pref_landscape">No modo paisagem</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Layout</string> <string name="pref_category_layout">Layout</string>
<string name="pref_label_brightness">Ajustar brilho dos rótulos</string> <string name="pref_label_brightness">Ajustar brilho dos rótulos</string>
<string name="pref_keyboard_opacity">Ajustar opacidade do fundo do teclado</string> <string name="pref_keyboard_opacity">Ajustar opacidade do fundo do teclado</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Layout %1$d: %2$s</string> <string name="pref_layouts_item">Layout %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Remover layout</string> <string name="pref_layouts_remove_custom">Remover layout</string>
<string name="pref_custom_layout_title">Layout personalizado</string> <string name="pref_custom_layout_title">Layout personalizado</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -37,9 +38,9 @@
<string name="pref_category_typing">Digitação</string> <string name="pref_category_typing">Digitação</string>
<string name="pref_swipe_dist_title">Distância a deslizar</string> <string name="pref_swipe_dist_title">Distância a deslizar</string>
<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 de pressionamento</string> <!-- <string name="pref_long_timeout_title">Long press timeout</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_keyrepeat_enabled">Repetir tecla ao pressionar</string> <!-- <string name="pref_keyrepeat_enabled">Key repeat on long press</string> -->
<string name="pref_lock_double_tap_title">Tecle duas vezes no shift para travá-lo acionado</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>
@@ -49,10 +50,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_custom">Vibração personalizada</string> <string name="pref_vibrate_custom">Vibração personalizada</string>
<string name="pref_vibrate_duration_title">Intensidade da vibração</string> <string name="pref_vibrate_duration_title">Intensidade da vibração</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Layout PIN</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Quando digitando números, datas ou números de telefone</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -69,25 +68,24 @@
<string name="pref_theme_e_epaper">Papel Eletrônico</string> <string name="pref_theme_e_epaper">Papel Eletrônico</string>
<string name="pref_theme_e_desert">Deserto</string> <string name="pref_theme_e_desert">Deserto</string>
<string name="pref_theme_e_jungle">Selva</string> <string name="pref_theme_e_jungle">Selva</string>
<string name="pref_theme_e_monet">Monet (Sistema)</string> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<string name="pref_theme_e_monetlight">Monet (Claro)</string> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<string name="pref_theme_e_monetdark">Monet (Escuro)</string> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<string name="pref_theme_e_rosepine">Rosé Pine</string> <string name="pref_swipe_dist_e_very_short">Bem curto</string>
<string name="pref_swipe_dist_e_very_short">Bem curta</string> <string name="pref_swipe_dist_e_short">Curto</string>
<string name="pref_swipe_dist_e_short">Curta</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">Longa</string> <string name="pref_swipe_dist_e_far">Longo</string>
<string name="pref_swipe_dist_e_very_far">Bem longa</string> <string name="pref_swipe_dist_e_very_far">Bem 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_border_config_title">Personalizar bordas</string> <string name="pref_border_config_title">Personalizar bordas</string>
<string name="pref_border_width_title">Largura de borda</string> <string name="pref_border_width_title">Largura de borda</string>
<string name="pref_corners_radius_title">Arredondamento de cantos</string> <string name="pref_corners_radius_title">Arredondamento de canto</string>
<string name="pref_circle_sensitivity_title">Sensibilidade do gesto circular</string> <!-- <string name="pref_circle_sensitivity_title">Circle gesture sensitivity</string> -->
<string name="pref_circle_sensitivity_e_high">Alta</string> <!-- <string name="pref_circle_sensitivity_e_high">High</string> -->
<string name="pref_circle_sensitivity_e_medium">Média</string> <!-- <string name="pref_circle_sensitivity_e_medium">Medium</string> -->
<string name="pref_circle_sensitivity_e_low">Baixa</string> <!-- <string name="pref_circle_sensitivity_e_low">Low</string> -->
<string name="pref_circle_sensitivity_e_disabled">Desativada</string> <!-- <string name="pref_circle_sensitivity_e_disabled">Disabled</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>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Colar</string> <string name="key_descr_paste">Colar</string>
<string name="key_descr_cut">Recortar</string> <string name="key_descr_cut">Recortar</string>
<string name="key_descr_selectAll">Selecionar tudo</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_pasteAsPlainText">Colar texto não formatado</string>
<string name="key_descr_undo">Desfazer</string> <string name="key_descr_undo">Desfazer</string>
<string name="key_descr_redo">Refazer</string> <string name="key_descr_redo">Refazer</string>
@@ -120,19 +119,9 @@
<string name="key_descr_page_down">Page Down</string> <string name="key_descr_page_down">Page Down</string>
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Área de transferência</string> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<string name="key_descr_combining">Combinação de diacríticos</string> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Textos recém copiados</string>
<string name="clipboard_pin_heading">Fixados</string>
<string name="clipboard_remove_confirm">Remover esta cópia?</string>
<string name="clipboard_remove_confirmed">Sim</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Tastatură Unexpected (depanare)</string> <string name="app_name_debug">Tastatură Unexpected (depanare)</string>
<string name="short_description">Tastatură virtuală pentru Android, ușoară și respectuoasă cu viața privată.</string> <string name="short_description">Tastatură virtuală pentru Android, ușoară și respectuoasă cu viața privată.</string>
<string name="store_description">Funcționalitatea principală este accesul rapid la o mulțime de caractere ASCII prin glisarea către colțurile tastelor.\n\nAceastă aplicație a fost concepută inițial pentru programatori care folosec Termux.\nEste perfectă pentru uzul cotidian.\n\nAceastă aplicație nu conține publicitate, nu folosește rețeaua deloc și e Open Source.</string> <string name="store_description">"Funcționalitatea principală este accesul rapid la o mulțime de caractere ASCII prin glisarea către colțurile tastelor.
Această aplicație a fost concepută inițial pentru programatori care folosec Termux.
Este perfectă pentru uzul cotidian.
Această aplicație nu conține publicitate, nu folosește rețeaua deloc și e Open Source."</string>
<string name="settings_activity_label">Setări Tastatură Unexpected</string>
<string name="pref_portrait">În mod portret</string> <string name="pref_portrait">În mod portret</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">În mod panoramă</string> <string name="pref_landscape">În mod panoramă</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Aspect</string> <string name="pref_category_layout">Aspect</string>
<string name="pref_label_brightness">Modifică luminozitatea denumirii</string> <string name="pref_label_brightness">Modifică luminozitatea denumirii</string>
<string name="pref_keyboard_opacity">Modifică opacitatea fundalului tastaturii</string> <string name="pref_keyboard_opacity">Modifică opacitatea fundalului tastaturii</string>
@@ -19,9 +23,6 @@
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> --> <!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> --> <!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
<string name="pref_custom_layout_title">Aranjament personalizat</string> <string name="pref_custom_layout_title">Aranjament personalizat</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Custom vibration</string> --> <!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> --> <!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<!-- <string name="pref_theme_e_monet">Monet (System)</string> --> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> --> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> --> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Foarte apropiată</string> <string name="pref_swipe_dist_e_very_short">Foarte apropiată</string>
<string name="pref_swipe_dist_e_short">Apropiată</string> <string name="pref_swipe_dist_e_short">Apropiată</string>
<string name="pref_swipe_dist_e_default">Normală</string> <string name="pref_swipe_dist_e_default">Normală</string>
@@ -109,6 +107,7 @@
<!-- <string name="key_descr_paste">Paste</string> --> <!-- <string name="key_descr_paste">Paste</string> -->
<!-- <string name="key_descr_cut">Cut</string> --> <!-- <string name="key_descr_cut">Cut</string> -->
<!-- <string name="key_descr_selectAll">Select all</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_pasteAsPlainText">Paste as plain text</string> -->
<!-- <string name="key_descr_undo">Undo</string> --> <!-- <string name="key_descr_undo">Undo</string> -->
<!-- <string name="key_descr_redo">Redo</string> --> <!-- <string name="key_descr_redo">Redo</string> -->
@@ -121,18 +120,8 @@
<!-- <string name="key_descr_home">Home</string> --> <!-- <string name="key_descr_home">Home</string> -->
<!-- <string name="key_descr_end">End</string> --> <!-- <string name="key_descr_end">End</string> -->
<!-- <string name="key_descr_clipboard">Clipboard manager</string> --> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<!-- <string name="clipboard_history_heading">Recently copied text</string> --> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="clipboard_pin_heading">Pinned</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="clipboard_remove_confirmed">Yes</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (отладка)</string> <string name="app_name_debug">Unexpected Keyboard (отладка)</string>
<string name="short_description">Легкая клавиатура для пользователей, заботящихся о конфиденциальности.</string> <string name="short_description">Легкая клавиатура для пользователей, заботящихся о конфиденциальности.</string>
<string name="store_description">Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.\n\nПриложение изначально было разработано для использования с Termux.\nНа данный момент оно также удобно в повседневном использовании.\n\nПриложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.</string> <string name="store_description">"Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.
Приложение изначально было разработано для использования с Termux.
На данный момент оно также удобно в повседневном использовании.
Приложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код."</string>
<string name="settings_activity_label">Настройки Unexpected Keyboard</string>
<string name="pref_portrait">В портретном режиме</string> <string name="pref_portrait">В портретном режиме</string>
<string name="pref_portrait_unfolded">В развернутом портретном режиме</string>
<string name="pref_landscape">В ландшафтном режиме</string> <string name="pref_landscape">В ландшафтном режиме</string>
<string name="pref_landscape_unfolded">В развернутом ландшафтном режиме</string>
<string name="pref_category_layout">Расположение</string> <string name="pref_category_layout">Расположение</string>
<string name="pref_label_brightness">Изменить яркость клавиатуры</string> <string name="pref_label_brightness">Изменить яркость клавиатуры</string>
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string> <string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
@@ -19,15 +23,12 @@
<string name="pref_layouts_item">Раскладка %1$d: %2$s</string> <string name="pref_layouts_item">Раскладка %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Удалить раскладку</string> <string name="pref_layouts_remove_custom">Удалить раскладку</string>
<string name="pref_custom_layout_title">Пользовательская раскладка</string> <string name="pref_custom_layout_title">Пользовательская раскладка</string>
<string name="pref_show_number_row_no_number_row">Нет строки цифр</string>
<string name="pref_show_number_row_no_symbols">Строка цифр без символов</string>
<string name="pref_show_number_row_symbols">Строка цифр с символами</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>
<string name="pref_show_numpad_always">Всегда</string> <string name="pref_show_numpad_always">Всегда</string>
<string name="pref_number_row_title">Показывать цифры</string> <string name="pref_number_row_title">Показывать цифры</string>
<string name="pref_number_row_summary">Добавить строку цифр над клавиатурой, когда цифровой блок не активен</string> <string name="pref_number_row_summary">Добавить ряд цифр над клавиатурой, когда цифровой блок не активен</string>
<string name="pref_numpad_layout">Раскладка цифрового блока</string> <string name="pref_numpad_layout">Раскладка цифрового блока</string>
<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>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">Поведение клавиши переключения клавиатуры</string> <string name="pref_switch_input_immediate_summary">Поведение клавиши переключения клавиатуры</string>
<string name="pref_vibrate_custom">Настройка вибрации</string> <string name="pref_vibrate_custom">Настройка вибрации</string>
<string name="pref_vibrate_duration_title">Интенсивность вибрации</string> <string name="pref_vibrate_duration_title">Интенсивность вибрации</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Закрепить раскладку</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">При вводе чисел, дат и телефонных номеров</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Моне (системная)</string> <string name="pref_theme_e_monet">Моне (системная)</string>
<string name="pref_theme_e_monetlight">Моне (светлая)</string> <string name="pref_theme_e_monetlight">Моне (светлая)</string>
<string name="pref_theme_e_monetdark">Моне (темная)</string> <string name="pref_theme_e_monetdark">Моне (темная)</string>
<string name="pref_theme_e_rosepine">Розовая сосна</string>
<string name="pref_swipe_dist_e_very_short">Очень короткая</string> <string name="pref_swipe_dist_e_very_short">Очень короткая</string>
<string name="pref_swipe_dist_e_short">Короткая</string> <string name="pref_swipe_dist_e_short">Короткая</string>
<string name="pref_swipe_dist_e_default">Обычная</string> <string name="pref_swipe_dist_e_default">Обычная</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Вставить</string> <string name="key_descr_paste">Вставить</string>
<string name="key_descr_cut">Вырезать</string> <string name="key_descr_cut">Вырезать</string>
<string name="key_descr_selectAll">Выбрать все</string> <string name="key_descr_selectAll">Выбрать все</string>
<string name="key_descr_shareText">Поделиться текстом</string>
<string name="key_descr_pasteAsPlainText">Вставить как простой текст</string> <string name="key_descr_pasteAsPlainText">Вставить как простой текст</string>
<string name="key_descr_undo">Отменить</string> <string name="key_descr_undo">Отменить</string>
<string name="key_descr_redo">Повторить</string> <string name="key_descr_redo">Повторить</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Менеджер буфера обмена</string> <string name="key_descr_clipboard">Менеджер буфера обмена</string>
<string name="key_descr_combining">Сочетание диакритических знаков</string>
<string name="key_descr_dead_key">Немая клавиша</string>
<string name="key_descr_zwj">Соединитель нулевой ширины</string>
<string name="key_descr_zwnj">Разделитель нулевой ширины</string>
<string name="key_descr_nbsp">Неразрывный пробел</string>
<string name="key_descr_nnbsp">Узкий неразрывный пробел</string>
<string name="key_descr_delete_word">Удалить слово</string>
<string name="key_descr_forward_delete_word">Удалить слово справа</string>
<string name="key_descr_gesture">Жест</string>
<string name="clipboard_history_heading">Недавно скопированный текст</string> <string name="clipboard_history_heading">Недавно скопированный текст</string>
<string name="clipboard_pin_heading">Закреплено</string> <string name="clipboard_pin_heading">Закреплено</string>
<string name="clipboard_remove_confirm">Удалить этот элемент буфера обмена?</string> <string name="clipboard_remove_confirm">Удалить этот буфер обмена?</string>
<string name="clipboard_remove_confirmed">Да</string> <string name="clipboard_remove_confirmed">Да</string>
<string name="toast_no_voice_input">Приложение для голосового ввода не установлено</string>
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">Android için hafif ve güvenlik odaklı bir sanal klavye uygulaması.</string> <string name="short_description">Android için hafif ve güvenlik odaklı bir sanal klavye uygulaması.</string>
<string name="store_description">Bu uygulama özünde tuşların kenarlarından kaydırarak daha fazla karakter yazabilmek amacıyla geliştirildi.\n\nBu uygulama aslında Termux kullanıcıları için geliştirildi.\nArtık gündelik kullanım için de uygun.\n\nBu uygulama açık kaynaklıdır. Reklam içermez ve internete bağlanmaz.</string> <string name="store_description">"Bu uygulama özünde tuşların kenarlarından kaydırarak daha fazla karakter yazabilmek amacıyla geliştirildi.
Bu uygulama aslında Termux kullanıcıları için geliştirildi.
Artık gündelik kullanım için de uygun.
Bu uygulama açık kaynaklıdır. Reklam içermez ve internete bağlanmaz."</string>
<string name="settings_activity_label">Unexpected Keyboard Ayarları</string>
<string name="pref_portrait">Portre modunda</string> <string name="pref_portrait">Portre modunda</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">Manzara modunda</string> <string name="pref_landscape">Manzara modunda</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Tuş düzeni</string> <string name="pref_category_layout">Tuş düzeni</string>
<string name="pref_label_brightness">Adjust label brightness</string> <string name="pref_label_brightness">Adjust label brightness</string>
<string name="pref_keyboard_opacity">Klavye arkaplanı opaklığını ayarla</string> <string name="pref_keyboard_opacity">Klavye arkaplanı opaklığını ayarla</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Tuş düzeni %1$d: %2$s</string> <string name="pref_layouts_item">Tuş düzeni %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Tuş düzenini kaldır</string> <string name="pref_layouts_remove_custom">Tuş düzenini kaldır</string>
<string name="pref_custom_layout_title">Özel tuş düzeni</string> <string name="pref_custom_layout_title">Özel tuş düzeni</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</string> -->
<string name="pref_show_numpad_title">NumPadi göster</string> <string name="pref_show_numpad_title">NumPadi göster</string>
<string name="pref_show_numpad_never">Asla</string> <string name="pref_show_numpad_never">Asla</string>
<string name="pref_show_numpad_landscape">Sadece manzara modunda</string> <string name="pref_show_numpad_landscape">Sadece manzara modunda</string>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">Klavye değistirme tuşunun davranışını belirler</string> <string name="pref_switch_input_immediate_summary">Klavye değistirme tuşunun davranışını belirler</string>
<string name="pref_vibrate_custom">Özel titreşim</string> <string name="pref_vibrate_custom">Özel titreşim</string>
<string name="pref_vibrate_duration_title">Titreşim yoğunluğu</string> <string name="pref_vibrate_duration_title">Titreşim yoğunluğu</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">NumPad</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">Sayıları, tarihleri ve telefon numaralarını yazarken</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
<string name="pref_category_style">Tarz</string> <string name="pref_category_style">Tarz</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (Sisteme uyarla)</string> <string name="pref_theme_e_monet">Monet (Sisteme uyarla)</string>
<string name="pref_theme_e_monetlight">Monet (Açık)</string> <string name="pref_theme_e_monetlight">Monet (Açık)</string>
<string name="pref_theme_e_monetdark">Monet (Koyu)</string> <string name="pref_theme_e_monetdark">Monet (Koyu)</string>
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Çok kısa</string> <string name="pref_swipe_dist_e_very_short">Çok kısa</string>
<string name="pref_swipe_dist_e_short">Kısa</string> <string name="pref_swipe_dist_e_short">Kısa</string>
<string name="pref_swipe_dist_e_default">Normal</string> <string name="pref_swipe_dist_e_default">Normal</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Yapıştır</string> <string name="key_descr_paste">Yapıştır</string>
<string name="key_descr_cut">Kes</string> <string name="key_descr_cut">Kes</string>
<string name="key_descr_selectAll">Tümünü seç</string> <string name="key_descr_selectAll">Tümünü seç</string>
<string name="key_descr_shareText">Metni paylaş</string>
<string name="key_descr_pasteAsPlainText">Düz metin olarak yapıştır</string> <string name="key_descr_pasteAsPlainText">Düz metin olarak yapıştır</string>
<string name="key_descr_undo">Geri al</string> <string name="key_descr_undo">Geri al</string>
<string name="key_descr_redo">İleri al</string> <string name="key_descr_redo">İleri al</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">BAŞ(Sol yön tuşu)</string> <string name="key_descr_home">BAŞ(Sol yön tuşu)</string>
<string name="key_descr_end">SON(Sağ yön tuşu)</string> <string name="key_descr_end">SON(Sağ yön tuşu)</string>
<string name="key_descr_clipboard">Pano</string> <string name="key_descr_clipboard">Pano</string>
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Son kopyalanan metin</string> <string name="clipboard_history_heading">Son kopyalanan metin</string>
<string name="clipboard_pin_heading">Sabitlendi</string> <string name="clipboard_pin_heading">Sabitlendi</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">Bu sabitlemeyi sil</string>
<string name="clipboard_remove_confirmed">Evet</string> <string name="clipboard_remove_confirmed">Evet</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (Налагодження)</string> <string name="app_name_debug">Unexpected Keyboard (Налагодження)</string>
<string name="short_description">Легка та конфіденційна віртуальна клавіатура для Android.</string> <string name="short_description">Легка та конфіденційна віртуальна клавіатура для Android.</string>
<string name="store_description">Головна особливість полягає в тому, що ви можете вводити більше символів, проводячи клавіші до кутів.\n\nЦя програма спочатку була розроблена для програмістів, які використовують Termux.\nТепер ідеально підходить для щоденного використання.\n\nЦя програма не містить реклами, не надсилає жодних мережевих запитів і має відкритий код.</string> <string name="store_description">"Головна особливість полягає в тому, що ви можете вводити більше символів, проводячи клавіші до кутів.
Ця програма спочатку була розроблена для програмістів, які використовують Termux.
Тепер ідеально підходить для щоденного використання.
Ця програма не містить реклами, не надсилає жодних мережевих запитів і має відкритий код."</string>
<string name="settings_activity_label">Unexpected Keyboard Налаштування</string>
<string name="pref_portrait">У портретному режимі</string> <string name="pref_portrait">У портретному режимі</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">У альбомному режимі</string> <string name="pref_landscape">У альбомному режимі</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Макет</string> <string name="pref_category_layout">Макет</string>
<string name="pref_label_brightness">Налаштувати яскравість символів</string> <string name="pref_label_brightness">Налаштувати яскравість символів</string>
<string name="pref_keyboard_opacity">Налаштувати прозорість фону клавіатури</string> <string name="pref_keyboard_opacity">Налаштувати прозорість фону клавіатури</string>
@@ -19,10 +23,7 @@
<string name="pref_layouts_item">Макет %1$d: %2$s</string> <string name="pref_layouts_item">Макет %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Видалити макет</string> <string name="pref_layouts_remove_custom">Видалити макет</string>
<string name="pref_custom_layout_title">Власний макет</string> <string name="pref_custom_layout_title">Власний макет</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> --> <string name="pref_show_numpad_title">Показувати числову клавіатуру </string>
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
<string name="pref_show_numpad_always">Завжди</string> <string name="pref_show_numpad_always">Завжди</string>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">Поведінка клавіші перемикання клавіатури</string> <string name="pref_switch_input_immediate_summary">Поведінка клавіші перемикання клавіатури</string>
<string name="pref_vibrate_custom">Спеціальна вібрація</string> <string name="pref_vibrate_custom">Спеціальна вібрація</string>
<string name="pref_vibrate_duration_title">Інтенсивність вібрації</string> <string name="pref_vibrate_duration_title">Інтенсивність вібрації</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">Макет введення PIN-коду</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">При наборі чисел, дат і номерів телефонів</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Моне (Системна)</string> <string name="pref_theme_e_monet">Моне (Системна)</string>
<string name="pref_theme_e_monetlight">Моне (Світла)</string> <string name="pref_theme_e_monetlight">Моне (Світла)</string>
<string name="pref_theme_e_monetdark">Моне (Темна)</string> <string name="pref_theme_e_monetdark">Моне (Темна)</string>
<string name="pref_theme_e_rosepine">Рожева сосна</string>
<string name="pref_swipe_dist_e_very_short">Дуже коротка</string> <string name="pref_swipe_dist_e_very_short">Дуже коротка</string>
<string name="pref_swipe_dist_e_short">Коротка</string> <string name="pref_swipe_dist_e_short">Коротка</string>
<string name="pref_swipe_dist_e_default">Звичайна</string> <string name="pref_swipe_dist_e_default">Звичайна</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Вставити</string> <string name="key_descr_paste">Вставити</string>
<string name="key_descr_cut">Вирізати</string> <string name="key_descr_cut">Вирізати</string>
<string name="key_descr_selectAll">Вибрати все</string> <string name="key_descr_selectAll">Вибрати все</string>
<string name="key_descr_shareText">Поділитися текстом</string>
<string name="key_descr_pasteAsPlainText">Вставити як звичайний текст</string> <string name="key_descr_pasteAsPlainText">Вставити як звичайний текст</string>
<string name="key_descr_undo">Відмінити</string> <string name="key_descr_undo">Відмінити</string>
<string name="key_descr_redo">Повторити</string> <string name="key_descr_redo">Повторити</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Менеджер буфера обміну</string> <string name="key_descr_clipboard">Менеджер буфера обміну</string>
<string name="key_descr_combining">Комбінування діакритики</string>
<string name="key_descr_dead_key">Мертва клавіша</string>
<string name="key_descr_zwj">З\'єднувач нульової ширини</string>
<string name="key_descr_zwnj">Разділювач нульової ширини</string>
<string name="key_descr_nbsp">Нерозривний пробіл</string>
<string name="key_descr_nnbsp">Вузький нерозривний пробіл</string>
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<string name="clipboard_history_heading">Нещодавно скопійований текст</string> <string name="clipboard_history_heading">Нещодавно скопійований текст</string>
<string name="clipboard_pin_heading">Закріплено</string> <string name="clipboard_pin_heading">Закріплено</string>
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <string name="clipboard_remove_confirm">Видалити цей буфер обміну?</string>
<string name="clipboard_remove_confirmed">Так</string> <string name="clipboard_remove_confirmed">Так</string>
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (gỡ lỗi)</string> <string name="app_name_debug">Unexpected Keyboard (gỡ lỗi)</string>
<string name="short_description">Bàn phím ảo gọn nhẹ và tôn trọng quyền riêng tư cho Android.</string> <string name="short_description">Bàn phím ảo gọn nhẹ và tôn trọng quyền riêng tư cho Android.</string>
<string name="store_description">Chức năng chính là dễ dàng gõ nhiều ký tự bằng cách kéo phím về góc của nó.\n\nỨng dụng này ban đầu được thiết kế cho các lập trình viên dùng Termux.\nBây giờ đã hoàn hảo cho việc sử dụng hàng ngày.\n\nỨng dụng này không chứa quảng cáo, không cần đến mạng, và có mã nguồn mở.</string> <string name="store_description">"Chức năng chính là dễ dàng gõ nhiều ký tự bằng cách kéo phím về góc của nó.
Ứng dụng này ban đầu được thiết kế cho các lập trình viên dùng Termux.
Bây giờ đã hoàn hảo cho việc sử dụng hàng ngày.
Ứng dụng này không chứa quảng cáo, không cần đến mạng, và có mã nguồn mở."</string>
<string name="settings_activity_label">Cài đặt Unexpected Keyboard</string>
<string name="pref_portrait">Trong chế độ chân dung</string> <string name="pref_portrait">Trong chế độ chân dung</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">Trong chế độ phong cảnh</string> <string name="pref_landscape">Trong chế độ phong cảnh</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">Bố cục</string> <string name="pref_category_layout">Bố cục</string>
<string name="pref_label_brightness">Tùy chỉnh độ sáng của phím</string> <string name="pref_label_brightness">Tùy chỉnh độ sáng của 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_keyboard_opacity">Tùy chỉnh độ trong suốt của bàn phím</string>
@@ -19,9 +23,6 @@
<!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> --> <!-- <string name="pref_layouts_item">Layout %1$d: %2$s</string> -->
<!-- <string name="pref_layouts_remove_custom">Remove layout</string> --> <!-- <string name="pref_layouts_remove_custom">Remove layout</string> -->
<string name="pref_custom_layout_title">Tùy chỉnh bố cục</string> <string name="pref_custom_layout_title">Tùy chỉnh bố cục</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Custom vibration</string> --> <!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> --> <!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<!-- <string name="pref_theme_e_monet">Monet (System)</string> --> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> --> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> --> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">Rất gần</string> <string name="pref_swipe_dist_e_very_short">Rất gần</string>
<string name="pref_swipe_dist_e_short">Gần</string> <string name="pref_swipe_dist_e_short">Gần</string>
<string name="pref_swipe_dist_e_default">Trungbình</string> <string name="pref_swipe_dist_e_default">Trungbình</string>
@@ -109,6 +107,7 @@
<!-- <string name="key_descr_paste">Paste</string> --> <!-- <string name="key_descr_paste">Paste</string> -->
<!-- <string name="key_descr_cut">Cut</string> --> <!-- <string name="key_descr_cut">Cut</string> -->
<!-- <string name="key_descr_selectAll">Select all</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_pasteAsPlainText">Paste as plain text</string> -->
<!-- <string name="key_descr_undo">Undo</string> --> <!-- <string name="key_descr_undo">Undo</string> -->
<!-- <string name="key_descr_redo">Redo</string> --> <!-- <string name="key_descr_redo">Redo</string> -->
@@ -121,18 +120,8 @@
<!-- <string name="key_descr_home">Home</string> --> <!-- <string name="key_descr_home">Home</string> -->
<!-- <string name="key_descr_end">End</string> --> <!-- <string name="key_descr_end">End</string> -->
<!-- <string name="key_descr_clipboard">Clipboard manager</string> --> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<!-- <string name="clipboard_history_heading">Recently copied text</string> --> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="clipboard_pin_heading">Pinned</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="clipboard_remove_confirmed">Yes</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (debug)</string> <string name="app_name_debug">Unexpected Keyboard (debug)</string>
<string name="short_description">适用于 Android 的轻量级、注重隐私的虚拟键盘。</string> <string name="short_description">适用于 Android 的轻量级、注重隐私的虚拟键盘。</string>
<string name="store_description">此应用的主要功能是,通过将按键沿四角滑动,您可以输入更多字符。\n\n此应用最初是为使用 Termux 的程序员而设计的。\n现在对于日常使用来说也很完美。\n\n此应用没有广告不会发送任何网络请求而且是开源的。</string> <string name="store_description">"此应用的主要功能是,通过将按键沿四角滑动,您可以输入更多字符。
此应用最初是为使用 Termux 的程序员而设计的。
现在对于日常使用来说也很完美。
此应用没有广告,不会发送任何网络请求,而且是开源的。"</string>
<string name="settings_activity_label">Unexpected Keyboard 设置</string>
<string name="pref_portrait">在竖屏模式下</string> <string name="pref_portrait">在竖屏模式下</string>
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
<string name="pref_landscape">在横屏模式下</string> <string name="pref_landscape">在横屏模式下</string>
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
<string name="pref_category_layout">布局</string> <string name="pref_category_layout">布局</string>
<string name="pref_label_brightness">调整字母亮度</string> <string name="pref_label_brightness">调整字母亮度</string>
<string name="pref_keyboard_opacity">调整键盘背景透明度</string> <string name="pref_keyboard_opacity">调整键盘背景透明度</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">布局 %1$d%2$s</string> <string name="pref_layouts_item">布局 %1$d%2$s</string>
<string name="pref_layouts_remove_custom">移除布局</string> <string name="pref_layouts_remove_custom">移除布局</string>
<string name="pref_custom_layout_title">自定义布局</string> <string name="pref_custom_layout_title">自定义布局</string>
<!-- <string name="pref_show_number_row_no_number_row">No number row</string> -->
<!-- <string name="pref_show_number_row_no_symbols">Number row without symbols</string> -->
<!-- <string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,8 @@
<string name="pref_switch_input_immediate_summary">切换键盘按钮的行为</string> <string name="pref_switch_input_immediate_summary">切换键盘按钮的行为</string>
<string name="pref_vibrate_custom">自定义振动</string> <string name="pref_vibrate_custom">自定义振动</string>
<string name="pref_vibrate_duration_title">振动强度</string> <string name="pref_vibrate_duration_title">振动强度</string>
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> --> <string name="pref_pin_entry_enabled_title">数字输入布局</string>
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> --> <string name="pref_pin_entry_enabled_summary">输入数字、日期与电话号码时</string>
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<!-- <string name="pref_theme_e_monet">Monet (System)</string> --> <!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> --> <!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> --> <!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
<string name="pref_swipe_dist_e_very_short">非常短</string> <string name="pref_swipe_dist_e_very_short">非常短</string>
<string name="pref_swipe_dist_e_short"></string> <string name="pref_swipe_dist_e_short"></string>
<string name="pref_swipe_dist_e_default">中(默认)</string> <string name="pref_swipe_dist_e_default">中(默认)</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">粘贴</string> <string name="key_descr_paste">粘贴</string>
<string name="key_descr_cut">剪切</string> <string name="key_descr_cut">剪切</string>
<string name="key_descr_selectAll">全选</string> <string name="key_descr_selectAll">全选</string>
<string name="key_descr_shareText">分享文本</string>
<string name="key_descr_pasteAsPlainText">粘贴为纯文本</string> <string name="key_descr_pasteAsPlainText">粘贴为纯文本</string>
<string name="key_descr_undo">撤销</string> <string name="key_descr_undo">撤销</string>
<string name="key_descr_redo">重做</string> <string name="key_descr_redo">重做</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<!-- <string name="key_descr_clipboard">Clipboard manager</string> --> <!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
<!-- <string name="key_descr_dead_key">Dead key</string> -->
<!-- <string name="key_descr_zwj">Zero width joiner</string> -->
<!-- <string name="key_descr_zwnj">Zero width non-joiner</string> -->
<!-- <string name="key_descr_nbsp">Non-breaking space</string> -->
<!-- <string name="key_descr_nnbsp">Narrow non-breaking space</string> -->
<!-- <string name="key_descr_delete_word">Delete a word</string> -->
<!-- <string name="key_descr_forward_delete_word">Delete a word on the right</string> -->
<!-- <string name="key_descr_gesture">Gesture</string> -->
<!-- <string name="clipboard_history_heading">Recently copied text</string> --> <!-- <string name="clipboard_history_heading">Recently copied text</string> -->
<!-- <string name="clipboard_pin_heading">Pinned</string> --> <!-- <string name="clipboard_pin_heading">Pinned</string> -->
<!-- <string name="clipboard_remove_confirm">Remove this clipboard item?</string> --> <!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
<!-- <string name="clipboard_remove_confirmed">Yes</string> --> <!-- <string name="clipboard_remove_confirmed">Yes</string> -->
<!-- <string name="toast_no_voice_input">No voice typing app installed</string> -->
</resources> </resources>

View File

@@ -1,15 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string-array name="pref_show_number_row_values">
<item>no_number_row</item>
<item>no_symbols</item>
<item>symbols</item>
</string-array>
<string-array name="pref_show_number_row_entries">
<item>@string/pref_show_number_row_no_number_row</item>
<item>@string/pref_show_number_row_no_symbols</item>
<item>@string/pref_show_number_row_symbols</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>
@@ -41,7 +31,6 @@
<item>@string/pref_theme_e_monet</item> <item>@string/pref_theme_e_monet</item>
<item>@string/pref_theme_e_monetlight</item> <item>@string/pref_theme_e_monetlight</item>
<item>@string/pref_theme_e_monetdark</item> <item>@string/pref_theme_e_monetdark</item>
<item>@string/pref_theme_e_rosepine</item>
</string-array> </string-array>
<string-array name="pref_theme_values"> <string-array name="pref_theme_values">
<item>system</item> <item>system</item>
@@ -56,7 +45,6 @@
<item>monet</item> <item>monet</item>
<item>monetlight</item> <item>monetlight</item>
<item>monetdark</item> <item>monetdark</item>
<item>rosepine</item>
</string-array> </string-array>
<string-array name="pref_swipe_dist_entries"> <string-array name="pref_swipe_dist_entries">
<item>@string/pref_swipe_dist_e_very_short</item> <item>@string/pref_swipe_dist_e_very_short</item>
@@ -84,14 +72,4 @@
<item>4</item> <item>4</item>
<item>12</item> <item>12</item>
</string-array> </string-array>
<string-array name="pref_number_entry_entries">
<item>@string/pref_number_entry_layout_pin</item>
<item>@string/pref_number_entry_layout_number</item>
<item>@string/pref_number_entry_layout_normal</item>
</string-array>
<string-array name="pref_number_entry_values">
<item>pin</item>
<item>number</item>
<item>normal</item>
</string-array>
</resources> </resources>

View File

@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<resources> <resources>
<!-- DO NOT EDIT. This file is generated, run 'gradle genLayoutsList'. --> <!--DO NOT EDIT. This file is generated, see gen_layouts.py.-->
<string-array name="pref_layout_values"> <string-array name="pref_layout_values">
<item>system</item> <item>system</item>
<item>latn_qwerty_us</item> <item>latn_qwerty_us</item>
@@ -10,57 +10,36 @@
<item>arab_hamvaj_tly</item> <item>arab_hamvaj_tly</item>
<item>arab_pc</item> <item>arab_pc</item>
<item>arab_pc_ckb</item> <item>arab_pc_ckb</item>
<item>arab_pc_ckb_fa</item>
<item>arab_pc_hindu</item> <item>arab_pc_hindu</item>
<item>arab_pc_ir</item> <item>arab_pc_ir</item>
<item>armenian_ph_am</item> <item>armenian_ph_am</item>
<item>beng_national</item> <item>beng_national</item>
<item>beng_provat</item> <item>beng_provat</item>
<item>cyrl_fcuzhen_mn</item>
<item>cyrl_jcuken_kk</item>
<item>cyrl_jcuken_ru</item> <item>cyrl_jcuken_ru</item>
<item>cyrl_jcuken_uk</item> <item>cyrl_jcuken_uk</item>
<item>cyrl_lynyertdz_mk</item>
<item>cyrl_lynyertz_sr</item> <item>cyrl_lynyertz_sr</item>
<item>cyrl_ueishsht</item> <item>cyrl_ueishsht</item>
<item>cyrl_yaverti</item> <item>cyrl_yaverti</item>
<item>cyrl_yqukeng_tj</item>
<item>cyrl_yxukeng_os</item>
<item>deva_alt</item> <item>deva_alt</item>
<item>deva_inscript</item> <item>deva_inscript</item>
<item>deva_phonetic_in</item>
<item>georgian_mes</item>
<item>georgian_qwerty</item>
<item>grek_qwerty</item> <item>grek_qwerty</item>
<item>guj_phonetic_in</item> <item>guj_phonetic_in</item>
<item>hang_dubeolsik_kr</item> <item>hang_dubeolsik_kr</item>
<item>hebr_1_il</item> <item>hebr_1_il</item>
<item>hebr_2_il</item> <item>hebr_2_il</item>
<item>kann_kannada</item> <item>kana_jis_jp</item>
<item>latn_azerty_be</item>
<item>latn_azerty_fr</item> <item>latn_azerty_fr</item>
<item>latn_bepo_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_apl</item>
<item>latn_qwerty_az</item>
<item>latn_qwerty_bqn</item>
<item>latn_qwerty_br</item> <item>latn_qwerty_br</item>
<item>latn_qwerty_cy</item>
<item>latn_qwerty_cz</item> <item>latn_qwerty_cz</item>
<item>latn_qwerty_da</item> <item>latn_qwerty_da</item>
<item>latn_qwerty_es</item> <item>latn_qwerty_es</item>
<item>latn_qwerty_et</item>
<item>latn_qwerty_ga</item>
<item>latn_qwerty_gb</item> <item>latn_qwerty_gb</item>
<item>latn_qwerty_haw</item>
<item>latn_qwerty_hu</item> <item>latn_qwerty_hu</item>
<item>latn_qwerty_is</item>
<item>latn_qwerty_jp</item> <item>latn_qwerty_jp</item>
<item>latn_qwerty_kk</item>
<item>latn_qwerty_lt</item>
<item>latn_qwerty_lv</item> <item>latn_qwerty_lv</item>
<item>latn_qwerty_mt</item>
<item>latn_qwerty_no</item> <item>latn_qwerty_no</item>
<item>latn_qwerty_pl</item> <item>latn_qwerty_pl</item>
<item>latn_qwerty_ro</item> <item>latn_qwerty_ro</item>
@@ -69,21 +48,15 @@
<item>latn_qwerty_sr</item> <item>latn_qwerty_sr</item>
<item>latn_qwerty_tly</item> <item>latn_qwerty_tly</item>
<item>latn_qwerty_tr</item> <item>latn_qwerty_tr</item>
<item>latn_qwerty_uz</item>
<item>latn_qwerty_vi</item> <item>latn_qwerty_vi</item>
<item>latn_qwertz</item> <item>latn_qwertz</item>
<item>latn_qwertz_cz</item> <item>latn_qwertz_cz</item>
<item>latn_qwertz_cz_diacritics</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_fr_ch</item>
<item>latn_qwertz_hu</item> <item>latn_qwertz_hu</item>
<item>latn_qwertz_sk</item> <item>latn_qwertz_sk</item>
<item>latn_qwertz_sq</item>
<item>latn_workman_us</item>
<item>shaw_imperial_en</item> <item>shaw_imperial_en</item>
<item>sinhala_phonetic</item>
<item>tamil_default</item>
<item>urdu_phonetic_ur</item> <item>urdu_phonetic_ur</item>
<item>custom</item> <item>custom</item>
</string-array> </string-array>
@@ -95,58 +68,37 @@
<item>Arabic Alt</item> <item>Arabic Alt</item>
<item>Talysh (تالشی همواج)</item> <item>Talysh (تالشی همواج)</item>
<item>Arabic PC</item> <item>Arabic PC</item>
<item>Kurdish (کوردی) QWERTY</item> <item>Kurdish (کوردی)</item>
<item>Central Kurdish (سۆرانی) Persian Layout</item>
<item>Arabic PC (Hindu numerals)</item> <item>Arabic PC (Hindu numerals)</item>
<item>Persian PC</item> <item>Persian PC</item>
<item>Armenian</item> <item>Armenian</item>
<item>বাংলা (জাতীয়)</item> <item>বাংলা (জাতীয়)</item>
<item>বাংলা (প্রভাত)</item> <item>বাংলা (প্রভাত)</item>
<item>ФЦУЖЭН (Монгол)</item>
<item>ЙЦУКЕН (Қазақша)</item>
<item>ЙЦУКЕН (Русский)</item> <item>ЙЦУКЕН (Русский)</item>
<item>ЙЦУКЕН (Українська)</item> <item>ЙЦУКЕН (Українська)</item>
<item>ЉЊЕРТЅ (Македонски)</item>
<item>ЉЊЕРТЗ (Српски)</item> <item>ЉЊЕРТЗ (Српски)</item>
<item>УЕИШЩ (Български, БДС)</item> <item>УЕИШЩ (Български, БДС)</item>
<item>ЯВЕРТЪ</item> <item>ЯВЕРТЪ</item>
<item>Tajiki Persian (Тоҷикӣ)</item>
<item>Old Church Slavonic (Црькъвьнословѣньскъ ѩзыкъ)</item>
<item>देवनागरी (हिंदी)-2</item> <item>देवनागरी (हिंदी)-2</item>
<item>देवनागरी (हिंदी)-1</item> <item>देवनागरी (हिंदी)-1</item>
<item>हिन्दी फोनेटिक - Hindi Phonetic</item>
<item>ქართული (MES)</item>
<item>ქართული (QWERTY)</item>
<item>QWERTY (Greek)</item> <item>QWERTY (Greek)</item>
<item>ગુજરાતી ફોનેટિક - Gujarati Phonetic</item> <item>ગુજરાતી ફોનેટિક - Gujarati Phonetic</item>
<item>두벌식 (Korean)</item> <item>두벌식 (Korean)</item>
<item>Hebrew 1</item> <item>Hebrew 1</item>
<item>Hebrew 2</item> <item>Hebrew 2</item>
<item>ಕನ್ನಡ - Kannada</item> <item>かな入力 (日本)</item>
<item>AZERTY (Belgian)</item>
<item>AZERTY (Français)</item> <item>AZERTY (Français)</item>
<item>BEPO (Français)</item> <item>BEPO (Français)</item>
<item>Bone</item> <item>Bone</item>
<item>Neo 2</item> <item>Neo 2</item>
<item>QWERTY (APL)</item>
<item>QWERTY (Azərbaycanca)</item>
<item>QWERTY (BQN)</item>
<item>QWERTY (Brasileiro)</item> <item>QWERTY (Brasileiro)</item>
<item>QWERTY (Welsh)</item>
<item>QWERTY (Czech)</item> <item>QWERTY (Czech)</item>
<item>QWERTY (Danish)</item> <item>QWERTY (Danish)</item>
<item>QWERTY (Español)</item> <item>QWERTY (Español)</item>
<item>QWERTY (eesti)</item>
<item>QWERTY (Irish)</item>
<item>QWERTY (UK)</item> <item>QWERTY (UK)</item>
<item>QWERTY (Hawaiian)</item>
<item>QWERTY (Magyar)</item> <item>QWERTY (Magyar)</item>
<item>QWERTY (Íslenska)</item>
<item>QWERTY (Japan)</item> <item>QWERTY (Japan)</item>
<item>QWERTY (Qazaqşa)</item>
<item>QWERTY (Lietuviškai)</item>
<item>QWERTY (Latvian)</item> <item>QWERTY (Latvian)</item>
<item>QWERTY (Malti)</item>
<item>QWERTY (Norwegian)</item> <item>QWERTY (Norwegian)</item>
<item>QWERTY (Polski)</item> <item>QWERTY (Polski)</item>
<item>QWERTY (Română)</item> <item>QWERTY (Română)</item>
@@ -155,21 +107,15 @@
<item>QWERTY (Srpski, latinica)</item> <item>QWERTY (Srpski, latinica)</item>
<item>QWERTY (Talysh New Latin)</item> <item>QWERTY (Talysh New Latin)</item>
<item>QWERTY (Türkçe)</item> <item>QWERTY (Türkçe)</item>
<item>QWERTY (Oʻzbekcha)</item>
<item>QWERTY (Vietnamese)</item> <item>QWERTY (Vietnamese)</item>
<item>QWERTZ</item> <item>QWERTZ</item>
<item>QWERTZ (Czech)</item> <item>QWERTZ (Czech)</item>
<item>QWERTZ (Czech with diacritic keys)</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 (Swiss French)</item>
<item>QWERTZ (Magyar)</item> <item>QWERTZ (Magyar)</item>
<item>QWERTZ (Slovak)</item> <item>QWERTZ (Slovak)</item>
<item>QWERTZ (Albanian)</item>
<item>WORKMAN (US)</item>
<item>Shaw Imperial</item> <item>Shaw Imperial</item>
<item>සිංහල</item>
<item>தமிழ்</item>
<item>Urdu Phonetic</item> <item>Urdu Phonetic</item>
<item>@string/pref_layout_e_custom</item> <item>@string/pref_layout_e_custom</item>
</string-array> </string-array>
@@ -182,57 +128,36 @@
<item>@xml/arab_hamvaj_tly</item> <item>@xml/arab_hamvaj_tly</item>
<item>@xml/arab_pc</item> <item>@xml/arab_pc</item>
<item>@xml/arab_pc_ckb</item> <item>@xml/arab_pc_ckb</item>
<item>@xml/arab_pc_ckb_fa</item>
<item>@xml/arab_pc_hindu</item> <item>@xml/arab_pc_hindu</item>
<item>@xml/arab_pc_ir</item> <item>@xml/arab_pc_ir</item>
<item>@xml/armenian_ph_am</item> <item>@xml/armenian_ph_am</item>
<item>@xml/beng_national</item> <item>@xml/beng_national</item>
<item>@xml/beng_provat</item> <item>@xml/beng_provat</item>
<item>@xml/cyrl_fcuzhen_mn</item>
<item>@xml/cyrl_jcuken_kk</item>
<item>@xml/cyrl_jcuken_ru</item> <item>@xml/cyrl_jcuken_ru</item>
<item>@xml/cyrl_jcuken_uk</item> <item>@xml/cyrl_jcuken_uk</item>
<item>@xml/cyrl_lynyertdz_mk</item>
<item>@xml/cyrl_lynyertz_sr</item> <item>@xml/cyrl_lynyertz_sr</item>
<item>@xml/cyrl_ueishsht</item> <item>@xml/cyrl_ueishsht</item>
<item>@xml/cyrl_yaverti</item> <item>@xml/cyrl_yaverti</item>
<item>@xml/cyrl_yqukeng_tj</item>
<item>@xml/cyrl_yxukeng_os</item>
<item>@xml/deva_alt</item> <item>@xml/deva_alt</item>
<item>@xml/deva_inscript</item> <item>@xml/deva_inscript</item>
<item>@xml/deva_phonetic_in</item>
<item>@xml/georgian_mes</item>
<item>@xml/georgian_qwerty</item>
<item>@xml/grek_qwerty</item> <item>@xml/grek_qwerty</item>
<item>@xml/guj_phonetic_in</item> <item>@xml/guj_phonetic_in</item>
<item>@xml/hang_dubeolsik_kr</item> <item>@xml/hang_dubeolsik_kr</item>
<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/kann_kannada</item> <item>@xml/kana_jis_jp</item>
<item>@xml/latn_azerty_be</item>
<item>@xml/latn_azerty_fr</item> <item>@xml/latn_azerty_fr</item>
<item>@xml/latn_bepo_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_apl</item>
<item>@xml/latn_qwerty_az</item>
<item>@xml/latn_qwerty_bqn</item>
<item>@xml/latn_qwerty_br</item> <item>@xml/latn_qwerty_br</item>
<item>@xml/latn_qwerty_cy</item>
<item>@xml/latn_qwerty_cz</item> <item>@xml/latn_qwerty_cz</item>
<item>@xml/latn_qwerty_da</item> <item>@xml/latn_qwerty_da</item>
<item>@xml/latn_qwerty_es</item> <item>@xml/latn_qwerty_es</item>
<item>@xml/latn_qwerty_et</item>
<item>@xml/latn_qwerty_ga</item>
<item>@xml/latn_qwerty_gb</item> <item>@xml/latn_qwerty_gb</item>
<item>@xml/latn_qwerty_haw</item>
<item>@xml/latn_qwerty_hu</item> <item>@xml/latn_qwerty_hu</item>
<item>@xml/latn_qwerty_is</item>
<item>@xml/latn_qwerty_jp</item> <item>@xml/latn_qwerty_jp</item>
<item>@xml/latn_qwerty_kk</item>
<item>@xml/latn_qwerty_lt</item>
<item>@xml/latn_qwerty_lv</item> <item>@xml/latn_qwerty_lv</item>
<item>@xml/latn_qwerty_mt</item>
<item>@xml/latn_qwerty_no</item> <item>@xml/latn_qwerty_no</item>
<item>@xml/latn_qwerty_pl</item> <item>@xml/latn_qwerty_pl</item>
<item>@xml/latn_qwerty_ro</item> <item>@xml/latn_qwerty_ro</item>
@@ -241,21 +166,15 @@
<item>@xml/latn_qwerty_sr</item> <item>@xml/latn_qwerty_sr</item>
<item>@xml/latn_qwerty_tly</item> <item>@xml/latn_qwerty_tly</item>
<item>@xml/latn_qwerty_tr</item> <item>@xml/latn_qwerty_tr</item>
<item>@xml/latn_qwerty_uz</item>
<item>@xml/latn_qwerty_vi</item> <item>@xml/latn_qwerty_vi</item>
<item>@xml/latn_qwertz</item> <item>@xml/latn_qwertz</item>
<item>@xml/latn_qwertz_cz</item> <item>@xml/latn_qwertz_cz</item>
<item>@xml/latn_qwertz_cz_diacritics</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_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/latn_qwertz_sq</item>
<item>@xml/latn_workman_us</item>
<item>@xml/shaw_imperial_en</item> <item>@xml/shaw_imperial_en</item>
<item>@xml/sinhala_phonetic</item>
<item>@xml/tamil_default</item>
<item>@xml/urdu_phonetic_ur</item> <item>@xml/urdu_phonetic_ur</item>
<item>-1</item> <item>-1</item>
</integer-array> </integer-array>

View File

@@ -3,11 +3,15 @@
<string name="app_name_release">Unexpected Keyboard</string> <string name="app_name_release">Unexpected Keyboard</string>
<string name="app_name_debug">Unexpected Keyboard (Debug)</string> <string name="app_name_debug">Unexpected Keyboard (Debug)</string>
<string name="short_description">Lightweight and privacy-conscious virtual keyboard for Android.</string> <string name="short_description">Lightweight and privacy-conscious virtual keyboard for Android.</string>
<string name="store_description">The main feature is that you can type more characters by swiping the keys towards the corners.\n\nThis application was originally designed for programmers using Termux.\nNow perfect for everyday use.\n\nThis application contains no ads, doesn\'t make any network requests and is Open Source.</string> <string name="store_description">"The main feature is that you can type more characters by swiping the keys towards the corners.
This application was originally designed for programmers using Termux.
Now perfect for everyday use.
This application contains no ads, doesn't make any network requests and is Open Source."</string>
<string name="settings_activity_label">Unexpected Keyboard Settings</string>
<string name="pref_portrait">In portrait mode</string> <string name="pref_portrait">In portrait mode</string>
<string name="pref_portrait_unfolded">In portrait mode unfolded</string>
<string name="pref_landscape">In landscape mode</string> <string name="pref_landscape">In landscape mode</string>
<string name="pref_landscape_unfolded">In landscape mode unfolded</string>
<string name="pref_category_layout">Layout</string> <string name="pref_category_layout">Layout</string>
<string name="pref_label_brightness">Adjust label brightness</string> <string name="pref_label_brightness">Adjust label brightness</string>
<string name="pref_keyboard_opacity">Adjust keyboard background opacity</string> <string name="pref_keyboard_opacity">Adjust keyboard background opacity</string>
@@ -19,9 +23,6 @@
<string name="pref_layouts_item">Layout %1$d: %2$s</string> <string name="pref_layouts_item">Layout %1$d: %2$s</string>
<string name="pref_layouts_remove_custom">Remove layout</string> <string name="pref_layouts_remove_custom">Remove layout</string>
<string name="pref_custom_layout_title">Custom layout</string> <string name="pref_custom_layout_title">Custom layout</string>
<string name="pref_show_number_row_no_number_row">No number row</string>
<string name="pref_show_number_row_no_symbols">Number row without symbols</string>
<string name="pref_show_number_row_symbols">Number row with symbols</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>
@@ -49,10 +50,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_custom">Custom vibration</string> <string name="pref_vibrate_custom">Custom vibration</string>
<string name="pref_vibrate_duration_title">Vibration intensity</string> <string name="pref_vibrate_duration_title">Vibration intensity</string>
<string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> <string name="pref_pin_entry_enabled_title">Pin entry layout</string>
<string name="pref_number_entry_layout_pin">PIN Entry</string> <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string>
<string name="pref_number_entry_layout_number">Number pane</string>
<string name="pref_number_entry_layout_normal">Use the main layout</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>
@@ -72,7 +71,6 @@
<string name="pref_theme_e_monet">Monet (System)</string> <string name="pref_theme_e_monet">Monet (System)</string>
<string name="pref_theme_e_monetlight">Monet (Light)</string> <string name="pref_theme_e_monetlight">Monet (Light)</string>
<string name="pref_theme_e_monetdark">Monet (Dark)</string> <string name="pref_theme_e_monetdark">Monet (Dark)</string>
<string name="pref_theme_e_rosepine">Rosé Pine</string>
<string name="pref_swipe_dist_e_very_short">Very short</string> <string name="pref_swipe_dist_e_very_short">Very short</string>
<string name="pref_swipe_dist_e_short">Short</string> <string name="pref_swipe_dist_e_short">Short</string>
<string name="pref_swipe_dist_e_default">Normal</string> <string name="pref_swipe_dist_e_default">Normal</string>
@@ -109,6 +107,7 @@
<string name="key_descr_paste">Paste</string> <string name="key_descr_paste">Paste</string>
<string name="key_descr_cut">Cut</string> <string name="key_descr_cut">Cut</string>
<string name="key_descr_selectAll">Select all</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_pasteAsPlainText">Paste as plain text</string>
<string name="key_descr_undo">Undo</string> <string name="key_descr_undo">Undo</string>
<string name="key_descr_redo">Redo</string> <string name="key_descr_redo">Redo</string>
@@ -121,18 +120,8 @@
<string name="key_descr_home">Home</string> <string name="key_descr_home">Home</string>
<string name="key_descr_end">End</string> <string name="key_descr_end">End</string>
<string name="key_descr_clipboard">Clipboard manager</string> <string name="key_descr_clipboard">Clipboard manager</string>
<string name="key_descr_combining">Combining diacritic</string>
<string name="key_descr_dead_key">Dead key</string>
<string name="key_descr_zwj">Zero width joiner</string>
<string name="key_descr_zwnj">Zero width non-joiner</string>
<string name="key_descr_nbsp">Non-breaking space</string>
<string name="key_descr_nnbsp">Narrow non-breaking space</string>
<string name="key_descr_delete_word">Delete a word</string>
<string name="key_descr_forward_delete_word">Delete a word on the right</string>
<string name="key_descr_gesture">Gesture</string>
<string name="clipboard_history_heading">Recently copied text</string> <string name="clipboard_history_heading">Recently copied text</string>
<string name="clipboard_pin_heading">Pinned</string> <string name="clipboard_pin_heading">Pinned</string>
<string name="clipboard_remove_confirm">Remove this clipboard item?</string> <string name="clipboard_remove_confirm">Remove this clipboard?</string>
<string name="clipboard_remove_confirmed">Yes</string> <string name="clipboard_remove_confirmed">Yes</string>
<string name="toast_no_voice_input">No voice typing app installed</string>
</resources> </resources>

View File

@@ -56,33 +56,5 @@
<item name="android:layout_marginHorizontal">16dp</item> <item name="android:layout_marginHorizontal">16dp</item>
<item name="android:layout_gravity">center</item> <item name="android:layout_gravity">center</item>
</style> </style>
<style name="anim">
<item name="android:adjustViewBounds">true</item>
<item name="android:layout_height">120dp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="anim_text">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginHorizontal">20dp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textAlignment">center</item>
<item name="android:textSize">18dp</item>
<item name="android:textStyle">bold</item>
</style>
<style name="anim_box">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginVertical">16dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:orientation">horizontal</item>
</style>
<style name="appTheme" parent="@android:style/Theme.DeviceDefault.DayNight"/> <style name="appTheme" parent="@android:style/Theme.DeviceDefault.DayNight"/>
<style name="settingsTheme" parent="appTheme">
<!-- Setting this in the activity theme so it propagate to nested
preference screens. -->
<item name="android:fitsSystemWindows">true</item>
</style>
</resources> </resources>

View File

@@ -181,45 +181,26 @@
</style> </style>
<style name="MonetLight" parent="@style/BaseTheme"> <style name="MonetLight" parent="@style/BaseTheme">
<item name="android:isLightTheme">true</item> <item name="android:isLightTheme">true</item>
<item name="colorKeyboard">@android:color/system_neutral1_100</item> <item name="colorKeyboard">@android:color/system_accent1_100</item>
<item name="colorKey">@android:color/system_neutral1_50</item> <item name="colorKey">@android:color/system_accent1_0</item>
<item name="colorKeyActivated">?colorKeyboard</item> <item name="colorKeyActivated">@android:color/system_accent1_300</item>
<item name="colorLabel">@android:color/system_neutral1_800</item> <item name="colorLabel">@android:color/system_accent1_1000</item>
<item name="colorLabelActivated">@android:color/system_accent1_400</item> <item name="colorLabelActivated">@android:color/system_accent1_1000</item>
<item name="colorLabelLocked">@android:color/system_accent1_600</item> <item name="colorLabelLocked">@android:color/system_accent1_500</item>
<item name="colorSubLabel">@android:color/system_neutral1_500</item> <item name="colorSubLabel">@android:color/system_accent1_900</item>
<item name="emoji_button_bg">?colorKeyActivated</item> <item name="emoji_button_bg">?colorKeyActivated</item>
<item name="emoji_color">?colorKeyboard</item> <item name="emoji_color">@android:color/system_accent1_1000</item>
</style> </style>
<style name="MonetDark" parent="@style/BaseTheme"> <style name="MonetDark" parent="@style/BaseTheme">
<item name="android:isLightTheme">false</item> <item name="android:isLightTheme">false</item>
<item name="colorKeyboard">@android:color/system_neutral1_900</item> <item name="colorKeyboard">@android:color/system_accent1_900</item>
<item name="colorKey">@android:color/system_neutral1_800</item> <item name="colorKey">@android:color/system_accent1_800</item>
<item name="colorKeyActivated">?colorKeyboard</item> <item name="colorKeyActivated">@android:color/system_accent1_600</item>
<item name="colorLabel">@android:color/system_neutral1_0</item> <item name="colorLabel">@android:color/system_neutral1_0</item>
<item name="colorLabelActivated">@android:color/system_accent1_400</item> <item name="colorLabelActivated">@android:color/system_accent2_300</item>
<item name="colorLabelLocked">@android:color/system_accent1_600</item> <item name="colorLabelLocked">@android:color/system_accent2_100</item>
<item name="colorSubLabel">@android:color/system_neutral1_400</item> <item name="colorSubLabel">@android:color/system_neutral1_300</item>
<item name="emoji_button_bg">?colorKeyActivated</item> <item name="emoji_button_bg">?colorKeyActivated</item>
<item name="emoji_color">?colorKeyboard</item> <item name="emoji_color">@android:color/system_accent1_900</item>
</style>
<style name="RosePine" parent="BaseTheme">
<item name="android:isLightTheme">false</item>
<item name="colorKeyboard">#191724</item>
<item name="colorKey">#26233a</item>
<item name="colorKeyActivated">#403d52</item>
<item name="keyBorderWidth">0dp</item>
<item name="keyBorderWidthActivated">1dp</item>
<item name="keyBorderColorLeft">#6e6a86</item>
<item name="keyBorderColorTop">#6e6a86</item>
<item name="keyBorderColorRight">#6e6a86</item>
<item name="keyBorderColorBottom">#6e6a86</item>
<item name="colorLabel">#e0def4</item>
<item name="colorLabelActivated">#c4a7e7</item>
<item name="colorLabelLocked">#31748f</item>
<item name="colorSubLabel">#6e6a86</item>
<item name="keyBorderRadius">1dp</item>
<item name="emoji_button_bg">#26233a</item>
<item name="emoji_color">#e0def4</item>
</style> </style>
</resources> </resources>

View File

@@ -6,6 +6,5 @@
<dimen name="emoji_text_size">28dp</dimen> <dimen name="emoji_text_size">28dp</dimen>
<dimen name="clipboard_view_height">300dp</dimen> <dimen name="clipboard_view_height">300dp</dimen>
<dimen name="pref_button_size">28dp</dimen> <dimen name="pref_button_size">28dp</dimen>
<!-- Will be overwritten automatically by Gradle for the debug build variant --> <bool name="debug_logs">false</bool> <!-- Will be overwritten automatically by Gradle for the debug build variant -->
<bool name="debug_logs">false</bool>
</resources> </resources>

View File

@@ -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" key3="loc switch_clipboard" key4="switch_numeric"/> <key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key3="loc switch_clipboard" key4="switch_numeric"/>
<key width="1.1" key0="fn" key1="loc alt" key2="loc change_method" key3="switch_emoji" key4="config"/> <key width="1.1" key0="fn" key1="loc alt" key2="loc change_method" key3="switch_emoji" key4="config"/>
<key width="4.4" key0="space" key7="switch_forward" key8="switch_backward" key5="cursor_left" key6="cursor_right"/> <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 compose" key7="up" key6="right" key5="left" key8="down" key1="loc home" key2="loc page_up" key3="loc end" key4="loc page_down"/> <key width="1.1" key0="loc compose" key7="up" key6="right" key5="left" key8="down" key1="loc home" key2="loc page_up" key3="loc end" key4="loc page_down"/>
<key width="1.7" key0="enter" key1="loc voice_typing" key2="action"/> <key width="1.7" key0="enter" key1="loc voice_typing" key2="action"/>
</row> </row>

View File

@@ -3,7 +3,7 @@
<keyboard bottom_row="false"> <keyboard bottom_row="false">
<row height="0.95"> <row height="0.95">
<key key0="switch_back_clipboard"/> <key key0="switch_back_clipboard"/>
<key width="3" key0="space" key5="cursor_left" key6="cursor_right"/> <key width="3" key0="space" key5="cursor_left" key6="cursor_right" slider="true"/>
<key key0="backspace" key2="delete"/> <key key0="backspace" key2="delete"/>
<key key0="enter" key2="action"/> <key key0="enter" key2="action"/>
</row> </row>

View File

@@ -3,7 +3,7 @@
<keyboard bottom_row="false"> <keyboard bottom_row="false">
<row height="0.95"> <row height="0.95">
<key key0="switch_back_emoji"/> <key key0="switch_back_emoji"/>
<key width="3" key0="space" key5="cursor_left" key6="cursor_right"/> <key width="3" key0="space" key5="cursor_left" key6="cursor_right" slider="true"/>
<key key0="backspace" key2="delete"/> <key key0="backspace" key2="delete"/>
<key key0="enter" key2="action"/> <key key0="enter" key2="action"/>
</row> </row>

View File

@@ -17,7 +17,7 @@
<key key0="σ" key3="←" key4="∂"/> <key key0="σ" key3="←" key4="∂"/>
<key key0="δ" key3="↓" key4="∫"/> <key key0="δ" key3="↓" key4="∫"/>
<key key0="φ" key3="→" key4="∃"/> <key key0="φ" key3="→" key4="∃"/>
<key key0="γ" key3="∋" key4="∈"/> <key key0="γ" key4="∈"/>
<key key0="η" key1="⊕" key4="4"/> <key key0="η" key1="⊕" key4="4"/>
<key key0="ξ" key1="⊖" key3="" key4="5"/> <key key0="ξ" key1="⊖" key3="" key4="5"/>
<key key0="κ" key1="⊙" key3="" key4="6"/> <key key0="κ" key1="⊙" key3="" key4="6"/>

View File

@@ -1,67 +1,45 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="juloo.keyboard2.SettingsActivity" android:supportsSwitchingToNextInputMethod="true"> <input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="juloo.keyboard2.SettingsActivity" android:supportsSwitchingToNextInputMethod="true">
<!-- The first entry of the list makes latn_qwerty_us the default layout for
unrecognized locales. -->
<subtype android:label="%s" android:languageTag="en" android:imeSubtypeLocale="en" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
<subtype android:label="%s" android:languageTag="ar" android:imeSubtypeLocale="ar" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=arabic,default_layout=arab_pc_hindu"/> <subtype android:label="%s" android:languageTag="ar" android:imeSubtypeLocale="ar" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=arabic,default_layout=arab_pc_hindu"/>
<subtype android:label="%s" android:languageTag="ar" android:imeSubtypeLocale="ar_TN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=arabic,default_layout=arab_pc"/> <subtype android:label="%s" android:languageTag="ar" android:imeSubtypeLocale="ar_TN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=arabic,default_layout=arab_pc"/>
<subtype android:label="%s" android:languageTag="ay" android:imeSubtypeLocale="ay_AM" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=armenian,default_layout=armenian_ph_am"/> <subtype android:label="%s" android:languageTag="ay" android:imeSubtypeLocale="ay_AM" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=armenian,default_layout=armenian_ph_am"/>
<subtype android:label="%s" android:languageTag="az" android:imeSubtypeLocale="az_AZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_az,extra_keys=accent_trema:ü:ö@w|accent_cedille:ç:ş@s|ğ@g|ı@k|ə@l"/>
<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_ueishsht,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_ueishsht,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=accent_aigu:á:é:í:ó:ú:ý@d|accent_ring:ů@s|accent_caron:č:ě:ň:ř:š:ž:ď:ť@f"/> <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:á:é:í:ó:ú:ý@d|accent_ring:ů@s|accent_caron:č:ě:ň:ř:š:ž:ď:ť@f"/>
<subtype android:label="%s" android:languageTag="cy" android:imeSubtypeLocale="cy_GB" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_cy"/>
<subtype android:label="%s" android:languageTag="da" android:imeSubtypeLocale="da_DK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_da,extra_keys=€|æ|å|ø"/> <subtype android:label="%s" android:languageTag="da" android:imeSubtypeLocale="da_DK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_da,extra_keys=€|æ|å|ø"/>
<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:ä:ö:ü@u|ß|€"/> <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:ä:ö:ü@u|ß|€"/>
<subtype android:label="%s" android:languageTag="de-BE" android:imeSubtypeLocale="de_BE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_be,extra_keys=accent_grave:è@f|accent_aigu:á:é:í:ó:ú:ý:j́@d|accent_circonflexe:ê@f|accent_cedille:ç@c|accent_trema@u|€"/>
<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=£@l|€"/> <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=£@l|€"/>
<subtype android:label="%s" android:languageTag="en-AU" android:imeSubtypeLocale="en_AU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
<subtype android:label="%s" android:languageTag="en-CA" android:imeSubtypeLocale="en_CA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/> <subtype android:label="%s" android:languageTag="en-CA" android:imeSubtypeLocale="en_CA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
<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_gb,extra_keys=£@l"/> <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_gb,extra_keys=£@l"/>
<subtype android:label="%s" android:languageTag="en-IN" android:imeSubtypeLocale="en_IN" 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="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_aigu:á:é:í:ó:ú@d|accent_tilde:ñ@n|accent_grave@f|accent_trema@u|€"/> <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:á:é:í:ó:ú@d|accent_tilde:ñ@n|accent_grave@f|accent_trema@u|€"/>
<subtype android:label="%s" android:languageTag="et" android:imeSubtypeLocale="et_EE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_et,extra_keys=accent_trema:ä:ö:ü@u|accent_tilde:õ@o|accent_caron:š:ž@s|€"/>
<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="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-BE" android:imeSubtypeLocale="fr_BE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_be,extra_keys=accent_grave:à:è:ù@f|accent_aigu:é@d|accent_circonflexe:ê:û@f|accent_cedille:ç@c|accent_trema@u|€"/> <subtype android:label="%s" android:languageTag="fr-CA" android:imeSubtypeLocale="fr_CA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave:à:è:ù@f|accent_aigu:é@d|accent_circonflexe:â:ê:ô@f|accent_cedille:ç@c|accent_trema:ë:ï:ü:ÿ@u"/>
<subtype android:label="%s" android:languageTag="fr-CA" android:imeSubtypeLocale="fr_CA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_azerty_fr,extra_keys=accent_grave:à:è:ù@f|accent_aigu:é@d|accent_circonflexe:â:ê:ô:û@f|accent_cedille:ç@c|accent_trema:ë:ï:ü:ÿ@u"/> <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:à:è:ù@f|accent_aigu:é@d|accent_circonflexe:â:ê:ô@o|accent_cedille:ç@c|accent_trema:ë:ï:ü:ÿ@u|€"/>
<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:à:è:ù@f|accent_aigu:é@d|accent_circonflexe:â:ê:ô@o|accent_cedille:ç@c|accent_trema:ë:ï:ü:ÿ@u|€"/> <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:à:è@d|accent_aigu:é@d|accent_circonflexe:â:ê:ô@o|accent_cedille:ç@c|accent_trema:ë:ï:ü@l|€"/>
<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:à:è:ù@d|accent_aigu:é@d|accent_circonflexe:â:ê:ô:û@o|accent_cedille:ç@c|accent_trema:ë:ï:ü@l|€"/>
<subtype android:label="%s" android:languageTag="ga" android:imeSubtypeLocale="ga_IE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_ga,extra_keys=accent_aigu:á:é:í:ó:ú@k|accent_dot_above@l"/>
<subtype android:label="%s" android:languageTag="haw" android:imeSubtypeLocale="haw_US" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_haw,extra_keys=ʻ@l|accent_macron:ā:ē:ī:ō:ū@m"/>
<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=₪@r|€"/> <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=₪@r|€"/>
<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:á:é:í:ó:ú@d|accent_trema:ö:ü@u|accent_ogonek@s|accent_double_aigu:ő:ű@k|€"/> <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:á:é:í:ó:ú@d|accent_trema:ö:ü@u|accent_ogonek@s|accent_double_aigu:ő:ű@k|€"/>
<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_is,extra_keys=ð|þ|æ|accent_trema:ö@o|accent_aigu:á:é:í:ó:ú:ý@d|accent_circonflexe|accent_ring|accent_grave"/> <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:ö@o|accent_aigu:á:é:í:ó:ú:ý@d"/>
<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:à:è:ì:ò:ù@f|accent_aigu:é:ó@d|accent_circonflexe:î@f|€|ə"/> <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:à:è:ì:ò:ù@f|accent_aigu:é:ó@d|accent_circonflexe:î@f|€|ə"/>
<subtype android:label="%s" android:languageTag="ka-GE" android:imeSubtypeLocale="ka_GE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=georgian_mes"/> <subtype android:label="%s" android:languageTag="ja" android:imeSubtypeLocale="ja_JP" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_jp"/>
<subtype android:label="%s" android:languageTag="kk" android:imeSubtypeLocale="kk_KZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_jcuken_kk"/>
<subtype android:label="%s" android:languageTag="kn" android:imeSubtypeLocale="kn_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=kannada,default_layout=kann_kannada"/>
<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_lt,extra_keys=accent_ogonek:ą:ę:į:ų@s|accent_caron:č:š:ž@f|accent_dot_above:ė@s|accent_macron:ū@o|€"/> <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:ą:ę:į:ų@s|accent_caron:č:š:ž@f|accent_dot_above:ė@s|accent_macron:ū@o|€"/>
<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:ā:ē:ī:ū@o|accent_caron:č:š:ž@f|accent_ogonek:ķ:ļ:ņ@s|accent_cedille:ģ@c|€"/> <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:ā:ē:ī:ū@o|accent_caron:č:š:ž@f|accent_ogonek:ķ:ļ:ņ@s|accent_cedille:ģ@c|€"/>
<subtype android:label="%s" android:languageTag="mk" android:imeSubtypeLocale="mk" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_lynyertdz_mk,extra_keys=ѕ|ѓ|ќ|ѝ|ѐ|љ|њ|џ|„|“|€"/>
<subtype android:label="%s" android:languageTag="mn" android:imeSubtypeLocale="mn_MN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_fcuzhen_mn,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="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="mt" android:imeSubtypeLocale="mt_MT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_mt,extra_keys=accent_grave:à:è:ì:ò:ù|accent_dot_above:ċ:ż:ġ|ħ"/>
<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_be,extra_keys=accent_grave:è@f|accent_aigu:á:é:í:ó:ú:ý:j́@d|accent_circonflexe:ê@f|accent_cedille:ç@c|accent_trema@u|€"/> <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:è@f|accent_aigu:á:é:í:ó:ú:ý:j́@d|accent_circonflexe:ê@f|accent_cedille:ç@c|accent_trema@u|€"/>
<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_us,extra_keys=€|æ@a|å@a|ø@o|accent_aigu:é:ó@d|accent_grave:è:ò:ù@f|accent_circonflexe:ê:ô@f"/> <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_us,extra_keys=€|æ@a|å@a|ø@o|accent_aigu:é:ó@d|accent_grave:è:ò:ù@f|accent_circonflexe:ê:ô@f"/>
<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:á:é:í:ó:ú@d|accent_cedille:ç@c|accent_circonflexe:â:ê:ô@f|accent_grave:à:ò@f|accent_tilde:ã:õ@n|€|ª|º"/> <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:á:é:í:ó:ú@d|accent_cedille:ç@c|accent_circonflexe:â:ê:ô@f|accent_grave:à:ò@f|accent_tilde:ã:õ@n|€|ª|º"/>
<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="si" android:imeSubtypeLocale="si_LK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=sinhala,default_layout=sinhala_phonetic,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:ě:ř:ž:š:č:ň:ď:ľ:ť@f|accent_ring:ů@s|accent_circonflexe:ô@f|accent_trema:ä:ü:ö@u|accent_aigu:á:é:í:ó:ú:ŕ:ś:ĺ:ý@d"/> <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:ě:ř:ž:š:č:ň:ď:ľ:ť@f|accent_ring:ů@s|accent_circonflexe:ô@f|accent_trema:ä:ü:ö@u|accent_aigu:á:é:í:ó:ú:ŕ:ś:ĺ:ý@d"/>
<subtype android:label="%s" android:languageTag="sq" android:imeSubtypeLocale="sq_AL" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_sq"/>
<subtype android:label="%s" android:languageTag="sr" android:imeSubtypeLocale="sr_" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_lynyertz_sr"/>
<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:á@d|accent_trema:ä:ö@o|accent_ring:å@s|€"/> <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:á@d|accent_trema:ä:ö@o|accent_ring:å@s|€"/>
<subtype android:label="%s" android:languageTag="ta" android:imeSubtypeLocale="ta_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=tamil,default_layout=tamil_default"/>
<subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_AZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_tly,extra_keys=á|ú|â|ê|ı|š|ž"/> <subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_AZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_tly,extra_keys=á|ú|â|ê|ı|š|ž"/>
<subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_IR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="default_layout=arab_hamvaj_tly"/> <subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_IR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="default_layout=arab_hamvaj_tly"/>
<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:ç:ş@c|accent_trema:ö:ü@u|accent_circonflexe:â:î:û@f|₺|ı|ğ"/> <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:ç:ş@c|accent_trema:ö:ü@u|accent_circonflexe:â:î:û@f|₺|ı|ğ"/>
<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="uz" android:imeSubtypeLocale="uz_UZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_uz,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>

View File

@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- See [number_row_no_symbols.xml] for the number row with no symbols. -->
<row height="0.75"> <row height="0.75">
<key key0="1" se="!"/> <key key0="1"/>
<key key0="2" se="@"/> <key key0="2"/>
<key key0="3" se="#"/> <key key0="3"/>
<key key0="4" se="$"/> <key key0="4"/>
<key key0="5" se="%"/> <key key0="5"/>
<key key0="6" sw="^"/> <key key0="6"/>
<key key0="7" sw="&amp;"/> <key key0="7"/>
<key key0="8" sw="*"/> <key key0="8"/>
<key key0="9" sw="("/> <key key0="9"/>
<key key0="0" sw=")"/> <key key0="0"/>
</row> </row>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<row height="0.75">
<key key0="1"/>
<key key0="2"/>
<key key0="3"/>
<key key0="4"/>
<key key0="5"/>
<key key0="6"/>
<key key0="7"/>
<key key0="8"/>
<key key0="9"/>
<key key0="0"/>
</row>

View File

@@ -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="(" key1="paste" key2="=" 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"/>

View File

@@ -8,7 +8,7 @@
</PreferenceCategory> </PreferenceCategory>
<juloo.keyboard2.prefs.ExtraKeysPreference android:title="@string/pref_extra_keys_internal"/> <juloo.keyboard2.prefs.ExtraKeysPreference android:title="@string/pref_extra_keys_internal"/>
</PreferenceScreen> </PreferenceScreen>
<ListPreference android:key="number_row" android:title="@string/pref_number_row_title" android:summary="%s" android:defaultValue="no_number_row" android:entries="@array/pref_show_number_row_entries" android:entryValues="@array/pref_show_number_row_values"/> <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="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>
@@ -25,7 +25,7 @@
<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"/>
<CheckBoxPreference android:key="vibrate_custom" android:title="@string/pref_vibrate_custom" android:defaultValue="false"/> <CheckBoxPreference android:key="vibrate_custom" android:title="@string/pref_vibrate_custom" android:defaultValue="false"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:dependency="vibrate_custom" android:key="vibrate_duration" android:title="@string/pref_vibrate_duration_title" android:summary="%sms" android:defaultValue="20" min="0" max="100"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:dependency="vibrate_custom" android:key="vibrate_duration" android:title="@string/pref_vibrate_duration_title" android:summary="%sms" android:defaultValue="20" min="0" max="100"/>
<ListPreference android:key="number_entry_layout" android:title="@string/pref_number_entry_title" android:summary="%s" android:defaultValue="pin" android:entries="@array/pref_number_entry_entries" android:entryValues="@array/pref_number_entry_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"/>
@@ -36,22 +36,16 @@
<PreferenceScreen android:title="@string/pref_margin_bottom_title"> <PreferenceScreen android:title="@string/pref_margin_bottom_title">
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_portrait" android:title="@string/pref_portrait" android:summary="%sdp" android:defaultValue="7" min="0" max="100"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_portrait" android:title="@string/pref_portrait" android:summary="%sdp" android:defaultValue="7" min="0" max="100"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_landscape" android:title="@string/pref_landscape" android:summary="%sdp" android:defaultValue="3" min="0" max="100"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_landscape" android:title="@string/pref_landscape" android:summary="%sdp" android:defaultValue="3" min="0" max="100"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_portrait_unfolded" android:title="@string/pref_portrait_unfolded" android:summary="%sdp" android:defaultValue="7" min="0" max="100"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="margin_bottom_landscape_unfolded" android:title="@string/pref_landscape_unfolded" android:summary="%sdp" android:defaultValue="3" min="0" max="100"/>
</PreferenceScreen> </PreferenceScreen>
<PreferenceScreen android:title="@string/pref_keyboard_height_title"> <PreferenceScreen android:title="@string/pref_keyboard_height_title">
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height" android:title="@string/pref_portrait" android:summary="%s%%" android:defaultValue="35" min="10" max="100"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height" android:title="@string/pref_portrait" android:summary="%s%%" android:defaultValue="35" min="10" max="50"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_landscape" android:title="@string/pref_landscape" android:summary="%s%%" android:defaultValue="50" min="20" max="65"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_landscape" android:title="@string/pref_landscape" android:summary="%s%%" android:defaultValue="50" min="20" max="65"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_unfolded" android:title="@string/pref_portrait_unfolded" android:summary="%s%%" android:defaultValue="35" min="10" max="50"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="keyboard_height_landscape_unfolded" android:title="@string/pref_landscape_unfolded" android:summary="%s%%" android:defaultValue="50" min="20" max="65"/>
</PreferenceScreen> </PreferenceScreen>
<PreferenceScreen android:title="@string/pref_horizontal_margin_title"> <PreferenceScreen android:title="@string/pref_horizontal_margin_title">
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_portrait" android:title="@string/pref_portrait" android:summary="%sdp" android:defaultValue="3" min="0" max="30"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_portrait" android:title="@string/pref_portrait" android:summary="%sdp" android:defaultValue="3" min="0" max="30"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_landscape" android:title="@string/pref_landscape" android:summary="%sdp" android:defaultValue="28" min="0" max="200"/> <juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_landscape" android:title="@string/pref_landscape" android:summary="%sdp" android:defaultValue="28" min="0" max="200"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_portrait_unfolded" android:title="@string/pref_portrait_unfolded" android:summary="%sdp" android:defaultValue="3" min="0" max="30"/>
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_landscape_unfolded" android:title="@string/pref_landscape_unfolded" android:summary="%sdp" android:defaultValue="28" min="0" max="200"/>
</PreferenceScreen> </PreferenceScreen>
<juloo.keyboard2.prefs.SlideBarPreference android:key="character_size" android:title="@string/pref_character_size_title" android:summary="@string/pref_character_size_summary" android:defaultValue="1.15" min="0.75" max="1.5"/> <juloo.keyboard2.prefs.SlideBarPreference android:key="character_size" android:title="@string/pref_character_size_title" android:summary="@string/pref_character_size_summary" android:defaultValue="1.0" min="0.75" max="1.5"/>
<juloo.keyboard2.prefs.SlideBarPreference android:key="key_vertical_margin" android:title="@string/pref_key_vertical_space" android:summary="%s%%" android:defaultValue="1.5" min="0" max="5"/> <juloo.keyboard2.prefs.SlideBarPreference android:key="key_vertical_margin" android:title="@string/pref_key_vertical_space" android:summary="%s%%" android:defaultValue="1.5" min="0" max="5"/>
<juloo.keyboard2.prefs.SlideBarPreference android:key="key_horizontal_margin" android:title="@string/pref_key_horizontal_space" android:summary="%s%%" android:defaultValue="2" min="0" max="5"/> <juloo.keyboard2.prefs.SlideBarPreference android:key="key_horizontal_margin" android:title="@string/pref_key_horizontal_space" android:summary="%s%%" android:defaultValue="2" min="0" max="5"/>
<CheckBoxPreference android:key="border_config" android:title="@string/pref_border_config_title" android:defaultValue="false"/> <CheckBoxPreference android:key="border_config" android:title="@string/pref_border_config_title" android:defaultValue="false"/>

View File

@@ -5,64 +5,29 @@
let let
jdk = pkgs.openjdk17; jdk = pkgs.openjdk17;
build_tools_version = "34.0.0"; build_tools_version = "33.0.1";
android = pkgs.androidenv.composeAndroidPackages { android = pkgs.androidenv.composeAndroidPackages {
buildToolsVersions = [ build_tools_version ]; buildToolsVersions = [ build_tools_version ];
platformVersions = [ "35" ]; platformVersions = [ "34" ];
abiVersions = [ "armeabi-v7a" ]; abiVersions = [ "armeabi-v7a" ];
inherit repoJson;
}; };
# Ensure we have the needed system images
repoJson = pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/NixOS/nixpkgs/ebc7402410a3ce2d25622137c190d4ab83945c10/pkgs/development/mobile/androidenv/repo.json";
hash = "sha256-4/0FMyxM+7d66qfhlY3A10RIe6j6VrW8DIilH2eQyzc=";
};
emulators = let
mk_emulator = { platformVersion, device ? "pixel_6", abiVersion ? "x86_64", systemImageType ? "default" }:
pkgs.androidenv.emulateApp rec {
name = "emulator_api${platformVersion}";
inherit platformVersion abiVersion systemImageType;
androidAvdFlags = "--device ${device}";
sdkExtraArgs = { inherit repoJson; };
};
# Allow to install several emulators in the same environment
link_emulator = version_name: args: {
name = "bin/emulate_android_${version_name}";
path = "${mk_emulator args}/bin/run-test-emulator";
};
in pkgs.linkFarm "emulator" [
(link_emulator "5" { platformVersion = "21"; })
# (link_emulator "14" { platformVersion = "34"; })
# There's no 'default' image for Android 15
(link_emulator "15" { platformVersion = "35"; systemImageType = "google_apis"; })
];
ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk"; ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk";
gradle = pkgs.gradle.override { java = jdk; };
# Without this option, aapt2 fails to run with a permissions error. # Without this option, aapt2 fails to run with a permissions error.
gradle_wrapped = pkgs.runCommandLocal "gradle-wrapped" { gradle_wrapped = pkgs.runCommandLocal "gradle-wrapped" {
nativeBuildInputs = with pkgs; [ makeBinaryWrapper ]; nativeBuildInputs = with pkgs; [ makeBinaryWrapper ];
} '' } ''
mkdir -p $out/bin mkdir -p $out/bin
ln -s ${gradle}/bin/gradle $out/bin/gradle ln -s ${pkgs.gradle}/bin/gradle $out/bin/gradle
wrapProgram $out/bin/gradle \ wrapProgram $out/bin/gradle \
--add-flags "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${build_tools_version}/aapt2" --add-flags "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${build_tools_version}/aapt2"
''; '';
in pkgs.mkShell { in pkgs.mkShell {
buildInputs = [ buildInputs =
pkgs.findutils [ pkgs.findutils pkgs.fontforge jdk android.androidsdk gradle_wrapped ];
pkgs.fontforge
jdk
android.androidsdk
gradle_wrapped
emulators
];
JAVA_HOME = jdk.home; JAVA_HOME = jdk.home;
inherit ANDROID_SDK_ROOT; inherit ANDROID_SDK_ROOT;
} }

View File

@@ -1,52 +1,17 @@
{ {
// latin
"a": "á", "a": "á",
"c": "ć", "c": "ć",
"e": "é", "e": "é",
"g": "ǵ",
"i": "í", "i": "í",
"k": "ḱ",
"l": "ĺ", "l": "ĺ",
"m": "ḿ", "ń": "ń",
"n": "ń",
"o": "ó", "o": "ó",
"p": "ṕ",
"r": "ŕ", "r": "ŕ",
"s": "ś", "s": "ś",
"u": "ú", "u": "ú",
"w": "ẃ",
"y": "ý", "y": "ý",
"z": "ź", "z": "ź",
// extended latin (multiple diacritics)
"â": "ấ",
"ă": "ắ",
"å": "ǻ",
"æ": "ǽ",
"ç": "ḉ",
"ê": "ế",
"ē": "ḗ",
"ï": "ḯ",
"ô": "ố",
"ơ": "ớ",
"õ": "ṍ",
"ō": "ṓ",
"ø": "ǿ",
"ṡ": "ṥ",
"ü": "ǘ", "ü": "ǘ",
"ư": "ứ",
"ũ": "ṹ",
// greek
"α": "ά",
"ε": "έ",
"η": "ή",
"ι": "ί",
"ο": "ό",
"υ": "ύ",
// cyrillic
"к": "ќ",
"г": "ѓ",
// combining character
"ą": "ą\u0301",
"j": "j\u0301", "j": "j\u0301",
"у": "у\u0301", "у": "у\u0301",
"е": "е\u0301", "е": "е\u0301",

View File

@@ -1,12 +1,8 @@
{ {
// latin
"2": "ƻ",
"b": "ƀ", "b": "ƀ",
"c": "ꞓ", "c": "ꞓ",
"d": "đ", "d": "đ",
"f": "",
"g": "ǥ", "g": "ǥ",
"h": "ħ",
"i": "ɨ", "i": "ɨ",
"j": "ɉ", "j": "ɉ",
"k": "ꝁ", "k": "ꝁ",
@@ -18,13 +14,5 @@
"t": "ŧ", "t": "ŧ",
"u": "ʉ", "u": "ʉ",
"y": "ɏ", "y": "ɏ",
"z": "ƶ", "z": "ƶ"
// extended latin
"ȷ": "ɟ",
// cyrillic
"о": "ө",
"ӧ": "ӫ",
"ү": "ұ",
"ь": "ҍ",
"х": "ӿ"
} }

View File

@@ -1,14 +1,9 @@
{ {
// latin
"a": "ǎ", "a": "ǎ",
"c": "č", "c": "č",
"d": "ď", "d": "ď",
"e": "ě", "e": "ě",
"g": "ǧ",
"h": "ȟ",
"i": "ǐ", "i": "ǐ",
"j": "ǰ", // no uppercase
"k": "ǩ",
"l": "ľ", "l": "ľ",
"n": "ň", "n": "ň",
"o": "ǒ", "o": "ǒ",
@@ -17,17 +12,5 @@
"t": "ť", "t": "ť",
"u": "ǔ", "u": "ǔ",
"z": "ž", "z": "ž",
// extended latin "ü": "ǚ"
"ṡ": "ṧ",
"ü": "ǚ",
"ʒ": "ǯ",
// combining character
"в": "в\u030C",
"г": "г\u030C",
"ғ": "ғ\u030C",
"д": "д\u030C",
"з": "з\u030C",
"р": "р\u030C",
"т": "т\u030C",
"х": "х\u030C"
} }

View File

@@ -1,5 +1,4 @@
{ {
// latin
"c": "ç", "c": "ç",
"d": "ḑ", "d": "ḑ",
"e": "ȩ", "e": "ȩ",
@@ -10,8 +9,5 @@
"n": "ņ", "n": "ņ",
"r": "ŗ", "r": "ŗ",
"s": "ş", "s": "ş",
"t": "ţ", "t": "ţ"
// extended latin
"ć": "ḉ",
"ĕ": "ḝ"
} }

View File

@@ -1,7 +1,4 @@
{ {
"+": "⨣",
"≈": "⩯",
// latin
"a": "â", "a": "â",
"c": "ĉ", "c": "ĉ",
"e": "ê", "e": "ê",
@@ -12,27 +9,7 @@
"o": "ô", "o": "ô",
"ŝ": "ŝ", "ŝ": "ŝ",
"u": "û", "u": "û",
"w": "ŵ",
"x": "x̂",
"y": "ŷ",
"z": "ẑ", "z": "ẑ",
// extended latin
"á": "ấ",
"à": "ầ",
"ã": "ẫ",
"ạ": "ậ",
"ả": "ẩ",
"é": "ế",
"è": "ề",
"ẽ": "ễ",
"ẹ": "ệ",
"ẻ": "ể",
"ó": "ố",
"ò": "ồ",
"ơ": "ổ",
"õ": "ỗ",
"ọ": "ộ",
// combining characters
"а": "а\u0302", "а": "а\u0302",
"е": "е\u0302", "е": "е\u0302",
"и": "и\u0302", "и": "и\u0302",

View File

@@ -17,40 +17,5 @@
"w": "ẇ", "w": "ẇ",
"x": "ẋ", "x": "ẋ",
"y": "ẏ", "y": "ẏ",
"z": "ż", "z": "ż"
// remove dot since i and j already have one
"i": "ı",
"j": "ȷ",
// extended latin
"ā": "ǡ",
"ō": "ȱ",
"ś": "ṥ",
"ṣ": "ṩ",
"š": "ṧ",
"ſ": "ẛ",
// combining character
"k": "k\u0307",
"l": "l\u0307",
"q": "q\u0307",
"u": "u\u0307",
"v": "v\u0307",
"0": "0\u0307",
"1": "1\u0307",
"2": "2\u0307",
"3": "3\u0307",
"4": "4\u0307",
"5": "5\u0307",
"6": "6\u0307",
"7": "7\u0307",
"8": "8\u0307",
"9": "9\u0307",
// math
"∈": "⋵",
"": "⨰",
"∧": "⩑",
"": "⩒",
"≡": "⩧",
"~": "⩪",
"⊆": "⫃",
"⊇": "⫄"
} }

View File

@@ -1,34 +1,14 @@
{ {
// latin
"a": "ạ", "a": "ạ",
"b": "ḅ",
"d": "ḍ",
"e": "ẹ",
"h": "ḥ",
"i": "ị",
"k": "ḳ",
"l": "ḷ",
"m": "ṃ",
"n": "ṇ",
"o": "ọ",
"r": "ṛ",
"s": "ṣ",
"t": "ṭ",
"u": "ụ",
"v": "ṿ",
"w": "ẉ",
"y": "ỵ",
"z": "ẓ",
// extended latin
"ă": "ặ", "ă": "ặ",
"â": "ậ", "â": "ậ",
"e": "ẹ",
"ê": "ệ", "ê": "ệ",
"i": "ị",
"o": "ọ",
"ô": "ộ", "ô": "ộ",
"ơ": "ợ", "ơ": "ợ",
"": "", "u": "",
"ư": "ự", "ư": "ự",
// math "y": "ỵ"
"-": "⨪",
"+": "⨥",
"=": "⩦"
} }

View File

@@ -1,11 +1,7 @@
{ {
" ": "˝",
// latin
"o": "ő", "o": "ő",
"u": "ű", "u": "ű",
// cyrillic " ": "˝",
"у": "ӳ",
// combining character
"a": "a\u030b", "a": "a\u030b",
"e": "e\u030b", "e": "e\u030b",
"i": "i\u030b", "i": "i\u030b",

View File

@@ -1,17 +0,0 @@
{
// latin
"a": "ȁ",
"e": "ȅ",
"i": "ȉ",
"o": "ȍ",
"r": "ȑ",
"u": "ȕ",
//cyrillic
"ѵ": "ѷ",
"а": "а\u030f",
"е": "е\u030f",
"и": "и\u030f",
"о": "о\u030f",
"р": "р\u030f",
"у": "у\u030f"
}

View File

@@ -1,38 +1,8 @@
{ {
// latin
"a": "à", "a": "à",
"e": "è", "e": "è",
"i": "ì", "i": "ì",
"n": "ǹ",
"o": "ò", "o": "ò",
"u": "ù", "u": "ù",
"w": "", "ü": "ǜ"
"y": "ỳ",
// extended latin
"â": "ầ",
"ă": "ằ",
"ê": "ề",
"ē": "ḕ",
"ơ": "ờ",
"ô": "ồ",
"ō": "ṑ",
"ü": "ǜ",
"ư": "ừ",
// greek (technically not a grave, but a varia)
"α": "ὰ",
"ε": "ὲ",
"η": "ὴ",
"ι": "ὶ",
"ο": "ὸ",
"υ": "ὺ",
"ω": "ὼ",
// there is more like ἒ, ᾣ, etc
// cyrillic
"е": "ѐ",
"и": "ѝ",
// combining character
"ɔ": "ɔ\u0300",
"s": "s\u0300",
"ʌ": "ʌ\u0300",
"z": "z\u0300"
} }

View File

@@ -1,35 +1,8 @@
{ {
// latin
"a": "ā", "a": "ā",
"e": "ē", "e": "ē",
"g": "ḡ",
"i": "ī", "i": "ī",
"o": "ō", "o": "ō",
"u": "ū", "u": "ū",
"y": "ȳ", "ü": "ǖ"
// extended latin
"æ": "ǣ",
"ä": "ǟ",
"ȧ": "ǡ",
"è": "ḕ",
"é": "ḗ",
"ḷ": "ḹ",
"ṛ": "ṝ",
"ö": "ȫ",
"ȯ": "ȱ",
"ǫ": "ǭ",
"õ": "ȭ",
"ò": "ṑ",
"ó": "ṓ",
"ü": "ǖ", // there is also ṻ
// cyrillic
"и": "ӣ",
"у": "ӯ",
// greek
"α": "ᾱ",
"ι": "ῑ",
"υ": "ῡ",
// combining characters
"l": "l\u0304",
"r": "r\u0304"
} }

View File

@@ -1,10 +1,10 @@
{ {
// latin
"a": "ą", "a": "ą",
"e": "ę", "e": "ę",
"i": "į", "i": "į",
"k": "ķ",
"l": "ļ",
"n": "ņ",
"o": "ǫ", "o": "ǫ",
"u": "ų", "u": "ų"
// extended latin
"ō": "ǭ"
} }

View File

@@ -1,11 +1,4 @@
{ {
// latin
"a": "å", "a": "å",
"u": "ů", "u": "ů"
"w": "ẘ", // no uppercase
"y": "ẙ", // no uppercase
// extended latin
"á": "ǻ",
// extra
"~": "⸛"
} }

View File

@@ -8,11 +8,7 @@
"l": "ł", "l": "ł",
"n": "ꞥ", "n": "ꞥ",
"o": "ø", "o": "ø",
"ó": "ǿ",
"ɔ": "ꬿ",
"r": "ꞧ", "r": "ꞧ",
"s": "ꞩ", "s": "ꞩ",
"t": "ⱦ", "t": "ⱦ"
"u": "ꞹ",
"v": "ꝟ"
} }

View File

@@ -1,6 +1,4 @@
{ {
// arabic numbers
"0": "₀",
"1": "₁", "1": "₁",
"2": "₂", "2": "₂",
"3": "₃", "3": "₃",
@@ -10,13 +8,12 @@
"7": "₇", "7": "₇",
"8": "₈", "8": "₈",
"9": "₉", "9": "₉",
// math operators "0": "₀",
"+": "₊", "+": "₊",
"-": "₋", "-": "₋",
"=": "₌", "=": "₌",
"(": "₍", "(": "₍",
")": "₎", ")": "₎",
// latin
"a": "ₐ", "a": "ₐ",
"e": "ₑ", "e": "ₑ",
"h": "ₕ", "h": "ₕ",
@@ -33,13 +30,5 @@
"t": "ₜ", "t": "ₜ",
"u": "ᵤ", "u": "ᵤ",
"v": "ᵥ", "v": "ᵥ",
"x": "ₓ", "x": "ₓ"
// extended latin
"ə": "ₔ",
// greek
"β": "ᵦ",
"γ": "ᵧ",
"ρ": "ᵨ",
"φ": "ᵩ",
"χ": "ᵪ"
} }

View File

@@ -1,6 +1,4 @@
{ {
// numbers
"0": "⁰",
"1": "¹", "1": "¹",
"2": "²", "2": "²",
"3": "³", "3": "³",
@@ -10,18 +8,12 @@
"7": "⁷", "7": "⁷",
"8": "⁸", "8": "⁸",
"9": "⁹", "9": "⁹",
// math operators "0": "⁰",
"+": "⁺", "+": "⁺",
"-": "⁻", "-": "⁻",
"=": "⁼", "=": "⁼",
"(": "⁽", "(": "⁽",
")": "⁾", ")": "⁾",
// latin
"n": "ⁿ",
// since there are no more "superscript" characters,
// we substitute with "modifier letter small"s which looks the same
// latin
"a": "ᵃ", "a": "ᵃ",
"b": "ᵇ", "b": "ᵇ",
"c": "ᶜ", "c": "ᶜ",
@@ -34,11 +26,10 @@
"j": "ʲ", "j": "ʲ",
"k": "ᵏ", "k": "ᵏ",
"l": "ˡ", "l": "ˡ",
// see above for n
"m": "ᵐ", "m": "ᵐ",
"n": "ⁿ",
"o": "ᵒ", "o": "ᵒ",
"p": "ᵖ", "p": "ᵖ",
"q": "ꟴ", // there is no proper lowercase superscript q
"r": "ʳ", "r": "ʳ",
"s": "ˢ", "s": "ˢ",
"t": "ᵗ", "t": "ᵗ",
@@ -47,47 +38,5 @@
"w": "ʷ", "w": "ʷ",
"x": "ˣ", "x": "ˣ",
"y": "ʸ", "y": "ʸ",
"z": "ᶻ", "z": "ᶻ"
// extended latin
"ɐ": "ᵄ",
"ᴂ": "ᵆ",
"ɕ": "ᶝ",
"ə": "ᵊ",
"ɛ": "ᵋ",
"ɜ": "ᶟ", // turned open e, ↓ not the same
"ᴈ": "ᵌ", // reversed open e
"ɥ": "ᶣ",
"ɦ": "ʱ",
"ᴉ": "ᵎ",
"ɨ": "ᶤ",
"ɟ": "ᶡ",
"ɱ": "ᶬ",
"ɯ": "ᵚ",
"ɰ": "ᶭ",
"ŋ": "ᵑ",
"ᴝ": "ᵙ",
"ɵ": "ᶱ",
"œ": "ꟹ",
"ɔ": "ᵓ",
"ɹ": "ʴ",
"ɻ": "ʵ",
"ʁ": "ʶ",
"ʂ": "ᶳ",
"ʉ": "ᶶ",
"ʃ": "ᶴ",
"ʒ": "ᶾ",
"ʍ": "ꭩ",
// greek
"ɒ": "ᶛ",
"β": "ᵝ",
"ɣ": "ˠ",
"δ": "ᵟ",
"φ": "ᵠ",
"χ": "ᵡ",
"ι": "ᶥ",
"ʊ": "ᶷ",
"ʌ": "ᶺ",
"θ": "ᶿ",
// cyrillic
"ө": "ᶱ"
} }

View File

@@ -1,21 +1,13 @@
{ {
// latin
"a": "ã", "a": "ã",
"e": "ẽ", "e": "ẽ",
"i": "ĩ", "i": "ĩ",
"n": "ñ", "n": "ñ",
"o": "õ", "o": "õ",
"u": "ũ", "u": "ũ",
"v": "ṽ",
"y": "ỹ",
// extended latin
"ă": "ẵ", "ă": "ẵ",
"â": "ẫ", "â": "ẫ",
"ê": "ễ", "ê": "ễ",
"ơ": "ỡ", "ơ": "ỡ",
"ō": "ȭ", "ư": ""
"ó": "ṍ",
"ö": "ṏ",
"ư": "ữ",
"ú": "ṹ"
} }

View File

@@ -1,54 +1,8 @@
{ {
// fun
"~": "⍨",
"*": "⍣",
"∇": "⍢",
"°": "⍤",
// latin
"a": "ä", "a": "ä",
"e": "ë", "e": "ë",
"h": "ḧ",
"i": "ï", "i": "ï",
"o": "ö", "o": "ö",
"t": "ẗ",
"u": "ü", "u": "ü",
"w": "", "y": "ÿ"
"x": "ẍ",
"y": "ÿ",
// extended latin
"ā": "ǟ",
"ō": "ȫ",
"õ": "ṏ",
"í": "ḯ",
"ū": "ǖ", // there is also ṻ
"ú": "ǘ",
"ù": "ǜ",
"ǔ": "ǚ",
// greek
"ι": "ϊ",
"υ": "ϋ",
"ὺ": "ῢ",
"ύ": "ΰ",
"ῦ": "ῧ",
"ϒ": "ϔ",
// cyrillic
"а": "ӓ",
"ә": "ӛ",
"ж": "ӝ",
"з": "ӟ",
"и": "ӥ",
"о": "ӧ",
"ө": "ӫ",
"э": "ӭ",
"у": "ӱ",
"ч": "ӵ",
"ы": "ӹ",
// combining character
"c": "c\u0308",
"j": "j\u0308",
"k": "k\u0308",
"l": "l\u0308",
"m": "m\u0308",
"n": "n\u0308",
"s": "s\u0308"
} }

View File

@@ -1,4 +1,4 @@
import textwrap, sys, re, string, json, os, string import textwrap, sys, re, string, json, os
from array import array from array import array
# Compile compose sequences from Xorg's format or from JSON files into an # Compile compose sequences from Xorg's format or from JSON files into an
@@ -21,20 +21,6 @@ def parse_keysymdef_h(fname):
yield (m.group(1), chr(int(m.group(2), 16))) yield (m.group(1), chr(int(m.group(2), 16)))
dropped_sequences = 0 dropped_sequences = 0
warning_count = 0
# [s] is a list of strings
def seq_to_str(s, result=None):
msg = "+".join(s)
return msg if result is None else msg + " = " + result
# Print a warning. If [seq] is passed, it is prepended to the message.
def warn(msg, seq=None, result=None):
global warning_count
if seq is not None:
msg = f"Sequence {seq_to_str(seq, result=result)} {msg}"
print(f"Warning: {msg}", file=sys.stderr)
warning_count += 1
# Parse XKB's Compose.pre files # Parse XKB's Compose.pre files
def parse_sequences_file_xkb(fname, xkb_char_extra_names): def parse_sequences_file_xkb(fname, xkb_char_extra_names):
@@ -104,27 +90,11 @@ def parse_sequences_file_xkb(fname, xkb_char_extra_names):
seqs.append(s) seqs.append(s)
return seqs return seqs
# Basic support for comments in json files. Reads a file
def strip_cstyle_comments(inp):
def strip_line(line):
i = line.find("//")
return line[:i] + "\n" if i >= 0 else line
return "".join(map(strip_line, inp))
# Parse from a json file containing a dictionary sequence → result string. # Parse from a json file containing a dictionary sequence → result string.
def parse_sequences_file_json(fname): def parse_sequences_file_json(fname):
def tree_to_seqs(tree, prefix):
for c, r in tree.items():
if isinstance(r, str):
yield prefix + [c], r
else:
yield from tree_to_seqs(r, prefix + [c])
try:
with open(fname, "r") as inp: with open(fname, "r") as inp:
tree = json.loads(strip_cstyle_comments(inp)) seqs = json.load(inp)
return list(tree_to_seqs(tree, [])) return list(seqs.items())
except Exception as e:
warn("Failed parsing '%s': %s" % (fname, str(e)))
# Format of the sequences file is determined by its extension # Format of the sequences file is determined by its extension
def parse_sequences_file(fname, xkb_char_extra_names={}): def parse_sequences_file(fname, xkb_char_extra_names={}):
@@ -153,40 +123,31 @@ def parse_sequences_dir(dname):
# Turn a list of sequences into a trie. # Turn a list of sequences into a trie.
def add_sequences_to_trie(seqs, trie): def add_sequences_to_trie(seqs, trie):
global dropped_sequences def add_seq_to_trie(t_, seq, result):
def add_seq_to_trie(seq, result):
t_ = trie t_ = trie
for c in seq[:-1]:
t_ = t_.setdefault(c, {})
if isinstance(t_, str):
return False
c = seq[-1]
if c in t_:
return False
t_[c] = result
return True
def existing_sequence_to_str(seq): # Used in error message
i = 0 i = 0
t_ = trie while i < len(seq) - 1:
while i < len(seq): c = seq[i]
if seq[i] not in t_: break # No collision ? if c not in t_:
t_ = t_[seq[i]] t_[c] = {}
i += 1 if isinstance(t_[c], str):
if isinstance(t_, str): break global dropped_sequences
return "".join(seq[:i]) + " = " + str(t_)
for seq, result in seqs:
if not add_seq_to_trie(seq, result):
dropped_sequences += 1 dropped_sequences += 1
warn("Sequence collide: '%s' and '%s = %s'" % ( print("Sequence collide: '%s = %s' '%s = %s'" % (
existing_sequence_to_str(seq), seq[:i+1], t_[c], seq, result),
"".join(seq), result)) file=sys.stderr)
return
t_ = t_[c]
i += 1
c = seq[i]
t_[c] = result
for seq, result in seqs:
add_seq_to_trie(trie, seq, result)
# Compile the trie into a state machine. # Compile the trie into a state machine.
def make_automata(tries): def make_automata(tries):
previous_leafs = {} # Deduplicate leafs
states = [] states = []
def add_tree(t): def add_tree(t):
this_node_index = len(states)
# Index and size of the new node # Index and size of the new node
i = len(states) i = len(states)
s = len(t.keys()) s = len(t.keys())
@@ -198,34 +159,30 @@ def make_automata(tries):
states.append((None, None)) states.append((None, None))
# Add nested nodes and fill the current node # Add nested nodes and fill the current node
for c in sorted(t.keys()): for c in sorted(t.keys()):
states[i] = (c, add_node(t[c])) node_i = len(states)
add_node(t[c])
states[i] = (c, node_i)
i += 1 i += 1
return this_node_index
def add_leaf(c): def add_leaf(c):
if c in previous_leafs:
return previous_leafs[c]
this_node_index = len(states)
previous_leafs[c] = this_node_index
# There are two encoding for leafs: character final state for 15-bit # There are two encoding for leafs: character final state for 15-bit
# characters and string final state for the rest. # characters and string final state for the rest.
if len(c) > 1 or ord(c[0]) > 32767: # String final state if len(c) > 1 or ord(c[0]) > 32767: # String final state
# A ':' can be added to the result of a sequence to force a string
# final state. For example, to go through KeyValue lookup.
if c.startswith(":"): c = c[1:]
javachars = array('H', c.encode("UTF-16-LE")) javachars = array('H', c.encode("UTF-16-LE"))
states.append((-1, len(javachars) + 1)) states.append((-1, len(javachars) + 1))
for c in javachars: for c in javachars:
states.append((c, 0)) states.append((c, 0))
else: # Character final state else: # Character final state
states.append((c, 1)) states.append((c, 1))
return this_node_index
def add_node(n): def add_node(n):
if type(n) == str: if type(n) == str:
return add_leaf(n) add_leaf(n)
else: else:
return add_tree(n) add_tree(n)
states.append((1, 1)) # Add an empty state at the beginning. states.append((1, 1)) # Add an empty state at the beginning.
entry_states = { n: add_tree(root) for n, root in tries.items() } entry_states = {}
for tname, tree_root in tries.items():
entry_states[tname] = len(states)
add_tree(tree_root)
return entry_states, states return entry_states, states
# Debug # Debug
@@ -236,32 +193,6 @@ def print_automata(automata):
print("%3d %8s %d" % (i, s, e), file=sys.stderr) print("%3d %8s %d" % (i, s, e), file=sys.stderr)
i += 1 i += 1
# Report warnings about the compose sequences
def check_for_warnings(tries):
def get(seq):
t = tries
for c in seq:
if c not in t:
return None
t = t[c]
return t if type(t) == str else None
# Check that compose+Upper+Upper have an equivalent compose+Upper+Lower or compose+Lower+Lower
for c1 in string.ascii_uppercase:
for c2 in string.ascii_uppercase:
seq = [c1, c2]
seq_l = [c1, c2.lower()]
seq_ll = [c1.lower(), c2.lower()]
r = get(seq)
r_l = get(seq_l)
r_ll = get(seq_ll)
if r is not None:
ll_warning = f" (but {seq_to_str(seq_ll)} = {r_ll} exists)" if r_ll is not None else ""
if r_l is None:
if r != r_ll:
warn(f"has no lower case equivalent {seq_to_str(seq_l)}{ll_warning}", seq=seq, result=r)
elif r != r_l:
warn(f"is not the same as {seq_to_str(seq_l)} = {r_l}{ll_warning}", seq=seq, result=r)
def batched(ar, n): def batched(ar, n):
i = 0 i = 0
while i + n < len(ar): while i + n < len(ar):
@@ -330,10 +261,7 @@ for fname in sorted(sys.argv[1:]):
sequences = parse_sequences_file(fname) sequences = parse_sequences_file(fname)
add_sequences_to_trie(sequences, tries.setdefault(tname, {})) add_sequences_to_trie(sequences, tries.setdefault(tname, {}))
total_sequences += len(sequences) total_sequences += len(sequences)
check_for_warnings(tries["compose"])
entry_states, automata = make_automata(tries) entry_states, automata = make_automata(tries)
gen_java(entry_states, automata) gen_java(entry_states, automata)
print("Compiled %d sequences into %d states. Dropped %d sequences." % (total_sequences, len(automata), dropped_sequences), file=sys.stderr)
print("Compiled %d sequences into %d states. Dropped %d sequences. Generated %d warnings." % (total_sequences, len(automata), dropped_sequences, warning_count), file=sys.stderr)
# print_automata(automata) # print_automata(automata)

View File

@@ -1,149 +0,0 @@
{
"ا": {
"ا": "combining_alef_above",
"ع": "أ",
"و": "ۉ",
"ي": "ؽ",
"ی": "ؽ",
"۷": "combining_alef_below",
"٧": "combining_alef_below"
},
"ت": {
"د": "ط",
"ر": "ڑ",
"ش": "ث",
"ن": "ٹ"
},
"ج": {
"ش": "چ"
},
"ح": {
"ح": "combining_sukun"
},
"د": {
"ت": "ڈ",
"ز": "ذ",
"ت": "ڑ",
"۷": "ڕ"
},
"س": {
"ش": "ص"
},
"ش": {
"ت": "ث"
},
"ع": {
"ا": "إ",
"ه": "ۀ",
"و": "ؤ",
"ي": "ئ",
"ی": "ئ",
"۷": "combining_hamza_below",
"۸": "combining_hamza_above",
"٧": "combining_hamza_below",
"٨": "combining_hamza_above"
},
"غ": {
"ك": "گ",
"ک": "گ"
},
"ف": {
"و": "ڡ"
},
"ق": {
"و": "ۊ"
},
"ل": {
"ل": "combining_shaddah",
"۷": "ڵ",
"٧": "ڵ"
},
"ن": {
"ت": "ٹ",
"ه": "combining_fathatan",
"و": "combining_dammatan",
"ی": "combining_kasratan",
"ي": "combining_kasratan"
},
"ه": {
" ": "ە",
"ت": "ة",
"ع": "ۀ",
"ن": "combining_fathatan",
"ه": "combining_fatha",
"و": "ۆ",
"ي": "ێ",
"ی": "ێ"
},
"و": {
"ث": "ۋ",
"ع": "ؤ",
"ف": "ڡ",
"ن": "combining_dammatan",
"و": "combining_dammah",
"۷": "ۆ",
"۸": "ۉ",
"۸": "ۉ",
"٧": "ۆ",
"٨": "ۉ",
"٨": "ۉ"
},
"ي": {
" ": "ے",
"ا": "ى",
"ع": "ئ",
"ي": "combining_kasra",
"۷": "ێ",
"۸": "ؽ",
"ن": "combining_kasratan",
"٧": "ێ",
"٨": "ؽ"
},
"ی": {
" ": "ے",
"ا": "ى",
"ع": "ئ",
"ن": "combining_kasratan",
"ی": "combining_kasra",
"۷": "ێ",
"۸": "ؽ",
"٧": "ێ",
"٨": "ؽ"
},
"۷": {
"ا": "combining_alef_below",
"ر": "ڕ",
"ع": "combining_hamza_below",
"ل": "ڵ",
"و": "ۆ",
"ي": "ێ",
"ی": "ێ",
"۷": "combining_arabic_v"
},
"۸": {
"ع": "combining_hamza_above",
"و": "ۉ",
"و": "ۉ",
"ي": "ؽ",
"ی": "ؽ",
"۸": "combining_arabic_inverted_v"
},
"٧": {
"ا": "combining_alef_below",
"ر": "ڕ",
"ع": "combining_hamza_below",
"ل": "ڵ",
"و": "ۆ",
"ي": "ێ",
"٧": "combining_arabic_v",
"ی": "ێ"
},
"٨": {
"ع": "combining_hamza_above",
"و": "ۉ",
"و": "ۉ",
"ي": "ؽ",
"٨": "combining_arabic_inverted_v",
"ی": "ؽ"
}
}

View File

@@ -1,165 +0,0 @@
{
",": {
"г": "ӻ",
"к": "ӄ",
"л": "ԓ",
"н": "ӈ",
"х": "ӽ",
"ѧ": "ӊ"
},
".": {
"г": "ӷ",
"ж": "җ",
"й": "ҋ",
"к": "қ",
"л": "ԯ",
"м": "ӎ",
"н": "ӊ",
"х": "ҳ",
"ч": "ҷ",
"і": "ї"
},
"а": {
"е": "ѣ",
"у": "ѡ",
"ч": "combining_aigu",
"ы": "ѣ",
"ь": "ꙙ",
"ꙋ": "ꙍ",
"ꙑ": "ѣ"
},
"б": {
"ч": "combining_slavonic_psili"
},
"г": {
",": "ӻ",
".": "ӷ",
"й": "ғ",
"к": "ґ",
"х": "ҁ",
"ј": "ғ"
},
"д": {
"е": "ꙉ",
"ж": "џ",
"з": "ꙃ",
"й": "ꙉ",
"ј": "ꙉ",
"ѥ": "ђ"
},
"е": {
"ч": "combining_trema"
},
"ж": {
".": "җ"
},
"з": {
"ф": "ҙ"
},
"и": {
"и": "ӣ",
"у": "ѵ"
},
"й": {
".": "ҋ",
"ч": "combining_breve"
},
"к": {
",": "ӄ",
".": "қ",
"г": "ґ",
"с": "ѯ",
"х": "ҁ",
"ш": "ѯ"
},
"л": {
",": "ԓ",
".": "ԯ",
"ь": "љ"
},
"м": {
".": "ӎ"
},
"н": {
",": "ӈ",
"·": "ԩ",
"ч": "combining_titlo",
"ь": "њ"
},
"о": {
"т": "ѿ",
"у": "ѹ",
"ч": "combining_inverted_breve"
},
"п": {
"с": "ѱ"
},
"т": {
"й": "ћ",
"ф": "ѳ",
"ј": "ћ"
},
"у": {
"и": "ѵ",
"й": "ў",
"у": "ӯ",
"ч": "combining_pokrytie",
"і": "ѵ",
"ј": "ў"
},
"х": {
",": "ӽ",
".": "ҳ",
"ч": "combining_slavonic_dasia"
},
"ч": {
".": "ҷ",
"а": "combining_aigu",
"б": "combining_slavonic_psili",
"е": "combining_trema",
"й": "combining_breve",
"н": "combining_titlo",
"о": "combining_inverted_breve",
"у": "combining_pokrytie",
"х": "combining_slavonic_dasia",
"ч": "combining_payerok",
"ч": "combining_payerok",
"ъ": "combining_vertical_tilde",
"ю": "combining_grave",
"ј": "combining_breve",
"ѧ": "combining_vzmet"
},
"ш": {
"т": "щ"
},
"ъ": {
"ч": "combining_vertical_tilde"
},
"ю": {
"а": "ꙓ",
"е": "ё",
"м": "ѭ",
"н": "ѩ",
"ч": "combining_grave"
},
"я": {
"ь": "ꙝ"
},
"і": {
"\"": "ї",
".": "ї",
"у": "ѵ",
"і": "ӣ"
},
"ј": {
"а": "ꙗ",
"ч": "combining_breve",
"ѣ": "ꙝ"
},
"ѡ": {
"т": "ѿ"
},
"ѧ": {
"ч": "combining_vzmet"
}
}

View File

@@ -0,0 +1,44 @@
{
"う": { "゛": "ゔ" },
"か": { "゛": "が" },
"き": { "゛": "ぎ" },
"く": { "゛": "ぐ" },
"け": { "゛": "げ" },
"こ": { "゛": "ご" },
"さ": { "゛": "ざ" },
"し": { "゛": "じ" },
"す": { "゛": "ず" },
"せ": { "゛": "ぜ" },
"そ": { "゛": "ぞ" },
"た": { "゛": "だ" },
"ち": { "゛": "ぢ" },
"つ": { "゛": "づ" },
"て": { "゛": "で" },
"と": { "゛": "ど" },
"は": { "゛": "ば", "゜": "ぱ" },
"ひ": { "゛": "び", "゜": "ぴ" },
"ふ": { "゛": "ぶ", "゜": "ぷ" },
"へ": { "゛": "べ", "゜": "ぺ" },
"ほ": { "゛": "ぼ", "゜": "ぽ" },
"ウ": { "゛": "ヴ" },
"カ": { "゛": "ガ" },
"キ": { "゛": "ギ" },
"ク": { "゛": "グ" },
"ケ": { "゛": "ゲ" },
"コ": { "゛": "ゴ" },
"サ": { "゛": "ザ" },
"シ": { "゛": "ジ" },
"ス": { "゛": "ズ" },
"セ": { "゛": "ゼ" },
"ソ": { "゛": "ゾ" },
"タ": { "゛": "ダ" },
"チ": { "゛": "ヂ" },
"ツ": { "゛": "ヅ" },
"テ": { "゛": "デ" },
"ト": { "゛": "ド" },
"ハ": { "゛": "バ", "゜": "パ" },
"ヒ": { "゛": "ビ", "゜": "ピ" },
"フ": { "゛": "ブ", "゜": "プ" },
"ヘ": { "゛": "ベ", "゜": "ペ" },
"ホ": { "゛": "ボ", "゜": "ポ" }
}

View File

@@ -4016,7 +4016,7 @@ XCOMM Mathematical Operators
<Multi_key> <U2225> <slash> : "∦" U2226 # NOT PARALLEL TO <Multi_key> <U2225> <slash> : "∦" U2226 # NOT PARALLEL TO
<Multi_key> <U223C> <slash> : "≁" U2241 # NOT TILDE <Multi_key> <U223C> <slash> : "≁" U2241 # NOT TILDE
<Multi_key> <U2243> <slash> : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO <Multi_key> <U2243> <slash> : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO
XCOMM <Multi_key> <approximate> <slash> : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO <Multi_key> <approximate> <slash> : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
<Multi_key> <U2248> <slash> : "≉" U2249 # NOT ALMOST EQUAL TO <Multi_key> <U2248> <slash> : "≉" U2249 # NOT ALMOST EQUAL TO
<Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO <Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO
<Multi_key> <equal> <slash> : "≠" U2260 # NOT EQUAL TO <Multi_key> <equal> <slash> : "≠" U2260 # NOT EQUAL TO

View File

@@ -3,60 +3,5 @@
"s": "Š", "s": "Š",
"c": "Č", "c": "Č",
"z": "Ž" "z": "Ž"
},
"\\": {
"n": "\\n",
"t": "\\t"
},
"n": {
"g": {
"~": "n͠g"
}
},
"N": {
"g": {
"~": "N͠g"
},
"g": "Ŋ",
"n": ""
},
"g": {
"~": "g̃",
"u": "Ğ"
},
"A": {
"a": "Å",
"e": "Æ",
"t": "@"
},
"a": {
"E": "Æ"
},
"O": {
"e": "Œ"
},
"S": {
"s": "ẞ"
},
"I": {
"j": "IJ"
},
"D": {
"h": "Ð"
},
"E": {
"e": "Ə"
},
"Q": {
"q": ""
},
"R": {
"r": ""
},
"T": {
"h": "Þ"
},
"Z": {
"z": ""
} }
} }

44
srcs/compose/dakuten.json Normal file
View File

@@ -0,0 +1,44 @@
{
"う": "ゔ",
"か": "が",
"き": "ぎ",
"く": "ぐ",
"け": "げ",
"こ": "ご",
"さ": "ざ",
"し": "じ",
"す": "ず",
"せ": "ぜ",
"そ": "ぞ",
"た": "だ",
"ち": "ぢ",
"つ": "づ",
"て": "で",
"と": "ど",
"は": "ば",
"ひ": "び",
"ふ": "ぶ",
"へ": "べ",
"ほ": "ぼ",
"ウ": "ヴ",
"カ": "ガ",
"キ": "ギ",
"ク": "グ",
"ケ": "ゲ",
"コ": "ゴ",
"サ": "ザ",
"シ": "ジ",
"ス": "ズ",
"セ": "ゼ",
"ソ": "ゾ",
"タ": "ダ",
"チ": "ヂ",
"ツ": "ヅ",
"テ": "デ",
"ト": "ド",
"ハ": "バ",
"ヒ": "ビ",
"フ": "ブ",
"ヘ": "ベ",
"ホ": "ボ"
}

View File

@@ -1,268 +0,0 @@
{
"1": "f1",
"2": "f2",
"3": "f3",
"4": "f4",
"5": "f5",
"6": "f6",
"7": "f7",
"8": "f8",
"9": "f9",
"0": "f10",
"<": "«",
">": "»",
"{": "",
"}": "",
"[": "",
"]": "",
"(": "“",
")": "”",
"'": "",
"\"": "„",
"-": "",
"_": "—",
"^": "¬",
"%": "‰",
"=": "≈",
"u": "µ",
"a": "æ",
"o": "œ",
"*": "°",
".": "…",
",": "·",
"!": "¡",
"?": "¿",
"|": "¦",
"§": "¶",
"†": "‡",
"×": "∙",
" ": "nbsp",
// arrows
"↖": "⇖",
"↑": "⇑",
"↗": "⇗",
"←": "⇐",
"→": "⇒",
"↙": "⇙",
"↓": "⇓",
"↘": "⇘",
"↔": "⇔",
"↕": "⇕",
// Currency symbols
"e": "€",
"l": "£",
"r": "₹",
"y": "¥",
"c": "¢",
"p": "₽",
"b": "₱",
"h": "₴",
"z": "₿",
// avoid showing these twice
"€": "removed",
"£": "removed",
// alternative greek letters
"π": "ϖ",
"θ": "ϑ",
"Θ": "ϴ",
"ε": "ϵ",
"β": "ϐ",
"ρ": "ϱ",
"σ": "ς",
"γ": "ɣ",
"φ": "ϕ",
"υ": "ϒ",
"κ": "ϰ",
// alternative math characters
"": "",
"∩": "⋂",
"∃": "∄",
"∫": "∮",
"Π": "∏",
"Σ": "∑",
"": "",
"∧": "⋀",
"⊷": "⊶",
"⊂": "⊆",
"⊃": "⊇",
"±": "∓",
// APL
"": "⍶",
"⍵": "⍹",
"⋄": "⌺",
"⍝": "⍧",
"∆": "⍙",
"∇": "⍢",
"": "⍡",
"⎕": "⍞",
// hebrew niqqud
"ק": "qamats", // kamatz
"ר": "hataf_qamats", // reduced kamatz
"ו": "holam",
"ם": "rafe",
"פ": "patah", // patach
"ש": "sheva",
"ד": "dagesh", // or mapiq
"ח": "hiriq",
"ף": "hataf_patah", // reduced patach
"ז": "qubuts", // kubuts
"ס": "segol",
"ב": "hataf_segol", // reduced segol
"צ": "tsere",
// Devanagari symbols
"ए": "ऍ",
"े": "ॅ",
"ऐ": "ऎ",
"ै": "ॆ",
"ऋ": "ॠ",
"ृ": "ॄ",
"ळ": "ऴ",
"र": "ऱ",
"क": "क़",
"ख": "ख़",
"ग": "ग़",
"घ": "ॻ",
"ढ": "ढ़",
"न": "ऩ",
"ड": "ड़",
"ट": "ॸ",
"ण": "ॾ",
"फ": "फ़",
"ऌ": "ॡ",
"ॢ": "ॣ",
"औ": "ॵ",
"ौ": "ॏ",
"ओ": "ऒ",
"ो": "ॊ",
"च": "ॼ",
"ज": "ज़",
"ब": "ॿ",
"व": "ॺ",
"य": "य़",
"अ": "ॲ",
"आ": "ऑ",
"ा": "ॉ",
"झ": "ॹ",
"ई": "ॴ",
"ी": "ऻ",
"इ": "ॳ",
"ि": "ऺ",
"उ": "ॶ",
"ऊ": "ॷ",
"ु": "ऄ",
"ष": "क्ष",
"थ": "त्र",
"द": "द्र",
"प": "प्र",
"श": "श्र",
"छ": "श्च",
"ँ": "ऀ",
"₹": "₨",
"ॖ": "ॗ",
"॓": "॔",
"॰": "ॱ",
"।": "॥",
"ं": "ॕ",
"़": "ॎ",
"ऽ": "",
// Persian numbers
"۱": "f1",
"۲": "f2",
"۳": "f3",
"۴": "f4",
"۵": "f5",
"۶": "f6",
"۷": "f7",
"۸": "f8",
"۹": "f9",
// Arabic numbers
"۰": "f10",
"١": "f1",
"٢": "f2",
"٣": "f3",
"٤": "f4",
"٥": "f5",
"٦": "f6",
"٧": "f7",
"٨": "f8",
"٩": "f9",
"٠": "f10",
// Cyrillic
"ꙑ": "ы",
"ы": "ꙑ",
"ш": "ѱ",
"з": "ꙁ",
"и": "і",
"і": "и",
"я": "ꙗ",
"е": "ѥ",
"ѡ": "ꙍ",
"о": "ѻ",
"а": "ѣ",
"э": "є",
"ъ": "ь",
"ь": "ъ",
"й": "ј",
"ꙉ": "ђ",
"ч": "ћ",
"ҁ": "қ",
"қ": "ҁ",
"џ": "ҷ",
"ҷ": "џ",
"ј": "й",
"у": "ꙋ",
"м": "ѫ",
"н": "ѧ",
"с": "ѕ",
"л": "ԯ",
"ԓ": "ԯ",
"\ua67d": "\u0483",
"\u0487": "\ua66f",
"ӈ": "ԩ",
// Arabic
":": "zwnj",
"ل": "ڵ",
"\u064F": "ۆ", // combining_dammah
"\u0650": "ێ", // combining_kasra
"ر": "ڕ",
"ب": "ٮ",
"ه": "ھ",
"ث": "پ",
"ز": "ژ",
"غ": "گ",
"ك": "ک",
"ا": "آ",
"ي": "ی",
"ک": "ك",
"ط": "ظ",
"ص": "ض",
"ی": "ي",
"ق": "غ",
"ع": "ء",
"ح": "ہ",
"ێ": "combining_kasra",
"ئ": "combining_hamza_above",
"ؽ": "combining_arabic_inverted_v",
"ۉ": "combining_arabic_inverted_v",
"ڡ": "combining_dammah",
"ة": "combining_fatha",
"إ": "combining_hamza_below",
"ۆ": "combining_arabic_v",
"س": "ـ",
"ف": "ڤ",
"ن": "ں",
// Tamil
"ய": ":௰",
"ஒ": ":ௐ",
"ள": ":௱",
"ச": ":௲",
"வ": ":௳"
}

View File

@@ -0,0 +1,12 @@
{
"は": "ぱ",
"ひ": "ぴ",
"ふ": "ぷ",
"へ": "ぺ",
"ほ": "ぽ",
"ハ": "パ",
"ヒ": "ピ",
"フ": "プ",
"ヘ": "ペ",
"ホ": "ポ"
}

View File

@@ -1,12 +0,0 @@
{
"0": "",
"1": "১",
"2": "২",
"3": "৩",
"4": "",
"5": "৫",
"6": "৬",
"7": "",
"8": "৮",
"9": "৯"
}

View File

@@ -1,12 +0,0 @@
{
"0": "",
"1": "१",
"2": "२",
"3": "३",
"4": "४",
"5": "५",
"6": "६",
"7": "७",
"8": "८",
"9": "९"
}

View File

@@ -1,12 +0,0 @@
{
"0": "",
"1": "૧",
"2": "૨",
"3": "૩",
"4": "૪",
"5": "૫",
"6": "૬",
"7": "૭",
"8": "૮",
"9": "૯"
}

View File

@@ -1,14 +0,0 @@
// Used with Arabic despite the name; called "Hindi numerals" in Arabic
// numpad_devanagari is used in Hindi
{
"0": "٠",
"1": "١",
"2": "٢",
"3": "٣",
"4": "٤",
"5": "٥",
"6": "٦",
"7": "٧",
"8": "٨",
"9": "٩"
}

View File

@@ -1,12 +0,0 @@
{
"0": "",
"1": "೧",
"2": "೨",
"3": "೩",
"4": "೪",
"5": "೫",
"6": "೬",
"7": "೭",
"8": "೮",
"9": "೯"
}

View File

@@ -1,12 +0,0 @@
{
"0": "۰",
"1": "۱",
"2": "۲",
"3": "۳",
"4": "۴",
"5": "۵",
"6": "۶",
"7": "۷",
"8": "۸",
"9": "۹"
}

View File

@@ -1,12 +0,0 @@
{
"0": "",
"1": "௧",
"2": "௨",
"3": "௩",
"4": "௪",
"5": "௫",
"6": "௬",
"7": "௭",
"8": "௮",
"9": "௯"
}

View File

@@ -1,138 +0,0 @@
{
"↙": "⇙",
"↓": "⇓",
"↘": "⇘",
"←": "⇐",
"→": "⇒",
"↖": "⇖",
"↑": "⇑",
"↗": "⇗",
"└": "╚",
"┴": "╩",
"┘": "╝",
"├": "╠",
"┼": "╬",
"┤": "╣",
"┌": "╔",
"┬": "╦",
"┐": "╗",
"─": "═",
"│": "║",
"∈": "∉",
"∋": "∌",
"⊂": "⊄",
"⊃": "⊅",
"⊆": "⊈",
"⊇": "⊉",
// superscript
"ᵃ": "ᴬ",
"ᵇ": "ᴮ",
"ᶜ": "ꟲ",
"ᵈ": "ᴰ",
"ᵉ": "ᴱ",
"ᶠ": "ꟳ",
"ᵍ": "ᴳ",
"ʰ": "ᴴ",
"ⁱ": "ᴵ",
"ʲ": "ᴶ",
"ᵏ": "ᴷ",
"ˡ": "ᴸ",
"ᵐ": "ᴹ",
"ⁿ": "ᴺ",
"ᵒ": "ᴼ",
"ᵖ": "ᴾ",
"ʳ": "ᴿ",
"ᵗ": "ᵀ",
"ᵘ": "ᵁ",
"ᵛ": "ⱽ",
"ʷ": "ᵂ",
"ᶾ": "ᴣ",
"ᵠ": "ᶲ",
// german eszett has an uppercase, but because it is uncommon, java doesn't know about it
"ß": "ẞ",
// these characters don't have a preapplied uppercase version, so we use combining characters
"ẗ": "T\u0308",
"ẘ": "W\u030A",
"ẙ": "Y\u030A",
"ǰ": "J\u030C",
"ȷ": "J\u0307",
// In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will
// return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This
// has the inconvenient of swapping i and ı on the keyboard.
"ı": "İ",
"₹": "₨",
// Gujarati alternate characters
"અ": "આ",
"ઇ": "ઈ",
"િ": "ી",
"ઉ": "ઊ",
"ુ": "ૂ",
"એ": "ઐ",
"ે": "ૈ",
"ઓ": "ઔ",
"ો": "ૌ",
"ક": "ખ",
"ગ": "ઘ",
"ચ": "છ",
"જ": "ઝ",
"ટ": "ઠ",
"ડ": "ઢ",
"ન": "ણ",
"ત": "થ",
"દ": "ધ",
"પ": "ફ",
"બ": "ભ",
"મ": "ં",
"લ": "ળ",
"સ": "શ",
"હ": "",
// Tamil alternate characters
"௹": "₨",
// Modern Hindi and Sanskrit
"अ": "आ",
"इ": "ई",
"ि": "ी",
"उ": "ऊ",
"ु": "ू",
"ए": "ऐ",
"े": "ै",
"ओ": "औ",
"ो": "ौ",
"क": "ख",
"ग": "घ",
"च": "छ",
"ज": "झ",
"ट": "ठ",
"ड": "ढ",
"न": "ण",
"त": "थ",
"द": "ध",
"ब": "भ",
"म": "ं",
"ल": "ळ",
"स": "श",
"ह": "",
"ऋ": "ॠ",
"ृ": "ॄ",
"ऌ": "ॡ",
"ॢ": "ॣ",
"॒": "॑",
"ॅ": "ॲ",
"ॉ": "ऑ",
// Mathematical symbols
"\uD835": {
"\uDD68": "𝕎", // 𝕨𝕎
"\uDD69": "𝕏", // 𝕩𝕏
"\uDD57": "𝔽", // 𝕗𝔽
"\uDD58": "𝔾", // 𝕘𝔾
"\uDD64": "𝕊" // 𝕤𝕊
}
}

View File

@@ -1,6 +1,7 @@
package juloo.keyboard2; package juloo.keyboard2;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import android.text.InputType; import android.text.InputType;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@@ -26,9 +27,9 @@ public final class Autocapitalisation
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES |
InputType.TYPE_TEXT_FLAG_CAP_WORDS; InputType.TYPE_TEXT_FLAG_CAP_WORDS;
public Autocapitalisation(Handler h, Callback cb) public Autocapitalisation(Looper looper, Callback cb)
{ {
_handler = h; _handler = new Handler(looper);
_callback = cb; _callback = cb;
} }
@@ -73,9 +74,6 @@ public final class Autocapitalisation
if (_cursor > 0) _cursor--; if (_cursor > 0) _cursor--;
_should_update_caps_mode = true; _should_update_caps_mode = true;
break; break;
case KeyEvent.KEYCODE_ENTER:
_should_update_caps_mode = true;
break;
} }
callback(true); callback(true);
} }
@@ -87,24 +85,6 @@ public final class Autocapitalisation
callback_now(true); callback_now(true);
} }
/** Pause auto capitalisation until [unpause()] is called. */
public boolean pause()
{
boolean was_enabled = _enabled;
stop();
_enabled = false;
return was_enabled;
}
/** Continue auto capitalisation after [pause()] was called. Argument is the
output of [pause()]. */
public void unpause(boolean was_enabled)
{
_enabled = was_enabled;
_should_update_caps_mode = true;
callback_now(true);
}
public static interface Callback public static interface Callback
{ {
public void update_shift_state(boolean should_enable, boolean should_disable); public void update_shift_state(boolean should_enable, boolean should_disable);

View File

@@ -11,7 +11,6 @@ final class ClipboardHistoryCheckBox extends CheckBox
public ClipboardHistoryCheckBox(Context ctx, AttributeSet attrs) public ClipboardHistoryCheckBox(Context ctx, AttributeSet attrs)
{ {
super(ctx, attrs); super(ctx, attrs);
setChecked(Config.globalConfig().clipboard_history_enabled);
setOnCheckedChangeListener(this); setOnCheckedChangeListener(this);
} }

View File

@@ -30,9 +30,11 @@ public final class ClipboardHistoryService
public static void set_history_enabled(boolean e) public static void set_history_enabled(boolean e)
{ {
Config.globalConfig().set_clipboard_history_enabled(e);
if (_service == null) if (_service == null)
return; return;
Config.globalPrefs().edit()
.putBoolean("clipboard_history_enabled", e)
.commit();
if (e) if (e)
_service.add_current_clip(); _service.add_current_clip();
else else
@@ -49,7 +51,7 @@ public final class ClipboardHistoryService
/** The maximum size limits the amount of user data stored in memory but also /** The maximum size limits the amount of user data stored in memory but also
gives a sense to the user that the history is not persisted and can be gives a sense to the user that the history is not persisted and can be
forgotten as soon as the app stops. */ forgotten as soon as the app stops. */
public static final int MAX_HISTORY_SIZE = 6; public static final int MAX_HISTORY_SIZE = 3;
/** Time in ms until history entries expire. */ /** Time in ms until history entries expire. */
public static final long HISTORY_TTL_MS = 5 * 60 * 1000; public static final long HISTORY_TTL_MS = 5 * 60 * 1000;

Some files were not shown because too many files have changed in this diff Show More