Compare commits

...

917 Commits

Author SHA1 Message Date
Patrick Goldinger
1a968a6651 Release 0.3.14-beta06 2021-11-28 19:22:48 +01:00
florisboard-bot
2df91f5265 Update translations from Crowdin 2021-11-28 19:01:37 +01:00
Patrick Goldinger
55167651e4 Merge pull request #1409 from florisboard/prefs-rework-6.5
Preference Rework Part 6.5: Bug fixes and patches before beta06 release
2021-11-28 18:53:46 +01:00
Patrick Goldinger
a101be1acf Lock theme manager screen preferences from being mutated 2021-11-28 18:47:33 +01:00
Patrick Goldinger
0c9c456369 Adapt home screen box for beta06 missing features 2021-11-28 18:38:07 +01:00
Patrick Goldinger
384bae7333 Fix auto capitalization / remember capitalization bugs 2021-11-28 18:09:44 +01:00
Patrick Goldinger
fba55f7d3e Add locale selection screen
Allows to select any language available on the device, thus allowing
for any spell checker language to be actually used.
2021-11-28 17:39:30 +01:00
Patrick Goldinger
e92c5e1cec Add scrollable lazy list modifier 2021-11-28 12:41:06 +01:00
Patrick Goldinger
1725bdd9ae Merge pull request #1370 from florisboard/prefs-rework-6
Preference Rework Part 6: Re-implement keyboard UI in JC, remove old backend, fix direct boot mode
2021-11-27 20:56:14 +01:00
Patrick Goldinger
db43ce6b15 Fix live preview bugs in the settings UI 2021-11-27 20:17:19 +01:00
Patrick Goldinger
863370b064 Improve FlorisScreen 2021-11-27 19:34:35 +01:00
Patrick Goldinger
302c8d3699 Remove old SettingsMainActivity and the Typing fragment 2021-11-27 19:21:12 +01:00
Patrick Goldinger
c504b792b3 Improve subtype editor and its presets UI 2021-11-27 19:13:17 +01:00
Patrick Goldinger
56c965626a Add subtype presets / Fix layout type id associations 2021-11-27 18:14:50 +01:00
Patrick Goldinger
9a1bd90f79 Fix subtype editor bugs and add popup mapping dropdown 2021-11-27 13:48:13 +01:00
Patrick Goldinger
5ff670ded9 Add new subtype editor screen 2021-11-26 21:10:42 +01:00
Patrick Goldinger
1b7e671071 Add FlorisButtonBar 2021-11-25 20:56:19 +01:00
Patrick Goldinger
3dec7061ac Move character layouts to new extension core 2021-11-25 00:21:29 +01:00
Patrick Goldinger
da6cd59663 Move symbols/symbols2 layouts to new extension core 2021-11-24 23:40:10 +01:00
Patrick Goldinger
88e72616cb Fix visual bugs in the keyboard UI 2021-11-24 23:23:20 +01:00
Patrick Goldinger
ed0c8784a0 Move KeyboardMode to base keyboard class 2021-11-24 22:48:10 +01:00
Patrick Goldinger
d0e20a8c52 Re-implement extended popups / Rework computing evaluator concept 2021-11-24 22:25:06 +01:00
Patrick Goldinger
aa93136f04 Re-implement basic popups 2021-11-23 23:53:25 +01:00
Patrick Goldinger
8c11eaa099 Complete re-structure of common.* package 2021-11-22 22:25:29 +01:00
Patrick Goldinger
105a6a8cb9 Re-implement missing input actions 2021-11-22 20:28:38 +01:00
Patrick Goldinger
c5fd023fce Re-implement gestures / swipe actions 2021-11-22 01:52:49 +01:00
Patrick Goldinger
2dc280aade Adapt key codes to new concept and use in extensions 2021-11-22 01:08:12 +01:00
Patrick Goldinger
233409eeab Re-implement key hints in the keyboard UI 2021-11-21 22:03:17 +01:00
Patrick Goldinger
df7eb08eec Re-implement startInputView logic 2021-11-21 21:14:10 +01:00
Patrick Goldinger
d91886a6ed Fix Snygg stylesheet compile logic 2021-11-21 19:07:56 +01:00
Patrick Goldinger
cf94fe72ff Move numeric layouts to new core extension package 2021-11-20 19:48:20 +01:00
Patrick Goldinger
4598f3221b Vastly improve stylesheet merging / Improve new input logic 2021-11-20 19:22:57 +01:00
Patrick Goldinger
fdf120ed19 Move parts of layout json files to new core extension 2021-11-19 20:39:37 +01:00
Patrick Goldinger
704d55051b Re-implement parts of touch logic 2021-11-18 20:39:02 +01:00
Patrick Goldinger
7dd85c8a71 Add simple touch logic to new keyboard UI 2021-11-17 23:56:08 +01:00
Patrick Goldinger
8566448009 Fix bugs in SnyggStylesheet getter resolve logic 2021-11-16 21:58:38 +01:00
Patrick Goldinger
6df06b01fa Re-implement font/icon sizing for keyboard UI 2021-11-16 00:48:18 +01:00
Patrick Goldinger
512335c16a Add Snygg shape support 2021-11-15 23:55:57 +01:00
Patrick Goldinger
d657ec546b Re-implement layout manager for loading from extensions 2021-11-15 22:40:38 +01:00
Patrick Goldinger
c1db4c1bea Fix old LayoutManager / Add extCore builders for component names 2021-11-15 01:42:38 +01:00
Patrick Goldinger
253b04b50c Add experimental KeyboardLayout implemented in Jetpack Compose 2021-11-14 23:48:53 +01:00
Patrick Goldinger
7f5b31ad01 Add FlorisRect class 2021-11-13 20:43:33 +01:00
Patrick Goldinger
6526dab7dd Re-implement further old keyboard logic into the new one 2021-11-12 20:49:50 +01:00
Patrick Goldinger
c3be2b38cf Fix bugs in smartbar sizing / preference appliance 2021-11-12 00:06:45 +01:00
Patrick Goldinger
a6101b774e Add base for layouts and smartbar container 2021-11-11 23:46:40 +01:00
Patrick Goldinger
286d2dfc19 Add base implementation for Snygg themes 2021-11-10 22:18:04 +01:00
Patrick Goldinger
639f7cdc5b Add temporary mockup for new subtype/localization screen 2021-11-10 00:01:04 +01:00
Patrick Goldinger
b949814912 Begin implementing keyboard UI in Jetpack Compose
Additionally add change of a lot of code throughout the codebase
2021-11-10 00:00:01 +01:00
Patrick Goldinger
ceb8686063 Move subtype presets, currency sets and popup mappings to extensions 2021-11-09 01:21:46 +01:00
Patrick Goldinger
e933377bab Fix common issues with subtypes and extension manager 2021-11-09 00:54:38 +01:00
Patrick Goldinger
11a3ddfed7 Completely rework subtypes and subtype manager 2021-11-08 00:47:57 +01:00
Patrick Goldinger
609fcffcd0 Add capacity argument to stringBuilder dsl function 2021-11-08 00:35:59 +01:00
Patrick Goldinger
206340062f Add extension component (name) and keyboard extensions index 2021-11-08 00:24:07 +01:00
Patrick Goldinger
e4325b568b Update keyboard state to be a LiveData and support batch edits 2021-11-07 23:59:19 +01:00
Patrick Goldinger
8968de6276 Rename ExtensionAuthor to ExtensionMeta 2021-11-06 20:53:42 +01:00
Patrick Goldinger
4a67c5acb0 Fix subtype manager internal logic, prepare for new UI 2021-11-05 19:58:47 +01:00
Patrick Goldinger
9b30a4808c Potential fix for AssetManager jsonConfig null crash (#1351) 2021-11-05 01:27:06 +01:00
Patrick Goldinger
fa0e596cee Add scrollbars to all scrollable views (except some dialogs) 2021-11-04 23:47:35 +01:00
Patrick Goldinger
fc5c553923 Add dotted line for active step to FlorisStepLayout 2021-11-04 20:43:36 +01:00
Patrick Goldinger
21f230c0a9 Improve HomeScreen / Remove unused code 2021-11-01 22:51:05 +01:00
Patrick Goldinger
afdf5857e8 Fix input feedback blocking main thread (#1366) 2021-11-01 01:56:56 +01:00
Patrick Goldinger
198e8ff4a8 Increase gesture distance max from 48 to 72dp
Default changed from 32 to 36dp
2021-11-01 01:54:26 +01:00
Patrick Goldinger
c8e03ceb77 Remove old pref backend entirely 2021-11-01 00:28:23 +01:00
Patrick Goldinger
c4b009c296 Move parts of dictionary preferences to new backend/frontend 2021-10-31 22:36:32 +01:00
Patrick Goldinger
d4935195a9 Move smartbar preferences to new backend/frontend 2021-10-31 22:08:31 +01:00
Patrick Goldinger
39c389a325 Move suggestion/correction preferences to new backend/frontend 2021-10-31 21:50:58 +01:00
Patrick Goldinger
c40aa37a72 Move internal preferences to new backend 2021-10-31 17:36:08 +01:00
Patrick Goldinger
41a6ab36ea Fix prefs getting reset when loaded in direct boot mode (#1304) 2021-10-31 17:18:39 +01:00
Patrick Goldinger
510f2cc120 Upgrade to JetPack Compose 1.1.0-beta01 2021-10-29 20:24:32 +02:00
Patrick Goldinger
bce5199e31 Release v0.3.14-beta05 2021-10-28 22:19:19 +02:00
Patrick Goldinger
7f65dd34d8 Update ROADMAP.md 2021-10-28 22:06:34 +02:00
florisboard-bot
9e1ac5f315 Update translations from Crowdin 2021-10-28 21:55:14 +02:00
florisboard-bot
4a00f2ea3f Update translations from Crowdin 2021-10-28 00:34:16 +02:00
Patrick Goldinger
36d7122f71 Update FlorisBoard CI to ignore certain repo meta files 2021-10-27 23:43:20 +02:00
Patrick Goldinger
6daec753c3 Add Crowdin GitHub Actions Workflow 2021-10-27 23:02:56 +02:00
Patrick Goldinger
2c1ad1f305 Merge pull request #1328 from florisboard/prefs-rework-5
Preference Rework Part 5: Bug fixes for spell checker, Devtools, Correction prefs
2021-10-27 19:34:04 +02:00
Patrick Goldinger
e9961059e0 Add Snygg stylesheet backend edit support / Fix and rearrange a lot of Snygg code 2021-10-27 01:11:13 +02:00
Patrick Goldinger
d65c2a582e Move SpellingConfig from json file to companion object 2021-10-26 20:29:42 +02:00
Patrick Goldinger
e19ce47dbb Add unit test for SnyggSizeValue 2021-10-26 17:14:37 +02:00
Patrick Goldinger
f67acac9f8 Fix build.gradle NDK ABI filters 2021-10-25 23:59:53 +02:00
Patrick Goldinger
1f152cf596 Add SnyggImageRefValue to theme base 2021-10-25 23:43:23 +02:00
Patrick Goldinger
b668f79231 Improve Snygg implementation / Add docstrings to some Snygg components 2021-10-24 23:31:44 +02:00
Patrick Goldinger
eed50e3fac Add base implementation for new Snygg theme engine 2021-10-24 20:19:36 +02:00
Patrick Goldinger
c3845c304a Add Snygg property names 2021-10-23 20:47:59 +02:00
Patrick Goldinger
510e7f3514 Add isBorderless flag to theme extension 2021-10-22 14:39:12 +02:00
Patrick Goldinger
48c5be1a8c Fix step layout content not scrollable 2021-10-21 19:44:31 +02:00
Patrick Goldinger
1633521393 Add auto-return from system IME enabler activity
(Idea by @ sabzo)
2021-10-21 19:29:52 +02:00
Patrick Goldinger
6a81267bf0 Improve observer code / Fix FlorisCard padding issues 2021-10-20 22:55:29 +02:00
Patrick Goldinger
88b6f5b7d6 Remove API 30 specific method.xml and unify with main method.xml 2021-10-20 17:53:18 +02:00
Patrick Goldinger
1420a256e8 Fix setup screen sometimes showing on launch even though it shouldn't 2021-10-20 00:50:50 +02:00
Patrick Goldinger
a6c829ef6c Rework implementation of app icon 2021-10-20 00:47:26 +02:00
Patrick Goldinger
9f8c775bdb Finish moving home screen Ui / Remove unused old settings code 2021-10-19 20:19:58 +02:00
Patrick Goldinger
41d3042704 Fix minor issues with AndroidSettings observers 2021-10-18 23:18:13 +02:00
Patrick Goldinger
97b170f55b Rework Android Settings observe implementation
Fixes the delay some devices experienced
2021-10-18 22:13:21 +02:00
Patrick Goldinger
f34a2917f0 Add internal splash screen
Fixes the short setup screen flash which sometimes occurs
2021-10-18 01:06:08 +02:00
Patrick Goldinger
4c554d1361 Upgrade JetPref to 0.1.0-alpha11 2021-10-18 00:43:47 +02:00
Patrick Goldinger
1c9110188d Fix spelling screen allowing config changes when disabled in system 2021-10-17 23:19:16 +02:00
Patrick Goldinger
e18ecb7529 Add devtools screen / Add Android system debug tools 2021-10-17 23:09:16 +02:00
Patrick Goldinger
cccd0b8bca Fix FileObserver using new constructor(file,mask) for API <= 28 (#1326) 2021-10-17 18:45:06 +02:00
Patrick Goldinger
febc37e02c Upgrade to JetPref 0.1.0-alpha10 & JetPack Compose 1.1.0-alpha06 2021-10-17 15:51:15 +02:00
Patrick Goldinger
1ef7656c6b Release v0.3.14-beta04 2021-10-15 19:47:36 +02:00
Patrick Goldinger
7a71d191a1 Update translations from Crowdin 2021-10-15 19:29:27 +02:00
pnppl
d44e7cc621 Remove slurs from glide dictionary (#1306)
* Remove slurs from glide dictionary

Last thing you want to do is accidentally text someone the n-word.

* Missed a spot

removed "dyke"

* Couple more

"gaylord", "homo"
2021-10-15 19:21:09 +02:00
Rex_sa
cf755abdc0 Change name of Rial currency symbol (﷼) (#1323)
* Update config.json

The ﷼ currency is more then one country currency.

* Last Update config.json

* Update config.json

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-10-15 19:09:52 +02:00
Patrick Goldinger
40f7ad6254 Fix German uppercase letter ẞ being displayed as SS (#1321) 2021-10-14 23:53:06 +02:00
Mangu Purty
c3342595b1 Update warang_citi.json for upper case 𑣖 (#1288)
* Update config.json

* Update config.json

* Create ho.json

* Update ho.json

* Create warang_citi

* Update ho.json

* Rename warang_citi to warang_citi.json

* Update config.json

* Update and rename ho.json to warang_citi.json

* Add numericRow preferred for hoc language

* Update warang_citi.json for uper case 𑣖

Added the missing line "$": "auto_text_key" for the letter 𑣖.

* Update warang_citi.json

Added popups.

* Update warang_citi.json

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-10-14 23:48:18 +02:00
Mubashir Rehman
7985492729 Add ur-PK in phonetic layout (#1278)
* Added Urud(ur-PK)

id 3500. added Urdu with qwerty and pakistani_rupee

* Update characters type in ur-PK

* Created Urdu Primary keys

Thanks to @mirfatif

* Updated Typo in characters name in ur-PK

* Created ur-PK extended-PopUp

Thanks https://github.com/mirfatif/AnySoftKeyboard/blob/Urdu-keyboard-and-dictionary/addons/languages/urdu/pack/src/main/res/xml/urdu_with_symbols.xml

* Update ur-PK.json

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-10-14 23:44:18 +02:00
Patrick Goldinger
5fd5a103a7 Merge pull request #1290 from florisboard/prefs-rework-4
Preference Rework Part 4: Splash Screen, Theme manager/editor
2021-10-14 23:34:27 +02:00
Patrick Goldinger
0b96902c8e Fix glide typing data initialization not working 2021-10-14 23:27:38 +02:00
Patrick Goldinger
b992151d60 Fix state/loading bugs in spell checker logic 2021-10-14 23:22:05 +02:00
Patrick Goldinger
cf5dcca689 Improve spelling manager Ui 2021-10-14 20:56:33 +02:00
Patrick Goldinger
cbbf54e9d8 Add Ui for viewing current system spell checker configuration 2021-10-14 20:09:35 +02:00
Patrick Goldinger
8ee127c32f Add dictionary loader function
Spell checker is technically working again, but bug fixes and
polishing is still needed.
2021-10-13 21:43:16 +02:00
Patrick Goldinger
d1cddafa32 Add detection for system spell checker settings 2021-10-13 00:46:39 +02:00
Patrick Goldinger
5b68589b7a Add proper extension index logic 2021-10-12 23:09:33 +02:00
Patrick Goldinger
f7e31ca752 Add basic spelling dictionary import Ui 2021-10-12 01:12:27 +02:00
Patrick Goldinger
236b555f07 Improve ZipUtils code readability / Add zip() to ZipUtils 2021-10-11 23:19:01 +02:00
Patrick Goldinger
c66d6f5a20 Remove old spelling manager Ui implementation 2021-10-11 22:42:18 +02:00
Patrick Goldinger
bdc45d6e28 Add FlorisDropdownMenu composable component 2021-10-11 21:03:04 +02:00
Patrick Goldinger
53edce6917 Upgrade Gradle build tools to 7.0.3 2021-10-11 21:02:42 +02:00
Patrick Goldinger
c78f50781b Animate FlorisStepLayout and add option to change primary color 2021-10-11 15:39:36 +02:00
Patrick Goldinger
04dacbc060 Add FlorisStepLayout and adapt setup screen to use it 2021-10-11 01:29:49 +02:00
Patrick Goldinger
db0c2c1880 Add internal codebase for extension editor 2021-10-10 23:56:14 +02:00
Patrick Goldinger
aaf7d6d557 Add preview text field visibility control in code 2021-10-10 15:48:13 +02:00
Patrick Goldinger
ec9a7882ae Add extension indexing and improve loading 2021-10-09 20:53:10 +02:00
Patrick Goldinger
9d3d763cec Add spelling manager Ui base 2021-10-08 21:26:36 +02:00
Patrick Goldinger
f6a686a79d Add ExtensionAuthor unit test, fix bugs 2021-10-08 01:00:57 +02:00
Patrick Goldinger
ba712a5417 Add ExtensionViewerScreen Ui 2021-10-07 23:47:10 +02:00
Patrick Goldinger
02de2411e1 Fix launchUrl handling of URLs without a schema 2021-10-07 20:13:45 +02:00
Patrick Goldinger
a76e354a6c Add ExtensionAuthor Ui 2021-10-07 01:39:09 +02:00
Patrick Goldinger
ecda55094f Add ExtensionAuthor data class 2021-10-06 23:57:49 +02:00
Patrick Goldinger
6fb003099b Upgrade JetPack Compose to 1.1.0-alpha05 2021-10-06 23:53:44 +02:00
Patrick Goldinger
626caff0aa Add base for new Snygg theme engine
This is a step normally planned for after 0.3.14, but due to the fact
that the whole theme manager UI has to be rewritten anyways, some parts
of the planned theme rework will be done sooner than planned, saves some
work afterwards.
2021-10-05 23:09:27 +02:00
Patrick Goldinger
ecb8773391 Rework base application asset management
Temporarily disables spell checking, gide typing and possibly some other
features.
2021-10-04 21:50:10 +02:00
Patrick Goldinger
a60873099c Rework extension structure once again for better loading support 2021-10-03 23:56:18 +02:00
Patrick Goldinger
e6a36a0d97 Rework extension config implementation 2021-10-02 20:47:58 +02:00
Patrick Goldinger
ddac177bf2 Rework extension base structure for serialization 2021-10-01 20:40:11 +02:00
Patrick Goldinger
8f1c99b75b Move app.ui.res package to app.res 2021-09-30 23:51:40 +02:00
Patrick Goldinger
1389d06d23 Add new ExtensionConfig as base for full extension support 2021-09-30 23:04:36 +02:00
Patrick Goldinger
da58cef7f8 Add String.curlyFormat unit test 2021-09-30 00:41:43 +02:00
Patrick Goldinger
9f3907eab4 Add kotest testing library / Temporarily remove old unit tests
Removal because some of them have not been updated for ages and
because the old Junit and Mockito code messes with kotest.

The old unit tests will be reimplemented in kotest as best as possible.
2021-09-30 00:27:33 +02:00
Patrick Goldinger
8ccaf388d9 Add curlyFormat String extension function 2021-09-29 23:42:20 +02:00
Patrick Goldinger
3b1ce29288 Add "Purposely crash app" debug action 2021-09-28 22:15:24 +02:00
Patrick Goldinger
e768af02e2 Upgrade KotlinX Coroutine Library to 1.5.2 (#1295) 2021-09-28 20:58:53 +02:00
Patrick Goldinger
c579c1f2be Allow dialog preference strings to be translated 2021-09-28 19:25:04 +02:00
Patrick Goldinger
dcd311d3b2 Fix FlorisBoard settings not accessible through system prefs 2021-09-28 19:11:34 +02:00
Patrick Goldinger
ba12ec882a Improve InputFeedbackScreen vibration/audio units and ranges (#1291) 2021-09-28 18:52:06 +02:00
Patrick Goldinger
e4714c47e7 Fix moving gestures firing too rapidly 2021-09-28 18:47:47 +02:00
Patrick Goldinger
2c57aecd65 Add background-only splash screen
This is only temporary until the SplashScreen Compat API evolves.
2021-09-27 21:30:40 +02:00
Patrick Goldinger
bed94f8100 Add ThemeScreen (overview) to new Settings UI
ThemeManager/Editor still in old UI
2021-09-27 00:28:13 +02:00
Patrick Goldinger
da0f881f7c Upgrade to JetPref 0.1.0-alpha08 2021-09-26 22:45:57 +02:00
Patrick Goldinger
fa96a239b4 Release v0.3.14-beta03 2021-09-26 20:39:42 +02:00
Mangu Purty
a7b6f06b38 Add Warang Citi layout (#1274)
* Update config.json

* Update config.json

* Create ho.json

* Update ho.json

* Create warang_citi

* Update ho.json

* Rename warang_citi to warang_citi.json

* Update config.json

* Update and rename ho.json to warang_citi.json

* Add numericRow preferred for hoc language

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-09-26 20:07:52 +02:00
Patrick Goldinger
aa37a3e80a Merge pull request #1276 from florisboard/prefs-rework-3
Preference Rework Part 3: Setup screen, Gesture prefs
2021-09-26 19:46:33 +02:00
Patrick Goldinger
9158afaf3e Fix GitHub workflow failing due to OSS license plugin issue 2021-09-24 20:08:20 +02:00
Patrick Goldinger
b6580adb94 Implement separate keyboard height prefs for portrait/landscape (#360) 2021-09-24 19:36:45 +02:00
Patrick Goldinger
1109a3efb1 Add third-party license screen in new UI 2021-09-24 18:58:40 +02:00
Patrick Goldinger
b02c780dd7 Remove systemLanguage property from FlorisApplication 2021-09-23 18:45:18 +02:00
Patrick Goldinger
fc8557d19b Remove Timber Logcat library 2021-09-23 00:19:11 +02:00
Patrick Goldinger
1733c10ce2 Implement gesture screen UI and logic 2021-09-22 19:58:36 +02:00
Patrick Goldinger
ae516bf18a Improve setup screen based on feedback (#996) 2021-09-22 18:00:33 +02:00
Patrick Goldinger
e4cba358bb Upgrade AndroidX Navigation Compose to 2.4.0-alpha09 2021-09-21 19:13:07 +02:00
Patrick Goldinger
51d07270be Fix duplicate vibration duration label (#1272) 2021-09-21 19:03:36 +02:00
Patrick Goldinger
67a0d19776 Add new setup screen UI (#996) 2021-09-21 18:55:30 +02:00
Patrick Goldinger
fdbe790a96 Add custom string resource methods 2021-09-20 19:11:32 +02:00
Patrick Goldinger
dcee5dbf2d Release v0.3.14-beta02 2021-09-19 18:37:50 +02:00
Patrick Goldinger
0392342384 Update translations from Crowdin 2021-09-19 18:23:09 +02:00
nd500
6744a9fc87 Add Igbo layout 1 (#1251)
* igbo.json

Igbo language character layout

* Update config.json

Updated config.json to add 'Igbo' default subType

* Update config.json

format tweak...

* Updated config.json - added igbo section

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-09-18 18:02:28 +02:00
Aman9das
a48b95127c Fix redundant % symbol (#1267)
* fix > symbol in symbols-additional layout putting ?

* double % symbols was redundant
2021-09-18 17:18:58 +02:00
Hayleia
c35a282d88 Add Basic Telex for Vietnamese (#978)
* Add Basic Telex composer

* Add vi-VN popups

* Declare vietnamese language

Not sure about currencies

* Composer with rules supports uppercase and lowercase

* Fix composer composition in Firefox URL bar (again)

* Add fallback Telex rules

Warning, uw needs uuww

* Save a bit of visual space on Telex rule declarations

* Add missing popup

* Add z-rules
2021-09-18 17:11:19 +02:00
Patrick Goldinger
0a9ee749c1 Merge pull request #1261 from florisboard/prefs-rework-2
Preference Rework Part 2: Clipboard preferences + other prefs
2021-09-18 17:01:47 +02:00
Patrick Goldinger
92da7b74a0 Change LifecycleInputMethodService to provide uiScope 2021-09-18 16:40:47 +02:00
Patrick Goldinger
940baa00ae Remove old about activity / Remove other old unused code 2021-09-18 01:55:09 +02:00
Patrick Goldinger
4ec91e5415 Implement input feedback preferences / Clean up unused old settings 2021-09-17 19:54:07 +02:00
Patrick Goldinger
03b01b58de Add input feedback preference screen 2021-09-17 19:40:11 +02:00
Patrick Goldinger
58a4ae2bc9 Implement new keyboard preferences in the keyboard logic 2021-09-17 18:29:01 +02:00
Patrick Goldinger
f5c08164a4 Upgrade to JetPref 0.1.0-alpha07 2021-09-17 17:55:24 +02:00
Patrick Goldinger
4e794cd05c Add descriptions to key hint mode options (#955) 2021-09-16 23:49:21 +02:00
Patrick Goldinger
936c671a7f Add Keyboard preferences screen / Clean up strings.xml 2021-09-16 23:33:57 +02:00
Patrick Goldinger
1e29b1683b Temporarily remove translations to avoid string IDs to mismatch
Translations are saved in Crowdin and will be re-fetched later
2021-09-16 21:07:26 +02:00
Patrick Goldinger
1321bfc9c9 Add LifecycleInputMethodService 2021-09-16 19:27:31 +02:00
Patrick Goldinger
8c79e633a0 Upgrade to JetPref 0.1.0-alpha05 2021-09-16 19:19:03 +02:00
Patrick Goldinger
98790485d1 Improve InputMethodUtils and picker button onClick 2021-09-15 23:54:19 +02:00
Patrick Goldinger
d784472d3d Fix system back button/gesture not working in Settings UI 2021-09-15 23:40:38 +02:00
Patrick Goldinger
d4a845c3a0 Adapt new clipboard prefs in ClipboardManager 2021-09-15 23:28:29 +02:00
Aman9das
5237458c21 Fix > symbol in western-additional layout using incorrect code (#1254) 2021-09-15 22:23:09 +02:00
Patrick Goldinger
b8e6bd5f40 Add clipboard settings screen 2021-09-15 22:08:04 +02:00
Patrick Goldinger
5881f42820 Add new unit strings (#692) 2021-09-15 21:54:30 +02:00
Patrick Goldinger
cae620da02 Add InputMethodUtils 2021-09-15 20:27:47 +02:00
Patrick Goldinger
2c6ed33f38 Update README.md to fix incorrect release links 2021-09-14 19:06:36 +02:00
Patrick Goldinger
a71c89d5d3 Release v0.3.14-beta01 2021-09-14 18:58:09 +02:00
Patrick Goldinger
408716f4c4 Fix custom app language setter bug 2021-09-14 18:48:22 +02:00
Patrick Goldinger
005040df66 Update translations from Crowdin 2021-09-14 18:41:20 +02:00
Patrick Goldinger
527b3b293e Fix glide typing preview not working (#1191) 2021-09-14 00:59:43 +02:00
mrdeck4rd
dec39e8bd9 Add Thai layout (#1226)
* Add Thai Kedmanee layout.

* Add Thai layout

-Thai Kedmanee
-Thai Manoonchai

* Added Thai Numerals

* Fix syntax issue in config file

* Add new line to thai_manoonchai.json

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-09-14 00:34:33 +02:00
Patrick Goldinger
eaa630b219 Merge pull request #1237 from florisboard/prefs-rework-1
Preference Rework Part 1: JetPref lib + base preparation
2021-09-14 00:25:22 +02:00
Patrick Goldinger
4217594dd4 Update JetPref to 0.1.0-alpha03 2021-09-14 00:16:24 +02:00
Patrick Goldinger
96d01a28fb Implement live preview for advanced preferences 2021-09-13 22:14:28 +02:00
Patrick Goldinger
ec9f4a6654 Add keyboard preview in Settings (#82) 2021-09-13 21:30:39 +02:00
Patrick Goldinger
1990916851 Change home card to be collapsible 2021-09-12 23:51:36 +02:00
Patrick Goldinger
9ab49ff1c9 Add Settings language option feature 2021-09-12 23:03:47 +02:00
Patrick Goldinger
b4f08c38b3 Add home screen beta tester note 2021-09-11 14:05:29 +02:00
Patrick Goldinger
5a375ec30f Implement devtools and force-private-mode 2021-09-11 13:33:46 +02:00
Patrick Goldinger
efded915c3 Implement show/hide app icon feature / Fix theme issues 2021-09-11 13:14:46 +02:00
Patrick Goldinger
4bf335f4af Implement Jetpack Theme + Settings Theme pref functionality 2021-09-11 12:20:12 +02:00
Patrick Goldinger
643920c094 Add advanced preferences 2021-09-10 19:46:44 +02:00
Patrick Goldinger
172eb54909 Add license screen / Improve internal UI code 2021-09-10 17:56:15 +02:00
Patrick Goldinger
3d3d8f74c4 Re-add app icon on about screen 2021-09-10 00:39:04 +02:00
Patrick Goldinger
cf77038336 Re-implement version copy feature 2021-09-10 00:15:59 +02:00
Patrick Goldinger
619e06be1b Rename MainAppActivity to FlorisAppActivity 2021-09-09 23:59:39 +02:00
Patrick Goldinger
36dde9f7e0 Add about screen structure 2021-09-09 23:51:38 +02:00
Patrick Goldinger
58d0954fe4 Add base skeleton for implementing new Settings UI 2021-09-08 19:29:40 +02:00
Patrick Goldinger
17d28c9d9d Clean up and sort Gradle dependencies 2021-09-08 18:48:28 +02:00
Patrick Goldinger
46fb33b2a0 Rename package settings to oldsettings 2021-09-08 18:25:32 +02:00
Patrick Goldinger
e36aa80cc0 Add JetPref library import into gradle dependencies 2021-09-07 23:59:03 +02:00
Patrick Goldinger
3ce323596c Update Gradle version to 7.0.2 2021-09-07 23:58:41 +02:00
Hèctor Godoy
abe67c2a6f Add ñ as popup on catalan layout (#1236) 2021-09-07 23:50:02 +02:00
Aman9das
5c1768a924 Add additonal Western layout with more symbols (#1214)
* Add files via upload

* Contributing guidelines hyperlink

* Rename western.json to western-numrow.json

* western keyboard-unchanged

* Update and rename western-numrow.json to western-additional-symbols.json

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-09-02 19:33:44 +02:00
Patrick Goldinger
92086954de Update README.md to make it less cluttered (#1195) 2021-08-28 18:58:00 +02:00
Patrick Goldinger
2b47d4a811 Release v0.3.13 2021-08-26 17:47:16 +02:00
Patrick Goldinger
e977c512a7 Fix increment step for vibration duration preference 2021-08-26 12:57:43 +02:00
Patrick Goldinger
0828c0a4db Update issue template chooser and contributing for new discussions 2021-08-25 22:47:19 +02:00
Patrick Goldinger
ecee7bfa56 Update README.md for 0.3.13 2021-08-25 17:41:35 +02:00
Patrick Goldinger
7a0485c0dc Release v0.3.13-beta12 2021-08-24 15:44:12 +02:00
Patrick Goldinger
d4ff6143f4 Add heap size restriction note to description of suggestion pref 2021-08-24 15:37:13 +02:00
Patrick Goldinger
8aa8b30a43 Lower minimum heap size requirement for word suggestions to 256 MB 2021-08-24 15:33:27 +02:00
Patrick Goldinger
019bdcae6f Add devtool override toggle for heap size restriction (#1178) 2021-08-24 15:31:14 +02:00
Patrick Goldinger
edfea2dbf2 Release v0.3.13-beta11 2021-08-23 22:25:00 +02:00
Waelwindows
eeec8e0d17 Add katakan middle dot to popups (#1177) 2021-08-23 22:15:14 +02:00
Patrick Goldinger
e79ab3c2e3 Add min memory size restriction for word suggestions (#1176) 2021-08-23 17:33:54 +02:00
Patrick Goldinger
2719cf4930 Release v0.3.13-beta10 2021-08-22 22:10:48 +02:00
Patrick Goldinger
d6d89aac43 Update translations from Crowdin 2021-08-22 21:53:37 +02:00
Patrick Goldinger
973c738059 Adapt Settings home screen for 0.3.13 2021-08-22 21:51:22 +02:00
Waelwindows
2345192728 Add Japanese JIS layout (#140)
* feat: Add Japanaese JIS layout

* feat: Add KanaSelector and KanaSizeSelector

* test: Try out new selectors

* fix: Add new selectors to polymorphic key data list

This should help make florisboard recognize the new selectors
when used in layouts.

* fix: Implement `evaluteKana` for ComputingEvaluator

This should fix the crashes, hopefully

* feat: Rework the JIS layout

* fix: Implement basic logic for kana state

* feat: Add popups for JIS

* chore: Rename JIS specific layouts

For some reason this change broke the pop-ups

* feat: Add Kana Unicode compositor

* feat: Implement flipping small state and refactor

This should allow small kana characters to be switched over to their
normal counterparts. Also clean up and refactor `KanaUnicode` and make
the filename more appropriate

* Merge `master` to `japanese`

* chore: Add internal codes for Kana switching

This should be the starting point for getting actual keys
to switch between the kana types

* feat: Add initial modifer layout for JIS

* chore: Add keycode for ideographic CJK space

* feat: Add logic for kana switching

* chore: Update layout modifer to use kana switch

* feat: Add icon for kana switcher button

* fix: Scale the icon and update relevant entries

* feat: Begin work on kana selector popup

* Add kana attributes to keyboard state

* Add workaround for Japanese popups

* chore: Remove URL popups for JIS layout

* chore: Add codes and groups for kana switching

This commit adds the "~kana" group with groupId 4.

* feat: Use "~kana" in JIS layout.

* feat: Remove `KanaSizeSelector`.

It will be redundant when compositor handles it instead.

* feat: Add alpha code for making kana small.

This code currently uses a sentinel character to trigger
the transformation. This is not ideal as that means that users
won't be able to use that character in the keyboard. This won't
be a problem if the sentinel character is a Unicode codepoint
that cannot or would not be used normally. As such, this is just
a demonstration of the how the feature should function not it's
final implementation.

* test: Add kana small key in JIS for testing.

This is to preview changes to the kana small algorithm,
This commit should be removed from history later on.

* fix: Add `KANA_SWITCHER` to exceptionsForKeyCodes

* chore: Change "~kana" groupId to avoid conflicts

* fix: Change Kana small behaviour

* chore: Change internal kana small key code

* test: Remove kana small button from JIS layout

* feat: Add iteration marks to daku list

* feat: Allow swtiching between kana modifiers

This allows users to add/remove dakuten/handakuten/small
from kana and swtiching between the three. This is helpful
as it allows users to quickly rectify mistakes. It also lays
the groundwork for the future 12 flick layout

* feat: Change Kana swticher behaviour on katakana

Makes katakana switch over to hiragana immediately. As half-width
katakana is not usually used. The kana-switcher pop-up suffices
switching over to it when needed.

A potential downside to doing it like this making the half-width
katakana more hidden and less likely to be used.

* Add CJK_SPACE special behavior to input logic

* feat: Add CJK punctuation to popups and JIS layout

* feat: Add CJK punctuation symbols

* feat: Add CJK row numbers

* feat: Add postal mark symbol in CJK symbols

And change kana small internal code. Used to be set to
postal mark with face. Now set to geta mark.

* chore: Set default numeric row to CJK for JIS

* feat: Add modifiers layouts for CJK punctuation

* chore: Add latin half-width braces to CJK layout

* fix: Change composer behaviour on empty string

* chore: Add non-composing (han)daku to JIS popups

* fix: Change composer behaviour to be consistent

Also clean up the code a little.

* fix: Change composer empty string behaviour

* feat: Add WidthSelector and migrate half_kata Kana

This adds width selector for all languages instead of tying it down
to only `KanaSelector`. As such `KanaSelector`'s `half_kata`' field
is obsolete.

* fix: Fix bug in composing logic

* fix: Implement width properly and remove half_kata

* refactor: Clean up JIS layout JSON

* fix: Change JIS punctuation to use width_selector

* Improve half width implementation / Clean-up code base

* fix: Remove Half-kata from kana switcher cycle.

* feat: Add char width keycodes and implementation

* feat: Add half-width forms to symbols/cjk layouts

* feat: Add char width switcher to CJK mod layouts

Icons are yet to be added, so the labels will be strings for now

* feat: Add half-width forms for symbols2/cjk layout

* chore: Add more appropriate CJK chars to symbols2

* feat: Add icons for character width switching.

Note that `ic_keyboard_char_width_full` and `ic_keyboard_char_width_half`
are just copies of `ic_keyboard_char_width_switcher` for now.

* feat: Add relevant entries to show char width icons

* chore: Update the character width pop up icons.

And rename the internal names so that they match up with kana_switcher.

* fix: Make char width swticher icon toggle instead

* fix: Make character width icons more consistent.

* chore: Remove reference to char_width_switcher icon

* test: Iest code for why the composer is not working

* test: Remove test code for KanaUnicode

This reverts commit f6ae545183.

* fix: Correct small kana association for E and U

* test: Remove test code for KanaUnicode

This reverts commit f6ae545183.

* fix: Don't add small sentinel on non small char.

* fix: Correct small ya entry in KanaUnicode

* feat: Make kana switcher icon toggle between modes

* fix: Update svg colors to fit with other vectors

* Update app/src/main/java/dev/patrickgold/florisboard/ime/text/TextInputManager.kt

Co-authored-by: Patrick Goldinger <patrick.goldinger@pm.me>

* chore: Fix author name

* chore: Fix author name in CJK numbers

* chore: Fix indentation on author field

Co-authored-by: Waelwindows <waelwindows@hotmail.com>
Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2021-08-22 21:02:55 +02:00
Patrick Goldinger
dc1c71a01d Vastly improve spell checker performance and caching
Additionally add support for multiple locales caching
2021-08-22 17:50:07 +02:00
Patrick Goldinger
b93b646d41 Improve spell checker internals, reduce setup calls 2021-08-22 17:50:07 +02:00
Patrick Goldinger
75354703ce Improve keyboard subtypes locale match for spell checker 2021-08-22 17:50:07 +02:00
Patrick Goldinger
7123f004e9 Fix candidates view showing for raw editors
Raw editors don't support composing input and suggestions hardly
make any sense, so the clipboard cursor row is shown instead.
2021-08-21 00:02:03 +02:00
Patrick Goldinger
3dac44d326 Re-add old suggestions implementation for stable track 2021-08-21 00:02:03 +02:00
Patrick Goldinger
76de7e5db9 Add Flictionary for en_US 2021-08-21 00:02:03 +02:00
Patrick Goldinger
95e0b3408d Fix delete word swipe for browser inputs 2021-08-20 21:42:53 +02:00
Patrick Goldinger
358440779f Fix crash when using delete swipe for raw input editors (#1014) 2021-08-20 21:42:53 +02:00
Patrick Goldinger
6518eebce7 Fix word alignment for delete_words_precisely swipe 2021-08-20 21:42:53 +02:00
Patrick Goldinger
e19df82147 Fix performance issues for large text areas 2021-08-20 21:42:53 +02:00
Patrick Goldinger
3ec3f90d9f Fix selection and composing state bugs in EditorInstance 2021-08-20 21:42:53 +02:00
Patrick Goldinger
85452eeb10 Fix UserDictionary locale string bug 2021-08-20 21:42:53 +02:00
Patrick Goldinger
e4520007ea Rework EditorInstance cached input and word detection logic 2021-08-20 21:42:53 +02:00
Patrick Goldinger
63b55a9560 Update ICU build repo status 2021-08-17 20:01:42 +02:00
Patrick Goldinger
4dbc1ca740 Update GitHub workflows to fetch submodules 2021-08-16 21:08:29 +02:00
Patrick Goldinger
06c585885e Move icu4c to separate repository
Preparation step to build ICU separately for F-Droid builds. Also the
main repo's stats are now not polluted again from the sheer massive
size of ICU.
2021-08-16 21:08:29 +02:00
Patrick Goldinger
5bede68a82 Release v0.3.13-beta09 2021-08-15 21:34:45 +02:00
Patrick Goldinger
1a83456d77 Update feature roadmap of FlorisBoard 2021-08-15 21:26:14 +02:00
Patrick Goldinger
58d8ce96d9 Update translations from Crowdin 2021-08-15 12:15:32 +02:00
Patrick Goldinger
5aec281e87 Fix Smartbar Cut/Copy buttons limited to few characters (#1146) 2021-08-15 12:01:52 +02:00
Patrick Goldinger
bcbf561887 Fix popup merge bug for group assigned keys (#1028) 2021-08-14 18:43:11 +02:00
Waelwindows
813f300a15 Adjust Arabic popups for main forms and remove nums (#1087)
This commit makes the most common popups the main ones which should
allow Arabic sub-layout users to use FlorisBoard's smart popup feature.
2021-08-14 11:49:56 +02:00
Patrick Goldinger
a356585cf8 Fix 5+1 keyboard layout bug (#1100) 2021-08-14 01:32:52 +02:00
dvrnynr
689881f981 Remove popups not related to Turkish 2021-08-13 23:01:31 +02:00
Patrick Goldinger
d473369f37 Improve haptic feedback UI and internal logic 2021-08-13 22:59:43 +02:00
Patrick Goldinger
5fcd605b7d Possibly fix repeating delete key 2021-08-13 20:04:25 +02:00
Patrick Goldinger
2ea9dfee60 Fix theme editor preview looking distorted (#1136) 2021-08-13 18:56:40 +02:00
Patrick Goldinger
07ad6820cc Merge pull request #1142 from florisboard/input-feedback-manager
Rework audio and haptic feedback of FlorisBoard
2021-08-12 12:31:32 +02:00
Patrick Goldinger
1c8523c6dd Adjust input feedback feature toggle internals 2021-08-12 12:14:07 +02:00
Patrick Goldinger
84f682aaa7 Add new InputFeedbackManager 2021-08-08 11:57:05 +02:00
Patrick Goldinger
efc03a90b5 Remove jcenter repository / Remove dependency update task 2021-08-08 11:43:02 +02:00
Patrick Goldinger
8f3562a0c8 Add alternative numpad with PC arrangement of digits (#1132) 2021-08-06 10:04:49 +02:00
Patrick Goldinger
b15f7f68ae Remove AssetRef and AssetSource 2021-08-06 00:22:24 +02:00
Patrick Goldinger
b646b3095b Rework code base to use FlorisRef instead of AssetRef 2021-08-06 00:22:24 +02:00
Patrick Goldinger
261ea5db2e Rename v0.4.0 milestone to v0.3.x 2021-08-04 23:32:56 +02:00
Patrick Goldinger
ff93377459 Release v0.3.13-beta08 2021-08-04 00:34:40 +02:00
Patrick Goldinger
f90befdfbe Fix crash after rebooting in clipboard manager (#1097) 2021-08-04 00:21:03 +02:00
Patrick Goldinger
d490d6d457 Update translations from Crowdin 2021-08-03 23:36:22 +02:00
Patrick Goldinger
3fdaa448af Merge pull request #1128 from Glitchy-Tozier/patch-2
Update question.md
2021-08-03 21:29:26 +02:00
Patrick Goldinger
7f88643361 Merge pull request #1127 from Glitchy-Tozier/patch-1
Update feature_request.md
2021-08-03 21:28:44 +02:00
Glitchy-Tozier
55dc817843 Update question.md 2021-08-03 21:07:18 +02:00
Glitchy-Tozier
6e2969d8a6 Update feature_request.md 2021-08-03 21:04:10 +02:00
Patrick Goldinger
9a146ba2f0 Fix crash in Settings when layout is selected but not installed 2021-08-03 21:01:06 +02:00
Patrick Goldinger
5f224806e2 Merge pull request #1126 from X-yl/master
Make sure to clone images in clipboard history
2021-08-03 20:22:33 +02:00
x-yl
77f048abda Make sure to clone images in clipboard history
Looks like I forgot to clone images when the internal clipboard is off
but the clipboard history is still on. We have to own the items in the
clipboard history since authorization to read them is temporary.
2021-08-03 11:50:43 +04:00
Patrick Goldinger
e45efc08a5 Fix gesture velocity threshold (#1086) 2021-08-01 20:41:54 +02:00
Patrick Goldinger
d1dd91d5c4 Update GitHub workflow to use Java 11
Required by Gradle 7.0.0
2021-07-31 20:01:37 +02:00
Patrick Goldinger
106ef0c417 Upgrade Gradle to 7.0.0 and adapt new Gradle syntax 2021-07-30 21:01:32 +02:00
Patrick Goldinger
8989b7130a Fix View invalidation from incorrect thread (#1118) 2021-07-30 09:25:03 +02:00
Patrick Goldinger
0663708afb Possible fix for NaN crash (#1018) 2021-07-30 09:09:41 +02:00
Patrick Goldinger
d58aba71b8 Add FLorisLocale and String utility functions 2021-07-30 09:07:19 +02:00
Patrick Goldinger
9d364f99e2 Fix glide typing which was broken in beta07 2021-07-25 19:31:50 +02:00
Patrick Goldinger
edb62f0f38 Release v0.3.13-beta07 2021-07-25 10:20:51 +02:00
Patrick Goldinger
e771eaf0a4 Merge pull request #1101 from florisboard/lithuanian-layout-support
Add support for Lithuanian layout / popup mapping
2021-07-25 09:55:32 +02:00
Patrick Goldinger
199b5c9e67 Add support for Lithuanian layout / popup mapping (#1092) 2021-07-25 09:50:26 +02:00
Patrick Goldinger
5d121935d2 Merge pull request #1091 from florisboard/keyboard-data-rework
Keyboard data logic rework
2021-07-25 08:24:32 +02:00
Patrick Goldinger
ee0677b6e5 Fix double dotted circle for combining diacritical marks (#1089) 2021-07-24 00:12:08 +02:00
Patrick Goldinger
11325e99c4 Update turkish layout and popups to fix the capital I with dot bug 2021-07-23 23:54:55 +02:00
Patrick Goldinger
fc5a6b5af3 Rework internal key data logic
This allows for selectors to be used within popups as well. Is also the solid foundation for further development with emojis and other keyboards than the text keyboard.
2021-07-23 23:54:14 +02:00
Patrick Goldinger
65d17ceea3 Fix feature roadmap text in README (#1081) 2021-07-22 09:12:17 +02:00
Patrick Goldinger
8a57ada148 Merge pull request #1082 from florisboard/spelling3
Spell checker Part 3: APK size reduction
2021-07-22 08:56:42 +02:00
Patrick Goldinger
82e07b4de3 Re-packagae ICU data file as arch-independent data archive
Re-add break iteration because it is needed for spelling corrections
2021-07-21 00:46:17 +02:00
Patrick Goldinger
6ca5645656 Remove Nuspell Dictionary Finder / Remove glob.h port 2021-07-19 23:05:30 +02:00
Patrick Goldinger
a75ff21305 Optimize ICU data feature filter and reduce used ICU headers
APK size is now at ~26MB, further improvements with .dat file possible
2021-07-18 23:33:53 +02:00
Patrick Goldinger
a7b00494e5 Fix Nuspell license / Remove Nuspell main.cxx (unused) 2021-07-18 23:32:04 +02:00
Patrick Goldinger
a0de409878 Release v0.3.13-beta06 2021-07-15 21:29:13 +02:00
Patrick Goldinger
3f0944906d Merge pull request #1069 from florisboard/spelling2
Spell checker Part 2: Bug fixes, feedback incorporation etc.
2021-07-15 20:22:44 +02:00
Patrick Goldinger
79ef5445a1 Fix dictionaries with legacy encodings crashing the app (#1064)
Especially Cyrillic (ISO8859-7)
2021-07-15 18:10:58 +02:00
Patrick Goldinger
dea2795499 Fix Czech dictionary import failing for XPI archives (#1064) 2021-07-15 17:31:17 +02:00
Patrick Goldinger
650e4fb3a9 Fix FreeOffice link not working for some locales (#1064) 2021-07-14 21:14:22 +02:00
Patrick Goldinger
29a630dcd1 Fix importer not detecting license for some Mozilla XPI files (#1064) 2021-07-14 20:47:02 +02:00
Patrick Goldinger
7733ea0c02 Merge pull request #1021 from empratyush/master
added support for direct boot
2021-07-14 20:34:29 +02:00
Pratyush
3d13d65c52 added support for direct boot 2021-07-14 22:34:07 +05:30
Patrick Goldinger
575058550a Fix auto capitalization pref incorrectly labeled (#1064) 2021-07-14 18:55:55 +02:00
Patrick Goldinger
ad3e3cb7ec Release v0.3.13-beta05 2021-07-12 20:01:19 +02:00
Patrick Goldinger
e24ca7ca4a Update translations from Crowdin 2021-07-12 19:33:49 +02:00
Patrick Goldinger
1b6d8c8f6d Merge pull request #1061 from GoRaN909/patch-6
Update kurdish_kurmanci.json
2021-07-12 19:22:25 +02:00
Patrick Goldinger
27e172cbe3 Merge pull request #1063 from florisboard/icu-header-fix
Extend build script to remove unused ICU header files
2021-07-12 19:03:19 +02:00
Patrick Goldinger
e40c720f99 Extend build script to remove unused ICU header files
Realized they are quite a lot lol
2021-07-12 18:48:48 +02:00
GoRaN
c8d7071741 Update kurdish_kurmanci.json
Replaecd none Kurmanci character "ı" by the correct one latin letter "i"
2021-07-10 22:22:58 +03:00
Patrick Goldinger
5c2154253d Merge pull request #1015 from jeremiah-miller/optimized-swype-layouts
Add keyboard layouts optimized for swype input
2021-07-10 20:46:00 +02:00
Patrick Goldinger
3c79cca77c Fix cut off hints in borderless themes (#1049) 2021-07-10 19:53:54 +02:00
Patrick Goldinger
65c0ab724f Merge pull request #1011 from X-yl/improvements
Code cleanup + some polish
2021-07-10 19:17:49 +02:00
Patrick Goldinger
d5d259e13e Merge pull request #1052 from florisboard/spelling
Add experimental spell checker & extension support
2021-07-10 19:06:55 +02:00
Patrick Goldinger
691d3929eb Prepare spell checker for experimental release on beta 2021-07-10 19:03:36 +02:00
Patrick Goldinger
57b3b7b5d7 Add spelling correction cache 2021-07-10 17:55:07 +02:00
Patrick Goldinger
1582c1a3cf Re-package ICU lib to reduce APK size a bit 2021-07-10 16:52:55 +02:00
Patrick Goldinger
e22fe940c1 Merge pull request #1057 from Luensche/patch-1
Link files in CONTRIBUTING.md
2021-07-10 02:53:44 +02:00
Björn Engel
7f19892444 Link files in CONTRIBUTING.md 2021-07-09 08:44:46 +02:00
Patrick Goldinger
123a016ec0 Raise import limit from 20 to 24 MiB 2021-07-08 01:27:41 +02:00
Patrick Goldinger
5b6dcb3bc4 Fix some issues with manual import 2021-07-08 01:15:45 +02:00
Patrick Goldinger
8d71200b66 Add manual aff/dic import 2021-07-07 21:10:03 +02:00
Patrick Goldinger
6d333d2b40 Remove language debug output code 2021-07-07 03:47:42 +02:00
Patrick Goldinger
baacfd4469 Rework data filters, add more debug logging
(For investigating crashes for some dictionary files)
2021-07-07 03:44:53 +02:00
Patrick Goldinger
e8925ce697 Add ICU data filter (reduce data library size by 10MB / arch) 2021-07-06 03:18:25 +02:00
Patrick Goldinger
e40c2a6736 Re-add ICU as git submodule
No more 2.5mil LOC added lol
2021-07-05 19:36:18 +02:00
x-yl
b9518dc92b Cache ideal gesture lengths 2021-07-05 11:24:47 +04:00
x-yl
47f26f2336 Make gesture trail time based 2021-07-05 11:24:47 +04:00
Patrick Goldinger
fbc8d98209 Add user dictionary lookup for spell checking 2021-07-03 20:52:15 +02:00
Patrick Goldinger
27aeda8921 Implement suggestions limit / Fix initial indexing bug 2021-07-03 12:29:38 +02:00
Patrick Goldinger
4c2e642a85 Temporarily disable x86/x86_64 support to reduce APK size 2021-07-01 21:33:18 +02:00
Patrick Goldinger
f8995827f6 Raise max spelling dict size limit from 6MiB to 16MiB 2021-07-01 20:40:34 +02:00
Patrick Goldinger
d7593d12f2 Remove Home tab current-word paragraph 2021-07-01 20:38:24 +02:00
Patrick Goldinger
cd471a8323 Update README.md and open source licenses 2021-07-01 19:26:42 +02:00
Patrick Goldinger
9ad962c7d0 Remove unused flict binary files 2021-07-01 19:18:01 +02:00
Patrick Goldinger
b4e16ca445 Remove hunspell library 2021-07-01 19:06:46 +02:00
Patrick Goldinger
c2269fe23d Fix nuspell initialization error 2021-07-01 19:04:55 +02:00
Patrick Goldinger
d720435945 Add nuspell library 2021-07-01 18:47:30 +02:00
Patrick Goldinger
e33b0d39f9 Add external glob implementation 2021-07-01 18:45:43 +02:00
Patrick Goldinger
bbf3fb96be Add pre-compiled ICU library files 2021-07-01 18:44:59 +02:00
Patrick Goldinger
09567234cd Add ICU4C library
Frickin finally, took me waaaay to long to add.
If there just was an NDK ICU library wrapper, this could have saved
me 4 days of work...
2021-07-01 17:19:41 +02:00
Patrick Goldinger
1c2179fc50 Fix UI theme/state bugs in the spelling activity 2021-06-25 19:03:08 +02:00
Patrick Goldinger
c7fff5d9e4 Add support for Firefox XPI dictionaries 2021-06-25 18:19:55 +02:00
Patrick Goldinger
25badd6c2e Add dictionary delete option 2021-06-25 17:08:00 +02:00
Patrick Goldinger
97fb7b9427 Fix some bugs in the JNI side of spellchecking 2021-06-25 16:24:54 +02:00
Patrick Goldinger
f9b1aba27d Add spelling extension / Fix spelling service 2021-06-25 03:42:34 +02:00
Patrick Goldinger
aa0b9acabc Add JNI/Java direct string passing implementation 2021-06-25 03:41:54 +02:00
Patrick Goldinger
67b3ae5170 Add JNI logging utils 2021-06-25 03:41:04 +02:00
Patrick Goldinger
7d796ebdb3 Add spelling dictionary indexer 2021-06-24 18:16:38 +02:00
Patrick Goldinger
5737e68b8f Make FlorisApplication crash loop safe 2021-06-24 18:15:49 +02:00
Patrick Goldinger
211019b78b Add FlorisRef unit test 2021-06-24 16:53:55 +02:00
Patrick Goldinger
1db6676c45 Add extension load/write support, improve FlorisRef 2021-06-22 19:31:51 +02:00
Patrick Goldinger
da7ae028bf Add interface for extension packages 2021-06-18 03:40:47 +02:00
Patrick Goldinger
f3aa739e72 Introduce new 'FlorisRef' class as replacement for 'AssetRef' 2021-06-17 16:40:06 +02:00
Patrick Goldinger
7f09d1a1d1 Rename package 'extension' to 'res' and move out of 'ime' 2021-06-17 14:52:27 +02:00
Patrick Goldinger
5a8483e78d Add import dictionary basic implementation 2021-06-16 21:32:49 +02:00
Jeremiah Miller
841d15056d Rename DGHP to Sangaline 2021-06-14 08:32:02 -07:00
Patrick Goldinger
09cdd0fff0 Add basic import dictionary UI sheet 2021-06-12 19:52:48 +02:00
Patrick Goldinger
ebb677d203 Add overview page for spell checker prefs 2021-06-12 12:28:21 +02:00
Patrick Goldinger
cf3236f57f Remove preferences cache
SharedPreferences already caches the preference values + the cache causes
state bugs.
2021-06-11 16:27:31 +02:00
bbgun7
3bd8169600 Add keyboard layouts optimized for swipe input 2021-06-10 10:11:56 -07:00
Patrick Goldinger
f9aaec6020 Add initial spelling manager activity 2021-06-10 16:29:44 +02:00
Patrick Goldinger
bb2cc995d6 Add JNI string utils 2021-06-10 16:29:11 +02:00
Patrick Goldinger
a65aaa5f95 Add spelling manager / config 2021-06-10 16:28:50 +02:00
Patrick Goldinger
92b9a978dc Add skeleton code for spell-checker implementation 2021-06-08 04:22:47 +02:00
Patrick Goldinger
5f2729e065 Add Hunspell ported code 2021-06-08 04:22:02 +02:00
Patrick Goldinger
37bb4cea43 Release v0.3.13-beta04 2021-06-08 00:05:36 +02:00
Patrick Goldinger
79d608feea Update translations from Crowdin 2021-06-07 23:53:37 +02:00
Patrick Goldinger
54573de3e3 Merge pull request #1006 from Luensche/move_clipboard_item_to_begin
Move new clipboard items with the same content to the beginning
2021-06-07 23:51:35 +02:00
x-yl
a2243b8825 Use coroutines and improve image loading for clipboard
Sorry, didn't know we were using coroutines when I first wrote this
code!
2021-06-07 17:50:21 +04:00
Björn Engel
2fba2d3b4a Do not compare images 2021-06-07 15:49:05 +02:00
Björn Engel
fd0cbbdcb1 Move new clipboard items with the same content to the beginning, closes #991 2021-06-07 14:08:39 +02:00
Patrick Goldinger
b6e3deedf4 Add default system subtype for proper display in system settings 2021-06-04 19:39:02 +02:00
Patrick Goldinger
4c74bf1b4a Fix glide typing not working for caps/caps-lock 2021-06-04 19:19:53 +02:00
Patrick Goldinger
2a4e3c8c58 Merge pull request #982 from dessalines/halmak
Add the Halmak keyboard layout
2021-06-04 18:56:48 +02:00
Patrick Goldinger
e34e5b4260 Merge pull request #992 from florisboard/rework-textkeyboard-rendering
Rework TextKeyboard rendering
2021-06-04 18:53:42 +02:00
Patrick Goldinger
ae2df7dfe4 Fix Smartbar incorrectly not updating selection-specific keys 2021-06-04 18:49:48 +02:00
Patrick Goldinger
1b3d0a5cf2 Fix touch logic incorrect pointer and capacity issues 2021-06-04 18:31:05 +02:00
Patrick Goldinger
4c94329071 Fix glide typing not correctly initialized at startup 2021-06-04 17:13:16 +02:00
Patrick Goldinger
6ffcf2f865 Fix keyboard preview in Settings 2021-06-04 05:43:42 +02:00
Patrick Goldinger
e2c9a66880 Fix further state bugs 2021-06-04 05:12:38 +02:00
Patrick Goldinger
e9bc25ebc7 Improve extended popup rendering performance 2021-06-04 03:53:03 +02:00
Patrick Goldinger
6379e63669 Rework TextKeyboard rendering 2021-06-04 03:31:46 +02:00
Patrick Goldinger
70a0763e7f Merge pull request #981 from florisboard/fix-keyboard-state-bug
Fix keyboard state bug for the active mode
2021-06-04 03:29:47 +02:00
Dessalines
863080e6ce Remove slash from bottom row. 2021-06-03 14:46:55 -04:00
Patrick Goldinger
3ef454b8bd Fix Smartbar not showing sometimes (#987) 2021-06-03 17:43:23 +02:00
Patrick Goldinger
2bbdfc71d0 Rework UI initialization and reduce duplicate state changes 2021-06-03 15:42:28 +02:00
Patrick Goldinger
d1c783dde1 Fix keyboard state bug for the active mode 2021-06-02 17:51:18 +02:00
Dessalines
644da67601 Add the Halmak keyboard layout 2021-06-01 21:39:26 -04:00
Patrick Goldinger
b8d99efd29 Merge pull request #977 from GoRaN909/patch-5
Update kurdish.json
2021-06-01 01:15:58 +02:00
GoRaN
4067d92a44 Update kurdish.json
Added stretched button (Kashida) to support all Kurdish layouts.
2021-06-01 01:06:00 +03:00
Patrick Goldinger
13a17f3a6b Merge pull request #974 from GoRaN909/patch-2
Update ckb.json
2021-05-31 23:50:01 +02:00
Patrick Goldinger
57c679e500 Merge pull request #975 from GoRaN909/patch-3
Update kurdish_standard.json
2021-05-31 23:41:42 +02:00
Patrick Goldinger
f70f45dab6 Merge pull request #973 from GoRaN909/patch-1
Update kurdish.json
2021-05-31 23:37:41 +02:00
GoRaN
8d8f723d66 Update kurdish_standard.json
popup characters added
2021-06-01 00:29:23 +03:00
GoRaN
7c3c6a7ad7 Update ckb.json
Added popup characters for letter (ح)
2021-06-01 00:24:18 +03:00
GoRaN
d7a1c9377a Update kurdish.json
Some changes of words position and corrections codes
2021-06-01 00:19:19 +03:00
Patrick Goldinger
2a317372b2 Release v0.3.13-beta03 2021-05-31 20:18:43 +02:00
Patrick Goldinger
402f7bd267 Update translations from Crowdin 2021-05-31 20:02:33 +02:00
Patrick Goldinger
e8eb6e3068 Fix emoticon layout missing (#950) 2021-05-31 19:17:38 +02:00
Patrick Goldinger
3dd9c45777 Fix crash when using delete left swipe in raw editors (#967) 2021-05-31 18:30:24 +02:00
Patrick Goldinger
7255229361 Merge pull request #966 from florisboard/major-input-logic-overhaul
Major input logic overhaul
2021-05-31 17:52:19 +02:00
Patrick Goldinger
4d2fa29886 Fix IME checking utility not using new ID 2021-05-31 12:46:14 +02:00
Patrick Goldinger
ef90faf98b Merge pull request #963 from Hayleia/composingFix
Fix getting composer from name
2021-05-31 06:11:38 +02:00
Patrick Goldinger
82caa8365e Fix glide trail stuck after initial touch down 2021-05-31 05:16:20 +02:00
Patrick Goldinger
391257e9e9 Re-add simple key shadows 2021-05-31 05:04:02 +02:00
Patrick Goldinger
b082253167 Fix keys not registered correctly (#953) 2021-05-31 03:59:31 +02:00
Patrick Goldinger
8df701e3fe Adapt input view to new keyboard state register 2021-05-31 03:56:08 +02:00
Patrick Goldinger
9f232f5dbf Add new keyboard state register 2021-05-31 03:55:05 +02:00
Hayleia
7017726dcb Fix getting composer from name
also use an available constant when possible rather than a hardcoded string
2021-05-30 11:05:28 +02:00
Patrick Goldinger
b48ca8fd1e Restructure the package structure 2021-05-28 21:04:27 +02:00
Patrick Goldinger
88d5e15a5e Introduce TextKeyboardState 2021-05-28 03:36:54 +02:00
Patrick Goldinger
e9537cbd1d Merge pull request #947 from yashpalgoyal1304/devanagari-fix
Fixed Devanagari Codes
2021-05-26 23:32:10 +02:00
yashpalgoyal1304
8e216bf3ac Fixed Devanagari Codes 2021-05-27 02:37:14 +05:30
Patrick Goldinger
63352cc615 Improve logic and rendering performance a bit 2021-05-26 17:12:28 +02:00
Patrick Goldinger
e9e2563739 Release v0.3.13-beta02 2021-05-26 01:26:33 +02:00
Patrick Goldinger
87bb098445 Fix batch level preventing cached input from updating 2021-05-26 01:26:17 +02:00
Patrick Goldinger
da1944bedf Temporarily remove key shadow support (#943) 2021-05-26 01:09:50 +02:00
Patrick Goldinger
d4a92e0d46 Merge pull request #942 from florisboard/new-touch-logic
Introduce new touch logic to TextKeyboardView
2021-05-26 00:46:31 +02:00
yashpalgoyal1304
0fa6c1f235 Added Indic Numerals (#940)
* Indic Devanagari Numeric

* Fixed name and label

* Fixed file name

* Added indic scripts numerals
2021-05-26 00:43:21 +02:00
Patrick Goldinger
260b1ba5ca Improve touch logic 2021-05-26 00:19:35 +02:00
Patrick Goldinger
f0799a6a0e Rework text keyboard view touch logic 2021-05-25 20:48:17 +02:00
Patrick Goldinger
155238946a Merge pull request #866 from Hayleia/composing1
Composing input method (and Korean as the first subject)
2021-05-24 15:30:06 +02:00
Patrick Goldinger
45f91cf40c Merge pull request #928 from ostrya/fix-hint-merge
fix hint merge logic (#872)
2021-05-23 16:27:22 +02:00
Patrick Goldinger
94f5b56b6a Possibly fix key shadow performance 2021-05-23 16:19:28 +02:00
Kai Helbig
46db467073 fix hint merge logic (#872)
The merge of the hints depends on the underlying main key. Especially,
hints should only be shown for character keys, and if the hint is
identical to the main key, it should not be added at all. Since the
actual main key is only evaluated on demand with TextKey#compute, all
corresponding hint merge logic needs to be moved there too.
2021-05-23 12:16:33 +02:00
Patrick Goldinger
17dde536d9 Fix one-handed panel not correctly measuring sometimes (#896) 2021-05-23 03:50:17 +02:00
Patrick Goldinger
be67bf4b84 Fix Smartbar number row bugs in password fields (#905) 2021-05-23 03:19:17 +02:00
Patrick Goldinger
8f142548fe Merge pull request #920 from tsiflimagas/default-popup-fix-greek
Fix the default popup for some letters
2021-05-23 02:49:28 +02:00
Kostas Giapis
a68f439f39 Enforce the main popup character 2021-05-22 23:01:04 +03:00
Patrick Goldinger
7a0892bb36 Fix space bar text too large (#862) 2021-05-22 20:16:55 +02:00
Patrick Goldinger
8457390156 Fix keys not showing a shadow (#901, #921) 2021-05-22 19:54:12 +02:00
Hayleia
72be3898c1 move local function out, and fix firefox url bar? 2021-05-22 19:47:30 +02:00
Kostas Giapis
d35bf5af63 Fix the default popup for some letters 2021-05-22 16:23:13 +03:00
Patrick Goldinger
04d3af6484 Merge pull request #908 from Luensche/copy-versionstring
Copy version string to clipboard on click on the version
2021-05-22 12:59:46 +02:00
Björn Engel
26920e4a98 Move the toast outside of if 2021-05-20 14:44:23 +02:00
Björn Engel
7419966b51 Create ripple for click on head_area 2021-05-20 14:37:17 +02:00
Björn Engel
58b832c6c3 Add new area for long pressing and change to onLongClickListener 2021-05-20 10:20:49 +02:00
Hayleia
99f2ec1879 deprecated methods 2021-05-19 11:47:28 +02:00
Hayleia
4249f9ef86 add author 2021-05-19 11:39:13 +02:00
Hayleia
60107ae299 useless "public" keyword 2021-05-19 09:11:07 +02:00
Hayleia
6a95a865fa one spinner per linear layout 2021-05-19 09:09:14 +02:00
Hayleia
9e32589af5 style: space before colon 2021-05-19 09:04:30 +02:00
Hayleia
6133e225e1 add author 2021-05-19 09:03:34 +02:00
Hayleia
348c143d92 use case_selector to specify shift/non-shift characters 2021-05-19 08:59:52 +02:00
Hayleia
ce00785ffe Revert "support specifying uppercase and lowercase separately in json"
This reverts commit 1715e5ddfa.

Conflicts:
	app/src/main/java/dev/patrickgold/florisboard/ime/extension/AssetManager.kt
2021-05-19 08:24:51 +02:00
Hayleia
78cdce750d style in json 2021-05-19 08:22:25 +02:00
Patrick Goldinger
f3f95ae282 Fix crash loops from occurring after a crash (#910) 2021-05-19 01:33:53 +02:00
Björn Engel
018885eb30 Copy version string to clipboard on click on the version 2021-05-18 15:18:01 +02:00
Patrick Goldinger
c6c8a76dd6 Fix user dictionary max size (#898) 2021-05-18 01:51:49 +02:00
Patrick Goldinger
3cae8b7230 Release v0.3.13-beta01 2021-05-17 20:40:39 +02:00
Patrick Goldinger
814c8de0c2 Update translations from Crowdin 2021-05-17 20:30:37 +02:00
Patrick Goldinger
32fe175b48 Small code base improvements 2021-05-17 20:27:32 +02:00
Patrick Goldinger
b901f6de8d Fix space bar gestures for non-repeating actions (#886) 2021-05-17 20:13:50 +02:00
Patrick Goldinger
fe9ba3246c Merge pull request #884 from debnone/patch-1
Fix hebrew characters
2021-05-17 19:52:32 +02:00
Patrick Goldinger
71a39f0fc1 Merge pull request #876 from florisboard/android11-autofill-api
Add support for Android 11's Autofill API
2021-05-17 10:56:31 +02:00
Patrick Goldinger
f7556898e1 Document inline suggestions code / Fix some inconsistencies 2021-05-17 03:01:46 +02:00
Patrick Goldinger
578539f5d0 Add inline suggestions theme support 2021-05-17 02:04:52 +02:00
debnone
7c28c7fbea Fix hebrew characters
fixed bottom half layout its was reversed and incorrect.
2021-05-15 23:17:28 +03:00
Patrick Goldinger
88bcadff81 Fix inline suggestions state bugs and improve logic 2021-05-15 04:50:49 +02:00
Patrick Goldinger
25e25dfbf0 Add support for Android 11's Autofill API 2021-05-15 03:23:51 +02:00
Patrick Goldinger
ba3dc0178d Merge pull request #875 from X-yl/glide-number-row
Reinitialize pruner when layout changes
2021-05-15 03:20:23 +02:00
x-yl
91e7f424bb Reinitialize pruner when layout changes
Closes #854
2021-05-14 22:16:10 +04:00
Hayleia
b89f791eb0 rename south korean layout 2021-05-14 07:51:51 +02:00
Hayleia
ad3a0425ab fix config.json after merge 2021-05-14 07:51:40 +02:00
Hayleia
7cf52ecf3e Merge branch 'master' of https://github.com/florisboard/florisboard into composing1 2021-05-14 07:35:56 +02:00
Patrick Goldinger
b1ef18f4fd Improve C++ code base 2021-05-14 00:30:19 +02:00
Hayleia
b74af5bbe9 manage old subtype configurations 2021-05-13 20:48:00 +02:00
Hayleia
b8aa4bbfc4 fix subtype equals and hashcode (and javadoc) 2021-05-13 20:16:50 +02:00
Hayleia
e024ac9272 fix default subtype crash with no subtype declared 2021-05-13 20:03:47 +02:00
Hayleia
c5fa027a8e move composer dropdown in add/edit subtype dialog 2021-05-13 16:39:32 +02:00
Hayleia
b6ec2b25be Merge branch 'master' of https://github.com/florisboard/florisboard into composing1 2021-05-13 16:25:13 +02:00
Patrick Goldinger
a756b59c60 Merge pull request #606 from ostrya/improved-hints
Merge hints more flexibly
2021-05-13 14:04:08 +02:00
Patrick Goldinger
8687ce55ed Merge pull request #527 from ostrya/neo2-layout
Neo2 layout
2021-05-13 14:04:01 +02:00
ostrya
1ac6985dd0 Allow merging popups of hints #618
A new configuration was introduced to allow showing the popup keys of
the hint keys of a given character key in addition the character key's
normal popup keys.

The previous change allowed both number and symbol hint to be merged at
the same time, with the number hint being shown as popup only.
Therefore, when allowing the popups of the hint key to be shown as
popups, both hint keys need to be taken into account.

To ensure this and also take into account the separate key hint
settings for number and symbol hints, the MutablePopupSet was extended
to contain both hint keys as well as both lists of popup keys in
addition to the existing main key and relevant list. The logic that
chooses the key prioritization when rendering the popup has now also
been moved from the PopupManager to the PopupSet.

For performance, the prioritized collection of popup keys is generated
once and then cached for a given configuration in a new PopupKeys
object. This class now has the collection semantics previously present
in the PopupSet class. Different from before, the PopupKeys object now
explicitly contains the prioritized keys (those that should be shown
directly above the original key for easier reach) in order of priority.

The PopupManager now only needs to take the number of prioritized keys
(maximum 3: main key, number hint, symbol hint) when calculating the
key positions in the popup.
2021-05-13 11:52:53 +02:00
Patrick Goldinger
986b4a878f Merge pull request #858 from florisboard/java-jni-basics
Set up base for Kotlin/C++ interoperability
2021-05-13 00:33:10 +02:00
Patrick Goldinger
1ef38fe7f3 Fix GitHub workflows not setting up cmake 2021-05-12 20:31:34 +02:00
Patrick Goldinger
bcad0af35e Finalize base implementation for SuggestionList 2021-05-12 19:29:21 +02:00
Patrick Goldinger
b5b89fde4f Add native instance wrapper interface / Clean up code 2021-05-12 02:25:41 +02:00
Patrick Goldinger
be1fc710ed Set up base for Kotlin/C++ interoperability 2021-05-12 00:40:53 +02:00
Kai Helbig
aa55fd3070 Directly merge numeric and symbolic hints
Co-authored-by: Patrick Goldinger <patrick.goldinger@pm.me>
2021-05-11 23:58:31 +02:00
ostrya
a132462466 Merge hints more flexibly
To allow symbol layouts with the same or more rows as the character
layout to be hinted more consistently, the hinting of the numeric row
is split from the rest of the symbol layout.

If enabled, the numeric row hinting is always done in the first row.
If an actual numeric row is enabled as well, no additional numeric
hints will be shown (as they are only added to CHARACTER type keys).

The symbol hinting is now bottom-aligned: hints from the last symbol
row are shown in the last character row.

If the symbol layout (excluding numeric row) has at least the same
number of rows as the character layout, the numerical row is disabled
and numerical hinting is enabled, the symbol keys take precedence. The
numeric hints are instead added as additional popup characters.
2021-05-11 23:58:25 +02:00
Hayleia
df393ff607 composers can be specified in config.json
no compatibility with previous settings, need to update the regex
2021-05-11 19:03:30 +02:00
Patrick Goldinger
64040f0407 Release v0.3.12 2021-05-10 15:47:05 +02:00
Patrick Goldinger
0c1abdd507 Merge pull request #850 from X-yl/master
Stop glide suggestions disappearing and remove the redundant first suggestion
2021-05-10 15:28:21 +02:00
Patrick Goldinger
53594e3343 Fix glide logic not triggering when shift/caps is active (#847) 2021-05-10 15:22:45 +02:00
X-yl
c6c06b87c5 Stop glide suggestions disappearing and remove redundant first option 2021-05-10 16:52:50 +04:00
Patrick Goldinger
ae6eb5d72d Release v0.3.11 2021-05-10 00:06:07 +02:00
Patrick Goldinger
bbce53fdf4 Update README and open-source licenses 2021-05-09 20:45:33 +02:00
Patrick Goldinger
fdd7e60c1d Release v0.3.11-beta06 2021-05-09 16:49:10 +02:00
Patrick Goldinger
3b9a489d5c Update translations from Crowdin 2021-05-09 16:43:35 +02:00
Patrick Goldinger
de40ccb759 Fix KeyboardView null issue and rename Preferences (#785) 2021-05-09 16:30:52 +02:00
Patrick Goldinger
a04d584402 Remove unused dimension updating in glide typing manager 2021-05-09 15:09:51 +02:00
Patrick Goldinger
a14a6a798b Merge pull request #843 from X-yl/main-thread-clip
Set up clipboard history view on main thread
2021-05-09 14:57:42 +02:00
Patrick Goldinger
636d329dba Merge pull request #842 from X-yl/quick-glide-fix
Make normalizeBoxSide have a non-zero minimum longestSide
2021-05-09 14:56:16 +02:00
X-yl
d1e97dac57 Setup clipboard history on main thread.
No idea why it was on a different thread before? Think I just copied it
like that from MediaInputManager. Oops.
2021-05-09 16:36:40 +04:00
X-yl
41fbca8f65 Make normalizeBoxSide have a minimum longestSide
If it is zero, as sometimes happens because the dictionary contains
"words" like "yyy" and "ggg", it causes NaN issues.
2021-05-09 16:22:51 +04:00
Patrick Goldinger
535b48e5b4 Re-implement glide typing for new keyboard view 2021-05-09 13:53:27 +02:00
Patrick Goldinger
d3e8d35e5d Release v0.3.11-beta05 2021-05-08 15:40:58 +02:00
Patrick Goldinger
da8073141e Fix dynamic text size infinite loop bug (#825) 2021-05-08 15:35:16 +02:00
Patrick Goldinger
030665732a Merge pull request #817 from florisboard/user-dictionary
System / internal user dictionary
2021-05-08 11:22:32 +02:00
Patrick Goldinger
cc042dd77c Add input validation for user dictionary add/edit dialogs 2021-05-07 20:52:30 +02:00
Patrick Goldinger
773624769d Add shortcut support for user dictionary 2021-05-07 19:21:15 +02:00
Patrick Goldinger
0b1d0c74fe Fix query syntax issues for the system user dictionary 2021-05-07 04:22:17 +02:00
Patrick Goldinger
760d307478 Improve user dictionary UI 2021-05-07 04:01:47 +02:00
Patrick Goldinger
084c2abfc2 Add user dictionary manager UI for system and internal 2021-05-07 03:51:40 +02:00
Patrick Goldinger
df6b08024f Fix SQL user input causing crash 2021-05-06 19:04:36 +02:00
Patrick Goldinger
25498695ef Add basic UI wrapper for managing user dictionaries 2021-05-06 18:16:38 +02:00
Patrick Goldinger
5c81179d60 Add import/export backend logic for user dictionaries 2021-05-06 18:16:01 +02:00
Patrick Goldinger
58d150bb03 Update Kotlin to 1.5.0 2021-05-06 01:05:45 +02:00
Patrick Goldinger
2b1951ea5f Add internal and system user dictionary 2021-05-05 21:07:59 +02:00
Patrick Goldinger
5a5089c413 Fix AppCompat theme crash for Huawei devices (#799, #809) 2021-05-05 20:34:16 +02:00
Patrick Goldinger
dcd20e4b73 Add user dictionary preferences 2021-05-05 18:32:20 +02:00
Hayleia
88a6f436ef Merge branch 'master' of https://github.com/florisboard/florisboard into composing1 2021-05-05 10:02:17 +02:00
ostrya
ee8f44d816 Use new currency set mechanism 2021-05-04 20:52:53 +02:00
ostrya
0308ec355f Adapt to new layout rework 2021-05-04 20:44:57 +02:00
Patrick Goldinger
dfec1f3804 Release v0.3.11-beta04 2021-05-04 20:37:39 +02:00
Hayleia
3ac14f8a2a remove pointless reflection (going to use serialization anyways) 2021-05-04 20:16:23 +02:00
Hayleia
2b087b76dc korean double consonants and two vowels on shift key 2021-05-04 20:12:03 +02:00
Hayleia
1715e5ddfa support specifying uppercase and lowercase separately in json 2021-05-04 20:11:27 +02:00
Patrick Goldinger
1fffe7f6e5 Fix ؤ Arabic Letter Waw with Hamza Above not written correctly (#438) 2021-05-04 19:48:54 +02:00
Patrick Goldinger
862a6cc82a Fix font size multiplier and also scale drawables (#540) 2021-05-04 18:56:21 +02:00
Patrick Goldinger
068caaf09b Add schwa symbol (ə) in Italian extended popups (#693) 2021-05-04 18:04:20 +02:00
Patrick Goldinger
93fb6d6016 Fix English (US) store description being cut off in F-Droid (#709) 2021-05-04 17:55:25 +02:00
Patrick Goldinger
28f0657bd7 Improve and fix KeyboardIconSet (#778) 2021-05-04 17:46:06 +02:00
Patrick Goldinger
8c53c2a057 Fix Hungarian layout not containing special keys 2021-05-04 17:34:32 +02:00
Patrick Goldinger
6251fb2ef6 Fix bottom row keys not shifted in Dvorak layout (#805) 2021-05-04 17:07:50 +02:00
Patrick Goldinger
cba2b873b8 Add devtool overlay for heap memory usage 2021-05-04 16:55:14 +02:00
Patrick Goldinger
d7ee61f316 Merge pull request #718 from X-yl/emoji-key-mem
Recycle EmojiKeyViews to reduce memory usage
2021-05-04 15:17:00 +02:00
X-yl
cf309f43a4 Recycle EmojiKeyViews for 15%-20% memory savings
Instead of creating an EmojiKeyView for every emoji, you can use a
RecyclerView to only create the ones which are visible on screen, and
then reuse them later.
2021-05-04 09:48:31 +04:00
Hayleia
6cc17161a5 factor stuff 2021-05-03 21:00:04 +02:00
Patrick Goldinger
93acee778e Release v0.3.11-beta03 2021-05-03 20:52:30 +02:00
Patrick Goldinger
c7f2f31c99 Fix gestures (except space+shift) 2021-05-03 20:11:08 +02:00
Hayleia
5d1c20617b Merge branch 'master' of https://github.com/florisboard/florisboard into composing1 2021-05-03 19:22:23 +02:00
Hayleia
d9efa48c9c copy pasted code to compose texte with suggestions enabled too 2021-05-03 19:15:03 +02:00
Patrick Goldinger
ebb8837d8a Fix Double NaN crashes (#774, #790) 2021-05-03 15:47:55 +02:00
ostrya
dedd4cb7f0 Use custom modifier for symbol layer
To make the switch from character to symbol layer more consistent,
a neo specific symbol modifier layout was added. This also allows
overriding the comma and full stop with their layer 3 equivalents.
2021-05-02 17:06:07 +02:00
ostrya
42b147b656 Add neo/bone locale variant for better compatibility
The default de locale already defines a lot of extended popups which
do not match the Neo2 / Bone layout logic. Adding a locale variant
allows overriding those defaults.

As the Locale class does not support arbitrary country keys, the new
locale was chosen as a variant of de_DE with variant name "neobone".
There is no deep meaning in the name, it is only the concatenation of
neo and bone, and according to the Javadoc of Locale, a valid variant
must have either 5 to 8 characters or start with a number.
2021-05-02 17:06:06 +02:00
ostrya
47ce490d6c Initial attempt at Neo2 / Bone layout (#498)
* For now, only layers 1, 2 and 3 are supported.
* Layer 2 is reachable via caps, apart from number row, comma and full
  stop (which I think are easier to use if not affected by caps).
  Instead, the relevant characters are added as popups.
* Layer 3 is set up as a separate neo2 symbol / number row layer

The overall layout is kept as much as possible, with the following
exceptions:
* The number row contains only numbers and minus sign, while circumflex
  and grave accents are not included.
* To not overcrowd the layout and have the same number of keys for
  first and second row, the acute accent is not included as separate
  key but can be reached as additional popup to sharp s.
* Comma and full stop are not put between m and j (or z and k
  respectively), because the backspace takes up too much space for both
  keys to be put in this row.
* Also, having comma and full stop on the same height with the space
  key makes the layout more consistent with the existing layouts and
  the special usage as ~left and ~right keys.
2021-05-02 17:05:59 +02:00
Patrick Goldinger
f04f185034 Fix adaptive theme memory management (#763) 2021-05-02 12:17:35 +02:00
Hayleia
5563a1cadd merge compatibility 2021-05-01 20:30:24 +02:00
Hayleia
7beb2e5ef6 Merge branch 'master' of https://github.com/florisboard/florisboard into composing1 2021-05-01 19:22:19 +02:00
Patrick Goldinger
20de007d3b Add "Copied to system clipboard" toast to crash dialog (#724) 2021-05-01 12:20:56 +02:00
Patrick Goldinger
df01f6fe57 Fix theme manager buttons not wrapping (#777) 2021-05-01 11:51:15 +02:00
Patrick Goldinger
f9e6d7b09c Fix keyboard preview visual bugs (#776) 2021-05-01 11:51:15 +02:00
Hayleia
f00da13cba less kotlin warnings and slightly more usable code
still hardcoded korean composer for all layouts
but at least it's not instanciated at every keypress
2021-05-01 09:34:40 +02:00
Hayleia
bfed1747f7 better korean jsons 2021-05-01 09:19:59 +02:00
Patrick Goldinger
f8000d999f Release v0.3.11-beta02 2021-04-30 20:37:58 +02:00
Patrick Goldinger
0392d1a7f1 Update translations from Crowdin 2021-04-30 19:59:45 +02:00
another-sapiens
0be1f4beb9 Spanish Readme (#750)
* Create .keep

* Spanish Readme

* Delete .keep

* Create .keep

* Spanish Readme (for Beta)

* Delete .keep
2021-04-30 19:06:13 +02:00
Patrick Goldinger
87bba56a80 Merge pull request #769 from olLenz/improve-ime-activation
Improve ime activation
2021-04-30 18:59:30 +02:00
Patrick Goldinger
e5154533ae Merge pull request #734 from florisboard/layout-engine-rework
Layout engine rework
2021-04-30 18:51:16 +02:00
Patrick Goldinger
fd00c2fa4c Move abstract definitions to own namespace and document them 2021-04-30 18:36:34 +02:00
Patrick Goldinger
3de07c30c6 Re-implement key hints 2021-04-30 16:07:29 +02:00
Hayleia
abb4b104fa fix input being ignored sometimes? 2021-04-30 13:12:28 +02:00
Hayleia
b69b1caa72 Test Korean composition
currency is wrong
code is plugged at the wrong place
input is ignored sometimes
there is reflection for what seems to be no reason
I know, this is just a test and this will either be done again (properly) on another branch or discarded altogether
2021-04-30 07:31:32 +02:00
Patrick Goldinger
0a84c78740 Fix number row setting not correctly syncing (#730) 2021-04-30 02:44:30 +02:00
Patrick Goldinger
7f3f7a015b Fix minor issues 2021-04-30 02:15:49 +02:00
Patrick Goldinger
2899bd9234 Add support for multi-codepoint characters 2021-04-29 20:21:30 +02:00
Patrick Goldinger
90162b2eb5 Basic fix for emojis 2021-04-29 02:19:45 +02:00
Patrick Goldinger
a028abda65 Re-implement basic gestures 2021-04-29 01:47:34 +02:00
Patrick Goldinger
b7ed99ab7f Fix basic popup touch logic for TextKeyboardView 2021-04-28 18:49:29 +02:00
Patrick Goldinger
19bb15d006 Remove accidental URL paste of badge in README 2021-04-28 17:47:38 +02:00
Patrick Goldinger
4a005c6a3a Add Matrix chat badge in README (#587) 2021-04-28 17:41:11 +02:00
Patrick Goldinger
be6f7bcfc8 Merge pull request #764 from X-yl/master
Fix crash when copying from AOSP calculator
2021-04-28 05:03:45 +02:00
Patrick Goldinger
84b827d652 Fix currency slot popup bug 2021-04-28 04:34:17 +02:00
Patrick Goldinger
dd12de7b88 Adapt all layout files for new syntax 2021-04-28 04:27:53 +02:00
Patrick Goldinger
8641892b46 Re-implement functional extended popups for 'en' 2021-04-28 03:08:39 +02:00
Patrick Goldinger
ff109714f9 Document TextKeyboardIconSet and TextKeyboardCache 2021-04-28 02:23:39 +02:00
Patrick Goldinger
589f709fa2 Improve and fix TextKeyboardCache 2021-04-28 01:55:05 +02:00
Patrick Goldinger
920b2363d4 Re-add basic support for extended popups 2021-04-28 01:09:08 +02:00
Patrick Goldinger
2aa245ca1a Further improvements in performance 2021-04-27 02:14:04 +02:00
Patrick Goldinger
8305b9ac27 Fix some performance / memory issues 2021-04-26 20:52:04 +02:00
x-yl
b774a66b0c Fix crash when copying from AOSP calculator 2021-04-26 21:33:18 +04:00
Oliver Lenz
4d35245fe8 Check for a change of the input method via a broadcast receiver instead of using unreliable timeouts 2021-04-25 23:19:12 +02:00
Oliver Lenz
3f24913762 Move functions for checking if ime is enabled and selected into their own util class to reduce the size of the florisboard class 2021-04-25 23:16:53 +02:00
Patrick Goldinger
a0fd62ad45 Adapt more layouts to new syntax / Add locale label to space 2021-04-25 21:04:11 +02:00
Patrick Goldinger
efd5e62703 Improve evaluation process / Add enabled/visible states 2021-04-25 19:38:45 +02:00
Patrick Goldinger
c481a59e24 Fix layouting issues with positioning and text size 2021-04-24 20:15:42 +02:00
Patrick Goldinger
9f5eba3275 Re-add basic popups / Fix multiple popup bug (#513, #515) 2021-04-23 20:19:17 +02:00
Patrick Goldinger
3f0d3131aa Re-implement row margin 2021-04-22 19:27:02 +02:00
Patrick Goldinger
9d360f80c3 Auto-adjust visible height for enter and space when borderless (#676) 2021-04-22 19:08:04 +02:00
Patrick Goldinger
1d1a070b2b Adapt character modifier layouts to new layout syntax 2021-04-22 15:09:44 +02:00
Patrick Goldinger
ebe0e43641 Adapt other classes to new layout and asset logic 2021-04-22 15:04:14 +02:00
Patrick Goldinger
b99142d009 Fix media context issues 2021-04-22 15:03:09 +02:00
Patrick Goldinger
8077c440be Update SubtypeManager to new asset manager 2021-04-22 15:02:49 +02:00
Patrick Goldinger
64024101ba Introduce new layout logic 2021-04-22 15:01:37 +02:00
Patrick Goldinger
37a9445a64 Switch from Moshi to kotlinx.serialization 2021-04-22 14:59:38 +02:00
Patrick Goldinger
33630d6893 Improve debug/crash utility 2021-04-22 12:14:22 +02:00
Patrick Goldinger
242c21ce59 Merge pull request #728 from Glitchy-Tozier/patch-2
Improve crash_report.md
2021-04-21 19:40:14 +02:00
Patrick Goldinger
859d6dcde3 Merge pull request #727 from Glitchy-Tozier/patch-1
Improve bug_report.md
2021-04-21 19:39:20 +02:00
Glitchy-Tozier
9df9b8d752 Update crash_report.md 2021-04-21 16:02:14 +02:00
Glitchy-Tozier
a64d61c9b5 Improve Bug-Template
Make everything use the same number of placeholder-periods (3).
2021-04-21 15:58:42 +02:00
Patrick Goldinger
128faba755 Fix debug summarize tools not utilizing StringBuilder 2021-04-19 03:11:51 +02:00
Patrick Goldinger
95c23dc344 Improve core and clipboard code / Clean up code 2021-04-19 03:11:51 +02:00
Patrick Goldinger
c863d87724 Fix NPE in FileStorage.cloneURI (#699) 2021-04-19 03:11:51 +02:00
Patrick Goldinger
56878d06ca Incorporate feedback to new bug/crash report templates 2021-04-18 15:05:01 +02:00
Patrick Goldinger
c21b1806b6 Rename "Bug report (generated)" to "Crash report" 2021-04-18 15:05:01 +02:00
Patrick Goldinger
34d9495e66 Adapt bug report templates on GitHub to new format 2021-04-18 15:05:01 +02:00
Patrick Goldinger
32e822fa10 Adapt some core files to new Flog utility 2021-04-18 15:05:01 +02:00
Patrick Goldinger
5f9184f09d Improve CrashUtility class 2021-04-18 15:05:01 +02:00
Patrick Goldinger
4b4d0895ae Add Flog debug utility class 2021-04-18 15:05:01 +02:00
Patrick Goldinger
4c97a86de8 Merge pull request #669 from florisboard/flashing-fix
Possible fix for flashing keyboard
2021-04-15 19:43:09 +02:00
Patrick Goldinger
6f23d6544c Possible fix for flashing keyboard (#589) 2021-04-15 05:12:15 +02:00
Patrick Goldinger
304e1a0d46 Improve bug_report.md by making the instructions more clear 2021-04-15 04:18:03 +02:00
Patrick Goldinger
1e4b9ad86a Merge pull request #633 from mikelloc/add-catalan-language-support
Adding Catalan language support
2021-04-14 00:18:39 +02:00
Patrick Goldinger
1ba0f7c7c0 Fix merge conflicts for catalan layout 2021-04-13 23:54:27 +02:00
Patrick Goldinger
0eb35c5edc Merge pull request #655 from X-yl/translate-clipboard
Make clipboard strings translatable
2021-04-13 23:40:43 +02:00
X-yl
a6970eba81 Make clipboard strings translatable 2021-04-14 00:21:27 +04:00
Patrick Goldinger
fac7dde5f3 Release v0.3.11-beta01 2021-04-13 15:48:40 +02:00
Patrick Goldinger
e9ef11f2fb Update translations from Crowdin 2021-04-13 15:38:59 +02:00
Patrick Goldinger
068768fc05 Improve haptic feedback experience (#138, #324, #610) 2021-04-13 15:30:36 +02:00
Patrick Goldinger
a00e9e1a68 Fix TextInputManager glide post effect status (#249) 2021-04-13 00:48:46 +02:00
Patrick Goldinger
22a3b07fe5 Merge pull request #634 from majso/patch-2
Update of SK layout
2021-04-13 00:18:00 +02:00
Patrick Goldinger
27959b7d29 Fix Persian half-space for URI (#249) 2021-04-13 00:09:02 +02:00
majso
b8e49674bb Update of SK layout
- adding ä character
2021-04-12 20:46:14 +02:00
MiKi
5a1d277dc6 Adding Catalan language support in two layouts QWERTY one and with dedicated accent keys. Also suport middle dot l·l and ç 2021-04-12 20:26:47 +02:00
Patrick Goldinger
2534601116 Improve French popups (#615) 2021-04-12 20:10:43 +02:00
Patrick Goldinger
5426a0e5fb Add Undo, Redo and Cycle keyboard mode gestures (#215) 2021-04-12 19:55:21 +02:00
Patrick Goldinger
41e91410e7 Fix space bar up gesture (#627, #545) 2021-04-12 19:01:10 +02:00
Patrick Goldinger
3be3be8e9d Merge pull request #625 from X-yl/gesture-typing
Some gesture typing enhancements
2021-04-12 18:24:06 +02:00
Patrick Goldinger
1e7deebd23 Merge pull request #600 from Glitchy-Tozier/patch-1
Make version more generic so that it doesn't seem out of date.
2021-04-12 18:14:08 +02:00
Patrick Goldinger
a3aef0de31 Merge pull request #622 from stefan-misik/central-european-layouts
Add Central European layouts (SK and CZ (CS))
2021-04-12 18:10:06 +02:00
Patrick Goldinger
8933a03c3b Merge pull request #585 from 33kk/master
Move hard sign to extended popup in Russian layout, add Ukrainian layout
2021-04-12 18:03:29 +02:00
x-yl
a8df9892c2 Change github workflows back 2021-04-12 18:15:40 +04:00
x-yl
6414f94bd0 Space for numbers also 2021-04-12 17:41:01 +04:00
x-yl
7fb4c9ba00 Exceptions to space rules for some symbol 2021-04-12 17:34:42 +04:00
x-yl
a7fe421661 Cache word data
Temp fix while dictionaries aren't working yet.
2021-04-12 17:32:34 +04:00
x-yl
4cecbc4d5e make glide trail length customizable 2021-04-12 17:32:34 +04:00
x-yl
829fcbf468 Don't initialize gesture detector in theme preview 2021-04-12 17:32:34 +04:00
x-yl
00d0f778d2 Set correct time for glide typing suggestions 2021-04-12 17:32:34 +04:00
X-yl
22c35b7e99 Use historical X/Y as well 2021-04-12 17:32:34 +04:00
x-yl
87fa236d1e Return only one gesture if there are no loops 2021-04-12 17:32:33 +04:00
x-yl
158f2d33ae make distance threshold dynamic 2021-04-12 17:32:33 +04:00
Štefan Mišík
e55be5ca03 Add Central European layouts (SK and CZ (CS))
Add Slovak and Czech layouts.
2021-04-12 11:37:49 +02:00
Patrick Goldinger
b3413535f7 Fix popup position for rtl mode (#536) 2021-04-11 12:43:09 +02:00
Patrick Goldinger
21cabe1d92 Display clipboard row in numeric/phone input fields (#603) 2021-04-11 12:16:24 +02:00
Glitchy-Tozier
c6a30b1905 Update bug_report.md 2021-04-10 19:05:13 +02:00
Patrick Goldinger
9fa702fde7 Merge pull request #609 from florisboard/adaptive-theme-glide-trail
Improve adaptive theme for capslock and glide trail
2021-04-10 17:47:58 +02:00
Patrick Goldinger
9bd2b80949 Improve adaptive theme for capslock and glide trail (#591) 2021-04-10 17:43:09 +02:00
Patrick Goldinger
0e91003a68 Merge pull request #608 from florisboard/fix-glide-logic
Fix glide logic in TextInputManager
2021-04-10 17:23:39 +02:00
Patrick Goldinger
e42f69cc2e Fix glide logic in TextInputManager (#581, #595, #604) 2021-04-10 16:28:15 +02:00
Glitchy-Tozier
f6045a5c4f Make version more generic so that it doesn't seem out of date.
I'm torn between a big `x` and a small one.
2021-04-09 17:34:00 +02:00
Patrick Goldinger
a8213d2e2a Release v0.3.10 2021-04-08 20:37:35 +02:00
Patrick Goldinger
a88e04c8f3 Merge pull request #580 from UltimateOmega/Improve-Persian-popup-for-آ
Improve Persian popup (آ)
2021-04-07 23:45:56 +02:00
Marko
d3240c9db5 Move hard sign to extended popup in Russian layout, add Ukrainian 2021-04-07 16:22:24 +03:00
UltimateOmega
3dde47710d Improve Persian popup for آ
With this rearrange, when Accent is prioritized in hinted symbols, آ is the first option in the popup.
آ is one of the most used alphabets in Persian language.
2021-04-07 09:55:30 +04:30
Patrick Goldinger
36229136ec Release v0.3.10-beta06 2021-04-06 23:59:00 +02:00
Patrick Goldinger
00424055b5 Update translations from Crowdin 2021-04-06 23:41:10 +02:00
Patrick Goldinger
cba5a756f8 Merge pull request #578 from florisboard/improve-fa-popups
Improve Persian popups
2021-04-06 23:34:31 +02:00
Patrick Goldinger
fc401359a7 Improve Persian popups 2021-04-06 23:29:44 +02:00
Patrick Goldinger
546dad8b71 Merge pull request #576 from X-yl/master
Fix #571: Set paste key enabled when attached
2021-04-06 20:16:47 +02:00
Patrick Goldinger
b30e3b8093 Update CONTRIBUTING.md for new layout+config system 2021-04-06 01:25:33 +02:00
Patrick Goldinger
b415afe6e4 Add funding info (#257) 2021-04-06 00:56:08 +02:00
Patrick Goldinger
b69be1ab46 Merge pull request #575 from florisboard/combining-diacritical-marks
Add support for proper display of Combining Diacritical Marks
2021-04-05 20:07:14 +02:00
Patrick Goldinger
c5cf8efe82 Add support for proper display of Combining Diacritical Marks 2021-04-05 19:48:16 +02:00
x-yl
ae0ec65ce0 Fix #571: Set paste key enabled when attached 2021-04-05 21:08:30 +04:00
Patrick Goldinger
7ac3e45b34 Adjust ckb default subtype for eastern symbol layouts (#565) 2021-04-05 18:02:43 +02:00
Patrick Goldinger
5a71793f1a Merge PR #530 manually 2021-04-05 17:57:29 +02:00
Patrick Goldinger
ed040ca49b Resolve merge conflicts and adapt config.json for Kurdí layouts 2021-04-05 17:55:49 +02:00
Patrick Goldinger
c0f90a7ea4 Merge pull request #544 from X-yl/gesture-typing
Implement gesture typing
2021-04-05 16:21:05 +02:00
x-yl
2d9651da8c Make preview refresh delay be less ridiculous
A range of 50ms-1500ms was just kinda comical.
2021-04-05 15:20:43 +04:00
x-yl
9f5a126c1f Cancel gesture properly 2021-04-05 14:53:22 +04:00
x-yl
182e6c58e1 Simplify GlideTypingGesture by only tracking a single touch 2021-04-05 14:53:03 +04:00
x-yl
c7b36829df Don't cancel gesture when tapping on keys 2021-04-05 08:58:45 +04:00
Patrick Goldinger
790fd16682 Merge pull request #560 from Huy-Ngo/ipa
Add IPA keyboard layout
2021-04-04 18:54:08 +02:00
Patrick Goldinger
a2c9699c7e Merge pull request #539 from GabiK65/GabiK65-patch
Some cleanup in hungarian layout
2021-04-04 17:59:27 +02:00
Patrick Goldinger
fff8e7dab9 Merge branch 'master' into GabiK65-patch 2021-04-04 17:58:49 +02:00
Ngô Ngọc Đức Huy
9887f38b4f Rearrange symbol keys 2021-04-04 22:17:50 +07:00
x-yl
b5c2acb328 make GlideTypingClassifier work with KeyView instead of KeyData 2021-04-04 18:51:55 +04:00
x-yl
6469324572 minor fixes 2021-04-04 18:50:28 +04:00
Ngô Ngọc Đức Huy
6227e6d1a9 Add IPA symbols 2021-04-04 21:43:38 +07:00
Patrick Goldinger
80bfe03c0b Merge pull request #556 from Mahmoudk1000/master
Qwertz German layout
2021-04-03 22:31:24 +02:00
mahmoudk1000
8a82bc713b qwertz german layout 2021-04-03 17:06:31 +02:00
GoRaN
e3137db9b4 Update kurdish_standard.json 2021-04-03 17:21:57 +03:00
GoRaN
35d351c596 Update kurdish_standard.json 2021-04-03 17:21:32 +03:00
GoRaN
2163eacfbe Update kurdish_kurmanci.json
Added the Label name :)
2021-04-03 17:18:14 +03:00
x-yl
798f449cc1 Switch back to strings because char arrays broke it 2021-04-03 15:25:44 +04:00
Patrick Goldinger
0d2d560950 Merge pull request #564 from florisboard/fix-number-row-not-showing
Fix number row not displaying on characters
2021-04-03 12:33:36 +02:00
Patrick Goldinger
a4e31d0f50 Fix number row not displaying on characters (#563) 2021-04-03 12:16:04 +02:00
x-yl
96d2043ed8 Fix merge conflicts.. 2021-04-03 13:51:25 +04:00
Ngô Ngọc Đức Huy
5b3033c6da Add some modifiers 2021-04-03 16:50:16 +07:00
Ngô Ngọc Đức Huy
50b1f65f18 Remove Shift keys 2021-04-03 16:50:16 +07:00
Ngô Ngọc Đức Huy
56058d2c4b Fix JSON 2021-04-03 16:50:16 +07:00
Ngô Ngọc Đức Huy
aeb10293c6 Add IPA keyboard layout
Not all symbols are mapped yet.
2021-04-03 16:50:10 +07:00
x-yl
7132ac2479 Reduce memory usage (by a lot)
Switched out every String for a CharArray. Also got rid of the ideal
gesture cache. It had a minimal impact on performance and was taking up
a ridiculous amount of memory.
2021-04-03 12:46:46 +04:00
x-yl
d688549310 Have multiple possible ideal gestures.
This allows for words with double letters to be typed without adding a
loop, while still allowing words like feel and fell to be
differentiated.
2021-04-03 08:25:47 +04:00
x-yl
a763d38304 change multithreading lock logic 2021-04-03 07:46:08 +04:00
Patrick Goldinger
62eb97cd16 Release v0.3.10-beta05 2021-04-03 04:03:41 +02:00
Patrick Goldinger
6813616355 Fix number layout not reliably showing up (#532) 2021-04-03 03:32:55 +02:00
Patrick Goldinger
ee2d574f46 Merge pull request #562 from florisboard/suggestions-ui-bug-fixing
Suggestions UI bug fixing / minor improvements
2021-04-03 03:25:22 +02:00
Patrick Goldinger
945a57d6d8 Fix dynamic width display mode not filling in suggestions (#533) 2021-04-03 03:13:56 +02:00
Patrick Goldinger
e62ba9d156 Add auto-hide clipboard suggestion after usage (#538) 2021-04-03 02:54:30 +02:00
Patrick Goldinger
d3a4136050 Fix content provider authority clash for different tracks (#535) 2021-04-03 02:44:43 +02:00
Patrick Goldinger
7a6d95e250 Merge PR #529 manually 2021-04-03 02:24:15 +02:00
Patrick Goldinger
6fe585a7aa Resolve merge conflicts 2021-04-03 02:16:50 +02:00
Patrick Goldinger
7b25381850 Merge pull request #561 from florisboard/subtype-specific-layouts
Add subtype specific symobol / numeric layouts & currency sets
2021-04-03 01:41:54 +02:00
Patrick Goldinger
409922c3e9 Fix old subtype pref remaining causing crash 2021-04-02 19:40:55 +02:00
Patrick Goldinger
2acabf9c4a Polish UI of subtype add/edit dialog 2021-04-02 19:22:55 +02:00
X-yl
61f7abf43d Merge branch 'master' into gesture-typing 2021-04-02 21:21:58 +04:00
Patrick Goldinger
d29c753c6d Add arabic & persian symbol layouts 2021-04-02 19:10:06 +02:00
Patrick Goldinger
f25e20714c Add subtype specific currency sets 2021-04-02 18:16:26 +02:00
x-yl
2fdec33b1f Improve performance, bugfix
Increased default preview time, and added options to adjust it.
Reduced number of points on the gesture drawn.
Fixed some teeny tiny bugs which caused gesture typing to not work.
2021-04-02 17:59:57 +04:00
x-yl
64f5aea163 Fixed bug where sometimes gestures didn't work 2021-04-02 15:09:57 +04:00
x-yl
847ed1041b Made glide trail themeable 2021-04-02 12:02:58 +04:00
x-yl
74cca0bc4c Added trail fade 2021-04-02 10:02:43 +04:00
x-yl
534dd0a594 Fix case issues 2021-04-02 08:27:51 +04:00
x-yl
f84612ed75 Fix crash on non english layouts 2021-04-02 08:04:38 +04:00
x-yl
9b2b2c06e5 another hacky suggestion fix 2021-04-01 19:15:08 +04:00
x-yl
cf1c18aa70 Small suggestion bugfix 2021-04-01 17:00:54 +04:00
x-yl
418b012550 Fix bug in one handed and landscape mode 2021-04-01 16:45:21 +04:00
x-yl
af4016db43 Minor bug fixes
1. gesture suggestions don't clear after you pressed space
2. space was inserted before word when gesture typing on new line
2021-04-01 16:01:00 +04:00
x-yl
efbda2a758 Removed unnecessary change 2021-04-01 15:39:33 +04:00
x-yl
a7028d4c62 Minor pref fix 2021-04-01 15:36:43 +04:00
x-yl
fd272faebd Remove debug logging, some docs 2021-04-01 15:20:31 +04:00
x-yl
a0cbf65f24 One handed and landscape support 2021-04-01 15:11:34 +04:00
x-yl
1a4a3eb07d Docs 2021-04-01 13:38:25 +04:00
x-yl
a24e626e00 Compatibility with swipe gestures 2021-04-01 13:38:24 +04:00
x-yl
1b86f519a0 Make preferences functional.
Minor changes: Added more points to trail so it looks smoother, some
caching, and made some stuff async.
2021-04-01 13:38:24 +04:00
x-yl
72d15f1dc1 Make preferences functional.
Minor changes: Added more points to trail so it looks smoother, some
caching, and made some stuff async.
2021-04-01 11:50:12 +04:00
Patrick Goldinger
c53a6847fe Add Eastern Arabic and Persian number row 2021-04-01 01:15:05 +02:00
x-yl
a41c1b3493 Fixed issue where nothing was entered when typing quickly 2021-03-31 18:35:15 +04:00
x-yl
dd03bb1ca2 Make naming consistent 2021-03-31 18:26:06 +04:00
x-yl
a9519ceca1 Delete word when gliding 2021-03-31 18:24:13 +04:00
x-yl
ddc72042a1 Integrate suggestions 2021-03-31 18:14:17 +04:00
x-yl
a95b2a23df begin work on integrating with suggestions 2021-03-31 16:36:25 +04:00
x-yl
99187c808d Refactoring for clarity 2021-03-31 15:34:46 +04:00
x-yl
653f34cb3b Show suggestions & performance improvements
Show suggestions while gesturing. Also performance improvements like
implementing a cache, and limiting the trail size
2021-03-31 13:54:35 +04:00
x-yl
08eeea4eb4 Visual improvements
Improved the way trails look by using circles instead of lines.
2021-03-31 10:58:23 +04:00
x-yl
7477e573a5 Bug fixes
Namely, a crash that occured when a word starts and end on the same
letter (due to incorrect behaviour of resample) and also an issue where
gestures weren't reset while typing
2021-03-31 10:17:01 +04:00
x-yl
720a47920f performance improvements 2021-03-31 10:15:49 +04:00
GabiK65
d686f6f5a8 Update hu.json 2021-03-31 01:48:34 +02:00
GabiK65
c382f0bbf8 Update hungarian.json 2021-03-31 01:42:12 +02:00
Patrick Goldinger
2790052e9b Adapt existing layout files & IME config to new syntax 2021-03-31 01:28:20 +02:00
Patrick Goldinger
218a057110 Add base for subtype specific options for all layouts 2021-03-31 01:27:43 +02:00
x-yl
27e6d58ffc Revert back to old resampling method.
Seems like my method (i.e dynamically sample instead of create a whole new gesture)
has an issue with it.
2021-03-30 17:54:32 +04:00
x-yl
4c2c993f3f Added full dictionary (broken commit) 2021-03-30 16:49:54 +04:00
x-yl
faca221699 Prettied up the trail effect 2021-03-30 13:56:17 +04:00
x-yl
f4d8bdbf0f Light refactoring.
Moved Gesture to be part of StatisticalGestureTypingClassifier, cleaned
up some initialization code.
2021-03-30 13:24:59 +04:00
BinFlush
aa909d3135 Update fo.json 2021-03-30 09:30:56 +02:00
Goran Gharib
cdf5a566c6 Fix and correction on Kurdish layout
fixed the popup extended words
2021-03-30 04:43:43 +03:00
Goran Gharib
807b99ae51 Added new kurdish layouts
Added new kurdish kurmanci layout with kurdish standard layout with some correction of current layout.
2021-03-30 04:35:04 +03:00
Jakup Lutzen
d93f09078e added faroese layout 2021-03-30 01:18:03 +02:00
x-yl
cc12798a87 Naive port of the gesturing algorithm. 2021-03-29 18:21:24 +04:00
Patrick Goldinger
02b1a1d278 Merge pull request #512 from icyphox/workman-layout
Add the Workman keyboard layout
2021-03-29 15:54:49 +02:00
Patrick Goldinger
d978cdf845 Fix code of "L" key 2021-03-29 15:49:23 +02:00
Patrick Goldinger
b2ec115505 Release v0.3.10-beta04 2021-03-29 14:46:14 +02:00
x-yl
d5c0b11dbe Tweak gesture detection 2021-03-29 12:08:51 +04:00
x-yl
2a8ba07040 Unrelated change but seeing it basically reimplement Math.atan2 was just so sad. 2021-03-29 08:23:38 +04:00
Anirudh Oppiliappan
f8c9a52be5 Fix Unicode code points 2021-03-29 08:31:06 +05:30
Patrick Goldinger
670e6ca5e1 Fix emoji ABC button not leading back to characters (#521) 2021-03-29 02:55:23 +02:00
Patrick Goldinger
f2403d00e5 Add long-press caps-lock activation vibration (#523) 2021-03-29 02:46:46 +02:00
Patrick Goldinger
224d3e00e3 Merge pull request #518 from florisboard/fix-popup-width-landscape
Adjust popups in landscape mode
2021-03-28 19:47:40 +02:00
Patrick Goldinger
e89a374ce0 Adjust popup width in landscape (#504) 2021-03-28 19:35:43 +02:00
Patrick Goldinger
538e2dd9a2 Merge pull request #514 from florisboard/suggestions-phase2-frontend
Suggestions frontend rework
2021-03-28 19:15:37 +02:00
Patrick Goldinger
1d3d85c211 Fix crash for image clipboard suggestions 2021-03-28 19:08:49 +02:00
Patrick Goldinger
d6121baca9 Polish and document candidate view 2021-03-28 18:16:59 +02:00
x-yl
d6f5789659 Utilize gesture class 2021-03-28 18:09:48 +04:00
x-yl
e7b7df6987 Added Gesture class 2021-03-28 18:09:25 +04:00
Patrick Goldinger
8c0337d6c9 Fix suggestions not resetting when switching apps (#429) 2021-03-27 19:53:51 +01:00
Patrick Goldinger
563a4a919d Add new candidate+clipboard suggestion view (#38, #424, #425, #426) 2021-03-27 19:45:53 +01:00
Anirudh Oppiliappan
7d6666f7f3 Add the Workman keyboard layout 2021-03-27 20:22:12 +05:30
Patrick Goldinger
2f0d607d02 Potential fix for #484 2021-03-24 20:20:01 +01:00
Patrick Goldinger
65ae6c2b66 Merge pull request #491 from X-yl/clipboard-stuff
Fix for #481
2021-03-24 19:21:33 +01:00
x-yl
14513ec0f1 kotlin-ify 2021-03-24 18:07:07 +04:00
x-yl
3c58144a3d fix #481 2021-03-24 17:52:12 +04:00
Patrick Goldinger
d65b706f78 Release v0.3.10-beta03 2021-03-23 20:00:49 +01:00
Patrick Goldinger
9d820677db Update translations from Crowdin 2021-03-23 19:50:06 +01:00
Patrick Goldinger
69c52c00f6 Fix Ž key not available in Dvorak/Serbian (#381) 2021-03-23 19:43:41 +01:00
Patrick Goldinger
c8cf256577 Merge pull request #488 from florisboard/turkish-layouts
Add Turkish-Q / Turkish-F layouts
2021-03-23 14:35:11 +01:00
Patrick Goldinger
386a0999c4 Add Turkish-Q / Turkish-F layouts (#182) 2021-03-23 14:07:42 +01:00
Patrick Goldinger
d4ef2ea827 Merge pull request #486 from Netscaping/patch-1
Create gboard_night.json
2021-03-22 15:28:11 +01:00
Patrick Goldinger
381ec68e6c Merge pull request #482 from florisboard/rework-symbols-sizing
Rework symbols sizing when number row is enabled
2021-03-22 15:18:40 +01:00
Netscaping
a5706167b2 Create gboard_night.json
Since there is a Gboard Day theme I added the night version.
2021-03-22 15:17:46 +01:00
Patrick Goldinger
660871d6c8 Rework symbols sizing when number row is enabled 2021-03-22 00:55:47 +01:00
Patrick Goldinger
6607ad1739 Fix language selector size for keyboard height greater than 125% 2021-03-22 00:01:56 +01:00
Patrick Goldinger
55c1bc05f2 Add auto-switching to characters in symbols (#347) 2021-03-21 19:12:10 +01:00
Patrick Goldinger
7eb7f0ef80 Release v0.3.10-beta02 2021-03-19 19:42:08 +01:00
Patrick Goldinger
78e5e417ce Update README.md to include new beta track 2021-03-19 18:49:40 +01:00
Patrick Goldinger
ffbf7f8ea7 Merge pull request #454 from X-yl/clipboard-stuff
Added support for private clipboard and clipboard history
2021-03-19 17:49:16 +01:00
Patrick Goldinger
27cc4897c3 Merge pull request #479 from florisboard/fix-import-theme-crash
Fix import theme crash for big files
2021-03-19 17:18:49 +01:00
Patrick Goldinger
e5111a8efe Fix import theme crash for big files (#465) 2021-03-19 17:04:48 +01:00
Patrick Goldinger
80fd5ca84a Add beta metadata 2021-03-19 00:57:11 +01:00
x-yl
e8f2c6ce74 fix bug when history size is reduced 2021-03-18 23:21:50 +04:00
x-yl
5676cbf18e Stupid telegram, not using ContentResolver... smh 2021-03-18 17:50:48 +04:00
x-yl
2bdaea6189 revoke URI permissions, support API <25 2021-03-18 17:10:28 +04:00
Patrick Goldinger
da2287a739 Fix symbols layouts applying the caps state once again (#298) 2021-03-17 23:29:58 +01:00
Patrick Goldinger
3fafe0fac8 Release v0.3.10-beta01 2021-03-17 14:48:31 +01:00
x-yl
86042bb1e1 make popup buttons extend to the edge of popup 2021-03-17 15:30:22 +04:00
x-yl
c99673ff1d mime type fixes, remove from history after pressing delete 2021-03-17 15:20:12 +04:00
x-yl
8b89b27fb0 Misc. fixes 2021-03-17 10:57:56 +04:00
x-yl
b56c976fa0 code cleanup 2021-03-17 10:26:22 +04:00
x-yl
08889fdc60 docs 2021-03-17 10:20:21 +04:00
x-yl
e8d657e81c free storage after images leave clipboard 2021-03-17 09:38:03 +04:00
Patrick Goldinger
e581d6cbc4 Release v0.3.9 2021-03-16 20:15:45 +01:00
Patrick Goldinger
ec13d008fb Fix Greek uppercase bug (#452) 2021-03-16 20:03:51 +01:00
Patrick Goldinger
edfea1afcb Merge pull request #461 from florisboard/metadata-refresh
App Store presence metadata update
2021-03-16 16:45:10 +01:00
Patrick Goldinger
25fc23d721 Update store presence metadata to represent all implemented features 2021-03-16 16:34:54 +01:00
x-yl
bfcea8b718 Make pins persistent 2021-03-16 18:58:14 +04:00
Patrick Goldinger
c701141be2 Remove Italian store metadata 2021-03-16 15:15:04 +01:00
x-yl
7f07686b6c added proper mime type support to content provider 2021-03-16 16:38:01 +04:00
Patrick Goldinger
e5b956857e Merge pull request #459 from florisboard/beta-track-prep
Beta track preperation / App icon revamp
2021-03-16 11:53:12 +01:00
Patrick Goldinger
67236ef58d Add beta build variant 2021-03-16 03:17:34 +01:00
Patrick Goldinger
2da17a0654 Add new app icons for all build variants 2021-03-16 03:16:56 +01:00
Patrick Goldinger
1f3221a886 Merge pull request #457 from florisboard/one-handed-improvements
Add one-handed width option / Improve one-handed code
2021-03-15 20:13:02 +01:00
Patrick Goldinger
47f80d00c4 Add one-handed width option / Improve one-handed code 2021-03-15 17:49:18 +01:00
x-yl
e4ecc63b9d Added an abstraction around ClipData 2021-03-15 15:12:30 +04:00
Patrick Goldinger
d648c480b5 Merge pull request #455 from florisboard/theme-import-export
Add theme import/export / Fix theme editor jumping to top
2021-03-15 09:33:18 +01:00
Patrick Goldinger
9e26720674 Fix export UI not requesting to create document 2021-03-15 01:51:11 +01:00
Patrick Goldinger
a20c6bf148 Fix theme editor jumping to top (#379) 2021-03-15 00:57:35 +01:00
Patrick Goldinger
d2df5cfcdf Switch to Kotlin Result 2021-03-15 00:08:10 +01:00
Patrick Goldinger
93b5503dfc Fix file write bug and improve UI 2021-03-14 23:39:57 +01:00
Patrick Goldinger
4d4b54074a Improve import/export feature stability 2021-03-14 19:44:13 +01:00
Patrick Goldinger
904fd9b85a Add simple theme import/export functionality 2021-03-14 02:15:47 +01:00
x-yl
aacb33bd5d fixed issue when floris clipboard is disabled 2021-03-13 20:46:27 +04:00
x-yl
a0aa446988 Change back button 2021-03-13 18:06:10 +04:00
x-yl
fe086ed6d8 removed some debug logging 2021-03-13 17:39:11 +04:00
x-yl
64ddd0f421 fixed a stupid bug somehow 2021-03-13 17:35:35 +04:00
x-yl
40fe72e33c fix a few bugs 2021-03-13 14:55:58 +04:00
x-yl
b229970ec3 cleanup and documentation 2021-03-13 13:04:34 +04:00
x-yl
ec32c211f1 added delete and paste. pretty much feature complete now. 2021-03-12 23:39:23 +04:00
x-yl
e66b8a052a Pin/unpin support 2021-03-12 22:18:40 +04:00
x-yl
4a22c2698c added more ways to open clipboard context, fixed popups, refactored some code 2021-03-12 21:50:24 +04:00
x-yl
ae95bbd7c4 Added a mock popup 2021-03-11 18:03:08 +04:00
x-yl
0bdeeaa340 VERY work in progress 2021-03-11 10:24:40 +04:00
x-yl
92a885a34c Little bit of preference stuff 2021-03-11 10:24:35 +04:00
x-yl
bc2f03a920 light refactoring, some theme stuff 2021-03-11 10:24:26 +04:00
x-yl
f60827b634 small theme fix 2021-03-11 10:23:59 +04:00
x-yl
dcf81b27a0 Fixed animations, added image support, some documentation 2021-03-11 10:23:59 +04:00
x-yl
0d8601cb15 Text-only clipboard history implemented 2021-03-11 10:23:59 +04:00
x-yl
ecf3c6bf27 All clipboard actions now use FlorisClipboardManager. Added support for commiting non-text content. Added simple clipboard history layout. 2021-03-11 10:23:46 +04:00
Patrick Goldinger
e4f5fcf74b Merge pull request #451 from florisboard/alternate-shift-code
Add option for an alternate key code when caps state is active
2021-03-10 23:15:19 +01:00
Patrick Goldinger
15f0316839 Add shift variants for Colemak and Dvorak (#145) 2021-03-10 19:38:11 +01:00
Patrick Goldinger
93654c4f88 Add alternate key code option for FlorisKeyData (#145) 2021-03-10 19:37:50 +01:00
Patrick Goldinger
62fc549ea9 Fix crash on setup when no other IME is installed (#423) 2021-03-10 18:37:27 +01:00
Patrick Goldinger
d0dbd1cd4e Merge pull request #444 from florisboard/input-logic-rework
Input logic rework
2021-03-10 16:08:10 +01:00
Patrick Goldinger
af28f84b69 Fix delete precise char selection init value always 2 units (#448) 2021-03-10 12:09:18 +01:00
Patrick Goldinger
db7ee52029 Fix label text size decreasing bug in selection keyboard 2021-03-10 11:59:51 +01:00
Patrick Goldinger
7343617792 Fix space bar arrow movement initial count always 2 (#448) 2021-03-10 11:31:23 +01:00
Patrick Goldinger
5898d7006b Add internal batch edit level to prevent stuttering UI 2021-03-09 20:17:30 +01:00
Patrick Goldinger
058be7a169 Fix editor instance commit text logic 2021-03-09 02:03:17 +01:00
Patrick Goldinger
e6f2a25021 Improve input event logic / Fix extended popup bug 2021-03-08 19:51:37 +01:00
Patrick Goldinger
3a485a1574 Fix bugs and improve code 2021-03-08 01:09:43 +01:00
Patrick Goldinger
0ee0f24119 Add shift slide behavior / Improve performance of input logic 2021-03-07 19:35:08 +01:00
Patrick Goldinger
004e999259 Document InputEventDispatcher 2021-03-07 16:26:45 +01:00
Patrick Goldinger
11775c4619 Separate input event dispatcher logic into another file 2021-03-07 15:27:20 +01:00
Patrick Goldinger
177bad95b3 Clean up static KeyData object definitions 2021-03-06 19:33:53 +01:00
Patrick Goldinger
610526d845 Add multi-pointer support for gestures 2021-03-06 14:19:30 +01:00
Patrick Goldinger
55e489bc07 Complete overhaul of core input logic 2021-03-05 20:13:35 +01:00
Patrick Goldinger
589063be61 Rework cursor/selection implementation 2021-03-03 23:43:27 +01:00
Patrick Goldinger
aa73ac706a Update target SDK to API 30 (Android 11) 2021-03-01 20:13:59 +01:00
Patrick Goldinger
91cbbe74a3 Release v0.3.8 2021-02-28 23:57:29 +01:00
Patrick Goldinger
637d7fe503 Merge pull request #405 from florisboard/fix-memory-leaks
Fix memory management for Flictionaries & prediction algorithm
2021-02-28 23:44:59 +01:00
Patrick Goldinger
6a5e5a1708 Update translations from Crowdin 2021-02-28 19:48:32 +01:00
Patrick Goldinger
22fad5ba0b Fix logic bugs in prediction algorithm 2021-02-28 18:58:13 +01:00
Patrick Goldinger
f3d2c8257a Improve internal prediction algorithm memory management 2021-02-28 18:07:06 +01:00
Patrick Goldinger
bc89675269 Improve Flictionary load function 2021-02-28 15:29:23 +01:00
Patrick Goldinger
2603eb2b52 Fix end count bug in load function 2021-02-27 19:26:29 +01:00
Patrick Goldinger
38baac1af9 Correct move to start/end of line behavior (#340) 2021-02-27 14:22:03 +01:00
Patrick Goldinger
7e56094f5c Merge pull request #338 from X-yl/keyspacing
Add options for key spacing
2021-02-27 12:24:08 +01:00
Patrick Goldinger
af6ee13855 Sort language list in subtype add/edit dialog alphabetically (#361) 2021-02-27 12:15:42 +01:00
Patrick Goldinger
edb8d87fa0 Fix enter popup not working on symbol/numeric_advanced layout (#350) 2021-02-27 11:49:42 +01:00
Patrick Goldinger
ff35372945 Merge pull request #329 from florisboard/feat-suggestions-phase1
Suggestions implementation: Phase 1
2021-02-26 20:55:00 +01:00
Patrick Goldinger
b6edbf76d0 Merge branch 'master' into feat-suggestions-phase1 2021-02-26 20:40:41 +01:00
Patrick Goldinger
1bde28e288 Move Flictionary load to Dispatchers.IO context 2021-02-26 19:30:11 +01:00
Patrick Goldinger
aafb02cb68 Cleanup and improve prediction components 2021-02-26 18:58:10 +01:00
Patrick Goldinger
a07c91f089 Update precompiled Flictionary to contain basic profanity entries 2021-02-26 02:07:44 +01:00
Patrick Goldinger
1af3c1a210 Rework suggestion preferences UI for first experimental release 2021-02-26 01:07:30 +01:00
Patrick Goldinger
c13ec8aca9 Improve suggestion memory management 2021-02-25 20:39:51 +01:00
Patrick Goldinger
4a826cc0a3 Improve code and document NgramNode 2021-02-25 01:40:04 +01:00
Patrick Goldinger
1c9e4c0b4c Fix offset bug in EditorInstance 2021-02-25 01:21:04 +01:00
Patrick Goldinger
6cbbca5658 Add edit distance to prediction algorithm / Improve performance 2021-02-25 01:13:29 +01:00
Patrick Goldinger
a1b8550fe2 Rework Flictionary load() / Improve search algorithm 2021-02-24 03:04:51 +01:00
Patrick Goldinger
ab1007175d Update English Flictionary 2021-02-23 02:19:39 +01:00
Patrick Goldinger
4cf8b4af58 Add new Flictionary decoder / Add basic unigram prediction algorithm 2021-02-23 01:51:19 +01:00
Patrick Goldinger
2b001d9eb8 Add abstract implementation of NLP related interfaces 2021-02-15 18:56:55 +01:00
Goran Gharib
5c83583149 Merge branch 'master' of https://github.com/kurdikeyboard/florisboard 2021-02-15 04:20:47 +03:00
Goran Gharib
0fb73ece9a Update README.md
Added Kurdish language to the list of Non-latin characters into readme file.
2021-02-15 04:20:40 +03:00
x-yl
286ddd9971 make key spacing for smartbar use dimens.xml 2021-02-13 22:41:39 +04:00
x-yl
d4c6411e1a Update margin for KeyboardRowView in onMeasure 2021-02-13 22:31:43 +04:00
Patrick Goldinger
915bcec0ee Merge pull request #343 from yashpalgoyal1304/patch-1
Added PR links
2021-02-13 18:09:38 +01:00
yashpalgoyal1304
93eb731bf0 Added PR links 2021-02-13 21:29:37 +05:30
x-yl
7a02f1c958 fix bug by changing desired to measured 2021-02-13 09:57:29 +04:00
x-yl
160d31beb0 Update KeyView layout in onMeasure instead of refreshing all layouts 2021-02-13 09:56:00 +04:00
x-yl
6d389b9a7f Added options for key spacing 2021-02-12 18:21:07 +04:00
Patrick Goldinger
3ea620a22e Merge pull request #333 from serebit/codebase-cleanup-final
Clean up codebase
2021-02-11 20:41:00 +01:00
Patrick Goldinger
94f9f3f3e7 Add Flictionary class / Add English binary dictionary file 2021-02-11 20:19:40 +01:00
Campbell Jones
8f28d0e81a Clean up codebase 2021-02-10 15:38:32 -05:00
Patrick Goldinger
07ce0c83fa Add phantom space behavior / Add Suggestion click functionality 2021-02-09 23:35:20 +01:00
Patrick Goldinger
c95244cc06 Merge pull request #331 from serebit/gitattributes
Add exception for bat files to gitattributes
2021-02-09 22:12:47 +01:00
Campbell Jones
3c2d427b1d Add exception for bat files to gitattributes 2021-02-09 15:19:25 -05:00
Patrick Goldinger
85da2141cb Complete overhaul of EditorInstance core class 2021-02-09 04:57:10 +01:00
Patrick Goldinger
cc9688a2dd Merge pull request #326 from serebit/master
Use haptic feedback by default if available
2021-02-08 20:46:13 +01:00
Campbell Jones
cd048af114 Use haptic feedback by default if available 2021-02-08 12:32:02 -05:00
Patrick Goldinger
4382dfc869 Merge pull request #319 from Salamandar/bépo
Edit bépo layout to add "êà" keys
2021-02-05 16:09:00 +01:00
Félix Piédallu
a622749b7b Edit bépo layout to add êà keys 2021-02-05 15:00:16 +01:00
Patrick Goldinger
1c2596147a Release v0.3.7 2021-02-04 23:56:56 +01:00
Patrick Goldinger
d355143ba1 Update selection keyboard icon (#316) 2021-02-04 23:47:00 +01:00
Patrick Goldinger
a9eb4c0eec Update translations from Crowdin 2021-02-04 19:57:17 +01:00
Patrick Goldinger
487a37bc66 Merge pull request #313 from eandersons/layout-lv_LV
Add QWERTY based extended popups for Latvian
2021-02-04 18:51:09 +01:00
Patrick Goldinger
85a54e701e Merge pull request #317 from florisboard/improve-landscape-input-ui
Improve Landscape Input UI
2021-02-04 18:48:10 +01:00
Patrick Goldinger
2666acd4ae Improve Landscape Input UI 2021-02-04 18:17:58 +01:00
Edgars
ba72e6274f Add Euro sign to e extended popup 2021-02-04 07:47:30 +02:00
Edgars
e20ce07957 Add QWERTY based extended popups for Latvian 2021-02-04 07:32:52 +02:00
Patrick Goldinger
765a12537e Update extract edit UI strings to be more user-friendly 2021-02-03 22:37:36 +01:00
Patrick Goldinger
4845ce55b5 Fix Spanish extended popups (#251) 2021-02-03 20:54:02 +01:00
Patrick Goldinger
47cd655d76 Update bug_report.md (#309) 2021-02-03 20:04:25 +01:00
Patrick Goldinger
d3edd3d332 Possible fix for background color bug (#274) 2021-02-03 19:50:16 +01:00
Patrick Goldinger
2d32364123 Fix cut/copy button not working in Smartbar (#308) 2021-02-03 19:07:40 +01:00
Patrick Goldinger
509308ec82 Fix welcome screen not appearing in rare cases (#310) 2021-02-03 18:54:53 +01:00
Patrick Goldinger
db65af5ea5 Fix symbols layouts applying the caps state (#298) 2021-02-03 00:50:14 +01:00
Patrick Goldinger
9a46cf9dff Improve one-handed toggle UX (#303) 2021-02-02 23:39:14 +01:00
Patrick Goldinger
2591eaa49d Fix Italian extended popups (#299) 2021-02-02 23:28:32 +01:00
813 changed files with 64741 additions and 19309 deletions

17
.editorconfig Normal file
View File

@@ -0,0 +1,17 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
trim_trailing_whitespace = true
[{*.har,*.json,*yml}]
indent_size = 2
[*.kt]
ij_kotlin_name_count_to_use_star_import = 99
ij_kotlin_name_count_to_use_star_import_for_members = 99

3
.gitattributes vendored
View File

@@ -1 +1,2 @@
* text=auto eol=lf
* text=auto eol=lf
*.bat text=auto eol=crlf

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: [patrickgold]
custom: ["https://paypal.me/devpatrickgold", "https://explorer.bitcoin.com/btc/address/1GKPJuRTZbVM7L8Kd3wtrqzc259Sjmoh9x"]

View File

@@ -8,27 +8,27 @@ assignees: ''
---
<!--
- Describe the bug in a short but concise way.
- If you have a screenshot or screen recording of the bug, link them at
the end of this issue.
- Please search existing bug reports to avoid creating duplicates.
- Thank you for your help in making FlorisBoard better!
Thank you for your help in making FlorisBoard better!
Guide to a good bug-report:
Please search existing bug/crash reports reports to avoid creating duplicates.
• Give your bug report a good name (no generics like "Error" or "Crash"), so others can easily identify the topic of your issue.
• Describe the bug in a short but concise way.
• If you have a screenshot or screen recording of the bug, link them at the end of this issue.
• Also make sure to fill out the environment information. This info is valuable when trying to fix your described bug.
-->
**Environment information**
- FlorisBoard Version: <!-- e.g. 0.1.0 -->
- Install Source: <!-- Google PlayStore/F-Droid/GitHub/? -->
- Device: <!-- e.g. OnePlus 7T -->
- Android version, ROM: <!-- e.g. 10, Stock -->
#### Short description
Describe the bug in a short but concise way.
**Steps to reproduce**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
#### Steps to reproduce
1. Go to ''
2. Click on ''
3. Scroll down to ''
4. See error
<!-- (remove this line if you paste a log)
```
If applicable, paste the captured debug log here.
```
(remove this line if you paste a log) -->
#### Environment information
- FlorisBoard Version: <!-- e.g. 0.X.X -->
- Install Source: <!-- Google PlayStore/F-Droid/GitHub/? -->
- Device: <!-- e.g. OnePlus 7T -->
- Android: <!-- e.g. 10, Stock -->

View File

@@ -1,5 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Ask a question
url: https://github.com/florisboard/florisboard/discussions/new?category=q-a
about: Ask here if you have a question about FlorisBoard or need assistance
- name: General feedback
url: https://github.com/florisboard/florisboard/blob/master/CONTRIBUTING.md
url: https://github.com/florisboard/florisboard/discussions/new?category=feedback
about: Give general feedback about this project

28
.github/ISSUE_TEMPLATE/crash_report.md vendored Normal file
View File

@@ -0,0 +1,28 @@
---
name: Crash report
about: Create a report with a generated crash log attached to help FlorisBoard improve
title: ''
labels: bug
assignees: ''
---
<!--
Thank you for your help in making FlorisBoard better!
Guide to a good crash-report:
• Please search existing bug/crash reports to avoid creating duplicates.
• Give your crash report a good name (no generics like "Error" or "Crash"), so others can easily identify the topic of your issue.
• Describe what you were doing what could've led to the crash and whether the crash is random or reproducible.
-->
#### Short description
Describe what you were doing that could've led to the crash.
#### Steps to reproduce
1. Go to '…'
2. Click on '…'
3. Scroll down to '…'
4. See crash
<!-- Paste the generated crash log below -->

View File

@@ -8,12 +8,11 @@ assignees: ''
---
<!--
- Describe your idea in a short but concise way.
- If you have multiple ideas which are not directly connected to each
other, file an issue per idea. This makes it easy to implement one
feature proposal at a time.
- If you have any examples, e.g. screenshots or other keyboards which
have the proposed feature implemented, link them here.
- Please search existing proposals to avoid creating duplicates.
- Thank you for your help in making FlorisBoard better!
Thank you for your help in making FlorisBoard better!
Guide to a good feature-request:
• Please search existing proposals to avoid creating duplicates.
If you have multiple ideas which are not directly connected to other, file a new issue for each idea. This makes it easier to implement your proposals.
• Describe your idea in a short but concise way.
• If you have any examples, e.g. screenshots or other keyboards have the proposed feature implemented, feel free to post them after your description.
-->

View File

@@ -1,16 +0,0 @@
---
name: Question
about: Ask here if you have a question about FlorisBoard
title: ''
labels: question
assignees: ''
---
<!--
- If you need assistance in using FlorisBoard, ask it here!
- If you want to suggest an idea for this project, please use the
Feature request template instead.
- Please search existing questions to avoid creating duplicates.
- Thank you for your help in making FlorisBoard better!
-->

View File

@@ -2,20 +2,33 @@ name: FlorisBoard CI
on:
push:
branches: [master]
branches: [ master ]
paths-ignore:
- ".github/ISSUE_TEMPLATE/**"
- ".github/FUNDING.yml"
- ".editorconfig"
- "fastlane/**"
- "CONTRIBUTING.md"
- "LICENSE"
- "README.md"
- "ROADMAP.md"
pull_request:
branches: [master]
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
- uses: actions/checkout@v2
- name: Checkout submodules
run: git submodule update --init --recursive
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Setup CMake and Ninja
uses: lukka/get-cmake@v3.20.1
- uses: actions/cache@v2
with:
path: |
@@ -25,7 +38,9 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Build with Gradle
run: ./gradlew clean assemble
# MUST call gradlew separately because of an OSS license plugin issue.
# See https://github.com/google/play-services-plugins/issues/199
run: ./gradlew clean && ./gradlew assembleDebug
- uses: actions/upload-artifact@v2
with:
name: app-debug.apk

27
.github/workflows/crowdin-upload.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Crowdin Upload Sources
on:
push:
branches: [ master ]
paths:
- "app/src/main/res/values/strings.xml"
- ".github/workflows/crowdin-upload.yml"
jobs:
upload-to-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Upload
uses: crowdin/github-action@1.4.0
with:
config: "crowdin.yml"
upload_sources: true
upload_translations: false
download_translations: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FSEC_CROWDIN_PROJECT_ID: ${{ secrets.FSEC_CROWDIN_PROJECT_ID }}
FSEC_CROWDIN_PERSONAL_TOKEN: ${{ secrets.FSEC_CROWDIN_PERSONAL_TOKEN }}

8
.gitignore vendored
View File

@@ -39,4 +39,10 @@ captures/
# Keystore files
*.jks
crowdin.properties
crowdin.properties
# C++
.cxx/
# AndroidX Room schema JSONs
/app/schemas/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "app/src/main/icu4c"]
path = app/src/main/icu4c
url = https://github.com/florisboard/icu4c

View File

@@ -7,9 +7,17 @@ provides some general guidelines for each type of contribution.
## Giving general feedback
Either use the review function within Google Play or email me at
[florisboard@patrickgold.dev](mailto:florisboard@patrickgold.dev). I
love to hear from you!
NEW! You can now [give general feedback](https://github.com/florisboard/florisboard/discussions/new?category=feedback)
directly here on GitHub. This is the preferred way to give feedback, as
it allows not only for me to read and respond to feedback, but for everyone
in this community.
Optionally you can also use the review function within Google Play or email me
at [florisboard@patrickgold.dev](mailto:florisboard@patrickgold.dev). I
love to hear from you! Note, that the amount of feedback emails I get
is overwhelmingly high - so if I don't answer or answer really late, I
apologize - I guarantee though that I read through every email and that
I will use every feedback to improve FlorisBoard :)
## Translations
@@ -30,38 +38,76 @@ enables both you and the dev team that we are on the same page before
you start on working on your change. If you have any questions, feel
free to ask for help at any time!
## Adding a new keyboard layout / dictionary for locale
## Adding a new keyboard layout
You can now officially add layouts to FlorisBoard as described below.
FlorisBoard's core has stabilized enough that adding new content is
safe, although there will be some changes in the future.
Adding a layout to FlorisBoard is very simple and does not require any
coding skills, although you should understand the basics of the JSON
syntax (it is very easy though by just looking at some other layout files).
There are two main steps in adding new layouts, though the config step can
be skipped if you only add a layout without a new default language support.
Currently you need to modify `app/src/main/assets/ime/config.json` to
add the filename of the language/layout to the `characterLayouts`
section and the `defaultSubtypes` section, making sure to include
the language's IETF BCP 47 code ([ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
and [ISO 3166-1 region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)).
For example, Dutch as spoken in Belgium is `nl-be`. Use a unique value
for `id` to avoid possible crahses caused by duplicate ids.
### The config file ([`app/src/main/assets/ime/config.json`](app/src/main/assets/ime/config.json))
Add the keyboard layout at `app/src/main/assets/ime/text/characters/<preferredLayout_name_here>.json`,
with `code` referring to the characters codepoint and `label` being the
respective unicode character.
This file is very important, as it defines all default currency sets as
well as all default subtypes available in the Settings Subtype UI. Note
that you don't have to modify this file if you add a layout for an already
pre-configured language.
- `currencySets`: This is a list of all currency sets, which can be chosen
for each subtype. If you consider adding a new one, make sure that the
first currency symbol matches the name of the currency set and also
ensure that you have exactly 6 currency symbols. This is important as the
symbol layouts have exactly 6 slots available to fill these defined
currency symbols in.
- `defaultSubtyes`: This is a list of all pre-made subtypes. Each time the
user selects a language in the `Subtype Add`-dialog, all options configured
here will get pre-selected. The language tag must adhere to the IETF BCP
47 code ([ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
and [ISO 3166-1 region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)).
For example, Dutch as spoken in Belgium is `nl-be`. Use a unique value
for `id` to avoid possible crashes caused by duplicate ids.
### Adding the layout
Since v0.3.10-beta05 it is possible to add custom layouts for all types.
To add a new layout, head to [`app/src/main/assets/ime/text`](app/src/main/assets/ime/text) and then select
the correct sub-directory for the type of layout you want to add. In most cases
this will be `characters` to add a layout like QWERTY etc.
For the `code` field of each key, make sure to use the UTF-8 code. An
useful tool for finding the correct code is [unicode-table.com](https://unicode-table.com/en/).
From there, you search for your letter and then use the HTML code, but without the `&#;`
For internal codes of functional or UI keys, see
[`app/src/main/java/dev/patrickgold/florisboard/ime/text/key/KeyCode.kt`](app/src/main/java/dev/patrickgold/florisboard/ime/text/key/KeyCode.kt).
The label is equally important and should always match up with the defined
code. If `code` and `label` don't match up, FlorisBoard won't crash but
it will most likely lead to confusion in the key processing logic.
Any accents or diacritics that should be exposed via long press can be
added at `assets/ime/text/characters/extended_popups/<languageTag_name_here>.json`.
added at [`app/src/main/assets/ime/text/characters/extended_popups/<languageTag_name_here>.json`](app/src/main/assets/ime/text/characters/extended_popups).
For each key, you can add 1 main and several relevant accents. The main
accent should be used for accents which are important for the language
you add. The main field is used for determining if a hint or an accent
should take priority, so please make sure to leave main empty and just
use relevant for accents which are not-so important.
For popups of non-`characters` layout, simply add the popup directly to
each key via the `popup` field.
## Adding a new dictionary for a language
Currently the suggestions implementation is highly experimental and will
get a major if not complete rework, so dictionaries are currently not
accepted.
## Bug reporting
This kind of contribution is the most important, as it tells where
FlorisBoard has flaws and thus should be improved to maximize stability
and user experience. To make this process as smooth as possible, please
use the premade [issue template](.github/ISSUE_TEMPLATE/bug_report.md)
use the pre-made [issue template](.github/ISSUE_TEMPLATE/bug_report.md)
for bug reporting. This makes it easy for us to understand what the bug
is and how to solve it.
@@ -73,3 +119,10 @@ preferred way to capture logs.
Alternatively, you can also use ADB (Android Debug Bridge) to capture
the error log. This is recommended for experienced users only.
## Donating
If none of the above options are feasible for you but you still want to
show your support, you can also buy me a coffee, so I can stay up all night
and chase away bugs or add new cool stuff :)
See the `Sponsors` button for available options!

198
README.md
View File

@@ -1,164 +1,76 @@
<img align="left" width="80" height="80"
src="fastlane/metadata/android/en-US/images/icon.png" alt="App icon">
# FlorisBoard [![Release](https://img.shields.io/github/v/release/florisboard/florisboard)](https://github.com/florisboard/florisboard/releases) [![Crowdin](https://badges.crowdin.net/florisboard/localized.svg)](https://crowdin.florisboard.patrickgold.dev) ![FlorisBoard CI](https://github.com/florisboard/florisboard/workflows/FlorisBoard%20CI/badge.svg?event=push)
# FlorisBoard [![Crowdin](https://badges.crowdin.net/florisboard/localized.svg)](https://crowdin.florisboard.patrickgold.dev) [![Matrix badge](https://img.shields.io/badge/chat-%23florisboard%3amatrix.org-blue)](https://matrix.to/#/#florisboard:matrix.org) ![FlorisBoard CI](https://github.com/florisboard/florisboard/workflows/FlorisBoard%20CI/badge.svg?event=push)
**FlorisBoard** is a free and open-source keyboard for Android 6.0+
devices. It aims at being modern, user-friendly and customizable while
fully respecting your privacy. Currently in alpha/early-beta state.
fully respecting your privacy. Currently in early-beta state.
## Public Alpha Test Programme
Wanna try it out on your device? Use one of the following options:
<table>
<tr>
<th align="center" width="50%">
<h3>Stable <a href="https://github.com/florisboard/florisboard/releases/latest"><img alt="Latest stable release" src="https://img.shields.io/github/v/release/florisboard/florisboard"></a></h3>
</th>
<th align="center" width="50%">
<h3>Beta <a href="https://github.com/florisboard/florisboard/releases"><img alt="Latest beta release" src="https://img.shields.io/github/v/release/florisboard/florisboard?include_prereleases"></a></h3>
</th>
</tr>
<tr>
<td valign="top">
<p><i>Major versions only, 1 release per 1-3 months</i><br><br>Updates are more polished, new features are matured and tested through to ensure a stable experience.</p>
</td>
<td valign="top">
<p><i>Beta versions, 1-2 releases per week</i><br><br>Updates contain new features that may not be fully matured yet and bugs are more likely to occur. Allows you to give early feedback.</p>
</td>
</tr>
<tr>
<td valign="top">
<p><a href="https://f-droid.org/packages/dev.patrickgold.florisboard"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="64" alt="F-Droid badge"></a></p>
<p>
_A. Get it on F-Droid_:
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-public-alpha-test), then visit the [testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard))
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="64" alt="F-Droid badge">](https://f-droid.org/packages/dev.patrickgold.florisboard)
</p>
<p>
_B. Google Play Public Alpha Test_:
**Manual**: Download and install the APK from the release page.
You can join the public alpha test programme on Google Play. To become a
tester, follow these steps:
1. Join the
[FlorisBoard Public Alpha Test](https://groups.google.com/g/florisboard-public-alpha-test)
Google Group to be able to access the testing programme.
2. Go to the
[FlorisBoard Testing Page](https://play.google.com/apps/testing/dev.patrickgold.florisboard),
then click "Become a tester". Now you are enrolled in the testing
programme.
3. To try out FlorisBoard, download it via Google Play. To do so, click
on "Download it on Google Play", which takes you to the [PlayStore
listing](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard).
4. Finished! You will receive future versions of FlorisBoard via Google
Play.
</p>
</td>
<td valign="top">
<p><a href="https://apt.izzysoft.de/fdroid/index/apk/dev.patrickgold.florisboard.beta"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" height="64" alt="IzzySoft repo badge"></a></p>
<p>
With the v0.4.0 release FlorisBoard will enter the public beta in GPlay, allowing to directly search
for and download FlorisBoard without prior joining the alpha group.
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-public-alpha-test), then visit the [beta testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard.beta). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard.beta))
_C. Use the APK provided in the release section of this repo_
</p>
<p>
### Giving feedback
If you want to give feedback to FlorisBoard, there are several ways to
do so, as listed [here](CONTRIBUTING.md#giving-general-feedback).
**Manual**: Download and install the APK from the release page.
---
</p>
</td>
</tr>
</table>
<img align="right" height="256"
src="https://patrickgold.dev/media/previews/florisboard-preview-day.png"
alt="Preview image">
Beginning with v0.4.0 FlorisBoard will follow [SemVer](https://semver.org/#summary) versioning scheme and enter the public beta on Google Play.
## Implemented features
This list contains all implemented and fully functional features
FlorisBoard currently has to offer. For planned features and its
milestones, please refer to the [Feature roadmap](#feature-roadmap).
## Highlighted features
- Spell checking service
- Word suggestions (currently English only and may not work on all devices)
- Glide typing (currently English only)
- Advanced theming support and customization
- Integrated clipboard manager / history
- Emoji keyboard (although lacking some features)
### Basics
* [x] Implementation of the keyboard core (InputMethodService)
* [x] Custom implementation of deprecated KeyboardView (base only)
* [x] Caps + Caps Lock
* [x] Key popups
* [x] Extended key popups (e.g. a -> á, à, ä, ...)
* [x] Key press sound/vibration
* [x] Portrait orientation support
* [x] Landscape orientation support (needs tweaks)
### Layouts
* [x] Latin character layouts (QWERTY, QWERTZ, AZERTY, Swiss, Spanish,
Norwegian, Swedish/Finnish, Icelandic, Danish, Hungarian,
Croatian, Polish, Romanian); more coming in future versions
* [x] Non-latin character layouts (Arabic, Persian, Greek, Russian
(JCUKEN))
* [x] Adapt to situation in app (password, url, text, etc. )
* [x] Special character layout(s)
* [x] Numeric layout
* [x] Numeric layout (advanced)
* [x] Phone number layout
* [x] Emoji layout
* [x] Emoticon layout
### Preferences
* [x] Setup wizard
* [x] Preferences screen
* [x] Customize look and behaviour of keyboard
* [x] Theme presets (currently only day/night theme + borderless)
* [x] Theme customization
* [x] Subtype selection (language/layout)
* [x] Keyboard behaviour preferences
* [x] Gesture preferences
### Other useful features
* [x] One-handed mode
* [x] Clipboard/cursor tools
* [x] Integrated number row / symbols in character layouts
* [x] Gesture support
* [x] Full integration in IME service list of Android (xml/method)
(integration is internal-only, because Android's default subtype
implementation not really allows for dynamic language/layout
pairs, only compile-time defined ones)
* [ ] Description and settings reference in System Language & Input
* [ ] (dev only) Generate well-structured documentation of code
* [ ] ...
## Feature roadmap
This section describes the features which are planned to be implemented
in FlorisBoard for the next major versions, modularized into sections.
Please note that the milestone due dates are only raw estimates and will
most likely be delayed back, even though I'm eager to stick to these as
close as possible.
### [v0.4.0](https://github.com/florisboard/florisboard/milestone/4)
- Module A: Smartbar rework (Implemented with #91)
- Ability to enable/disable Smartbar (features below thus only work if
Smartbar is enabled)
- Dynamic switching between clipboard tools and word suggestions
- Ability to show both the number row and word suggestions at once
- Better icons in quick actions
- Complete rework of the Smartbar code base and the Smartbar layout
definition in XML
- Module B: Composing suggestions
- Auto-suggestion of words based of precompiled dictionaries
- Management of custom dictionary entries
- Opt-in only: Learning of often typed word pais to better predict next
words over time. Data collected here is stored locally and never leaves
the user's device.
- Module C: Extension packs (base implementation with #162)
- Ability to load dictionaries (and later potentially other cool
features too) only if needed to keep the core APK size small
- Currently unclear how exactly this will work, but this is definitely
a must-have feature
- Module D: Glide typing
- Swiping over the characters will automatically convert this to a word
- Possibly also add improvements based on the Flow keyboard
- Module E: Theme rework (Implemented with #162)
- Themes are now based on the Asset schema
- Dynamic theme creation
- Different theme modes (`Always day`, `Always dark`, `Follow system`
and `Follow time`)
- Define a separate theme both for day and night theme
- Adapt to app theme if possible
### [v0.5.0](https://github.com/florisboard/florisboard/milestone/5)
There's no exact roadmap yet but it is planned that the media part of
FlorisBoard (emojis, emoticons, kaomoji) gets a rework. Also as an extension
(requires v0.4.0/Module C) GIF support is planned.
### > v0.5.0
This is completely open as of now and will gather planned features as time
passes...
Backlog (currently not assigned to any milestone):
- Theme import/export
- Floating keyboard
Feature roadmap: See [ROADMAP.md](ROADMAP.md)
## Contributing
Wanna contribute to FlorisBoard? That's great to hear! There are lots of
different ways to help out. Bug reporting, making pull requests,
translating FlorisBoard to make it more accessible, etc. For more
information see the ![contributing guidelines](CONTRIBUTING.md). Thank
information see the [contributing guidelines](CONTRIBUTING.md). Thank
you for your help!
## List of permissions FlorisBoard requests
@@ -170,16 +82,18 @@ to get more information on this topic.
by [google](https://github.com/google)
* [Google Material icons](https://github.com/google/material-design-icons) by
[google](https://github.com/google)
* [Moshi JSON library](https://github.com/square/moshi) by
[square](https://github.com/square)
* [KotlinX serialization library](https://github.com/Kotlin/kotlinx.serialization) by
[Kotlin](https://github.com/Kotlin)
* [ColorPicker preference](https://github.com/jaredrummler/ColorPicker) by
[Jared Rummler](https://github.com/jaredrummler)
* [Timber](https://github.com/JakeWharton/timber) by
[JakeWharton](https://github.com/JakeWharton)
* [kotlin-result](https://github.com/michaelbull/kotlin-result) by
[Michael Bull](https://github.com/michaelbull)
* [expandable-fab](https://github.com/nambicompany/expandable-fab) by
[Nambi](https://github.com/nambicompany)
* [ICU4C](https://github.com/unicode-org/icu) by
[The Unicode Consortium](https://github.com/unicode-org)
* [Nuspell](https://github.com/nuspell/nuspell) by
[Nuspell](https://github.com/nuspell)
## License
```

110
ROADMAP.md Normal file
View File

@@ -0,0 +1,110 @@
# FlorisBoard's feature roadmap & milestones
This feature roadmap intents to provide transparency to what I want to add
to FlorisBoard in the foreseeable future. Note that there are no ETAs for any
version milestones down below, experience says these won't hold anyways.
I try my best to release regularly, though some features take a lot longer
than others and thus releases can be spaced out a bit on the stable track.
If you are interested in following the development more closely, make sure to
follow along the beta track releases! These are generally more unstable but
you get new stuff faster and can provide early feedback, which helps a lot!
## 0.3.x and 0.4.0
Releases in this section still follow the old versioning scheme, meaning the
patch number is a feature upgrade. As this naming convention is more confusing
than useful, after the v0.4.0 release a new release/development cycle will be
introduced.
### 0.3.13 (done)
- Spell checking (mainly completed and relatively well working, Smartbar integration still missing)
- Performance improvements in keyboard rendering
- Audio/haptic feedback rework
- Lots and lots of bug fixing in all areas, really fix some annoying bugs
- New layouts added by contributors
### 0.3.14 (currently in progress)
- Re-write of the Preference core
- Reduce redundancy in key/default value definitions
- Avoid having to manually add redundant code for adding a new pref
- Goes hand-in-hand with the Settings UI re-write
- Re-write of the Settings UI with Jetpack Compose
- Also re-structure UI into a more list-like panel
- Adjust theme colors of Settings a bit to make it more modern
- Preview the keyboard at any time from within the Settings
- Settings language different than device language
- Re-write the Setup UI in Jetpack Compose
- Simplify screen based on previously discussed ideas and mock-ups
- Improve backend setup logic
- Implement base-UI for extensions and further continue development
of existing Flex (FlorisBoard extension) format
- Allows for a continuous experience of customizing FlorisBoard in different areas
- Planned what will use Flex:
- Themes
- Layouts (Characters, symbols, numeric, ...)
- Composers for non-Latin script languages
- Word suggestion dictionaries (not in 0.3.14)
- Spell check dictionaries
- User dictionaries (not in 0.3.14)
- Other features that require only data and no logic (not in 0.3.14)
- Maybe full backup of preferences? Not 100% confirmed though and may be pushed back
- Theme rework part I:
- Custom key corner radius
- Custom key border color (not shadow!!)
- Re-work theme internals so they use Flex extension format and FlexCSS
- Community repository on GitHub for theme sharing across users (when Theme Flex format is ready)
- Improvement of the Smartbar
- Allow to have multiple Smartbars
- Better candidate view (in prep for 0.3.15/0.3.16)
### 0.3.15/16/17
- Note that 0.3.15 may be a hotfix release for the preference rework and will not contain the
planned new word predictions
- Re-adding word suggestions (at least for Latin-based languages at first)
- Importing the dictionaries as well as management relies on the Flex extension core and UI in Kotlin
- Actually parsing and generating suggestions happens in C++ to avoid another OOM catastrophe like in 0.3.9/10
- The actual format of the dictionary and word list source is not decided yet
### 0.4.0
- Prepare FlorisBoard repository and app store presence for public beta release
on Google Play
- Rework branding images and texts of FlorisBoard for the app stores
- Focus on polishing the app and fixing bugs/crashes
With this release the versioning scheme changes: the second number now indicates new features,
changes in the third "patch" number now indicates bug fixes for the stable track. The development
cycle for each 0.x release will have -betaXX and -rcXX (release candidate) releases on the beta
track for interested people to follow along the development.
## 0.5.0
- Complete rework of the Emoji panel
- Recently used / Emoji history
- Emoji search
- Emoji suggestions when using :emoji_name: syntax
- Kaomoji panel implementation (the third tab which currently has "not yet implemented")
- Full Smartbar customization
- Includes internal rework how Smartbar is build and assembled
- Allow for more than one Smartbar / Stackable and Collapsible Smartbars
- Customizable quick actions, clipboard row
## 0.6.0
- Full on-board layout editor which allows users to create their own layouts
without writing a JSON file
- Import/Export of custom layout files packed in Flex extensions
## Backlog / Features that MAY be added
- Theme rework part II
- Adaptive themes v2
- Voice-to-text with Mozilla's open-source voice service
- Text translation
- Glide typing better word detection
- Proximity-based key typo detection
- Floating keyboard
- Tablet mode / Optimizations for landscape input
- Stickers/GIFs
- FlorisBoard landing web page for presentation
- Implementing additional layouts
- Support for Tasker/Automate/MacroDroid plugins
- Support for WearOS/Smartwatches
- Handwriting
- ...

1
app/.gitignore vendored
View File

@@ -1 +0,0 @@
/build

View File

@@ -1,74 +0,0 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
defaultConfig {
applicationId "dev.patrickgold.florisboard"
minSdkVersion 23
targetSdkVersion 29
versionCode 25
versionName "0.3.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
viewBinding true
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
testImplementation 'androidx.test:core:1.3.0'
testImplementation 'org.mockito:mockito-core:1.10.19'
testImplementation 'org.mockito:mockito-inline:2.13.0'
testImplementation 'org.robolectric:robolectric:4.4'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'com.google.android:flexbox:2.0.1'
implementation "com.squareup.moshi:moshi-kotlin:1.9.2"
implementation 'com.squareup.moshi:moshi-adapters:1.9.2'
implementation 'com.google.android.material:material:1.2.1'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7"
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation "com.michael-bull.kotlin-result:kotlin-result:1.1.9"
implementation 'com.nambimobile.widgets:expandable-fab:1.0.2'
}

184
app/build.gradle.kts Normal file
View File

@@ -0,0 +1,184 @@
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
kotlin("plugin.serialization") version "1.5.31"
id("com.google.android.gms.oss-licenses-plugin")
id("de.mannodermaus.android-junit5")
}
android {
compileSdk = 31
buildToolsVersion = "31.0.0"
ndkVersion = "22.1.7171670"
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs = listOf(
"-Xallow-result-return-type",
"-Xopt-in=kotlin.RequiresOptIn",
"-Xopt-in=kotlin.contracts.ExperimentalContracts",
"-Xjvm-default=compatibility",
)
}
defaultConfig {
applicationId = "dev.patrickgold.florisboard"
minSdk = 23
targetSdk = 30
versionCode = 62
versionName = "0.3.14"
multiDexEnabled = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments += mapOf(
Pair("room.schemaLocation", "$projectDir/schemas"),
Pair("room.incremental", "true"),
Pair("room.expandProjection", "true")
)
}
}
externalNativeBuild {
cmake {
cFlags("-fvisibility=hidden", "-DU_STATIC_IMPLEMENTATION=1")
cppFlags("-fvisibility=hidden", "-std=c++17", "-fexceptions", "-ffunction-sections", "-fdata-sections", "-DU_DISABLE_RENAMING=1", "-DU_STATIC_IMPLEMENTATION=1")
arguments("-DANDROID_STL=c++_static")
}
}
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a")
}
sourceSets {
maybeCreate("main").apply {
assets {
srcDirs("src/main/assets", "src/main/icu4c/prebuilt/assets")
}
jniLibs {
srcDirs("src/main/icu4c/prebuilt/jniLibs")
}
}
}
}
buildFeatures {
viewBinding = true
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.1.0-beta03"
}
externalNativeBuild {
cmake {
path("src/main/cpp/CMakeLists.txt")
}
}
buildTypes {
named("debug").configure {
applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"
isDebuggable = true
isJniDebuggable = true
ndk {
// For running FlorisBoard on the emulator
abiFilters += listOf("x86", "x86_64")
}
resValue("mipmap", "floris_app_icon", "@mipmap/ic_app_icon_debug")
resValue("mipmap", "floris_app_icon_round", "@mipmap/ic_app_icon_debug_round")
resValue("drawable", "floris_app_icon_foreground", "@drawable/ic_app_icon_debug_foreground")
resValue("string", "floris_app_name", "FlorisBoard Debug")
}
create("beta") // Needed because by default the "beta" BuildType does not exist
named("beta").configure {
applicationIdSuffix = ".beta"
versionNameSuffix = "-beta06"
proguardFiles.add(getDefaultProguardFile("proguard-android-optimize.txt"))
resValue("mipmap", "floris_app_icon", "@mipmap/ic_app_icon_beta")
resValue("mipmap", "floris_app_icon_round", "@mipmap/ic_app_icon_beta_round")
resValue("drawable", "floris_app_icon_foreground", "@drawable/ic_app_icon_beta_foreground")
resValue("string", "floris_app_name", "FlorisBoard Beta")
}
named("release").configure {
proguardFiles.add(getDefaultProguardFile("proguard-android-optimize.txt"))
resValue("mipmap", "floris_app_icon", "@mipmap/ic_app_icon_release")
resValue("mipmap", "floris_app_icon_round", "@mipmap/ic_app_icon_release_round")
resValue("drawable", "floris_app_icon_foreground", "@drawable/ic_app_icon_release_foreground")
resValue("string", "floris_app_name", "@string/app_name")
}
}
testOptions {
unitTests {
isIncludeAndroidResources = true
}
unitTests.all {
it.useJUnitPlatform()
}
}
lint {
isAbortOnError = false
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
dependencies {
implementation("androidx.activity:activity-compose:1.4.0")
implementation("androidx.activity:activity-ktx:1.4.0") // possibly remove after settings rework
implementation("androidx.appcompat:appcompat:1.3.1") // possibly remove after settings rework
implementation("androidx.autofill:autofill:1.1.0")
implementation("androidx.compose.material:material:1.1.0-beta03")
implementation("androidx.compose.runtime:runtime-livedata:1.1.0-beta03")
implementation("androidx.compose.ui:ui:1.1.0-beta03")
implementation("androidx.compose.ui:ui-tooling-preview:1.1.0-beta03")
implementation("androidx.constraintlayout:constraintlayout:2.1.0") // possibly remove after settings rework
implementation("androidx.core:core-ktx:1.7.0")
implementation("androidx.core:core-splashscreen:1.0.0-alpha02")
implementation("androidx.fragment:fragment-ktx:1.3.6") // possibly remove after settings rework
implementation("androidx.navigation:navigation-compose:2.4.0-beta02")
implementation("androidx.preference:preference-ktx:1.1.1") // possibly remove after settings rework
implementation("com.google.accompanist:accompanist-systemuicontroller:0.20.2")
implementation("com.google.android.flexbox:flexbox:3.0.0") // possibly remove after settings rework
implementation("com.google.android.material:material:1.4.0") // possibly remove after settings rework
implementation("com.jaredrummler:colorpicker:1.1.0") // possibly remove after settings rework
implementation("com.nambimobile.widgets:expandable-fab:1.0.2") // possibly remove after settings rework
implementation("dev.patrickgold.jetpref:jetpref-datastore-model:0.1.0-alpha12")
implementation("dev.patrickgold.jetpref:jetpref-ui-compose:0.1.0-alpha12")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.1")
implementation("androidx.room:room-runtime:2.3.0")
kapt("androidx.room:room-compiler:2.3.0")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
testImplementation("io.kotest:kotest-runner-junit5:4.6.3")
testImplementation("io.kotest:kotest-assertions-core:4.6.3")
testImplementation("io.kotest:kotest-property:4.6.3")
testImplementation("io.kotest.extensions:kotest-extensions-robolectric:0.4.0")
androidTestImplementation("androidx.test.ext", "junit", "1.1.2")
androidTestImplementation("androidx.test.espresso", "espresso-core", "3.3.0")
}

View File

@@ -1,21 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -1,13 +1,11 @@
package dev.patrickgold.florisboard
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*

View File

@@ -1,3 +0,0 @@
<resources>
<string name="app_name">FlorisBoard Debug</string>
</resources>

View File

@@ -20,98 +20,114 @@
<!-- Permission needed to vibrate if the user has key press vibration enabled -->
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- Android 11+ only: Define that FlorisBoard requests to see all apps that
ship with an IME or Spell Check service. This is used to guide the user
in the Settings Ui why FlorisBoard may not be working.
-->
<queries>
<intent>
<action android:name="android.view.InputMethod"/>
</intent>
<intent>
<action android:name="android.service.textservice.SpellCheckerService"/>
</intent>
</queries>
<application
android:name=".ime.core.FlorisApplication"
android:name="dev.patrickgold.florisboard.FlorisApplication"
android:allowBackup="false"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:icon="@mipmap/floris_app_icon"
android:label="@string/floris_app_name"
android:roundIcon="@mipmap/floris_app_icon_round"
android:supportsRtl="true"
android:theme="@style/SettingsTheme">
<!-- IME service -->
<service
android:name="dev.patrickgold.florisboard.ime.core.FlorisBoard"
android:label="@string/app_name"
android:permission="android.permission.BIND_INPUT_METHOD">
<meta-data
android:name="android.view.im"
android:resource="@xml/method"/>
android:name="dev.patrickgold.florisboard.FlorisImeService"
android:label="@string/floris_app_name"
android:permission="android.permission.BIND_INPUT_METHOD"
android:directBootAware="true"
android:exported="true">
<intent-filter>
<action android:name="android.view.InputMethod"/>
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method"/>
</service>
<!-- Settings Activity -->
<!-- Spellchecker service -->
<service
android:name="dev.patrickgold.florisboard.FlorisSpellCheckerService"
android:label="@string/floris_app_name"
android:permission="android.permission.BIND_TEXT_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.service.textservice.SpellCheckerService"/>
</intent-filter>
<meta-data android:name="android.view.textservice.scs" android:resource="@xml/spellchecker"/>
</service>
<!-- Main App Activity -->
<activity
android:name="dev.patrickgold.florisboard.settings.SettingsMainActivity"
android:icon="@mipmap/ic_launcher"
android:name="dev.patrickgold.florisboard.app.FlorisAppActivity"
android:icon="@mipmap/floris_app_icon"
android:label="@string/settings__title"
android:launchMode="singleTask"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/SettingsTheme"/>
android:roundIcon="@mipmap/floris_app_icon_round"
android:windowSoftInputMode="adjustResize"
android:theme="@style/FlorisAppTheme"/>
<!-- Using an activity alias to disable/enable the app icon in the launcher -->
<activity-alias
android:name="dev.patrickgold.florisboard.SettingsLauncherAlias"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:icon="@mipmap/floris_app_icon"
android:label="@string/floris_app_name"
android:launchMode="singleTask"
android:roundIcon="@mipmap/ic_launcher_round"
android:targetActivity="dev.patrickgold.florisboard.setup.SetupActivity">
android:roundIcon="@mipmap/floris_app_icon_round"
android:targetActivity="dev.patrickgold.florisboard.app.FlorisAppActivity"
android:theme="@style/FlorisAppTheme"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
<!-- User Dictionary Manager Activity -->
<activity
android:name="dev.patrickgold.florisboard.oldsettings.UdmActivity"
android:icon="@mipmap/floris_app_icon"
android:label="@string/settings__title"
android:theme="@style/SettingsTheme"/>
<!-- Theme Selector Activity -->
<activity
android:name="dev.patrickgold.florisboard.settings.ThemeManagerActivity"
android:icon="@mipmap/ic_launcher"
android:name="dev.patrickgold.florisboard.oldsettings.ThemeManagerActivity"
android:icon="@mipmap/floris_app_icon"
android:label="@string/settings__title"
android:theme="@style/SettingsTheme"/>
<!-- Theme Editor Activity -->
<activity
android:name="dev.patrickgold.florisboard.settings.ThemeEditorActivity"
android:icon="@mipmap/ic_launcher"
android:name="dev.patrickgold.florisboard.oldsettings.ThemeEditorActivity"
android:icon="@mipmap/floris_app_icon"
android:label="@string/settings__theme_editor__title"
android:theme="@style/SettingsTheme"/>
<!-- About Activity -->
<activity
android:name="dev.patrickgold.florisboard.settings.AboutActivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/about__title"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/SettingsTheme"/>
<!-- Advanced Activity -->
<activity
android:name="dev.patrickgold.florisboard.settings.AdvancedActivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/settings__advanced__title"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/SettingsTheme"/>
<!-- Setup Activity -->
<activity
android:name="dev.patrickgold.florisboard.setup.SetupActivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/setup__title"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/SettingsTheme"/>
<!-- Crash Dialog Activity -->
<activity
android:name="dev.patrickgold.florisboard.crashutility.CrashDialogActivity"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/floris_app_icon"
android:label="@string/crash_dialog__title"
android:theme="@style/CrashDialogTheme"/>
<provider
android:name="dev.patrickgold.florisboard.ime.clip.provider.FlorisContentProvider"
android:authorities="${applicationId}.provider.clip"
android:grantUriPermissions="true"
android:exported="false">
</provider>
</application>
</manifest>

View File

@@ -1,220 +1,57 @@
{
"package": "dev.patrickgold.florisboard",
"characterLayouts": {
"qwerty": "QWERTY",
"qwertz": "QWERTZ",
"azerty": "AZERTY",
"bepo": "BÉPO",
"bulgarian_bds": "Bulgarian (BDS)",
"bulgarian_phonetic": "Bulgarian (Phonetic)",
"spanish": "Spanish (QWERTY)",
"norwegian": "Norwegian (QWERTY)",
"swedish_finnish": "Swedish/Finnish (QWERTY)",
"danish": "Danish (QWERTY)",
"icelandic": "Icelandic (QWERTY)",
"swiss_german": "Swiss German (QWERTZ)",
"swiss_french": "Swiss French (QWERTZ)",
"swiss_italian": "Swiss Italian (QWERTZ)",
"hungarian": "Hungarian (QWERTZ)",
"persian": "Persian",
"arabic": "Arabic",
"esperanto": "Esperanto",
"esperanto_with_hx": "Esperanto with 'ĥ'",
"colemak": "Colemak",
"dvorak": "Dvorak",
"jcuken_russian": "Russian (JCUKEN)",
"canadian_french": "Canadian French (QWERTY)",
"greek": "Ελληνικά",
"hebrew": "עברית",
"serbian_latin": "Serbian (QWERTZ)",
"serbian_cyrillic": "Serbian (ЉЊЕРТЗ)",
"kurdish": "کوردی"
},
"defaultSubtypes": [
{
"id": 101,
"languageTag": "en-US",
"preferredLayout": "qwerty"
},
{
"id": 102,
"languageTag": "en-UK",
"preferredLayout": "qwerty"
},
{
"id": 103,
"languageTag": "en-CA",
"preferredLayout": "qwerty"
},
{
"id": 104,
"languageTag": "en-AU",
"preferredLayout": "qwerty"
},
{
"id": 201,
"languageTag": "de-DE",
"preferredLayout": "qwertz"
},
{
"id": 202,
"languageTag": "de-AT",
"preferredLayout": "qwertz"
},
{
"id": 203,
"languageTag": "de-CH",
"preferredLayout": "swiss_german"
},
{
"id": 301,
"languageTag": "fr-FR",
"preferredLayout": "azerty"
},
{
"id": 302,
"languageTag": "fr-CA",
"preferredLayout": "canadian_french"
},
{
"id": 303,
"languageTag": "fr-CH",
"preferredLayout": "swiss_french"
},
{
"id": 401,
"languageTag": "it-IT",
"preferredLayout": "qwerty"
},
{
"id": 402,
"languageTag": "it-CH",
"preferredLayout": "swiss_italian"
},
{
"id": 501,
"languageTag": "es-ES",
"preferredLayout": "spanish"
},
{
"id": 502,
"languageTag": "es-US",
"preferredLayout": "spanish"
},
{
"id": 503,
"languageTag": "es-419",
"preferredLayout": "spanish"
},
{
"id": 601,
"languageTag": "pt-PT",
"preferredLayout": "qwerty"
},
{
"id": 602,
"languageTag": "pt-BR",
"preferredLayout": "qwerty"
},
{
"id": 701,
"languageTag": "nb-NO",
"preferredLayout": "norwegian"
},
{
"id": 702,
"languageTag": "nn-NO",
"preferredLayout": "norwegian"
},
{
"id": 711,
"languageTag": "sv-SE",
"preferredLayout": "swedish_finnish"
},
{
"id": 721,
"languageTag": "fi-FI",
"preferredLayout": "swedish_finnish"
},
{
"id": 731,
"languageTag": "da-DK",
"preferredLayout": "danish"
},
{
"id": 741,
"languageTag": "is-IS",
"preferredLayout": "icelandic"
},
{
"id": 801,
"languageTag": "fa-FA",
"preferredLayout": "persian"
},
{
"id": 901,
"languageTag": "ar",
"preferredLayout": "arabic"
},
{
"id": 1001,
"languageTag": "hu",
"preferredLayout": "hungarian"
},
{
"id": 1101,
"languageTag": "eo",
"preferredLayout": "esperanto"
},
{
"id": 1201,
"languageTag": "hr",
"preferredLayout": "qwertz"
},
{
"id": 1301,
"languageTag": "ru",
"preferredLayout": "jcuken_russian"
},
{
"id": 1401,
"languageTag": "el",
"preferredLayout": "greek"
},
{
"id": 1501,
"languageTag": "ro",
"preferredLayout": "qwerty"
},
{
"id": 1601,
"languageTag": "pl",
"preferredLayout": "qwerty"
},
{
"id": 1701,
"languageTag": "bg-bg",
"preferredLayout": "bulgarian_phonetic"
},
{
"id": 1801,
"languageTag": "tr",
"preferredLayout": "qwerty"
},
{
"id": 1901,
"languageTag": "iw-IL",
"preferredLayout": "hebrew"
},
{
"id": 2001,
"languageTag": "ckb",
"preferredLayout": "kurdish"
},
{
"id": 2101,
"languageTag": "sr-RS",
"preferredLayout": "serbian_cyrillic"
"composers": [
{ "$": "appender" },
{ "$": "hangul-unicode" },
{ "$": "kana-unicode" },
{ "$": "with-rules",
"name": "basic-telex",
"label": "Basic Telex",
"rules": {
"aw": "ă", "aa": "â", "dd": "đ", "ee": "ê", "oo": "ô", "ow": "ơ", "uw": "ư", "w": ",
"uow": "ươ",
"af": "à", "ar": "ả", "ax": "ã", "as": "á", "aj": "ạ",
"ăf": "ằ", "ăr": "ẳ", "ăx": "ẵ", "ăs": "ắ", "ăj": "ặ",
"âf": "ầ", "âr": "ẩ", "âx": "ẫ", "âs": "ấ", "âj": "ậ",
"ef": "è", "er": "ẻ", "ex": "ẽ", "es": "é", "ej": "ẹ",
"êf": "ề", "êr": "ể", "êx": "ễ", "ês": "ế", "êj": "ệ",
"if": "ì", "ir": "ỉ", "ix": "ĩ", "is": "í", "ij": "ị",
"of": "ò", "or": "ỏ", "ox": "õ", "os": "ó", "oj": "ọ",
"ôf": "ồ", "ôr": "ổ", "ôx": "ỗ", "ôs": "ố", "ôj": "ộ",
"ơf": "ờ", "ơr": "ở", "ơx": "ỡ", "ơs": "ớ", "ơj": "ợ",
"uf": "ù", "ur": "ủ", "ux": "ũ", "us": "ú", "uj": "ụ",
"ưf": "ừ", "ưr": "ử", "ưx": "ữ", "ưs": "ứ", "ưj": "ự",
"yf": "ỳ", "yr": "ỷ", "yx": "ỹ", "ys": "ý", "yj": "ỵ",
"ăw": "aw", "âa": "aa", "đd": "dd", "êe": "ee", "ôo": "oo", "ơw": "ow", "ưw": "w",
"ươw": "uow",
"àf": "af", "ảr": "ar", "ãx": "ax", "ás": "as", "ạj": "aj",
"ằf": "ăf", "ẳr": "ăr", "ẵx": "ăx", "ắs": "ăs", "ặj": "ăj",
"ầf": "âf", "ẩr": "âr", "ẫx": "âx", "ấs": "âs", "ậj": "âj",
"èf": "ef", "ẻr": "er", "ẽx": "ex", "és": "es", "ẹj": "ej",
"ềf": "êf", "ểr": "êr", "ễx": "êx", "ếs": "ês", "ệj": "êj",
"ìf": "if", "ỉr": "ir", "ĩx": "ix", "ís": "is", "ịj": "ij",
"òf": "of", "ỏr": "or", "õx": "ox", "ós": "os", "ọj": "oj",
"ồf": "ôf", "ổr": "ôr", "ỗx": "ôx", "ốs": "ôs", "ộj": "ôj",
"ờf": "ơf", "ởr": "ơr", "ỡx": "ơx", "ớs": "ơs", "ợj": "ơj",
"ùf": "uf", "ủr": "ur", "ũx": "ux", "ús": "us", "ụj": "uj",
"ừf": "ưf", "ửr": "ưr", "ữx": "ưx", "ứs": "ưs", "ựj": "ưj",
"ỳf": "yf", "ỷr": "yr", "ỹx": "yx", "ýs": "ys", "ỵj": "yj",
"àz": "a", "ảz": "a", "ãz": "a", "áz": "a", "ạz": "a",
"ằz": "ă", "ẳz": "ă", "ẵz": "ă", "ắz": "ă", "ặz": "ă",
"ầz": "â", "ẩz": "â", "ẫz": "â", "ấz": "â", "ậz": ",
"èz": "e", "ẻz": "e", "ẽz": "e", "éz": "e", "ẹz": "e",
"ềz": "ê", "ểz": "ê", "ễz": "ê", "ếz": "ê", "ệz": "ê",
"ìz": "i", "ỉz": "i", "ĩz": "i", "íz": "i", "ịz": "i",
"òz": "o", "ỏz": "o", "õz": "o", "óz": "o", "ọz": "o",
"ồz": "ô", "ổz": "ô", "ỗz": "ô", "ốz": "ô", "ộz": ",
"ờz": "ơ", "ởz": "ơ", "ỡz": "ơ", "ớz": "ơ", "ợz": "ơ",
"ùz": "u", "ủz": "u", "ũz": "u", "úz": "u", "ụz": "u",
"ừz": "ư", "ửz": "ư", "ữz": "ư", "ứz": "ư", "ựz": "ư",
"ỳz": "y", "ỷz": "y", "ỹz": "y", "ýz": "y", "ỵz": "y"
}
}
],
"currencySets": [],
"defaultSubtypes": [
]
}

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -0,0 +1,277 @@
{
"$": "ime.extension.keyboard",
"meta": {
"id": "org.florisboard.currencysets",
"version": "0.1.0",
"title": "Default currency sets",
"description": "Default currency sets which are always available.",
"maintainers": [ "patrickgold <patrick@patrickgold.dev>" ],
"license": "apache-2.0"
},
"currencySets": [
{
"id": "azerbaijani_manat",
"label": "Azerbaijani manat (₼)",
"slots": [
{ "code": 8380, "label": "₼" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "bitcoin",
"label": "Bitcoin (₿)",
"slots": [
{ "code": 8383, "label": "₿" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "dollar",
"label": "Dollar ($)",
"slots": [
{ "code": 36, "label": "$" },
{ "code": 162, "label": "¢" },
{ "code": 8364, "label": "€" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" },
{ "code": 8369, "label": "₱" }
]
},
{
"id": "euro",
"label": "Euro (€)",
"slots": [
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 36, "label": "$" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" },
{ "code": 8369, "label": "₱" }
]
},
{
"id": "indian_rupee",
"label": "Indian rupee (₹)",
"slots": [
{ "code": 8377, "label": "₹" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "israeli_new_shekel",
"label": "Israeli new shekel (₪)",
"slots": [
{ "code": 8362, "label": "₪" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "kazakhstani_tenge",
"label": "Kazakhstani tenge (₸)",
"slots": [
{ "code": 8380, "label": "₸" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "lao_kip",
"label": "Lao kip (₭)",
"slots": [
{ "code": 8365, "label": "₭" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "mongolian_togrog",
"label": "Mongolian tögrög (₮)",
"slots": [
{ "code": 8366, "label": "₮" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "nigerian_naira",
"label": "Nigerian naira (₦)",
"slots": [
{ "code": 8358, "label": "₦" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "pakistani_rupee",
"label": "Pakistani rupee (₨)",
"slots": [
{ "code": 8360, "label": "₨" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "paraguayan_guarani",
"label": "Paraguayan guaraní (₲)",
"slots": [
{ "code": 8370, "label": "₲" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "peso",
"label": "Peso (₱)",
"slots": [
{ "code": 8369, "label": "₱" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "pound",
"label": "Pound (£)",
"slots": [
{ "code": 163, "label": "£" },
{ "code": 162, "label": "¢" },
{ "code": 8364, "label": "€" },
{ "code": 36, "label": "$" },
{ "code": 165, "label": "¥" },
{ "code": 8369, "label": "₱" }
]
},
{
"id": "rial",
"label": "Rial (﷼)",
"slots": [
{ "code":65020, "label": "﷼" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "russian_ruble",
"label": "Russian ruble (₽)",
"slots": [
{ "code": 8381, "label": "₽" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "south_korean_won",
"label": "South Korean won (₩)",
"slots": [
{ "code": 8361, "label": "₩" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "thai_baht",
"label": "Thai baht (฿)",
"slots": [
{ "code": 3647, "label": "฿" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "turkish_lira",
"label": "Turkish lira (₺)",
"slots": [
{ "code": 8378, "label": "₺" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "ukrainian_hryvnia",
"label": "Ukrainian hryvnia (₴)",
"slots": [
{ "code": 8372, "label": "₴" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "vietnamese_dong",
"label": "Vietnamese đồng (₫)",
"slots": [
{ "code": 8363, "label": "₫" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 165, "label": "¥" }
]
},
{
"id": "yen",
"label": "Yen (¥)",
"slots": [
{ "code": 165, "label": "¥" },
{ "code": 36, "label": "$" },
{ "code": 8364, "label": "€" },
{ "code": 162, "label": "¢" },
{ "code": 163, "label": "£" },
{ "code": 8369, "label": "₱" }
]
}
]
}

View File

@@ -0,0 +1,644 @@
{
"$": "ime.extension.keyboard",
"meta": {
"id": "org.florisboard.layouts",
"version": "0.1.0",
"title": "Default layouts",
"description": "Default layouts which are always available.",
"maintainers": [ "patrickgold <patrick@patrickgold.dev>" ],
"license": "apache-2.0"
},
"layouts": {
"characters": [
{
"id": "arabic",
"label": "Arabic",
"authors": [ "HeiWiper" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:arabic"
},
{
"id": "azerty",
"label": "AZERTY",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "bepo",
"label": "BÉPO",
"authors": [ "salamandar" ],
"direction": "ltr"
},
{
"id": "bone",
"label": "Bone",
"authors": [ "ostrya" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:neo2"
},
{
"id": "bulgarian_bds",
"label": "Bulgarian (BDS)",
"authors": [ "iorvethe" ],
"direction": "ltr"
},
{
"id": "bulgarian_phonetic",
"label": "Bulgarian (Phonetic)",
"authors": [ "iorvethe" ],
"direction": "ltr"
},
{
"id": "canadian_french",
"label": "Canadian French (QWERTY)",
"authors": [ "The-Quantum-Alpha" ],
"direction": "ltr"
},
{
"id": "catalan",
"label": "Catalan (QWERTY)",
"authors": [ "mikelloc" ],
"direction": "ltr"
},
{
"id": "catalan_accents",
"label": "Catalan (Accents)",
"authors": [ "mikelloc" ],
"direction": "ltr"
},
{
"id": "colemak",
"label": "Colemak",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "danish",
"label": "Danish (QWERTY)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "dvorak",
"label": "Dvorak",
"authors": [ "patrickgold" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:dvorak"
},
{
"id": "esperanto",
"label": "Esperanto",
"authors": [ "jeremiah-miller", "patrickgold" ],
"direction": "ltr"
},
{
"id": "esperanto_with_hx",
"label": "Esperanto with 'ĥ'",
"authors": [ "jeremiah-miller", "patrickgold" ],
"direction": "ltr"
},
{
"id": "faroese",
"label": "Faroese (QWERTY)",
"authors": [ "BinFlush" ],
"direction": "ltr"
},
{
"id": "german",
"label": "German (QWERTZ)",
"authors": [ "mahmoudk1000" ],
"direction": "ltr"
},
{
"id": "greek",
"label": "Ελληνικά",
"authors": [ "tsiflimagas" ],
"direction": "ltr"
},
{
"id": "halmak",
"label": "Halmak",
"authors": [ "dessalines" ],
"direction": "ltr"
},
{
"id": "hebrew",
"label": "עברית",
"authors": [ "Antony" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:hebrew"
},
{
"id": "hungarian",
"label": "Hungarian",
"authors": [ "zoli111, gabik65", "patrickgold" ],
"direction": "ltr"
},
{
"id": "icelandic",
"label": "Icelandic (QWERTY)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "igbo",
"label": "Igbo",
"authors": [ "nd500" ],
"direction": "ltr"
},
{
"id": "ipa",
"label": "International Phonetic Alphabet",
"authors": [ "Huy-Ngo" ],
"direction": "ltr"
},
{
"id": "jcuken_russian",
"label": "Russian (JCUKEN)",
"authors": [ "williamtheaker" ],
"direction": "ltr"
},
{
"id": "jcuken_ukrainian",
"label": "Ukrainian (JCUKEN)",
"authors": [ "williamtheaker", "33kk" ],
"direction": "ltr"
},
{
"id": "jis",
"label": "JIS",
"authors": [ "waelwindows" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:jis"
},
{
"id": "korean",
"label": "South Korean standard",
"authors": [ "patrickgold", "Hayleia" ],
"direction": "ltr"
},
{
"id": "kurdish",
"label": "کوردی (قوەرتی نوێ)",
"authors": [ "GoRaN" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:kurdish"
},
{
"id": "kurdish_kurmanci",
"label": "Kurdî",
"authors": [ "GoRaN" ],
"direction": "ltr"
},
{
"id": "kurdish_standard",
"label": "کوردی (ق‌ڤ‌ف‌غ)",
"authors": [ "GoRaN" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:kurdish"
},
{
"id": "nalmy",
"label": "NALMY",
"authors": [ "jeremiah-mille", "jasmcole" ],
"direction": "ltr"
},
{
"id": "neo2",
"label": "Neo2",
"authors": [ "ostrya" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:neo2"
},
{
"id": "norwegian",
"label": "Norwegian (QWERTY)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "persian",
"label": "Persian",
"authors": [ "PHELAT" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:persian"
},
{
"id": "qwerty",
"label": "QWERTY",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "qwertz",
"label": "QWERTZ",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "sangaline",
"label": "Sangaline",
"authors": [ "jeremiah-miller", "sangaline" ],
"direction": "ltr"
},
{
"id": "serbian_cyrillic",
"label": "Serbian (ЉЊЕРТЗ)",
"authors": ["GrbavaCigla"],
"direction": "ltr"
},
{
"id": "serbian_latin",
"label": "Serbian (QWERTZ)",
"authors": ["GrbavaCigla"],
"direction": "ltr"
},
{
"id": "spanish",
"label": "Spanish (QWERTY)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "swedish_finnish",
"label": "Swedish/Finnish (QWERTY)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "swiss_french",
"label": "Swiss French (QWERTZ)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "swiss_german",
"label": "Swiss German (QWERTZ)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "swiss_italian",
"label": "Swiss Italian (QWERTZ)",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "thai_kedmanee",
"label": "Thai Kedmanee",
"authors": [ "mrdeck4rd" ],
"direction": "ltr"
},
{
"id": "thai_manoonchai",
"label": "Thai Manoonchai",
"authors": [ "mrdeck4rd" ],
"direction": "ltr"
},
{
"id": "turkish_f",
"label": "Turkish-F",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "turkish_q",
"label": "Turkish-Q",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "urdu_phonetic",
"label": "Urdu Phonetic",
"authors": [ "mubashir-rehman", "mirfatif" ],
"direction": "rtl",
"modifier": "org.florisboard.layouts:arabic"
},
{
"id": "warang_citi",
"label": "𑢹𑣗𑣁𑣜𑣁𑣊 𑢯𑣂𑣕𑣂",
"authors": [ "Singkiring57" ],
"direction": "ltr"
},
{
"id": "workman",
"label": "Workman",
"authors": [ "icyphox" ],
"direction": "ltr"
}
],
"charactersMod": [
{
"id": "default",
"label": "Default character modifier layout",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "arabic",
"label": "Arabic",
"authors": [ "HeiWiper" ],
"direction": "rtl"
},
{
"id": "dvorak",
"label": "Dvorak",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "hebrew",
"label": "עברית",
"authors": [ "Antony" ],
"direction": "rtl"
},
{
"id": "jis",
"label": "JIS",
"authors": [ "waelwindows" ],
"direction": "ltr"
},
{
"id": "kurdish",
"label": "کوردی",
"authors": [ "GoRaN" ],
"direction": "rtl"
},
{
"id": "neo2",
"label": "Neo2",
"authors": [ "ostrya" ],
"direction": "ltr"
},
{
"id": "persian",
"label": "Persian",
"authors": [ "PHELAT" ],
"direction": "rtl"
}
],
"extension": [
{
"id": "clipboard_cursor_row",
"label": "Clipboard Cursor Row",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"numeric": [
{
"id": "western_arabic",
"label": "Western Arabic",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "western_arabic_pc",
"label": "Western Arabic (PC)",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"numericAdvanced": [
{
"id": "western_arabic",
"label": "Western Arabic",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "western_arabic_pc",
"label": "Western Arabic (PC)",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"numericRow": [
{
"id": "bengali",
"label": "Bengali",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "cjk",
"label": "CJK",
"authors": [ "waelwindows" ],
"direction": "ltr"
},
{
"id": "devanagari",
"label": "Devanagari",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "eastern_arabic",
"label": "Eastern Arabic",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "gujarati",
"label": "Gujarati",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "gurmukhi",
"label": "Gurmukhi",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "kannada",
"label": "Kannada",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "malayalam",
"label": "Malayalam",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "neo2",
"label": "Neo2",
"authors": [ "ostrya" ],
"direction": "ltr"
},
{
"id": "oriya",
"label": "Odia",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "persian",
"label": "Persian",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "tamil",
"label": "Tamil",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "telugu",
"label": "Telugu",
"authors": [ "yashpalgoyal1304" ],
"direction": "ltr"
},
{
"id": "thai",
"label": "Thai",
"authors": [ "mrdeck4rd" ],
"direction": "ltr"
},
{
"id": "warang_citi",
"label": "Warang Citi",
"authors": [ "Singkiring57" ],
"direction": "ltr"
},
{
"id": "western_arabic",
"label": "Western Arabic",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"phone": [
{
"id": "telpad",
"label": "Simple telpad input",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"phone2": [
{
"id": "telpad",
"label": "Simple telpad input (advanced controls)",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"symbols": [
{
"id": "cjk",
"label": "CJK",
"authors": [ "waelwindows" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:cjk"
},
{
"id": "eastern",
"label": "Eastern",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "ipa",
"label": "International Phonetic Alphabet",
"authors": [ "Huy-Ngo" ],
"direction": "ltr"
},
{
"id": "neo2",
"label": "Neo2",
"authors": [ "ostrya" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:neo2"
},
{
"id": "persian",
"label": "Persian",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "western",
"label": "Western",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "western_additional_symbols",
"label": "Western (Additional symbols)",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"symbolsMod": [
{
"id": "default",
"label": "Default",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "cjk",
"label": "CJK",
"authors": [ "waelwindows" ],
"direction": "ltr"
},
{
"id": "neo2",
"label": "Neo2",
"authors": [ "ostrya" ],
"direction": "ltr"
}
],
"symbols2": [
{
"id": "cjk",
"label": "CJK",
"authors": [ "waelwindows" ],
"direction": "ltr",
"modifier": "org.florisboard.layouts:cjk"
},
{
"id": "eastern",
"label": "Eastern",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "ipa",
"label": "International Phonetic Alphabet",
"authors": [ "Huy-Ngo" ],
"direction": "ltr"
},
{
"id": "persian",
"label": "Persian",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "western",
"label": "Western",
"authors": [ "patrickgold" ],
"direction": "ltr"
}
],
"symbols2Mod": [
{
"id": "default",
"label": "Default",
"authors": [ "patrickgold" ],
"direction": "ltr"
},
{
"id": "cjk",
"label": "CJK",
"authors": [ "waelwindows" ],
"direction": "ltr"
}
]
}
}

View File

@@ -0,0 +1,40 @@
[
[
{ "code": 1590, "label": "ض" },
{ "code": 1589, "label": "ص" },
{ "code": 1579, "label": "ث" },
{ "code": 1602, "label": "ق" },
{ "code": 1601, "label": "ف" },
{ "code": 1594, "label": "غ" },
{ "code": 1593, "label": "ع" },
{ "code": 1607, "label": "ه" },
{ "code": 1582, "label": "خ" },
{ "code": 1581, "label": "ح" },
{ "code": 1580, "label": "ج" }
],
[
{ "code": 1588, "label": "ش" },
{ "code": 1587, "label": "س" },
{ "code": 1610, "label": "ي" },
{ "code": 1576, "label": "ب" },
{ "code": 1604, "label": "ل" },
{ "code": 1575, "label": "ا" },
{ "code": 1578, "label": "ت" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" },
{ "code": 1603, "label": "ك" },
{ "code": 1591, "label": "ط" }
],
[
{ "code": 1584, "label": "ذ" },
{ "code": 1569, "label": "ء" },
{ "code": 1572, "label": "ؤ" },
{ "code": 1585, "label": "ر" },
{ "code": 1609, "label": "ى" },
{ "code": 1577, "label": "ة" },
{ "code": 1608, "label": "و" },
{ "code": 1586, "label": "ز" },
{ "code": 1592, "label": "ظ" },
{ "code": 1583, "label": "د" }
]
]

View File

@@ -0,0 +1,43 @@
[
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
],
[
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "code": 39, "label": "'", "popup": {
"relevant": [
{ "code": 8218, "label": "" },
{ "code": 8216, "label": "" },
{ "code": 8217, "label": "" },
{ "code": 8249, "label": "" },
{ "code": 8250, "label": "" }
]
} }
]
]

View File

@@ -0,0 +1,47 @@
[
[
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 233, "label": "é" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 232, "label": "è" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 119, "label": "w" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 231, "label": "ç" }
],
[
{ "$": "auto_text_key", "code": 234, "label": "ê" },
{ "$": "auto_text_key", "code": 224, "label": "à" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 113, "label": "q", "popup": {
"relevant": [
{ "code": 8218, "label": "" },
{ "code": 8216, "label": "" },
{ "code": 8217, "label": "" },
{ "code": 8249, "label": "" },
{ "code": 8250, "label": "" }
]
} },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 102, "label": "f" }
]
]

View File

@@ -0,0 +1,53 @@
[
[
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "case_selector",
"lower": {
"code": 223, "label": "ß", "popup": {
"relevant": [
{ "code": 180, "label": "´" }
]
}
},
"upper": {
"code": 7838, "label": "ẞ", "popup": {
"relevant": [
{ "code": 180, "label": "´" }
]
}
}
}
],
[
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 113, "label": "q" }
],
[
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 252, "label": "ü" },
{ "$": "auto_text_key", "code": 228, "label": "ä" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 107, "label": "k" }
]
]

View File

@@ -0,0 +1,40 @@
[
[
{ "$": "auto_text_key", "code": 1099, "label": "ы" },
{ "$": "auto_text_key", "code": 1091, "label": "у" },
{ "$": "auto_text_key", "code": 1077, "label": "е" },
{ "$": "auto_text_key", "code": 1080, "label": "и" },
{ "$": "auto_text_key", "code": 1096, "label": "ш" },
{ "$": "auto_text_key", "code": 1097, "label": "щ" },
{ "$": "auto_text_key", "code": 1082, "label": "к" },
{ "$": "auto_text_key", "code": 1089, "label": "с" },
{ "$": "auto_text_key", "code": 1076, "label": "д" },
{ "$": "auto_text_key", "code": 1079, "label": "з" },
{ "$": "auto_text_key", "code": 1094, "label": "ц" }
],
[
{ "$": "auto_text_key", "code": 1100, "label": "ь" },
{ "$": "auto_text_key", "code": 1103, "label": "я" },
{ "$": "auto_text_key", "code": 1072, "label": "а" },
{ "$": "auto_text_key", "code": 1086, "label": "о" },
{ "$": "auto_text_key", "code": 1078, "label": "ж" },
{ "$": "auto_text_key", "code": 1075, "label": "г" },
{ "$": "auto_text_key", "code": 1090, "label": "т" },
{ "$": "auto_text_key", "code": 1085, "label": "н" },
{ "$": "auto_text_key", "code": 1074, "label": "в" },
{ "$": "auto_text_key", "code": 1084, "label": "м" },
{ "$": "auto_text_key", "code": 1095, "label": "ч" }
],
[
{ "$": "auto_text_key", "code": 1102, "label": "ю" },
{ "$": "auto_text_key", "code": 1081, "label": "й" },
{ "$": "auto_text_key", "code": 1098, "label": "ъ" },
{ "$": "auto_text_key", "code": 1101, "label": "э" },
{ "$": "auto_text_key", "code": 1092, "label": "ф" },
{ "$": "auto_text_key", "code": 1093, "label": "х" },
{ "$": "auto_text_key", "code": 1087, "label": "п" },
{ "$": "auto_text_key", "code": 1088, "label": "р" },
{ "$": "auto_text_key", "code": 1083, "label": "л" },
{ "$": "auto_text_key", "code": 1073, "label": "б" }
]
]

View File

@@ -0,0 +1,38 @@
[
[
{ "$": "auto_text_key", "code": 1103, "label": "я" },
{ "$": "auto_text_key", "code": 1074, "label": "в" },
{ "$": "auto_text_key", "code": 1077, "label": "е" },
{ "$": "auto_text_key", "code": 1088, "label": "р" },
{ "$": "auto_text_key", "code": 1090, "label": "т" },
{ "$": "auto_text_key", "code": 1098, "label": "ъ" },
{ "$": "auto_text_key", "code": 1091, "label": "у" },
{ "$": "auto_text_key", "code": 1080, "label": "и" },
{ "$": "auto_text_key", "code": 1086, "label": "о" },
{ "$": "auto_text_key", "code": 1087, "label": "п" },
{ "$": "auto_text_key", "code": 1095, "label": "ч" }
],
[
{ "$": "auto_text_key", "code": 1072, "label": "а" },
{ "$": "auto_text_key", "code": 1089, "label": "с" },
{ "$": "auto_text_key", "code": 1076, "label": "д" },
{ "$": "auto_text_key", "code": 1092, "label": "ф" },
{ "$": "auto_text_key", "code": 1075, "label": "г" },
{ "$": "auto_text_key", "code": 1093, "label": "х" },
{ "$": "auto_text_key", "code": 1081, "label": "й" },
{ "$": "auto_text_key", "code": 1082, "label": "к" },
{ "$": "auto_text_key", "code": 1083, "label": "л" },
{ "$": "auto_text_key", "code": 1096, "label": "ш" },
{ "$": "auto_text_key", "code": 1097, "label": "щ" }
],
[
{ "$": "auto_text_key", "code": 1079, "label": "з" },
{ "$": "auto_text_key", "code": 1100, "label": "ь" },
{ "$": "auto_text_key", "code": 1094, "label": "ц" },
{ "$": "auto_text_key", "code": 1078, "label": "ж" },
{ "$": "auto_text_key", "code": 1073, "label": "б" },
{ "$": "auto_text_key", "code": 1085, "label": "н" },
{ "$": "auto_text_key", "code": 1084, "label": "м" },
{ "$": "auto_text_key", "code": 1102, "label": "ю" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 232, "label": "è" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 233, "label": "é" },
{ "$": "auto_text_key", "code": 224, "label": "à" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,35 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 231, "label": "ç" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 768, "label": "◌̀" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 231, "label": "ç" },
{ "$": "auto_text_key", "code": 769, "label": "◌́" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "case_selector",
"lower": { "code": 59, "label": ";", "popup": {
"relevant": [
{ "code": 58, "label": ":" }
]
} },
"upper": { "code": 58, "label": ":", "popup": {
"relevant": [
{ "code": 59, "label": ";" }
]
} }
}
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 229, "label": "å" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 230, "label": "æ" },
{ "$": "auto_text_key", "code": 248, "label": "ø" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,76 @@
[
[
{ "$": "variation_selector",
"default": { "$": "case_selector",
"lower": { "code": 39, "label": "'", "popup": {
"relevant": [
{ "code": 33, "label": "!" },
{ "code": 34, "label": "\"" }
]
} },
"upper": { "code": 34, "label": "\"", "popup": {
"relevant": [
{ "code": 33, "label": "!" },
{ "code": 39, "label": "'"}
]
} }
},
"email": { "code": 64, "label": "@" },
"uri": { "code": 47, "label": "/" }
},
{ "$": "case_selector",
"lower": { "code": 44, "label": ",", "popup": {
"relevant": [
{ "code": 60, "label": "<" },
{ "code": 63, "label": "?" }
]
} },
"upper": { "code": 60, "label": "<", "popup": {
"relevant": [
{ "code": 44, "label": "," },
{ "code": 63, "label": "?" }
]
} }
},
{ "$": "case_selector",
"lower": { "code": 46, "label": ".", "popup": {
"relevant": [
{ "code": 62, "label": ">" }
]
} },
"upper": { "code": 62, "label": ">", "popup": {
"relevant": [
{ "code": 46, "label": "." }
]
} }
},
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 108, "label": "l" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 115, "label": "s" }
],
[
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 118, "label": "v" }
]
]

View File

@@ -0,0 +1,43 @@
[
[
{ "$": "auto_text_key", "code": 349, "label": "ŝ", "popup": {
"main": { "$": "auto_text_key", "code": 113, "label": "q" }
} },
{ "$": "auto_text_key", "code": 285, "label": "ĝ", "popup": {
"main": { "$": "auto_text_key", "code": 119, "label": "w" }
} },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 365, "label": "ŭ", "popup": {
"main": { "$": "auto_text_key", "code": 121, "label": "y" }
} },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 309, "label": "ĵ" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 265, "label": "ĉ", "popup": {
"main": { "$": "auto_text_key", "code": 120, "label": "x" }
} },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,44 @@
[
[
{ "$": "auto_text_key", "code": 349, "label": "ŝ", "popup": {
"main": { "$": "auto_text_key", "code": 113, "label": "q" }
} },
{ "$": "auto_text_key", "code": 285, "label": "ĝ", "popup": {
"main": { "$": "auto_text_key", "code": 119, "label": "w" }
} },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 365, "label": "ŭ", "popup": {
"main": { "$": "auto_text_key", "code": 121, "label": "y" }
} },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 309, "label": "ĵ" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 265, "label": "ĉ", "popup": {
"main": { "$": "auto_text_key", "code": 120, "label": "x" }
} },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 293, "label": "ĥ" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 240, "label": "ð" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 230, "label": "æ" },
{ "$": "auto_text_key", "code": 248, "label": "ø" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,41 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 252, "label": "ü" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 228, "label": "ä" }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "case_selector",
"lower": { "code": 223, "label": "ß" },
"upper": { "code": 7838, "label": "ẞ" }
}
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "$": "auto_text_key", "code": 894, "label": ";" },
{ "$": "auto_text_key", "code": 962, "label": "ς" },
{ "$": "auto_text_key", "code": 949, "label": "ε" },
{ "$": "auto_text_key", "code": 961, "label": "ρ" },
{ "$": "auto_text_key", "code": 964, "label": "τ" },
{ "$": "auto_text_key", "code": 965, "label": "υ" },
{ "$": "auto_text_key", "code": 952, "label": "θ" },
{ "$": "auto_text_key", "code": 953, "label": "ι" },
{ "$": "auto_text_key", "code": 959, "label": "ο" },
{ "$": "auto_text_key", "code": 960, "label": "π" }
],
[
{ "$": "auto_text_key", "code": 945, "label": "α" },
{ "$": "auto_text_key", "code": 963, "label": "σ" },
{ "$": "auto_text_key", "code": 948, "label": "δ" },
{ "$": "auto_text_key", "code": 966, "label": "φ" },
{ "$": "auto_text_key", "code": 947, "label": "γ" },
{ "$": "auto_text_key", "code": 951, "label": "η" },
{ "$": "auto_text_key", "code": 958, "label": "ξ" },
{ "$": "auto_text_key", "code": 954, "label": "κ" },
{ "$": "auto_text_key", "code": 955, "label": "λ" }
],
[
{ "$": "auto_text_key", "code": 950, "label": "ζ" },
{ "$": "auto_text_key", "code": 967, "label": "χ" },
{ "$": "auto_text_key", "code": 968, "label": "ψ" },
{ "$": "auto_text_key", "code": 969, "label": "ω" },
{ "$": "auto_text_key", "code": 946, "label": "β" },
{ "$": "auto_text_key", "code": 957, "label": "ν" },
{ "$": "auto_text_key", "code": 956, "label": "μ" }
]
]

View File

@@ -0,0 +1,70 @@
[
[
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "case_selector",
"lower": { "code": 59, "label": ";", "popup": {
"relevant": [
{ "code": 58, "label": ":" }
]
} },
"upper": { "code": 58, "label": ":", "popup": {
"relevant": [
{ "code": 59, "label": ";" }
]
} }
},
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 106, "label": "j" }
],
[
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "case_selector",
"lower": { "code": 44, "label": ",", "popup": {
"relevant": [
{ "code": 40, "label": "(" }
]
} },
"upper": { "code": 40, "label": "(", "popup": {
"relevant": [
{ "code": 44, "label": "," }
]
} }
},
{ "$": "case_selector",
"lower": { "code": 46, "label": ".", "popup": {
"relevant": [
{ "code": 41, "label": ")" }
]
} },
"upper": { "code": 41, "label": ")", "popup": {
"relevant": [
{ "code": 46, "label": "." }
]
} }
},
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 105, "label": "i" }
],
[
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 121, "label": "y" }
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "code": 39, "label": "'", "popup": {
"relevant": [
{ "code": 34, "label": "\"" },
{ "code": 96, "label": "`" }
]
} },
{ "code": 45, "label": "-", "popup": {
"relevant": [
{ "code": 95, "label": "_" }
]
} },
{ "code": 1511, "label": "ק" },
{ "code": 1512, "label": "ר" },
{ "code": 1488, "label": "א" },
{ "code": 1496, "label": "ט" },
{ "code": 1493, "label": "ו" },
{ "code": 1503, "label": "ן" },
{ "code": 1501, "label": "ם" },
{ "code": 1508, "label": "פ" }
],
[
{ "code": 1513, "label": "ש" },
{ "code": 1491, "label": "ד" },
{ "code": 1490, "label": "ג" },
{ "code": 1499, "label": "כ" },
{ "code": 1506, "label": "ע" },
{ "code": 1497, "label": "י" },
{ "code": 1495, "label": "ח" },
{ "code": 1500, "label": "ל" },
{ "code": 1498, "label": "ך" },
{ "code": 1507, "label": "ף" }
],
[
{ "code": 1494, "label": "ז" },
{ "code": 1505, "label": "ס" },
{ "code": 1489, "label": "ב" },
{ "code": 1492, "label": "ה" },
{ "code": 1504, "label": "נ" },
{ "code": 1502, "label": "מ" },
{ "code": 1510, "label": "צ" },
{ "code": 1514, "label": "ת" },
{ "code": 1509, "label": "ץ" }
]
]

View File

@@ -0,0 +1,38 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 246, "label": "ö" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 233, "label": "é" },
{ "$": "auto_text_key", "code": 225, "label": "á" }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 252, "label": "ü" }
]
]

View File

@@ -0,0 +1,38 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 240, "label": "ð" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 230, "label": "æ" },
{ "$": "auto_text_key", "code": 246, "label": "ö" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 254, "label": "þ" }
]
]

View File

@@ -0,0 +1,48 @@
[
[
{ "$": "case_selector",
"lower": { "code": 7909, "label": "ụ" },
"upper": { "code": 7908, "label": "Ụ" }
},
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "case_selector",
"lower": { "code": 7883, "label": "ị" },
"upper": { "code": 7882, "label": "Ị" }
}
],
[
{ "$": "case_selector",
"lower": { "code": 7749, "label": "ṅ" },
"upper": { "code": 7748, "label": "Ṅ" }
},
{ "$": "case_selector",
"lower": { "code": 7885, "label": "ọ" },
"upper": { "code": 7884, "label": "Ọ" }
},
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,276 @@
[
[
{
"$": "auto_text_key", "code": 113, "label": "q"
},
{
"$": "auto_text_key", "code": 119, "label": "w",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 695, "label": "◌ʷ" },
{ "$": "auto_text_key", "code": 653, "label": "ʍ" }
]
}
},
{
"$": "auto_text_key", "code": 101, "label": "e",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 600, "label": "ɘ" },
{ "$": "auto_text_key", "code": 604, "label": "ɜ" },
{ "$": "auto_text_key", "code": 601, "label": "ə" },
{ "$": "auto_text_key", "code": 602, "label": "ɚ" },
{ "$": "auto_text_key", "code": 7498, "label": "◌ᵊ" },
{ "$": "auto_text_key", "code": 603, "label": "ɛ" }
]
}
},
{
"$": "auto_text_key", "code": 114, "label": "r",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 637, "label": "ɽ" },
{ "$": "auto_text_key", "code": 633, "label": "ɹ" },
{ "$": "auto_text_key", "code": 638, "label": "ɾ" },
{ "$": "auto_text_key", "code": 635, "label": "ɻ" },
{ "$": "auto_text_key", "code": 641, "label": "ʁ" },
{ "$": "auto_text_key", "code": 734, "label": "◌˞" },
{ "$": "auto_text_key", "code": 640, "label": "ʀ" }
]
}
},
{
"$": "auto_text_key", "code": 116, "label": "t",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 648, "label": "ʈ" },
{ "$": "auto_text_key", "code": 7615, "label": "◌ᶿ" },
{ "$": "auto_text_key", "code": 952, "label": "θ" }
]
}
},
{
"$": "auto_text_key", "code": 121, "label": "y",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 612, "label": "ɤ" },
{ "$": "auto_text_key", "code": 655, "label": "ʏ" }
]
}
},
{
"$": "auto_text_key", "code": 117, "label": "u",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 7551, "label": "ᵿ" },
{ "$": "auto_text_key", "code": 649, "label": "ʉ" },
{ "$": "auto_text_key", "code": 650, "label": "ʊ" }
]
}
},
{
"$": "auto_text_key", "code": 105, "label": "i",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 7574, "label": "ᵻ" },
{ "$": "auto_text_key", "code": 616, "label": "ɨ" },
{ "$": "auto_text_key", "code": 618, "label": "ɪ" }
]
}
},
{
"$": "auto_text_key", "code": 111, "label": "o",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 664, "label": "ʘ" },
{ "$": "auto_text_key", "code": 248, "label": "ø" },
{ "$": "auto_text_key", "code": 606, "label": "ɞ" },
{ "$": "auto_text_key", "code": 339, "label": "œ" },
{ "$": "auto_text_key", "code": 629, "label": "ɵ" },
{ "$": "auto_text_key", "code": 630, "label": "ɶ" },
{ "$": "auto_text_key", "code": 596, "label": "ɔ" }
]
}
},
{
"$": "auto_text_key", "code": 112, "label": "p"
}
],
[
{
"$": "auto_text_key", "code": 97, "label": "a",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 230, "label": "æ" },
{ "$": "auto_text_key", "code": 594, "label": "ɒ" },
{ "$": "auto_text_key", "code": 592, "label": "ɐ" },
{ "$": "auto_text_key", "code": 593, "label": "ɑ" }
]
}
},
{
"$": "auto_text_key", "code": 115, "label": "s",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 642, "label": "ʂ" },
{ "$": "auto_text_key", "code": 597, "label": "ɕ" },
{ "$": "auto_text_key", "code": 643, "label": "ʃ" }
]
}
},
{
"$": "auto_text_key", "code": 100, "label": "d",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 598, "label": "ɖ" },
{ "$": "auto_text_key", "code": 599, "label": "ɗ" },
{ "$": "auto_text_key", "code": 240, "label": "ð" }
]
}
},
{
"$": "auto_text_key", "code": 102, "label": "f",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 632, "label": "ɸ" }
]
}
},
{
"$": "auto_text_key", "code": 609, "label": "ɡ",
"popup": {
"main": { "$": "auto_text_key", "code": 103, "label": "g" },
"relevant": [
{ "$": "auto_text_key", "code": 608, "label": "ɠ" },
{ "$": "auto_text_key", "code": 610, "label": "ɢ" },
{ "$": "auto_text_key", "code": 667, "label": "ʛ" },
{ "$": "auto_text_key", "code": 667, "label": "ʛ" },
{ "$": "auto_text_key", "code": 736, "label": "◌ˠ" },
{ "$": "auto_text_key", "code": 611, "label": "ɣ" }
]
}
},
{
"$": "auto_text_key", "code": 104, "label": "h",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 614, "label": "ɦ" },
{ "$": "auto_text_key", "code": 615, "label": "ɧ" },
{ "$": "auto_text_key", "code": 295, "label": "ħ" },
{ "$": "auto_text_key", "code": 613, "label": "ɥ" },
{ "$": "auto_text_key", "code": 688, "label": "◌ʰ" },
{ "$": "auto_text_key", "code": 668, "label": "ʜ" }
]
}
},
{
"$": "auto_text_key", "code": 106, "label": "j",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 668, "label": "ʝ" },
{ "$": "auto_text_key", "code": 607, "label": "ɟ" },
{ "$": "auto_text_key", "code": 690, "label": "◌ʲ" },
{ "$": "auto_text_key", "code": 664, "label": "ʄ" }
]
}
},
{
"$": "auto_text_key", "code": 107, "label": "k"
},
{
"$": "auto_text_key", "code": 108, "label": "l",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 620, "label": "ɬ" },
{ "$": "auto_text_key", "code": 634, "label": "ɺ" },
{ "$": "auto_text_key", "code": 671, "label": "ʟ" },
{ "$": "auto_text_key", "code": 654, "label": "ʎ" },
{ "$": "auto_text_key", "code": 737, "label": "◌ˡ" },
{ "$": "auto_text_key", "code": 622, "label": "ɮ" }
]
}
},
{
"$": "auto_text_key", "code": 660, "label": "ʔ",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 661, "label": "ʕ" },
{ "$": "auto_text_key", "code": 674, "label": "ʢ" },
{ "$": "auto_text_key", "code": 740, "label": "◌ˤ" },
{ "$": "auto_text_key", "code": 673, "label": "ʡ" }
]
}
}
],
[
{
"$": "auto_text_key", "code": 122, "label": "z",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 656, "label": "ʐ" },
{ "$": "auto_text_key", "code": 657, "label": "ʑ" },
{ "$": "auto_text_key", "code": 658, "label": "ʒ" }
]
}
},
{
"$": "auto_text_key", "code": 120, "label": "x",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 739, "label": "◌ˣ" },
{ "$": "auto_text_key", "code": 967, "label": "χ" }
]
}
},
{
"$": "auto_text_key", "code": 99, "label": "c",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 231, "label": "ç" }
]
}
},
{
"$": "auto_text_key", "code": 118, "label": "v",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 651, "label": "ʋ" },
{ "$": "auto_text_key", "code": 652, "label": "ʌ" }
]
}
},
{
"$": "auto_text_key", "code": 98, "label": "b",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 595, "label": "ɓ" },
{ "$": "auto_text_key", "code": 665, "label": "ʙ" },
{ "$": "auto_text_key", "code": 946, "label": "β" }
]
}
},
{
"$": "auto_text_key", "code": 110, "label": "n",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 626, "label": "ɲ" },
{ "$": "auto_text_key", "code": 627, "label": "ɳ" },
{ "$": "auto_text_key", "code": 628, "label": "ɴ" },
{ "$": "auto_text_key", "code": 8319, "label": "◌ⁿ" },
{ "$": "auto_text_key", "code": 771, "label": "◌̃" },
{ "$": "auto_text_key", "code": 631, "label": "ŋ" }
]
}
},
{
"$": "auto_text_key", "code": 109, "label": "m",
"popup": {
"relevant": [
{ "$": "auto_text_key", "code": 625, "label": "ɱ" },
{ "$": "auto_text_key", "code": 624, "label": "ɰ" },
{ "$": "auto_text_key", "code": 623, "label": "ɯ" }
]
}
}
]
]

View File

@@ -0,0 +1,39 @@
[
[
{ "$": "auto_text_key", "code": 1081, "label": "й" },
{ "$": "auto_text_key", "code": 1094, "label": "ц" },
{ "$": "auto_text_key", "code": 1091, "label": "у" },
{ "$": "auto_text_key", "code": 1082, "label": "к" },
{ "$": "auto_text_key", "code": 1077, "label": "е" },
{ "$": "auto_text_key", "code": 1085, "label": "н" },
{ "$": "auto_text_key", "code": 1075, "label": "г" },
{ "$": "auto_text_key", "code": 1096, "label": "ш" },
{ "$": "auto_text_key", "code": 1097, "label": "щ" },
{ "$": "auto_text_key", "code": 1079, "label": "з" },
{ "$": "auto_text_key", "code": 1093, "label": "х" }
],
[
{ "$": "auto_text_key", "code": 1092 , "label": "ф" },
{ "$": "auto_text_key", "code": 1099 , "label": "ы" },
{ "$": "auto_text_key", "code": 1074 , "label": "в" },
{ "$": "auto_text_key", "code": 1072 , "label": "а" },
{ "$": "auto_text_key", "code": 1087 , "label": "п" },
{ "$": "auto_text_key", "code": 1088 , "label": "р" },
{ "$": "auto_text_key", "code": 1086 , "label": "о" },
{ "$": "auto_text_key", "code": 1083 , "label": "л" },
{ "$": "auto_text_key", "code": 1076 , "label": "д" },
{ "$": "auto_text_key", "code": 1078 , "label": "ж" },
{ "$": "auto_text_key", "code": 1101 , "label": "э" }
],
[
{ "$": "auto_text_key", "code": 1103 , "label": "я" },
{ "$": "auto_text_key", "code": 1095 , "label": "ч" },
{ "$": "auto_text_key", "code": 1089 , "label": "с" },
{ "$": "auto_text_key", "code": 1084 , "label": "м" },
{ "$": "auto_text_key", "code": 1080 , "label": "и" },
{ "$": "auto_text_key", "code": 1090 , "label": "т" },
{ "$": "auto_text_key", "code": 1100 , "label": "ь" },
{ "$": "auto_text_key", "code": 1073 , "label": "б" },
{ "$": "auto_text_key", "code": 1102 , "label": "ю" }
]
]

View File

@@ -0,0 +1,39 @@
[
[
{ "$": "auto_text_key", "code": 1081, "label": "й" },
{ "$": "auto_text_key", "code": 1094, "label": "ц" },
{ "$": "auto_text_key", "code": 1091, "label": "у" },
{ "$": "auto_text_key", "code": 1082, "label": "к" },
{ "$": "auto_text_key", "code": 1077, "label": "е" },
{ "$": "auto_text_key", "code": 1085, "label": "н" },
{ "$": "auto_text_key", "code": 1075, "label": "г" },
{ "$": "auto_text_key", "code": 1096, "label": "ш" },
{ "$": "auto_text_key", "code": 1097, "label": "щ" },
{ "$": "auto_text_key", "code": 1079, "label": "з" },
{ "$": "auto_text_key", "code": 1093, "label": "х" }
],
[
{ "$": "auto_text_key", "code": 1092 , "label": "ф" },
{ "$": "auto_text_key", "code": 1110 , "label": "і" },
{ "$": "auto_text_key", "code": 1074 , "label": "в" },
{ "$": "auto_text_key", "code": 1072 , "label": "а" },
{ "$": "auto_text_key", "code": 1087 , "label": "п" },
{ "$": "auto_text_key", "code": 1088 , "label": "р" },
{ "$": "auto_text_key", "code": 1086 , "label": "о" },
{ "$": "auto_text_key", "code": 1083 , "label": "л" },
{ "$": "auto_text_key", "code": 1076 , "label": "д" },
{ "$": "auto_text_key", "code": 1078 , "label": "ж" },
{ "$": "auto_text_key", "code": 1108 , "label": "є" }
],
[
{ "$": "auto_text_key", "code": 1103 , "label": "я" },
{ "$": "auto_text_key", "code": 1095 , "label": "ч" },
{ "$": "auto_text_key", "code": 1089 , "label": "с" },
{ "$": "auto_text_key", "code": 1084 , "label": "м" },
{ "$": "auto_text_key", "code": 1080 , "label": "и" },
{ "$": "auto_text_key", "code": 1090 , "label": "т" },
{ "$": "auto_text_key", "code": 1100 , "label": "ь" },
{ "$": "auto_text_key", "code": 1073 , "label": "б" },
{ "$": "auto_text_key", "code": 1102 , "label": "ю" }
]
]

View File

@@ -0,0 +1,346 @@
[
[
{ "$": "kana_selector",
"hira": { "code": 12396, "label": "ぬ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12492, "label": "ヌ" },
"half": { "code": 65415, "label": "ヌ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12405, "label": "ふ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12501, "label": "フ" },
"half": { "code": 65420, "label": "フ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12354, "label": "あ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12450, "label": "ア" },
"half": { "code": 65393, "label": "ア" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12358, "label": "う" },
"kata": { "$": "char_width_selector",
"full": { "code": 12454, "label": "ウ" },
"half": { "code": 65395, "label": "ウ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12360, "label": "え" },
"kata": { "$": "char_width_selector",
"full": { "code": 12456, "label": "エ" },
"half": { "code": 65396, "label": "エ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12362, "label": "お" },
"kata": { "$": "char_width_selector",
"full": { "code": 12458, "label": "オ" },
"half": { "code": 65397, "label": "オ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12420, "label": "や" },
"kata": { "$": "char_width_selector",
"full": { "code": 12516, "label": "ヤ" },
"half": { "code": 65428, "label": "ヤ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12422, "label": "ゆ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12518, "label": "ユ" },
"half": { "code": 65429, "label": "ユ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12424, "label": "よ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12520, "label": "ヨ" },
"half": { "code": 65430, "label": "ヨ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12431, "label": "わ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12527, "label": "ワ" },
"half": { "code": 65436, "label": "ワ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12411, "label": "ほ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12507, "label": "ホ" },
"half": { "code": 65422, "label": "ホ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12408, "label": "へ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12504, "label": "ヘ" },
"half": { "code": 65421, "label": "ヘ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12540, "label": "ー" },
"kata": { "$": "char_width_selector",
"full": { "code": 12540, "label": "ー" },
"half": { "code": 65392, "label": "ー" }
}
}
],
[
{ "$": "kana_selector",
"hira": { "code": 12383, "label": "た" },
"kata": { "$": "char_width_selector",
"full": { "code": 12479, "label": "タ" },
"half": { "code": 65408, "label": "タ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12390, "label": "て" },
"kata": { "$": "char_width_selector",
"full": { "code": 12486, "label": "テ" },
"half": { "code": 65411, "label": "テ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12356, "label": "い" },
"kata": { "$": "char_width_selector",
"full": { "code": 12452, "label": "イ" },
"half": { "code": 65394, "label": "イ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12377, "label": "す" },
"kata": { "$": "char_width_selector",
"full": { "code": 12473, "label": "ス" },
"half": { "code": 65405, "label": "ス" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12363, "label": "か" },
"kata": { "$": "char_width_selector",
"full": { "code": 12459, "label": "カ" },
"half": { "code": 65398, "label": "カ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12435, "label": "ん" },
"kata": { "$": "char_width_selector",
"full": { "code": 12531, "label": "ン" },
"half": { "code": 65437, "label": "ン" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12394, "label": "な" },
"kata": { "$": "char_width_selector",
"full": { "code": 12490, "label": "ナ" },
"half": { "code": 65413, "label": "ナ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12395, "label": "に" },
"kata": { "$": "char_width_selector",
"full": { "code": 12491, "label": "ニ" },
"half": { "code": 65414, "label": "ニ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12425, "label": "ら" },
"kata": { "$": "char_width_selector",
"full": { "code": 12521, "label": "ラ" },
"half": { "code": 65431, "label": "ラ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12379, "label": "せ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12475, "label": "セ" },
"half": { "code": 65406, "label": "セ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12441, "label": "゛" },
"kata": { "$": "char_width_selector",
"full": { "code": 12441, "label": "゛" },
"half": { "code": 65438, "label": "゙" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12442, "label": "゜" },
"kata": { "$": "char_width_selector",
"full": { "code": 12442, "label": "゜" },
"half": { "code": 65439, "label": "゚" }
}
}
],
[
{ "$": "kana_selector",
"hira": { "code": 12385, "label": "ち" },
"kata": { "$": "char_width_selector",
"full": { "code": 12481, "label": "チ" },
"half": { "code": 65409, "label": "チ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12392, "label": "と" },
"kata": { "$": "char_width_selector",
"full": { "code": 12488, "label": "ト" },
"half": { "code": 65412, "label": "ト" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12375, "label": "し" },
"kata": { "$": "char_width_selector",
"full": { "code": 12471, "label": "シ" },
"half": { "code": 65410, "label": "シ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12399, "label": "は" },
"kata": { "$": "char_width_selector",
"full": { "code": 12495, "label": "ハ" },
"half": { "code": 65418, "label": "ハ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12365, "label": "き" },
"kata": { "$": "char_width_selector",
"full": { "code": 12461, "label": "キ" },
"half": { "code": 65399, "label": "キ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12367, "label": "く" },
"kata": { "$": "char_width_selector",
"full": { "code": 12463, "label": "ク" },
"half": { "code": 65400, "label": "ク" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12414, "label": "ま" },
"kata": { "$": "char_width_selector",
"full": { "code": 12510, "label": "マ" },
"half": { "code": 65423, "label": "マ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12398, "label": "の" },
"kata": { "$": "char_width_selector",
"full": { "code": 12494, "label": "" },
"half": { "code": 65417, "label": "ノ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12426, "label": "り" },
"kata": { "$": "char_width_selector",
"full": { "code": 12522, "label": "リ" },
"half": { "code": 65432, "label": "リ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12428, "label": "れ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12524, "label": "レ" },
"half": { "code": 65434, "label": "レ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12369, "label": "け" },
"kata": { "$": "char_width_selector",
"full": { "code": 12465, "label": "ケ" },
"half": { "code": 65401, "label": "ケ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12416, "label": "む" },
"kata": { "$": "char_width_selector",
"full": { "code": 12512, "label": "ム" },
"half": { "code": 65425, "label": "ム" }
}
}
],
[
{ "$": "kana_selector",
"hira": { "code": 12388, "label": "つ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12484, "label": "ツ" },
"half": { "code": 65410, "label": "ツ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12373, "label": "さ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12469, "label": "サ" },
"half": { "code": 65403, "label": "サ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12381, "label": "そ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12477, "label": "ソ" },
"half": { "code": 65407, "label": "ソ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12402, "label": "ひ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12498, "label": "ヒ" },
"half": { "code": 65419, "label": "ヒ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12371, "label": "こ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12467, "label": "コ" },
"half": { "code": 65402, "label": "コ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12415, "label": "み" },
"kata": { "$": "char_width_selector",
"full": { "code": 12511, "label": "ミ" },
"half": { "code": 65424, "label": "ミ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12418, "label": "も" },
"kata": { "$": "char_width_selector",
"full": { "code": 12514, "label": "モ" },
"half": { "code": 65427, "label": "モ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12397, "label": "ね" },
"kata": { "$": "char_width_selector",
"full": { "code": 12493, "label": "ネ" },
"half": { "code": 65416, "label": "ネ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12427, "label": "る" },
"kata": { "$": "char_width_selector",
"full": { "code": 12523, "label": "ル" },
"half": { "code": 65433, "label": "ル" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12417, "label": "め" },
"kata": { "$": "char_width_selector",
"full": { "code": 12513, "label": "メ" },
"half": { "code": 65426, "label": "メ" }
}
},
{ "$": "kana_selector",
"hira": { "code": 12429, "label": "ろ" },
"kata": { "$": "char_width_selector",
"full": { "code": 12525, "label": "ロ" },
"half": { "code": 65435, "label": "ロ" }
}
}
]
]

View File

@@ -0,0 +1,55 @@
[
[
{ "$": "case_selector",
"lower": { "code": 12610, "label": "ㅂ" },
"upper": { "code": 12611, "label": "ㅃ" }
},
{ "$": "case_selector",
"lower": { "code": 12616, "label": "ㅈ" },
"upper": { "code": 12617, "label": "ㅉ" }
},
{ "$": "case_selector",
"lower": { "code": 12599, "label": "ㄷ" },
"upper": { "code": 12600, "label": "ㄸ" }
},
{ "$": "case_selector",
"lower": { "code": 12593, "label": "ㄱ" },
"upper": { "code": 12594, "label": "ㄲ" }
},
{ "$": "case_selector",
"lower": { "code": 12613, "label": "ㅅ" },
"upper": { "code": 12614, "label": "ㅆ" }
},
{ "$": "auto_text_key", "code": 12635, "label": "ㅛ"},
{ "$": "auto_text_key", "code": 12629, "label": "ㅕ"},
{ "$": "auto_text_key", "code": 12625, "label": "ㅑ"},
{ "$": "case_selector",
"lower": { "code": 12624, "label": "ㅐ" },
"upper": { "code": 12626, "label": "ㅒ" }
},
{ "$": "case_selector",
"lower": { "code": 12628, "label": "ㅔ" },
"upper": { "code": 12630, "label": "ㅖ" }
}
],
[
{ "$": "auto_text_key", "code": 12609, "label": "ㅁ"},
{ "$": "auto_text_key", "code": 12596, "label": "ㄴ"},
{ "$": "auto_text_key", "code": 12615, "label": "ㅇ"},
{ "$": "auto_text_key", "code": 12601, "label": "ㄹ"},
{ "$": "auto_text_key", "code": 12622, "label": "ㅎ"},
{ "$": "auto_text_key", "code": 12631, "label": "ㅗ"},
{ "$": "auto_text_key", "code": 12627, "label": "ㅓ"},
{ "$": "auto_text_key", "code": 12623, "label": "ㅏ"},
{ "$": "auto_text_key", "code": 12643, "label": "ㅣ"}
],
[
{ "$": "auto_text_key", "code": 12619, "label": "ㅋ"},
{ "$": "auto_text_key", "code": 12620, "label": "ㅌ"},
{ "$": "auto_text_key", "code": 12618, "label": "ㅊ"},
{ "$": "auto_text_key", "code": 12621, "label": "ㅍ"},
{ "$": "auto_text_key", "code": 12640, "label": "ㅠ"},
{ "$": "auto_text_key", "code": 12636, "label": "ㅜ"},
{ "$": "auto_text_key", "code": 12641, "label": "ㅡ"}
]
]

View File

@@ -0,0 +1,64 @@
[
[
{ "code": 1602, "label": "ق", "popup": {
"main": { "code": 1647, "label": "ٯ" }
} },
{ "code": 1608, "label": "و", "popup": {
"main": { "code": -255, "label": "وو" }
} },
{ "code": 1749, "label": "", "popup": {
"main": { "code": 1577, "label": "ة" }
} },
{ "code": 1585, "label": "ر", "popup": {
"main": { "code": 1685, "label": "ڕ" }
} },
{ "code": 1578, "label": "ت", "popup": {
"main": { "code": 1591, "label": "ط" }
} },
{ "code": 1740, "label": "ی", "popup": {
"main": { "code": 1742, "label": "ێ" }
} },
{ "code": 1574, "label": "ﺋ", "popup": {
"main": { "code": 1569, "label": "ء" }
} },
{ "code": 1593, "label": "ع", "popup": {
"main": { "code": 1594, "label": "غ" }
} },
{ "code": 1734, "label": "ۆ" },
{ "code": 1662, "label": "پ", "popup": {
"main": { "code": 1579, "label": "ث" }
} }
],
[
{"code": 1575, "label": "ا"},
{ "code": 1587, "label": "س" },
{ "code": 1588, "label": "ش" },
{ "code": 1583, "label": "د", "popup": {
"main": {"code": 1584, "label": "ذ" }
} },
{ "code": 1601, "label": "ف" , "popup": {
"main": {"code": 1700, "label": "ڤ" }
} },
{ "code": 1607, "label": "ھ" },
{ "code": 1688, "label": "ژ", "popup": {
"main": { "code": 1600, "label": "▬" }
} },
{ "code": 1604, "label": "ل", "popup": {
"main": { "code": 1717, "label": "ڵ" }
} },
{ "code": 1705, "label": "ک" },
{ "code": 1711, "label": "گ" }
],
[
{ "code": 1586, "label": "ز", "popup": {
"main": {"code": 1592, "label": "ظ" }
} },
{ "code": 1582, "label": "خ" },
{ "code": 1580, "label": "ج" },
{ "code": 1670, "label": "چ" },
{ "code": 1581, "label": "ح" },
{ "code": 1576, "label": "ب" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" }
]
]

View File

@@ -0,0 +1,39 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 251, "label": "û" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 234, "label": "ê" },
{ "$": "auto_text_key", "code": 238, "label": "î" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 231, "label": "ç" },
{ "$": "auto_text_key", "code": 351, "label": "ş" }
]
]

View File

@@ -0,0 +1,66 @@
[
[
{ "code": 1602, "label": "ق", "popup": {
"main": { "code": 1647, "label": "ٯ" }
} },
{ "code": 1700, "label": "ڤ" },
{ "code": 1601, "label": "ف" },
{ "code": 1594, "label": "غ" },
{ "code": 1593, "label": "ع"},
{ "code": 1607, "label": "ھ" },
{ "code": 1749, "label": "", "popup": {
"main": { "code": 1577, "label": "ة" }
} },
{ "code": 1578, "label": "ت", "popup": {
"main": { "code": 1591, "label": "ط" }
} },
{ "code": 1581, "label": "ح" },
{ "code": 1582, "label": "خ" }
],
[
{ "code": 1588, "label": "ش" },
{ "code": 1587, "label": "س" },
{ "code": 1740, "label": "ی" },
{ "code": 1742, "label": "ێ" },
{ "code": 1604, "label": "ل" },
{ "code": 1717, "label": "ڵ" },
{ "code": 1575, "label": "ا" },
{ "code": 1606, "label": "ن" },
{ "code": 1580, "label": "ج" },
{ "code": 1670, "label": "چ" }
],
[
{ "code": 1576, "label": "ب" },
{ "code": 1586, "label": "ز", "popup": {
"main": {"code": 1592, "label": "ظ" }
} },
{ "code": 1585, "label": "ر" },
{ "code": 1685, "label": "ڕ" },
{ "code": 1583, "label": "د", "popup": {
"main": {"code": 1584, "label": "ذ" }
} },
{ "code": -255, "label": "وو" },
{ "code": 1608, "label": "و" },
{ "code": 1734, "label": "ۆ" },
{ "code": 1705, "label": "ک" },
{ "code": 1711, "label": "گ" }
],
[
{ "code": 1574, "label": "ﺋ", "popup": {
"main": { "code": 1569, "label": "ء" }
} },
{ "code": 1662, "label": "پ", "popup": {
"main": { "code": 1579, "label": "ث" }
} },
{ "code": 1688, "label": "ژ" },
{ "code": 1605, "label": "م" },
{ "code": 1567, "label": "؟" },
{ "code": 1548, "label": "،" },
{ "code": 46, "label": "." }
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 106, "label": "j" }
],
[
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 113, "label": "q" }
],
[
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 102, "label": "f" }
]
]

View File

@@ -0,0 +1,53 @@
[
[
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "case_selector",
"lower": {
"code": 223, "label": "ß", "popup": {
"relevant": [
{ "code": 180, "label": "´" }
]
}
},
"upper": {
"code": 7838, "label": "ẞ", "popup": {
"relevant": [
{ "code": 180, "label": "´" }
]
}
}
}
],
[
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 121, "label": "y" }
],
[
{ "$": "auto_text_key", "code": 252, "label": "ü" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 228, "label": "ä" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 106, "label": "j" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 229, "label": "å" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 248, "label": "ø" },
{ "$": "auto_text_key", "code": 230, "label": "æ" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,39 @@
[
[
{ "code": 1590, "label": "ض" },
{ "code": 1589, "label": "ص" },
{ "code": 1579, "label": "ث" },
{ "code": 1602, "label": "ق" },
{ "code": 1601, "label": "ف" },
{ "code": 1594, "label": "غ" },
{ "code": 1593, "label": "ع" },
{ "code": 1607, "label": "ه" },
{ "code": 1582, "label": "خ" },
{ "code": 1581, "label": "ح" },
{ "code": 1580, "label": "ج" }
],
[
{ "code": 1588, "label": "ش" },
{ "code": 1587, "label": "س" },
{ "code": 1740, "label": "ی" },
{ "code": 1576, "label": "ب" },
{ "code": 1604, "label": "ل" },
{ "code": 1575, "label": "ا" },
{ "code": 1578, "label": "ت" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" },
{ "code": 1705, "label": "ک" },
{ "code": 1711, "label": "گ" }
],
[
{ "code": 1592, "label": "ظ" },
{ "code": 1591, "label": "ط" },
{ "code": 1586, "label": "ز" },
{ "code": 1585, "label": "ر" },
{ "code": 1584, "label": "ذ" },
{ "code": 1583, "label": "د" },
{ "code": 1662, "label": "پ" },
{ "code": 1608, "label": "و" },
{ "code": 1670, "label": "چ" }
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 110, "label": "n" }
],
[
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
],
[
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 111, "label": "o" }
]
]

View File

@@ -0,0 +1,38 @@
[
[
{ "$": "auto_text_key", "code": 1113, "label": "љ" },
{ "$": "auto_text_key", "code": 1114, "label": "њ" },
{ "$": "auto_text_key", "code": 1077, "label": "е" },
{ "$": "auto_text_key", "code": 1088, "label": "р" },
{ "$": "auto_text_key", "code": 1090, "label": "т" },
{ "$": "auto_text_key", "code": 1079, "label": "з" },
{ "$": "auto_text_key", "code": 1091, "label": "у" },
{ "$": "auto_text_key", "code": 1080, "label": "и" },
{ "$": "auto_text_key", "code": 1086, "label": "о" },
{ "$": "auto_text_key", "code": 1087, "label": "п" },
{ "$": "auto_text_key", "code": 1096, "label": "ш" }
],
[
{ "$": "auto_text_key", "code": 1072, "label": "а" },
{ "$": "auto_text_key", "code": 1089, "label": "с" },
{ "$": "auto_text_key", "code": 1076, "label": "д" },
{ "$": "auto_text_key", "code": 1092, "label": "ф" },
{ "$": "auto_text_key", "code": 1075, "label": "г" },
{ "$": "auto_text_key", "code": 1093, "label": "х" },
{ "$": "auto_text_key", "code": 1112, "label": "ј" },
{ "$": "auto_text_key", "code": 1082, "label": "к" },
{ "$": "auto_text_key", "code": 1083, "label": "л" },
{ "$": "auto_text_key", "code": 1095, "label": "ч" },
{ "$": "auto_text_key", "code": 1115, "label": "ћ" }
],
[
{ "$": "auto_text_key", "code": 1119, "label": "џ" },
{ "$": "auto_text_key", "code": 1094, "label": "ц" },
{ "$": "auto_text_key", "code": 1074, "label": "в" },
{ "$": "auto_text_key", "code": 1073, "label": "б" },
{ "$": "auto_text_key", "code": 1085, "label": "н" },
{ "$": "auto_text_key", "code": 1084, "label": "м" },
{ "$": "auto_text_key", "code": 1106, "label": "ђ" },
{ "$": "auto_text_key", "code": 1078, "label": "ж" }
]
]

View File

@@ -0,0 +1,39 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 353, "label": "š" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 269, "label": "č" },
{ "$": "auto_text_key", "code": 263, "label": "ć" }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 273, "label": "đ" },
{ "$": "auto_text_key", "code": 382, "label": "ž" }
]
]

View File

@@ -0,0 +1,35 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 241, "label": "ñ" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,37 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 229, "label": "å" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 228, "label": "ä" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,49 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 232, "label": "è", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 252, "label": "ü" }
]
} }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 233, "label": "é", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 246, "label": "ö" }
]
} },
{ "$": "auto_text_key", "code": 224, "label": "à", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 228, "label": "ä" }
]
} }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,49 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 252, "label": "ü", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 232, "label": "è" }
]
} }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 246, "label": "ö", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 233, "label": "é" }
]
} },
{ "$": "auto_text_key", "code": 228, "label": "ä", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 224, "label": "à" }
]
} }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,49 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 105, "label": "i" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 252, "label": "ü", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 232, "label": "è" }
]
} }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 246, "label": "ö", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 233, "label": "é" }
]
} },
{ "$": "auto_text_key", "code": 228, "label": "ä", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 224, "label": "à" }
]
} }
],
[
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" }
]
]

View File

@@ -0,0 +1,194 @@
[
[
{ "$": "case_selector",
"lower": { "code": 3653, "label": "ๅ" },
"upper": { "code": 43, "label": "+" }
},
{ "$": "case_selector",
"lower": { "code": 47, "label": "/" },
"upper": { "code": 3665, "label": "๑" }
},
{ "$": "case_selector",
"lower": { "code": 95, "label": "_" },
"upper": { "code": 3666, "label": "๒" }
},
{ "$": "case_selector",
"lower": { "code": 3616, "label": "ภ" },
"upper": { "code": 3667, "label": "๓" }
},
{ "$": "case_selector",
"lower": { "code": 3606, "label": "ถ" },
"upper": { "code": 3668, "label": "๔" }
},
{ "$": "case_selector",
"lower": { "code": 3640, "label": "ุ" },
"upper": { "code": 3641, "label": "ู" }
},
{ "$": "case_selector",
"lower": { "code": 3638, "label": "ึ" },
"upper": { "code": 3647, "label": "฿" }
},
{ "$": "case_selector",
"lower": { "code": 3588, "label": "ค" },
"upper": { "code": 3669, "label": "๕" }
},
{ "$": "case_selector",
"lower": { "code": 3605, "label": "ต" },
"upper": { "code": 3670, "label": "๖" }
},
{ "$": "case_selector",
"lower": { "code": 3592, "label": "จ" },
"upper": { "code": 3671, "label": "๗" }
},
{ "$": "case_selector",
"lower": { "code": 3586, "label": "ข" },
"upper": { "code": 3672, "label": "๘" }
},
{ "$": "case_selector",
"lower": { "code": 3594, "label": "ช" },
"upper": { "code": 3673, "label": "๙" }
}
],
[
{ "$": "case_selector",
"lower": { "code": 3654, "label": "ๆ" },
"upper": { "code": 3664, "label": "" }
},
{ "$": "case_selector",
"lower": { "code": 3652, "label": "ไ" },
"upper": { "code": 34, "label": "\"" }
},
{ "$": "case_selector",
"lower": { "code": 3635, "label": "ำ" },
"upper": { "code": 3598, "label": "ฎ" }
},
{ "$": "case_selector",
"lower": { "code": 3614, "label": "พ" },
"upper": { "code": 3601, "label": "ฑ" }
},
{ "$": "case_selector",
"lower": { "code": 3632, "label": "ะ" },
"upper": { "code": 3608, "label": "ธ" }
},
{ "$": "case_selector",
"lower": { "code": 3633, "label": "ั" },
"upper": { "code": 3661, "label": "ํ" }
},
{ "$": "case_selector",
"lower": { "code": 3637, "label": "ี" },
"upper": { "code": 3658, "label": "๊" }
},
{ "$": "case_selector",
"lower": { "code": 3619, "label": "ร" },
"upper": { "code": 3603, "label": "ณ" }
},
{ "$": "case_selector",
"lower": { "code": 3609, "label": "น" },
"upper": { "code": 3631, "label": "ฯ" }
},
{ "$": "case_selector",
"lower": { "code": 3618, "label": "ย" },
"upper": { "code": 3597, "label": "ญ" }
},
{ "$": "case_selector",
"lower": { "code": 3610, "label": "บ" },
"upper": { "code": 3600, "label": "ฐ" }
},
{ "$": "case_selector",
"lower": { "code": 3621, "label": "ล" },
"upper": { "code": 44, "label": "," }
}
],
[
{ "$": "case_selector",
"lower": { "code": 3615, "label": "ฟ" },
"upper": { "code": 3620, "label": "ฤ" }
},
{ "$": "case_selector",
"lower": { "code": 3627, "label": "ห" },
"upper": { "code": 3590, "label": "ฆ" }
},
{ "$": "case_selector",
"lower": { "code": 3585, "label": "ก" },
"upper": { "code": 3599, "label": "ฏ" }
},
{ "$": "case_selector",
"lower": { "code": 3604, "label": "ด" },
"upper": { "code": 3650, "label": "โ" }
},
{ "$": "case_selector",
"lower": { "code": 3648, "label": "เ" },
"upper": { "code": 3596, "label": "ฌ" }
},
{ "$": "case_selector",
"lower": { "code": 3657, "label": "้" },
"upper": { "code": 3655, "label": "็" }
},
{ "$": "case_selector",
"lower": { "code": 3656, "label": "่" },
"upper": { "code": 3659, "label": "๋" }
},
{ "$": "case_selector",
"lower": { "code": 3634, "label": "า" },
"upper": { "code": 3625, "label": "ษ" }
},
{ "$": "case_selector",
"lower": { "code": 3626, "label": "ส" },
"upper": { "code": 3624, "label": "ศ" }
},
{ "$": "case_selector",
"lower": { "code": 3623, "label": "ว" },
"upper": { "code": 3595, "label": "ซ" }
},
{ "$": "case_selector",
"lower": { "code": 3591, "label": "ง" },
"upper": { "code": 46, "label": "." }
},
{ "$": "case_selector",
"lower": { "code": 3587, "label": "ฃ" },
"upper": { "code": 3589, "label": "ฅ" }
}
],
[
{ "$": "case_selector",
"lower": { "code": 3612, "label": "ผ" },
"upper": { "code": 40, "label": "(" }
},
{ "$": "case_selector",
"lower": { "code": 3611, "label": "ป" },
"upper": { "code": 41, "label": ")" }
},
{ "$": "case_selector",
"lower": { "code": 3649, "label": "แ" },
"upper": { "code": 3593, "label": "ฉ" }
},
{ "$": "case_selector",
"lower": { "code": 3629, "label": "อ" },
"upper": { "code": 3630, "label": "ฮ" }
},
{ "$": "case_selector",
"lower": { "code": 3636, "label": "ิ" },
"upper": { "code": 3642, "label": "ฺ" }
},
{ "$": "case_selector",
"lower": { "code": 3639, "label": "ื" },
"upper": { "code": 3660, "label": "์" }
},
{ "$": "case_selector",
"lower": { "code": 3607, "label": "ท" },
"upper": { "code": 63, "label": "?" }
},
{ "$": "case_selector",
"lower": { "code": 3617, "label": "ม" },
"upper": { "code": 3602, "label": "ฒ" }
},
{ "$": "case_selector",
"lower": { "code": 3651, "label": "ใ" },
"upper": { "code": 3628, "label": "ฬ" }
},
{ "$": "case_selector",
"lower": { "code": 3613, "label": "ฝ" },
"upper": { "code": 3622, "label": "ฦ" }
}
]
]

View File

@@ -0,0 +1,144 @@
[
[
{ "$": "case_selector",
"lower": { "code": 3651, "label": "ใ" },
"upper": { "code": 3602, "label": "ฒ" }
},
{ "$": "case_selector",
"lower": { "code": 3605, "label": "ต" },
"upper": { "code": 3599, "label": "ฏ" }
},
{ "$": "case_selector",
"lower": { "code": 3627, "label": "ห" },
"upper": { "code": 3595, "label": "ซ" }
},
{ "$": "case_selector",
"lower": { "code": 3621, "label": "ล" },
"upper": { "code": 3597, "label": "ญ" }
},
{ "$": "case_selector",
"lower": { "code": 3626, "label": "ส" },
"upper": { "code": 3615, "label": "ฟ" }
},
{ "$": "case_selector",
"lower": { "code": 3611, "label": "ป" },
"upper": { "code": 3593, "label": "ฉ" }
},
{ "$": "case_selector",
"lower": { "code": 3633, "label": "ั" },
"upper": { "code": 3638, "label": "ึ" }
},
{ "$": "case_selector",
"lower": { "code": 3585, "label": "ก" },
"upper": { "code": 3608, "label": "ธ" }
},
{ "$": "case_selector",
"lower": { "code": 3636, "label": "ิ" },
"upper": { "code": 3600, "label": "ฐ" }
},
{ "$": "case_selector",
"lower": { "code": 3610, "label": "บ" },
"upper": { "code": 3598, "label": "ฎ" }
},
{ "$": "case_selector",
"lower": { "code": 3655, "label": "็" },
"upper": { "code": 3590, "label": "ฆ" }
},
{ "$": "case_selector",
"lower": { "code": 3628, "label": "ฬ" },
"upper": { "code": 3601, "label": "ฑ" }
},
{ "$": "case_selector",
"lower": { "code": 3631, "label": "ฯ" },
"upper": { "code": 3596, "label": "ฌ" }
}
],
[
{ "$": "case_selector",
"lower": { "code": 3591, "label": "ง" },
"upper": { "code": 3625, "label": "ษ" }
},
{ "$": "case_selector",
"lower": { "code": 3648, "label": "เ" },
"upper": { "code": 3606, "label": "ถ" }
},
{ "$": "case_selector",
"lower": { "code": 3619, "label": "ร" },
"upper": { "code": 3649, "label": "แ" }
},
{ "$": "case_selector",
"lower": { "code": 3609, "label": "น" },
"upper": { "code": 3594, "label": "ช" }
},
{ "$": "case_selector",
"lower": { "code": 3617, "label": "ม" },
"upper": { "code": 3614, "label": "พ" }
},
{ "$": "case_selector",
"lower": { "code": 3629, "label": "อ" },
"upper": { "code": 3612, "label": "ผ" }
},
{ "$": "case_selector",
"lower": { "code": 3634, "label": "า" },
"upper": { "code": 3635, "label": "ำ" }
},
{ "$": "case_selector",
"lower": { "code": 3656, "label": "่" },
"upper": { "code": 3586, "label": "ข" }
},
{ "$": "case_selector",
"lower": { "code": 3657, "label": "้" },
"upper": { "code": 3650, "label": "โ" }
},
{ "$": "case_selector",
"lower": { "code": 3623, "label": "ว" },
"upper": { "code": 3616, "label": "ภ" }
},
{ "$": "case_selector",
"lower": { "code": 3639, "label": "ื" },
"upper": { "code": 34, "label": "\"" }
}
],
[
{ "$": "case_selector",
"lower": { "code": 3640, "label": "ุ" },
"upper": { "code": 3620, "label": "ฤ" }
},
{ "$": "case_selector",
"lower": { "code": 3652, "label": "ไ" },
"upper": { "code": 3613, "label": "ฝ" }
},
{ "$": "case_selector",
"lower": { "code": 3607, "label": "ท" },
"upper": { "code": 3654, "label": "ๆ" }
},
{ "$": "case_selector",
"lower": { "code": 3618, "label": "ย" },
"upper": { "code": 3603, "label": "ณ" }
},
{ "$": "case_selector",
"lower": { "code": 3592, "label": "จ" },
"upper": { "code": 3658, "label": "๊" }
},
{ "$": "case_selector",
"lower": { "code": 3588, "label": "ค" },
"upper": { "code": 3659, "label": "๋" }
},
{ "$": "case_selector",
"lower": { "code": 3637, "label": "ี" },
"upper": { "code": 3660, "label": "์" }
},
{ "$": "case_selector",
"lower": { "code": 3604, "label": "ด" },
"upper": { "code": 3624, "label": "ศ" }
},
{ "$": "case_selector",
"lower": { "code": 3632, "label": "ะ" },
"upper": { "code": 3630, "label": "ฮ" }
},
{ "$": "case_selector",
"lower": { "code": 3641, "label": "ู" },
"upper": { "code": 63, "label": "?" }
}
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 287, "label": "ğ" },
{ "$": "case_selector",
"lower": { "code": 305, "label": "ı" },
"upper": { "code": 73, "label": "I" }
},
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" }
],
[
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "case_selector",
"lower": { "code": 105, "label": "i" },
"upper": { "code": 304, "label": "İ" }
},
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 252, "label": "ü" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 351, "label": "ş" }
],
[
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 231, "label": "ç" },
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 120, "label": "x" }
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "case_selector",
"lower": { "code": 305, "label": "ı" },
"upper": { "code": 73, "label": "I" }
},
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "auto_text_key", "code": 287, "label": "ğ" },
{ "$": "auto_text_key", "code": 252, "label": "ü" }
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" },
{ "$": "auto_text_key", "code": 351, "label": "ş" },
{ "$": "case_selector",
"lower": { "code": 105, "label": "i" },
"upper": { "code": 304, "label": "İ" }
}
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 246, "label": "ö" },
{ "$": "auto_text_key", "code": 231, "label": "ç" }
]
]

View File

@@ -0,0 +1,34 @@
[
[
{ "code": 1602, "label": "ق" },
{ "code": 1608, "label": "و" },
{ "code": 1593, "label": "ع" },
{ "code": 1585, "label": "ر" },
{ "code": 1587, "label": "ت" },
{ "code": 1746, "label": "ے" },
{ "code": 1569, "label": "ء" },
{ "code": 1740, "label": "ی" },
{ "code": 1607, "label": "ه" },
{ "code": 1662, "label": "پ" }
],
[
{ "code": 1575, "label": "ا" },
{ "code": 1587, "label": "س" },
{ "code": 1583, "label": "د" },
{ "code": 1601, "label": "ف" },
{ "code": 1711, "label": "گ" },
{ "code": 1581, "label": "ح" },
{ "code": 1580, "label": "ج" },
{ "code": 1705, "label": "ک" },
{ "code": 1604, "label": "ل" }
],
[
{ "code": 1584, "label": "ذ" },
{ "code": 1588, "label": "ش" },
{ "code": 1670, "label": "چ" },
{ "code": 1591, "label": "ط" },
{ "code": 1576, "label": "پ" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" }
]
]

View File

@@ -0,0 +1,50 @@
[
[
{ "$": "auto_text_key", "code": 71876, "label": "𑣄" },
{ "$": "auto_text_key", "code": 71878, "label": "𑣆" },
{ "$": "auto_text_key", "code": 71880, "label": "𑣈" },
{ "$": "auto_text_key", "code": 71900, "label": "𑣜" },
{ "$": "auto_text_key", "code": 71899, "label": "𑣛" },
{ "$": "auto_text_key", "code": 71890, "label": "𑣒" },
{ "$": "auto_text_key", "code": 71877, "label": "𑣅" },
{ "$": "auto_text_key", "code": 71875, "label": "𑣃" },
{ "$": "auto_text_key", "code": 71874, "label": "𑣂" },
{ "$": "auto_text_key", "code": 71881, "label": "𑣉" },
{ "$": "auto_text_key", "code": 71896, "label": "𑣘" }
],
[
{ "$": "auto_text_key", "code": 71873, "label": "𑣁" },
{ "$": "auto_text_key", "code": 71902, "label": "𑣞", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 71901, "label": "𑣝" }
]
} },
{ "$": "auto_text_key", "code": 71889, "label": "𑣑" },
{ "$": "auto_text_key", "code": 71892, "label": "𑣔" },
{ "$": "auto_text_key", "code": 71883, "label": "𑣋" },
{ "$": "auto_text_key", "code": 71882, "label": "𑣊" },
{ "$": "auto_text_key", "code": 71897, "label": "𑣙" },
{ "$": "auto_text_key", "code": 71886, "label": "𑣎" },
{ "$": "auto_text_key", "code": 71884, "label": "𑣌" },
{ "$": "auto_text_key", "code": 71898, "label": "𑣚" }
],
[
{ "$": "auto_text_key", "code": 71893, "label": "𑣕" },
{ "$": "auto_text_key", "code": 71879, "label": "𑣇" },
{ "$": "auto_text_key", "code": 71887, "label": "𑣏" },
{ "$": "auto_text_key", "code": 71872, "label": "𑣀" },
{ "$": "auto_text_key", "code": 71885, "label": "𑣍" },
{ "$": "auto_text_key", "code": 71888, "label": "𑣐" },
{ "$": "auto_text_key", "code": 71895, "label": "𑣗", "popup": {
"relevant": [
{ "$": "auto_text_key", "code": 71903, "label": "𑣟" }
]
} },
{ "$": "auto_text_key", "code": 71891, "label": "𑣓" },
{ "$": "auto_text_key", "code": 71894, "label": "𑣖", "popup": {
"relevant": [
{ "code": 71935, "label": "𑣿" }
]
} }
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "$": "auto_text_key", "code": 113, "label": "q" },
{ "$": "auto_text_key", "code": 100, "label": "d" },
{ "$": "auto_text_key", "code": 114, "label": "r" },
{ "$": "auto_text_key", "code": 119, "label": "w" },
{ "$": "auto_text_key", "code": 98, "label": "b" },
{ "$": "auto_text_key", "code": 106, "label": "j" },
{ "$": "auto_text_key", "code": 102, "label": "f" },
{ "$": "auto_text_key", "code": 117, "label": "u" },
{ "$": "auto_text_key", "code": 112, "label": "p" },
{ "$": "case_selector",
"lower": { "code": 59, "label": ";", "popup": {
"relevant": [
{ "code": 58, "label": ":" }
]
} },
"upper": { "code": 58, "label": ":", "popup": {
"relevant": [
{ "code": 59, "label": ";" }
]
} }
}
],
[
{ "$": "auto_text_key", "code": 97, "label": "a" },
{ "$": "auto_text_key", "code": 115, "label": "s" },
{ "$": "auto_text_key", "code": 104, "label": "h" },
{ "$": "auto_text_key", "code": 116, "label": "t" },
{ "$": "auto_text_key", "code": 103, "label": "g" },
{ "$": "auto_text_key", "code": 121, "label": "y" },
{ "$": "auto_text_key", "code": 110, "label": "n" },
{ "$": "auto_text_key", "code": 101, "label": "e" },
{ "$": "auto_text_key", "code": 111, "label": "o" },
{ "$": "auto_text_key", "code": 105, "label": "i" }
],
[
{ "$": "auto_text_key", "code": 122, "label": "z" },
{ "$": "auto_text_key", "code": 120, "label": "x" },
{ "$": "auto_text_key", "code": 109, "label": "m" },
{ "$": "auto_text_key", "code": 99, "label": "c" },
{ "$": "auto_text_key", "code": 118, "label": "v" },
{ "$": "auto_text_key", "code": 107, "label": "k" },
{ "$": "auto_text_key", "code": 108, "label": "l" }
]
]

View File

@@ -0,0 +1,19 @@
[
[
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "variation_selector",
"default": { "code": 1548, "label": "،", "groupId": 1 },
"email": { "code": 64, "label": "@", "groupId": 1 },
"uri": { "code": 47, "label": "/", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 46, "label": ".", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,20 @@
[
[
{ "code": -11, "label": "shift", "type": "modifier" },
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "variation_selector",
"default": { "code": 44, "label": ",", "groupId": 1 },
"email": { "code": 64, "label": "@", "groupId": 1 },
"uri": { "code": 47, "label": "/", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 46, "label": ".", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,16 @@
[
[
{ "code": -11, "label": "shift", "type": "modifier" },
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "auto_text_key", "code": 113, "label": "q", "groupId": 1 },
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "$": "auto_text_key", "code": 122, "label": "z", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,19 @@
[
[
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "variation_selector",
"default": { "code": 44, "label": ",", "groupId": 1 },
"email": { "code": 64, "label": "@", "groupId": 1 },
"uri": { "code": 47, "label": "/", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 46, "label": ".", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,22 @@
[
[
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "char_width_selector",
"full": { "code": 12289, "label": "、", "groupId": 1 },
"half": { "code": 65380, "label": "、", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 12288, "label": "空白" },
{ "code": -9710, "label": "かな", "groupId": 97, "type": "system_gui" },
{ "$": "char_width_selector",
"full": { "code": 12290, "label": "。", "groupId": 2 },
"half": { "code": 65377, "label": "。", "groupId": 2 }
},
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,23 @@
[
[
{ "code": 1600, "label": "kashida", "popup":
{ "main": { "code": 8204, "label": "half_space" }
} },
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "variation_selector",
"default": { "code": 1548, "label": "،", "groupId": 1 },
"password": { "code": 35, "label": "#", "groupId": 1 },
"email": { "code": 64, "label": "@", "groupId": 1 },
"uri": { "code": 47, "label": "/", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": " " },
{ "code": 46, "label": ".", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,46 @@
[
[
{ "code": -11, "label": "shift", "type": "modifier" },
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "$": "variation_selector",
"default": { "code": 44, "label": ",", "groupId": 1,
"popup": {
"main": { "code": 34, "label": "\"" },
"relevant": [
{ "code": 8211, "label": "" }
]
} },
"email": { "code": 64, "label": "@", "groupId": 1,
"popup": {
"relevant": [
{ "code": 44, "label": "," }
]
} },
"uri": { "code": 47, "label": "/", "groupId": 1,
"popup": {
"relevant": [
{ "code": 44, "label": "," }
]
} }
},
{ "$": "variation_selector",
"default": { "code": 46, "label": ".", "groupId": 2,
"popup": {
"relevant": [
{ "code": 183, "label": "·" },
{ "code": 39, "label": "'" }
]
} },
"email": { "code": 46, "label": ".", "groupId": 2 },
"uri": { "code": 46, "label": ".", "groupId": 2 }
},
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,21 @@
[
[
{ "code": 0, "type": "placeholder" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "$": "variation_selector",
"default": { "code": 1548, "label": "،", "groupId": 1 },
"email": { "code": 64, "label": "@", "groupId": 1 },
"uri": { "code": 47, "label": "/", "groupId": 1 }
},
{ "code": -227, "label": "language_switch", "type": "system_gui" },
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 8204, "label": "half_space" },
{ "code": 1600, "label": "kashida" },
{ "code": 46, "label": ".", "groupId": 2 },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,11 @@
[
[
{ "code": -35, "label": "clipboard_select_all", "type": "enter_editing" },
{ "code": -31, "label": "clipboard_copy", "type": "enter_editing" },
{ "code": -20, "label": "arrow_left", "type": "navigation" },
{ "code": -21, "label": "arrow_right", "type": "navigation" },
{ "code": -32, "label": "clipboard_cut", "type": "enter_editing" },
{ "code": -33, "label": "clipboard_paste", "type": "enter_editing" },
{ "code": -213, "label": "ime_ui_mode_clipboard", "type": "system_gui"}
]
]

View File

@@ -0,0 +1,28 @@
[
[
{ "code": 49, "label": "1", "type": "numeric" },
{ "code": 50, "label": "2", "type": "numeric" },
{ "code": 51, "label": "3", "type": "numeric" },
{ "code": 45, "label": "-" }
],
[
{ "code": 52, "label": "4", "type": "numeric" },
{ "code": 53, "label": "5", "type": "numeric" },
{ "code": 54, "label": "6", "type": "numeric" },
{ "code": 32, "label": "space" }
],
[
{ "code": 55, "label": "7", "type": "numeric" },
{ "code": 56, "label": "8", "type": "numeric" },
{ "code": 57, "label": "9", "type": "numeric" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": 44, "label": "," },
{ "code": 48, "label": "0", "type": "numeric", "popup": {
"main": { "code": 43, "label": "+" }
} },
{ "code": 46, "label": "." },
{ "code": 10, "label": "enter", "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,28 @@
[
[
{ "code": 55, "label": "7", "type": "numeric" },
{ "code": 56, "label": "8", "type": "numeric" },
{ "code": 57, "label": "9", "type": "numeric" },
{ "code": 45, "label": "-" }
],
[
{ "code": 52, "label": "4", "type": "numeric" },
{ "code": 53, "label": "5", "type": "numeric" },
{ "code": 54, "label": "6", "type": "numeric" },
{ "code": 32, "label": "space" }
],
[
{ "code": 49, "label": "1", "type": "numeric" },
{ "code": 50, "label": "2", "type": "numeric" },
{ "code": 51, "label": "3", "type": "numeric" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": 44, "label": "," },
{ "code": 48, "label": "0", "type": "numeric", "popup": {
"main": { "code": 43, "label": "+" }
} },
{ "code": 46, "label": "." },
{ "code": 10, "label": "enter", "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,48 @@
[
[
{ "code": 43, "label": "+", "popup": {
"relevant": [
{ "code": 45, "label": "-" },
{ "code": 42, "label": "*" },
{ "code": 47, "label": "/" }
]
} },
{ "code": 49, "label": "1", "type": "numeric" },
{ "code": 50, "label": "2", "type": "numeric" },
{ "code": 51, "label": "3", "type": "numeric" },
{ "code": 37, "label": "%" }
],
[
{ "code": 40, "label": "(", "popup": {
"relevant": [
{ "code": 91, "label": "[" },
{ "code": 123, "label": "{" }
]
} },
{ "code": 52, "label": "4", "type": "numeric" },
{ "code": 53, "label": "5", "type": "numeric" },
{ "code": 54, "label": "6", "type": "numeric" },
{ "code": 32, "label": "space" }
],
[
{ "code": 41, "label": ")", "popup": {
"relevant": [
{ "code": 93, "label": "]" },
{ "code": 125, "label": "}" }
]
} },
{ "code": 55, "label": "7", "type": "numeric" },
{ "code": 56, "label": "8", "type": "numeric" },
{ "code": 57, "label": "9", "type": "numeric" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -201, "label": "view_characters", "type": "system_gui" },
{ "code": 44, "label": "," },
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": 48, "label": "0", "type": "numeric" },
{ "code": 61, "label": "=" },
{ "code": 46, "label": "." },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,48 @@
[
[
{ "code": 43, "label": "+", "popup": {
"relevant": [
{ "code": 45, "label": "-" },
{ "code": 42, "label": "*" },
{ "code": 47, "label": "/" }
]
} },
{ "code": 55, "label": "7", "type": "numeric" },
{ "code": 56, "label": "8", "type": "numeric" },
{ "code": 57, "label": "9", "type": "numeric" },
{ "code": 37, "label": "%" }
],
[
{ "code": 40, "label": "(", "popup": {
"relevant": [
{ "code": 91, "label": "[" },
{ "code": 123, "label": "{" }
]
} },
{ "code": 52, "label": "4", "type": "numeric" },
{ "code": 53, "label": "5", "type": "numeric" },
{ "code": 54, "label": "6", "type": "numeric" },
{ "code": 32, "label": "space" }
],
[
{ "code": 41, "label": ")", "popup": {
"relevant": [
{ "code": 93, "label": "]" },
{ "code": 125, "label": "}" }
]
} },
{ "code": 49, "label": "1", "type": "numeric" },
{ "code": 50, "label": "2", "type": "numeric" },
{ "code": 51, "label": "3", "type": "numeric" },
{ "code": -7, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -201, "label": "view_characters", "type": "system_gui" },
{ "code": 44, "label": "," },
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": 48, "label": "0", "type": "numeric" },
{ "code": 61, "label": "=" },
{ "code": 46, "label": "." },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 2535, "label": "১", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 2536, "label": "২", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 2537, "label": "৩", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 2538, "label": "", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 2539, "label": "৫", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 2540, "label": "৬", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 2541, "label": "", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 2542, "label": "৮", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 2543, "label": "৯", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 2534, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,101 @@
[
[
{ "code": 19968, "label": "一", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 22769, "label": "壱" },
{ "code": 22777, "label": "壹" },
{ "code": 24332, "label": "弌" },
{ "code": 65297, "label": "" }
]
} },
{ "code": 20108, "label": "二", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 24336, "label": "弐" },
{ "code": 36019, "label": "貳" },
{ "code": 36014, "label": "貮" },
{ "code": 65298, "label": "" }
]
} },
{ "code": 19977, "label": "三", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 21442, "label": "参" },
{ "code": 21443, "label": "參" },
{ "code": 24334, "label": "弎" },
{ "code": 65299, "label": "" }
]
} },
{ "code": 22235, "label": "四", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 32902, "label": "肆" },
{ "code": 18825, "label": "䦉" },
{ "code": 20118, "label": "亖" },
{ "code": 65300, "label": "" }
]
} },
{ "code": 20116, "label": "五", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 20237, "label": "伍" },
{ "code": 65301, "label": "" }
]
} },
{ "code": 20845, "label": "六", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 38520, "label": "陸" },
{ "code": 65302, "label": "" }
]
} },
{ "code": 19971, "label": "七", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 28422, "label": "漆" },
{ "code": 26578, "label": "柒" },
{ "code": 65303, "label": "" }
]
} },
{ "code": 20843, "label": "八", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 25420, "label": "捌" },
{ "code": 65304, "label": "" }
]
} },
{ "code": 20061, "label": "九", "type": "numeric", "popup": {
"main": {"code": 57, "label": "9" },
"relevant": [
{ "code": 29590, "label": "玖" },
{ "code": 65305, "label": "" }
]
} },
{ "code": 38646, "label": "零", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 12295, "label": "" },
{ "code": 65296, "label": "" }
]
} },
{ "code": 21313, "label": "十", "type": "numeric", "popup": {
"main": { "code": 25342, "label": "拾" },
"relevant": [
{ "code": 20160, "label": "什" }
]
} },
{ "code": 30334, "label": "百", "type": "numeric", "popup": {
"main": { "code": 20336, "label": "佰" },
"relevant": [
{ "code": 38476, "label": "陌" }
]
} },
{ "code": 21315, "label": "千", "type": "numeric", "popup": {
"main": { "code": 20191, "label": "仟" },
"relevant": [
{ "code": 38433, "label": "阡" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 2407, "label": "१", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 2408, "label": "२", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 2409, "label": "३", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 2410, "label": "४", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 2411, "label": "५", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 2412, "label": "६", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 2413, "label": "७", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 2414, "label": "८", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 2415, "label": "९", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 2406, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 1633, "label": "١", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 1634, "label": "٢", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 1635, "label": "٣", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 1636, "label": "٤", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 1637, "label": "٥", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 1638, "label": "٦", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 1639, "label": "٧", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 1640, "label": "٨", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 1641, "label": "٩", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 1632, "label": "٠", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 2791, "label": "૧", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 2792, "label": "૨", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 2793, "label": "૩", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 2794, "label": "૪", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 2795, "label": "૫", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 2796, "label": "૬", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 2797, "label": "૭", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 2798, "label": "૮", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 2799, "label": "૯", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 2790, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 2663, "label": "", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 2664, "label": "੨", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 2665, "label": "੩", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 2666, "label": "", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 2667, "label": "੫", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 2668, "label": "੬", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 2669, "label": "੭", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 2670, "label": "੮", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 2671, "label": "੯", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 2662, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 3303, "label": "೧", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 3304, "label": "೨", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 3305, "label": "೩", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 3306, "label": "೪", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 3307, "label": "೫", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 3308, "label": "೬", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 3309, "label": "೭", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 3310, "label": "೮", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 3311, "label": "೯", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 3302, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,84 @@
[
[
{ "code": 3431, "label": "൧", "type": "numeric", "popup": {
"main": { "code": 49, "label": "1" },
"relevant": [
{ "code": 8537, "label": "⅙" },
{ "code": 8528, "label": "⅐" },
{ "code": 8539, "label": "⅛" },
{ "code": 8529, "label": "⅑" },
{ "code": 8530, "label": "⅒" },
{ "code": 185, "label": "¹" },
{ "code": 189, "label": "½" },
{ "code": 8531, "label": "⅓" },
{ "code": 188, "label": "¼" },
{ "code": 8533, "label": "⅕" }
]
} },
{ "code": 3432, "label": "൨", "type": "numeric", "popup": {
"main": { "code": 50, "label": "2" },
"relevant": [
{ "code": 8532, "label": "⅔" },
{ "code": 178, "label": "²" },
{ "code": 8534, "label": "⅖" }
]
} },
{ "code": 3433, "label": "൩", "type": "numeric", "popup": {
"main": { "code": 51, "label": "3" },
"relevant": [
{ "code": 8535, "label": "⅗" },
{ "code": 190, "label": "¾" },
{ "code": 179, "label": "³" },
{ "code": 8540, "label": "⅜" }
]
} },
{ "code": 3434, "label": "൪", "type": "numeric", "popup": {
"main": { "code": 52, "label": "4" },
"relevant": [
{ "code": 8536, "label": "⅘" },
{ "code": 8308, "label": "⁴" }
]
} },
{ "code": 3435, "label": "൫", "type": "numeric", "popup": {
"main": { "code": 53, "label": "5" },
"relevant": [
{ "code": 8538, "label": "⅚" },
{ "code": 8309, "label": "⁵" },
{ "code": 8541, "label": "⅝" }
]
} },
{ "code": 3436, "label": "൬", "type": "numeric", "popup": {
"main": { "code": 54, "label": "6" },
"relevant": [
{ "code": 8310, "label": "⁶" }
]
} },
{ "code": 3437, "label": "", "type": "numeric", "popup": {
"main": { "code": 55, "label": "7" },
"relevant": [
{ "code": 8542, "label": "⅞" },
{ "code": 8311, "label": "⁷" }
]
} },
{ "code": 3438, "label": "൮", "type": "numeric", "popup": {
"main": { "code": 56, "label": "8" },
"relevant": [
{ "code": 8312, "label": "⁸" }
]
} },
{ "code": 3439, "label": "൯", "type": "numeric", "popup": {
"main": { "code": 57, "label": "9" },
"relevant": [
{ "code": 8313, "label": "⁹" }
]
} },
{ "code": 3430, "label": "", "type": "numeric", "popup": {
"main": { "code": 48, "label": "0" },
"relevant": [
{ "code": 8319, "label": "ⁿ" },
{ "code": 8709, "label": "∅" },
{ "code": 8304, "label": "⁰" }
]
} }
]
]

View File

@@ -0,0 +1,73 @@
[
[
{ "code": 49, "label": "1", "type": "numeric", "popup": {
"relevant": [
{ "code": 176, "label": "°" },
{ "code": 185, "label": "¹" }
]
} },
{ "code": 50, "label": "2", "type": "numeric", "popup": {
"relevant": [
{ "code": 167, "label": "§" },
{ "code": 178, "label": "²" }
]
} },
{ "code": 51, "label": "3", "type": "numeric", "popup": {
"relevant": [
{ "code": 8467, "label": "" },
{ "code": 179, "label": "³" }
]
} },
{ "code": 52, "label": "4", "type": "numeric", "popup": {
"relevant": [
{ "code": 187, "label": "»" },
{ "code": 8250, "label": "" }
]
} },
{ "code": 53, "label": "5", "type": "numeric", "popup": {
"relevant": [
{ "code": 171, "label": "«" },
{ "code": 8249, "label": "" }
]
} },
{ "code": 54, "label": "6", "type": "numeric", "popup": {
"relevant": [
{ "code": 36, "label": "$" },
{ "code": 162, "label": "¢" }
]
} },
{ "code": 55, "label": "7", "type": "numeric", "popup": {
"main": { "code": -801, "label": "currency_slot_1" },
"relevant": [
{ "code": -802, "label": "currency_slot_2" },
{ "code": -803, "label": "currency_slot_3" },
{ "code": -804, "label": "currency_slot_4" },
{ "code": -805, "label": "currency_slot_5" },
{ "code": -806, "label": "currency_slot_6" }
]
} },
{ "code": 56, "label": "8", "type": "numeric", "popup": {
"relevant": [
{ "code": 8222, "label": "„" },
{ "code": 8218, "label": "" }
]
} },
{ "code": 57, "label": "9", "type": "numeric", "popup": {
"relevant": [
{ "code": 8220, "label": "“" },
{ "code": 8216, "label": "" }
]
} },
{ "code": 48, "label": "0", "type": "numeric", "popup": {
"relevant": [
{ "code": 8221, "label": "”" },
{ "code": 8217, "label": "" }
]
} },
{ "code": 45, "label": "-", "type": "numeric", "popup": {
"relevant": [
{ "code": 8212, "label": "—" }
]
} }
]
]

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