From 8787c3248e11f59a1afd15483130493d8472bdd0 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 15:33:00 +0200 Subject: [PATCH 01/16] [lemko_qwerty] Add experimental Lemko phonetic keyboard --- experimental/l/lemko_qwerty/HISTORY.md | 8 + experimental/l/lemko_qwerty/LICENSE.md | 21 + experimental/l/lemko_qwerty/README.md | 21 + experimental/l/lemko_qwerty/lemko_qwerty.kpj | 8 + .../source/lemko_qwerty.keyman-touch-layout | 1360 +++++++++++++++++ .../l/lemko_qwerty/source/lemko_qwerty.kmn | 455 ++++++ .../l/lemko_qwerty/source/lemko_qwerty.kps | 47 + .../l/lemko_qwerty/source/lemko_qwerty.kvks | 7 + experimental/l/lemko_qwerty/source/readme.htm | 1 + .../l/lemko_qwerty/source/welcome.htm | 1 + 10 files changed, 1929 insertions(+) create mode 100644 experimental/l/lemko_qwerty/HISTORY.md create mode 100644 experimental/l/lemko_qwerty/LICENSE.md create mode 100644 experimental/l/lemko_qwerty/README.md create mode 100644 experimental/l/lemko_qwerty/lemko_qwerty.kpj create mode 100644 experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout create mode 100644 experimental/l/lemko_qwerty/source/lemko_qwerty.kmn create mode 100644 experimental/l/lemko_qwerty/source/lemko_qwerty.kps create mode 100644 experimental/l/lemko_qwerty/source/lemko_qwerty.kvks create mode 100644 experimental/l/lemko_qwerty/source/readme.htm create mode 100644 experimental/l/lemko_qwerty/source/welcome.htm diff --git a/experimental/l/lemko_qwerty/HISTORY.md b/experimental/l/lemko_qwerty/HISTORY.md new file mode 100644 index 0000000000..873bf6df47 --- /dev/null +++ b/experimental/l/lemko_qwerty/HISTORY.md @@ -0,0 +1,8 @@ +# Version history + +## 0.3.0 — 2026-10-16 + +* Initial experimental submission with desktop and phone/tablet layouts. +* Apple Russian Phonetic base with direct є/Є and additional Option/AltGr mappings. +* Language association rue, displayed as Lemko. +* Native device acceptance tests pending. diff --git a/experimental/l/lemko_qwerty/LICENSE.md b/experimental/l/lemko_qwerty/LICENSE.md new file mode 100644 index 0000000000..81acb22f7e --- /dev/null +++ b/experimental/l/lemko_qwerty/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +© 2026 lemko.tools + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/experimental/l/lemko_qwerty/README.md b/experimental/l/lemko_qwerty/README.md new file mode 100644 index 0000000000..761cebf3e9 --- /dev/null +++ b/experimental/l/lemko_qwerty/README.md @@ -0,0 +1,21 @@ +# Lemko QWERTY keyboard + +Version 0.3.0, experimental. + +A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. + +Includes desktop rules, on-screen keyboard legends, and phone/tablet touch layouts. Touch long-press alternatives include і/ї on и, ґ on г, and щ on ш; a separate symbols layer provides numbers and punctuation. + +## Validation and status + +Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an experimental submission, not a production-readiness claim. + +This package contains no lexical model or dictionary data. A separately developed Lemko model is not included in this submission. The keyboard itself does not provide desktop autocorrection. + +## Build + +`kmc build lemko_qwerty.kpj` + +## License + +MIT. Copyright 2026 lemko.tools. See LICENSE.md. diff --git a/experimental/l/lemko_qwerty/lemko_qwerty.kpj b/experimental/l/lemko_qwerty/lemko_qwerty.kpj new file mode 100644 index 0000000000..7ed1ac72df --- /dev/null +++ b/experimental/l/lemko_qwerty/lemko_qwerty.kpj @@ -0,0 +1,8 @@ + + + + 2.0 + True + True + + diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout new file mode 100644 index 0000000000..fb676d4cb1 --- /dev/null +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -0,0 +1,1360 @@ +{ + "phone": { + "font": "Tahoma", + "layer": [ + { + "id": "default", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "я" + }, + { + "id": "K_W", + "text": "ш", + "sk": [ + { + "id": "U_0449", + "text": "щ" + } + ] + }, + { + "id": "K_E", + "text": "е", + "sk": [ + { + "id": "U_0454", + "text": "є" + }, + { + "id": "U_0451", + "text": "ё" + } + ] + }, + { + "id": "K_R", + "text": "р" + }, + { + "id": "K_T", + "text": "т" + }, + { + "id": "K_Y", + "text": "ы" + }, + { + "id": "K_U", + "text": "у" + }, + { + "id": "K_I", + "text": "и", + "sk": [ + { + "id": "U_0456", + "text": "і" + }, + { + "id": "U_0457", + "text": "ї" + } + ] + }, + { + "id": "K_O", + "text": "о" + }, + { + "id": "K_P", + "text": "п" + }, + { + "id": "K_LBRKT", + "text": "ю" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "а" + }, + { + "id": "K_S", + "text": "с" + }, + { + "id": "K_D", + "text": "д" + }, + { + "id": "K_F", + "text": "ф" + }, + { + "id": "K_G", + "text": "г", + "sk": [ + { + "id": "U_0491", + "text": "ґ" + } + ] + }, + { + "id": "K_H", + "text": "ч", + "sk": [ + { + "id": "U_0491", + "text": "ґ" + } + ] + }, + { + "id": "K_J", + "text": "й" + }, + { + "id": "K_K", + "text": "к" + }, + { + "id": "K_L", + "text": "л" + }, + { + "id": "K_RBRKT", + "text": "ж" + }, + { + "id": "K_BKSLASH", + "text": "є" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": "1", + "nextlayer": "shift" + }, + { + "id": "K_Z", + "text": "з" + }, + { + "id": "K_X", + "text": "х" + }, + { + "id": "K_C", + "text": "ц" + }, + { + "id": "K_V", + "text": "в" + }, + { + "id": "K_B", + "text": "б" + }, + { + "id": "K_N", + "text": "н" + }, + { + "id": "K_M", + "text": "м" + }, + { + "id": "K_HYPHEN", + "text": "ь" + }, + { + "id": "K_EQUAL", + "text": "ъ" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "nextlayer": "symbols" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "U_002C", + "text": "," + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "U_002E", + "text": "." + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + }, + { + "id": "shift", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "Я" + }, + { + "id": "K_W", + "text": "Ш", + "sk": [ + { + "id": "U_0429", + "text": "Щ" + } + ] + }, + { + "id": "K_E", + "text": "Е", + "sk": [ + { + "id": "U_0404", + "text": "Є" + }, + { + "id": "U_0401", + "text": "Ё" + } + ] + }, + { + "id": "K_R", + "text": "Р" + }, + { + "id": "K_T", + "text": "Т" + }, + { + "id": "K_Y", + "text": "Ы" + }, + { + "id": "K_U", + "text": "У" + }, + { + "id": "K_I", + "text": "И", + "sk": [ + { + "id": "U_0406", + "text": "І" + }, + { + "id": "U_0407", + "text": "Ї" + } + ] + }, + { + "id": "K_O", + "text": "О" + }, + { + "id": "K_P", + "text": "П" + }, + { + "id": "K_LBRKT", + "text": "Ю" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "А" + }, + { + "id": "K_S", + "text": "С" + }, + { + "id": "K_D", + "text": "Д" + }, + { + "id": "K_F", + "text": "Ф" + }, + { + "id": "K_G", + "text": "Г", + "sk": [ + { + "id": "U_0490", + "text": "Ґ" + } + ] + }, + { + "id": "K_H", + "text": "Ч", + "sk": [ + { + "id": "U_0490", + "text": "Ґ" + } + ] + }, + { + "id": "K_J", + "text": "Й" + }, + { + "id": "K_K", + "text": "К" + }, + { + "id": "K_L", + "text": "Л" + }, + { + "id": "K_RBRKT", + "text": "Ж" + }, + { + "id": "K_BKSLASH", + "text": "Є" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": "1", + "nextlayer": "default" + }, + { + "id": "K_Z", + "text": "З" + }, + { + "id": "K_X", + "text": "Х" + }, + { + "id": "K_C", + "text": "Ц" + }, + { + "id": "K_V", + "text": "В" + }, + { + "id": "K_B", + "text": "Б" + }, + { + "id": "K_N", + "text": "Н" + }, + { + "id": "K_M", + "text": "М" + }, + { + "id": "K_HYPHEN", + "text": "Ь" + }, + { + "id": "K_EQUAL", + "text": "Ъ" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "nextlayer": "symbols" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "U_002C", + "text": "," + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "U_002E", + "text": "." + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + }, + { + "id": "symbols", + "row": [ + { + "id": 1, + "key": [ + { + "id": "U_0031", + "text": "1" + }, + { + "id": "U_0032", + "text": "2" + }, + { + "id": "U_0033", + "text": "3" + }, + { + "id": "U_0034", + "text": "4" + }, + { + "id": "U_0035", + "text": "5" + }, + { + "id": "U_0036", + "text": "6" + }, + { + "id": "U_0037", + "text": "7" + }, + { + "id": "U_0038", + "text": "8" + }, + { + "id": "U_0039", + "text": "9" + }, + { + "id": "U_0030", + "text": "0" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_002D", + "text": "-" + }, + { + "id": "U_005F", + "text": "_" + }, + { + "id": "U_003D", + "text": "=" + }, + { + "id": "U_002B", + "text": "+" + }, + { + "id": "U_005B", + "text": "[" + }, + { + "id": "U_005D", + "text": "]" + }, + { + "id": "U_007B", + "text": "{" + }, + { + "id": "U_007D", + "text": "}" + }, + { + "id": "U_005C", + "text": "\\" + }, + { + "id": "U_007C", + "text": "|" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "U_0027", + "text": "'" + }, + { + "id": "U_2019", + "text": "’" + }, + { + "id": "U_02BC", + "text": "ʼ" + }, + { + "id": "U_0022", + "text": "\"" + }, + { + "id": "U_003B", + "text": ";" + }, + { + "id": "U_003A", + "text": ":" + }, + { + "id": "U_0021", + "text": "!" + }, + { + "id": "U_003F", + "text": "?" + }, + { + "id": "U_002F", + "text": "/" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "U_0040", + "text": "@" + }, + { + "id": "U_0023", + "text": "#" + }, + { + "id": "U_0024", + "text": "$" + }, + { + "id": "U_0025", + "text": "%" + }, + { + "id": "U_0026", + "text": "&" + }, + { + "id": "U_002A", + "text": "*" + }, + { + "id": "U_0028", + "text": "(" + }, + { + "id": "U_0029", + "text": ")" + }, + { + "id": "U_003C", + "text": "<" + }, + { + "id": "U_003E", + "text": ">" + }, + { + "id": "U_0060", + "text": "`" + }, + { + "id": "U_007E", + "text": "~" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 5, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "sp": "1", + "nextlayer": "default" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + } + ] + }, + "tablet": { + "font": "Tahoma", + "layer": [ + { + "id": "default", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "я" + }, + { + "id": "K_W", + "text": "ш", + "sk": [ + { + "id": "U_0449", + "text": "щ" + } + ] + }, + { + "id": "K_E", + "text": "е", + "sk": [ + { + "id": "U_0454", + "text": "є" + }, + { + "id": "U_0451", + "text": "ё" + } + ] + }, + { + "id": "K_R", + "text": "р" + }, + { + "id": "K_T", + "text": "т" + }, + { + "id": "K_Y", + "text": "ы" + }, + { + "id": "K_U", + "text": "у" + }, + { + "id": "K_I", + "text": "и", + "sk": [ + { + "id": "U_0456", + "text": "і" + }, + { + "id": "U_0457", + "text": "ї" + } + ] + }, + { + "id": "K_O", + "text": "о" + }, + { + "id": "K_P", + "text": "п" + }, + { + "id": "K_LBRKT", + "text": "ю" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "а" + }, + { + "id": "K_S", + "text": "с" + }, + { + "id": "K_D", + "text": "д" + }, + { + "id": "K_F", + "text": "ф" + }, + { + "id": "K_G", + "text": "г", + "sk": [ + { + "id": "U_0491", + "text": "ґ" + } + ] + }, + { + "id": "K_H", + "text": "ч", + "sk": [ + { + "id": "U_0491", + "text": "ґ" + } + ] + }, + { + "id": "K_J", + "text": "й" + }, + { + "id": "K_K", + "text": "к" + }, + { + "id": "K_L", + "text": "л" + }, + { + "id": "K_RBRKT", + "text": "ж" + }, + { + "id": "K_BKSLASH", + "text": "є" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": "1", + "nextlayer": "shift" + }, + { + "id": "K_Z", + "text": "з" + }, + { + "id": "K_X", + "text": "х" + }, + { + "id": "K_C", + "text": "ц" + }, + { + "id": "K_V", + "text": "в" + }, + { + "id": "K_B", + "text": "б" + }, + { + "id": "K_N", + "text": "н" + }, + { + "id": "K_M", + "text": "м" + }, + { + "id": "K_HYPHEN", + "text": "ь" + }, + { + "id": "K_EQUAL", + "text": "ъ" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "nextlayer": "symbols" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "U_002C", + "text": "," + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "U_002E", + "text": "." + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + }, + { + "id": "shift", + "row": [ + { + "id": 1, + "key": [ + { + "id": "K_Q", + "text": "Я" + }, + { + "id": "K_W", + "text": "Ш", + "sk": [ + { + "id": "U_0429", + "text": "Щ" + } + ] + }, + { + "id": "K_E", + "text": "Е", + "sk": [ + { + "id": "U_0404", + "text": "Є" + }, + { + "id": "U_0401", + "text": "Ё" + } + ] + }, + { + "id": "K_R", + "text": "Р" + }, + { + "id": "K_T", + "text": "Т" + }, + { + "id": "K_Y", + "text": "Ы" + }, + { + "id": "K_U", + "text": "У" + }, + { + "id": "K_I", + "text": "И", + "sk": [ + { + "id": "U_0406", + "text": "І" + }, + { + "id": "U_0407", + "text": "Ї" + } + ] + }, + { + "id": "K_O", + "text": "О" + }, + { + "id": "K_P", + "text": "П" + }, + { + "id": "K_LBRKT", + "text": "Ю" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "K_A", + "text": "А" + }, + { + "id": "K_S", + "text": "С" + }, + { + "id": "K_D", + "text": "Д" + }, + { + "id": "K_F", + "text": "Ф" + }, + { + "id": "K_G", + "text": "Г", + "sk": [ + { + "id": "U_0490", + "text": "Ґ" + } + ] + }, + { + "id": "K_H", + "text": "Ч", + "sk": [ + { + "id": "U_0490", + "text": "Ґ" + } + ] + }, + { + "id": "K_J", + "text": "Й" + }, + { + "id": "K_K", + "text": "К" + }, + { + "id": "K_L", + "text": "Л" + }, + { + "id": "K_RBRKT", + "text": "Ж" + }, + { + "id": "K_BKSLASH", + "text": "Є" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SHIFT", + "text": "*Shift*", + "sp": "1", + "nextlayer": "default" + }, + { + "id": "K_Z", + "text": "З" + }, + { + "id": "K_X", + "text": "Х" + }, + { + "id": "K_C", + "text": "Ц" + }, + { + "id": "K_V", + "text": "В" + }, + { + "id": "K_B", + "text": "Б" + }, + { + "id": "K_N", + "text": "Н" + }, + { + "id": "K_M", + "text": "М" + }, + { + "id": "K_HYPHEN", + "text": "Ь" + }, + { + "id": "K_EQUAL", + "text": "Ъ" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "nextlayer": "symbols" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "U_002C", + "text": "," + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "U_002E", + "text": "." + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + }, + { + "id": "symbols", + "row": [ + { + "id": 1, + "key": [ + { + "id": "U_0031", + "text": "1" + }, + { + "id": "U_0032", + "text": "2" + }, + { + "id": "U_0033", + "text": "3" + }, + { + "id": "U_0034", + "text": "4" + }, + { + "id": "U_0035", + "text": "5" + }, + { + "id": "U_0036", + "text": "6" + }, + { + "id": "U_0037", + "text": "7" + }, + { + "id": "U_0038", + "text": "8" + }, + { + "id": "U_0039", + "text": "9" + }, + { + "id": "U_0030", + "text": "0" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_002D", + "text": "-" + }, + { + "id": "U_005F", + "text": "_" + }, + { + "id": "U_003D", + "text": "=" + }, + { + "id": "U_002B", + "text": "+" + }, + { + "id": "U_005B", + "text": "[" + }, + { + "id": "U_005D", + "text": "]" + }, + { + "id": "U_007B", + "text": "{" + }, + { + "id": "U_007D", + "text": "}" + }, + { + "id": "U_005C", + "text": "\\" + }, + { + "id": "U_007C", + "text": "|" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "U_0027", + "text": "'" + }, + { + "id": "U_2019", + "text": "’" + }, + { + "id": "U_02BC", + "text": "ʼ" + }, + { + "id": "U_0022", + "text": "\"" + }, + { + "id": "U_003B", + "text": ";" + }, + { + "id": "U_003A", + "text": ":" + }, + { + "id": "U_0021", + "text": "!" + }, + { + "id": "U_003F", + "text": "?" + }, + { + "id": "U_002F", + "text": "/" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "U_0040", + "text": "@" + }, + { + "id": "U_0023", + "text": "#" + }, + { + "id": "U_0024", + "text": "$" + }, + { + "id": "U_0025", + "text": "%" + }, + { + "id": "U_0026", + "text": "&" + }, + { + "id": "U_002A", + "text": "*" + }, + { + "id": "U_0028", + "text": "(" + }, + { + "id": "U_0029", + "text": ")" + }, + { + "id": "U_003C", + "text": "<" + }, + { + "id": "U_003E", + "text": ">" + }, + { + "id": "U_0060", + "text": "`" + }, + { + "id": "U_007E", + "text": "~" + }, + { + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1" + } + ] + }, + { + "id": 5, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "sp": "1", + "nextlayer": "default" + }, + { + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1" + }, + { + "id": "K_SPACE", + "text": "", + "width": "400" + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1" + } + ] + } + ] + } + ] + } +} diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kmn b/experimental/l/lemko_qwerty/source/lemko_qwerty.kmn new file mode 100644 index 0000000000..92367f2a20 --- /dev/null +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -0,0 +1,455 @@ +c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. +store(&NAME) 'Lemko QWERTY' +store(©RIGHT) '© lemko.tools' +store(&VERSION) '10.0' +store(&KEYBOARDVERSION) '0.3.0' +store(&TARGETS) 'any' +store(&MNEMONICLAYOUT) '0' +store(&VISUALKEYBOARD) 'lemko_qwerty.kvks' +store(&LAYOUTFILE) 'lemko_qwerty.keyman-touch-layout' + +begin Unicode > use(main) + +group(main) using keys ++ [NCAPS K_BKQUOTE] > U+0449 ++ [SHIFT NCAPS K_BKQUOTE] > U+0429 ++ [CAPS K_BKQUOTE] > U+0429 ++ [SHIFT CAPS K_BKQUOTE] > U+0449 ++ [NCAPS K_1] > U+0031 ++ [SHIFT NCAPS K_1] > U+0021 ++ [CAPS K_1] > U+0031 ++ [SHIFT CAPS K_1] > U+0021 ++ [NCAPS K_2] > U+0032 ++ [SHIFT NCAPS K_2] > U+0040 ++ [CAPS K_2] > U+0032 ++ [SHIFT CAPS K_2] > U+0040 ++ [NCAPS K_3] > U+0033 ++ [SHIFT NCAPS K_3] > U+0023 ++ [CAPS K_3] > U+0033 ++ [SHIFT CAPS K_3] > U+0023 ++ [NCAPS K_4] > U+0034 ++ [SHIFT NCAPS K_4] > U+0024 ++ [CAPS K_4] > U+0034 ++ [SHIFT CAPS K_4] > U+0024 ++ [NCAPS K_5] > U+0035 ++ [SHIFT NCAPS K_5] > U+0025 ++ [CAPS K_5] > U+0035 ++ [SHIFT CAPS K_5] > U+0025 ++ [NCAPS K_6] > U+0036 ++ [SHIFT NCAPS K_6] > U+005E ++ [CAPS K_6] > U+0036 ++ [SHIFT CAPS K_6] > U+005E ++ [NCAPS K_7] > U+0037 ++ [SHIFT NCAPS K_7] > U+0026 ++ [CAPS K_7] > U+0037 ++ [SHIFT CAPS K_7] > U+0026 ++ [NCAPS K_8] > U+0038 ++ [SHIFT NCAPS K_8] > U+002A ++ [CAPS K_8] > U+0038 ++ [SHIFT CAPS K_8] > U+002A ++ [NCAPS K_9] > U+0039 ++ [SHIFT NCAPS K_9] > U+0028 ++ [CAPS K_9] > U+0039 ++ [SHIFT CAPS K_9] > U+0028 ++ [NCAPS K_0] > U+0030 ++ [SHIFT NCAPS K_0] > U+0029 ++ [CAPS K_0] > U+0030 ++ [SHIFT CAPS K_0] > U+0029 ++ [NCAPS K_HYPHEN] > U+044C ++ [SHIFT NCAPS K_HYPHEN] > U+042C ++ [CAPS K_HYPHEN] > U+042C ++ [SHIFT CAPS K_HYPHEN] > U+044C ++ [NCAPS K_EQUAL] > U+044A ++ [SHIFT NCAPS K_EQUAL] > U+042A ++ [CAPS K_EQUAL] > U+042A ++ [SHIFT CAPS K_EQUAL] > U+044A ++ [NCAPS K_Q] > U+044F ++ [SHIFT NCAPS K_Q] > U+042F ++ [CAPS K_Q] > U+042F ++ [SHIFT CAPS K_Q] > U+044F ++ [NCAPS K_W] > U+0448 ++ [SHIFT NCAPS K_W] > U+0428 ++ [CAPS K_W] > U+0428 ++ [SHIFT CAPS K_W] > U+0448 ++ [NCAPS K_E] > U+0435 ++ [SHIFT NCAPS K_E] > U+0415 ++ [CAPS K_E] > U+0415 ++ [SHIFT CAPS K_E] > U+0435 ++ [NCAPS K_R] > U+0440 ++ [SHIFT NCAPS K_R] > U+0420 ++ [CAPS K_R] > U+0420 ++ [SHIFT CAPS K_R] > U+0440 ++ [NCAPS K_T] > U+0442 ++ [SHIFT NCAPS K_T] > U+0422 ++ [CAPS K_T] > U+0422 ++ [SHIFT CAPS K_T] > U+0442 ++ [NCAPS K_Y] > U+044B ++ [SHIFT NCAPS K_Y] > U+042B ++ [CAPS K_Y] > U+042B ++ [SHIFT CAPS K_Y] > U+044B ++ [NCAPS K_U] > U+0443 ++ [SHIFT NCAPS K_U] > U+0423 ++ [CAPS K_U] > U+0423 ++ [SHIFT CAPS K_U] > U+0443 ++ [NCAPS K_I] > U+0438 ++ [SHIFT NCAPS K_I] > U+0418 ++ [CAPS K_I] > U+0418 ++ [SHIFT CAPS K_I] > U+0438 ++ [NCAPS K_O] > U+043E ++ [SHIFT NCAPS K_O] > U+041E ++ [CAPS K_O] > U+041E ++ [SHIFT CAPS K_O] > U+043E ++ [NCAPS K_P] > U+043F ++ [SHIFT NCAPS K_P] > U+041F ++ [CAPS K_P] > U+041F ++ [SHIFT CAPS K_P] > U+043F ++ [NCAPS K_LBRKT] > U+044E ++ [SHIFT NCAPS K_LBRKT] > U+042E ++ [CAPS K_LBRKT] > U+042E ++ [SHIFT CAPS K_LBRKT] > U+044E ++ [NCAPS K_RBRKT] > U+0436 ++ [SHIFT NCAPS K_RBRKT] > U+0416 ++ [CAPS K_RBRKT] > U+0416 ++ [SHIFT CAPS K_RBRKT] > U+0436 ++ [NCAPS K_BKSLASH] > U+0454 ++ [SHIFT NCAPS K_BKSLASH] > U+0404 ++ [CAPS K_BKSLASH] > U+0404 ++ [SHIFT CAPS K_BKSLASH] > U+0454 ++ [NCAPS K_A] > U+0430 ++ [SHIFT NCAPS K_A] > U+0410 ++ [CAPS K_A] > U+0410 ++ [SHIFT CAPS K_A] > U+0430 ++ [NCAPS K_S] > U+0441 ++ [SHIFT NCAPS K_S] > U+0421 ++ [CAPS K_S] > U+0421 ++ [SHIFT CAPS K_S] > U+0441 ++ [NCAPS K_D] > U+0434 ++ [SHIFT NCAPS K_D] > U+0414 ++ [CAPS K_D] > U+0414 ++ [SHIFT CAPS K_D] > U+0434 ++ [NCAPS K_F] > U+0444 ++ [SHIFT NCAPS K_F] > U+0424 ++ [CAPS K_F] > U+0424 ++ [SHIFT CAPS K_F] > U+0444 ++ [NCAPS K_G] > U+0433 ++ [SHIFT NCAPS K_G] > U+0413 ++ [CAPS K_G] > U+0413 ++ [SHIFT CAPS K_G] > U+0433 ++ [NCAPS K_H] > U+0447 ++ [SHIFT NCAPS K_H] > U+0427 ++ [CAPS K_H] > U+0427 ++ [SHIFT CAPS K_H] > U+0447 ++ [NCAPS K_J] > U+0439 ++ [SHIFT NCAPS K_J] > U+0419 ++ [CAPS K_J] > U+0419 ++ [SHIFT CAPS K_J] > U+0439 ++ [NCAPS K_K] > U+043A ++ [SHIFT NCAPS K_K] > U+041A ++ [CAPS K_K] > U+041A ++ [SHIFT CAPS K_K] > U+043A ++ [NCAPS K_L] > U+043B ++ [SHIFT NCAPS K_L] > U+041B ++ [CAPS K_L] > U+041B ++ [SHIFT CAPS K_L] > U+043B ++ [NCAPS K_COLON] > U+003B ++ [SHIFT NCAPS K_COLON] > U+003A ++ [CAPS K_COLON] > U+003B ++ [SHIFT CAPS K_COLON] > U+003A ++ [NCAPS K_QUOTE] > U+0027 ++ [SHIFT NCAPS K_QUOTE] > U+0022 ++ [CAPS K_QUOTE] > U+0027 ++ [SHIFT CAPS K_QUOTE] > U+0022 ++ [NCAPS K_Z] > U+0437 ++ [SHIFT NCAPS K_Z] > U+0417 ++ [CAPS K_Z] > U+0417 ++ [SHIFT CAPS K_Z] > U+0437 ++ [NCAPS K_X] > U+0445 ++ [SHIFT NCAPS K_X] > U+0425 ++ [CAPS K_X] > U+0425 ++ [SHIFT CAPS K_X] > U+0445 ++ [NCAPS K_C] > U+0446 ++ [SHIFT NCAPS K_C] > U+0426 ++ [CAPS K_C] > U+0426 ++ [SHIFT CAPS K_C] > U+0446 ++ [NCAPS K_V] > U+0432 ++ [SHIFT NCAPS K_V] > U+0412 ++ [CAPS K_V] > U+0412 ++ [SHIFT CAPS K_V] > U+0432 ++ [NCAPS K_B] > U+0431 ++ [SHIFT NCAPS K_B] > U+0411 ++ [CAPS K_B] > U+0411 ++ [SHIFT CAPS K_B] > U+0431 ++ [NCAPS K_N] > U+043D ++ [SHIFT NCAPS K_N] > U+041D ++ [CAPS K_N] > U+041D ++ [SHIFT CAPS K_N] > U+043D ++ [NCAPS K_M] > U+043C ++ [SHIFT NCAPS K_M] > U+041C ++ [CAPS K_M] > U+041C ++ [SHIFT CAPS K_M] > U+043C ++ [NCAPS K_COMMA] > U+002C ++ [SHIFT NCAPS K_COMMA] > U+003C ++ [CAPS K_COMMA] > U+002C ++ [SHIFT CAPS K_COMMA] > U+003C ++ [NCAPS K_PERIOD] > U+002E ++ [SHIFT NCAPS K_PERIOD] > U+003E ++ [CAPS K_PERIOD] > U+002E ++ [SHIFT CAPS K_PERIOD] > U+003E ++ [NCAPS K_SLASH] > U+002F ++ [SHIFT NCAPS K_SLASH] > U+003F ++ [CAPS K_SLASH] > U+002F ++ [SHIFT CAPS K_SLASH] > U+003F ++ [NCAPS K_oE2] > U+003E ++ [SHIFT NCAPS K_oE2] > U+003C ++ [CAPS K_oE2] > U+003E ++ [SHIFT CAPS K_oE2] > U+003C ++ [NCAPS K_SPACE] > U+0020 ++ [SHIFT NCAPS K_SPACE] > U+0020 ++ [CAPS K_SPACE] > U+0020 ++ [SHIFT CAPS K_SPACE] > U+0020 ++ [RALT NCAPS K_1] > U+0457 ++ [RALT SHIFT NCAPS K_1] > U+0407 ++ [RALT CAPS K_1] > U+0407 ++ [RALT SHIFT CAPS K_1] > U+0457 ++ [RALT NCAPS K_2] > U+0451 ++ [RALT SHIFT NCAPS K_2] > U+0401 ++ [RALT CAPS K_2] > U+0401 ++ [RALT SHIFT CAPS K_2] > U+0451 ++ [RALT NCAPS K_3] > U+0454 ++ [RALT SHIFT NCAPS K_3] > U+0404 ++ [RALT CAPS K_3] > U+0404 ++ [RALT SHIFT CAPS K_3] > U+0454 ++ [RALT NCAPS K_4] > U+0491 ++ [RALT SHIFT NCAPS K_4] > U+0490 ++ [RALT CAPS K_4] > U+0490 ++ [RALT SHIFT CAPS K_4] > U+0491 ++ [RALT NCAPS K_W] > U+0449 ++ [RALT SHIFT NCAPS K_W] > U+0429 ++ [RALT CAPS K_W] > U+0429 ++ [RALT SHIFT CAPS K_W] > U+0449 ++ [RALT NCAPS K_E] > U+0451 ++ [RALT SHIFT NCAPS K_E] > U+0401 ++ [RALT CAPS K_E] > U+0401 ++ [RALT SHIFT CAPS K_E] > U+0451 ++ [RALT NCAPS K_I] > U+0456 ++ [RALT SHIFT NCAPS K_I] > U+0406 ++ [RALT CAPS K_I] > U+0406 ++ [RALT SHIFT CAPS K_I] > U+0456 ++ [RALT NCAPS K_H] > U+0491 ++ [RALT SHIFT NCAPS K_H] > U+0490 ++ [RALT CAPS K_H] > U+0490 ++ [RALT SHIFT CAPS K_H] > U+0491 ++ [RALT NCAPS K_A] > U+0457 ++ [RALT SHIFT NCAPS K_A] > U+0407 ++ [RALT CAPS K_A] > U+0407 ++ [RALT SHIFT CAPS K_A] > U+0457 ++ [RALT NCAPS K_BKSLASH] > U+0454 ++ [RALT SHIFT NCAPS K_BKSLASH] > U+0404 ++ [RALT CAPS K_BKSLASH] > U+0404 ++ [RALT SHIFT CAPS K_BKSLASH] > U+0454 ++ [RALT NCAPS K_BKQUOTE] > U+0060 ++ [RALT SHIFT NCAPS K_BKQUOTE] > U+007E ++ [RALT CAPS K_BKQUOTE] > U+0060 ++ [RALT SHIFT CAPS K_BKQUOTE] > U+007E ++ [RALT NCAPS K_HYPHEN] > U+002D ++ [RALT SHIFT NCAPS K_HYPHEN] > U+005F ++ [RALT CAPS K_HYPHEN] > U+002D ++ [RALT SHIFT CAPS K_HYPHEN] > U+005F ++ [RALT NCAPS K_EQUAL] > U+003D ++ [RALT SHIFT NCAPS K_EQUAL] > U+002B ++ [RALT CAPS K_EQUAL] > U+003D ++ [RALT SHIFT CAPS K_EQUAL] > U+002B ++ [RALT NCAPS K_LBRKT] > U+005B ++ [RALT SHIFT NCAPS K_LBRKT] > U+007B ++ [RALT CAPS K_LBRKT] > U+005B ++ [RALT SHIFT CAPS K_LBRKT] > U+007B ++ [RALT NCAPS K_RBRKT] > U+005D ++ [RALT SHIFT NCAPS K_RBRKT] > U+007D ++ [RALT CAPS K_RBRKT] > U+005D ++ [RALT SHIFT CAPS K_RBRKT] > U+007D ++ [RALT NCAPS K_SLASH] > U+005C ++ [RALT SHIFT NCAPS K_SLASH] > U+007C ++ [RALT CAPS K_SLASH] > U+005C ++ [RALT SHIFT CAPS K_SLASH] > U+007C ++ [RALT NCAPS K_SPACE] > U+00A0 ++ [RALT SHIFT NCAPS K_SPACE] > U+00A0 ++ [RALT CAPS K_SPACE] > U+00A0 ++ [RALT SHIFT CAPS K_SPACE] > U+00A0 +platform('macos') + [LALT NCAPS K_1] > U+0457 +platform('macos') + [LALT SHIFT NCAPS K_1] > U+0407 +platform('macos') + [LALT CAPS K_1] > U+0407 +platform('macos') + [LALT SHIFT CAPS K_1] > U+0457 +platform('macos') + [LALT NCAPS K_2] > U+0451 +platform('macos') + [LALT SHIFT NCAPS K_2] > U+0401 +platform('macos') + [LALT CAPS K_2] > U+0401 +platform('macos') + [LALT SHIFT CAPS K_2] > U+0451 +platform('macos') + [LALT NCAPS K_3] > U+0454 +platform('macos') + [LALT SHIFT NCAPS K_3] > U+0404 +platform('macos') + [LALT CAPS K_3] > U+0404 +platform('macos') + [LALT SHIFT CAPS K_3] > U+0454 +platform('macos') + [LALT NCAPS K_4] > U+0491 +platform('macos') + [LALT SHIFT NCAPS K_4] > U+0490 +platform('macos') + [LALT CAPS K_4] > U+0490 +platform('macos') + [LALT SHIFT CAPS K_4] > U+0491 +platform('macos') + [LALT NCAPS K_W] > U+0449 +platform('macos') + [LALT SHIFT NCAPS K_W] > U+0429 +platform('macos') + [LALT CAPS K_W] > U+0429 +platform('macos') + [LALT SHIFT CAPS K_W] > U+0449 +platform('macos') + [LALT NCAPS K_E] > U+0451 +platform('macos') + [LALT SHIFT NCAPS K_E] > U+0401 +platform('macos') + [LALT CAPS K_E] > U+0401 +platform('macos') + [LALT SHIFT CAPS K_E] > U+0451 +platform('macos') + [LALT NCAPS K_I] > U+0456 +platform('macos') + [LALT SHIFT NCAPS K_I] > U+0406 +platform('macos') + [LALT CAPS K_I] > U+0406 +platform('macos') + [LALT SHIFT CAPS K_I] > U+0456 +platform('macos') + [LALT NCAPS K_H] > U+0491 +platform('macos') + [LALT SHIFT NCAPS K_H] > U+0490 +platform('macos') + [LALT CAPS K_H] > U+0490 +platform('macos') + [LALT SHIFT CAPS K_H] > U+0491 +platform('macos') + [LALT NCAPS K_A] > U+0457 +platform('macos') + [LALT SHIFT NCAPS K_A] > U+0407 +platform('macos') + [LALT CAPS K_A] > U+0407 +platform('macos') + [LALT SHIFT CAPS K_A] > U+0457 +platform('macos') + [LALT NCAPS K_BKSLASH] > U+0454 +platform('macos') + [LALT SHIFT NCAPS K_BKSLASH] > U+0404 +platform('macos') + [LALT CAPS K_BKSLASH] > U+0404 +platform('macos') + [LALT SHIFT CAPS K_BKSLASH] > U+0454 +platform('macos') + [LALT NCAPS K_BKQUOTE] > U+0060 +platform('macos') + [LALT SHIFT NCAPS K_BKQUOTE] > U+007E +platform('macos') + [LALT CAPS K_BKQUOTE] > U+0060 +platform('macos') + [LALT SHIFT CAPS K_BKQUOTE] > U+007E +platform('macos') + [LALT NCAPS K_HYPHEN] > U+002D +platform('macos') + [LALT SHIFT NCAPS K_HYPHEN] > U+005F +platform('macos') + [LALT CAPS K_HYPHEN] > U+002D +platform('macos') + [LALT SHIFT CAPS K_HYPHEN] > U+005F +platform('macos') + [LALT NCAPS K_EQUAL] > U+003D +platform('macos') + [LALT SHIFT NCAPS K_EQUAL] > U+002B +platform('macos') + [LALT CAPS K_EQUAL] > U+003D +platform('macos') + [LALT SHIFT CAPS K_EQUAL] > U+002B +platform('macos') + [LALT NCAPS K_LBRKT] > U+005B +platform('macos') + [LALT SHIFT NCAPS K_LBRKT] > U+007B +platform('macos') + [LALT CAPS K_LBRKT] > U+005B +platform('macos') + [LALT SHIFT CAPS K_LBRKT] > U+007B +platform('macos') + [LALT NCAPS K_RBRKT] > U+005D +platform('macos') + [LALT SHIFT NCAPS K_RBRKT] > U+007D +platform('macos') + [LALT CAPS K_RBRKT] > U+005D +platform('macos') + [LALT SHIFT CAPS K_RBRKT] > U+007D +platform('macos') + [LALT NCAPS K_SLASH] > U+005C +platform('macos') + [LALT SHIFT NCAPS K_SLASH] > U+007C +platform('macos') + [LALT CAPS K_SLASH] > U+005C +platform('macos') + [LALT SHIFT CAPS K_SLASH] > U+007C +platform('macos') + [LALT NCAPS K_SPACE] > U+00A0 +platform('macos') + [LALT SHIFT NCAPS K_SPACE] > U+00A0 +platform('macos') + [LALT CAPS K_SPACE] > U+00A0 +platform('macos') + [LALT SHIFT CAPS K_SPACE] > U+00A0 ++ [U_0449] > U+0449 ++ [SHIFT U_0449] > U+0449 ++ [U_0454] > U+0454 ++ [SHIFT U_0454] > U+0454 ++ [U_0451] > U+0451 ++ [SHIFT U_0451] > U+0451 ++ [U_0456] > U+0456 ++ [SHIFT U_0456] > U+0456 ++ [U_0457] > U+0457 ++ [SHIFT U_0457] > U+0457 ++ [U_0491] > U+0491 ++ [SHIFT U_0491] > U+0491 ++ [U_002C] > U+002C ++ [SHIFT U_002C] > U+002C ++ [U_002E] > U+002E ++ [SHIFT U_002E] > U+002E ++ [U_0429] > U+0429 ++ [SHIFT U_0429] > U+0429 ++ [U_0404] > U+0404 ++ [SHIFT U_0404] > U+0404 ++ [U_0401] > U+0401 ++ [SHIFT U_0401] > U+0401 ++ [U_0406] > U+0406 ++ [SHIFT U_0406] > U+0406 ++ [U_0407] > U+0407 ++ [SHIFT U_0407] > U+0407 ++ [U_0490] > U+0490 ++ [SHIFT U_0490] > U+0490 ++ [U_0031] > U+0031 ++ [SHIFT U_0031] > U+0031 ++ [U_0032] > U+0032 ++ [SHIFT U_0032] > U+0032 ++ [U_0033] > U+0033 ++ [SHIFT U_0033] > U+0033 ++ [U_0034] > U+0034 ++ [SHIFT U_0034] > U+0034 ++ [U_0035] > U+0035 ++ [SHIFT U_0035] > U+0035 ++ [U_0036] > U+0036 ++ [SHIFT U_0036] > U+0036 ++ [U_0037] > U+0037 ++ [SHIFT U_0037] > U+0037 ++ [U_0038] > U+0038 ++ [SHIFT U_0038] > U+0038 ++ [U_0039] > U+0039 ++ [SHIFT U_0039] > U+0039 ++ [U_0030] > U+0030 ++ [SHIFT U_0030] > U+0030 ++ [U_002D] > U+002D ++ [SHIFT U_002D] > U+002D ++ [U_005F] > U+005F ++ [SHIFT U_005F] > U+005F ++ [U_003D] > U+003D ++ [SHIFT U_003D] > U+003D ++ [U_002B] > U+002B ++ [SHIFT U_002B] > U+002B ++ [U_005B] > U+005B ++ [SHIFT U_005B] > U+005B ++ [U_005D] > U+005D ++ [SHIFT U_005D] > U+005D ++ [U_007B] > U+007B ++ [SHIFT U_007B] > U+007B ++ [U_007D] > U+007D ++ [SHIFT U_007D] > U+007D ++ [U_005C] > U+005C ++ [SHIFT U_005C] > U+005C ++ [U_007C] > U+007C ++ [SHIFT U_007C] > U+007C ++ [U_0027] > U+0027 ++ [SHIFT U_0027] > U+0027 ++ [U_2019] > U+2019 ++ [SHIFT U_2019] > U+2019 ++ [U_02BC] > U+02BC ++ [SHIFT U_02BC] > U+02BC ++ [U_0022] > U+0022 ++ [SHIFT U_0022] > U+0022 ++ [U_003B] > U+003B ++ [SHIFT U_003B] > U+003B ++ [U_003A] > U+003A ++ [SHIFT U_003A] > U+003A ++ [U_0021] > U+0021 ++ [SHIFT U_0021] > U+0021 ++ [U_003F] > U+003F ++ [SHIFT U_003F] > U+003F ++ [U_002F] > U+002F ++ [SHIFT U_002F] > U+002F ++ [U_0040] > U+0040 ++ [SHIFT U_0040] > U+0040 ++ [U_0023] > U+0023 ++ [SHIFT U_0023] > U+0023 ++ [U_0024] > U+0024 ++ [SHIFT U_0024] > U+0024 ++ [U_0025] > U+0025 ++ [SHIFT U_0025] > U+0025 ++ [U_0026] > U+0026 ++ [SHIFT U_0026] > U+0026 ++ [U_002A] > U+002A ++ [SHIFT U_002A] > U+002A ++ [U_0028] > U+0028 ++ [SHIFT U_0028] > U+0028 ++ [U_0029] > U+0029 ++ [SHIFT U_0029] > U+0029 ++ [U_003C] > U+003C ++ [SHIFT U_003C] > U+003C ++ [U_003E] > U+003E ++ [SHIFT U_003E] > U+003E ++ [U_0060] > U+0060 ++ [SHIFT U_0060] > U+0060 ++ [U_007E] > U+007E ++ [SHIFT U_007E] > U+007E diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kps b/experimental/l/lemko_qwerty/source/lemko_qwerty.kps new file mode 100644 index 0000000000..2e8026e29c --- /dev/null +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.kps @@ -0,0 +1,47 @@ + + + + 18.0.253.0 + 7.0 + + + readme.htm + ..\LICENSE.md + welcome.htm + + + + Lemko QWERTY - test release + © lemko.tools + lemko.tools + Lemko QWERTY - test release + + + + ..\build\lemko_qwerty.kmx + + + ..\build\lemko_qwerty.js + + + ..\build\lemko_qwerty.kvk + + + welcome.htm + + + readme.htm + + + ..\LICENSE.md + + + + + lemko_qwerty + + Lemko + + + + diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kvks b/experimental/l/lemko_qwerty/source/lemko_qwerty.kvks new file mode 100644 index 0000000000..9d37d8a74d --- /dev/null +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.kvks @@ -0,0 +1,7 @@ + +
10.0lemko_qwerty
+щ1234567890ьъяшертыуиопюжєасдфгчйкл;'зхцвбнм,./> +Щ!@#$%^&*()ЬЪЯШЕРТЫУИОПЮЖЄАСДФГЧЙКЛ:"ЗХЦВБНМ<>?< +їёєґщёіґїє`-=[]\  +ЇЁЄҐЩЁІҐЇЄ~_+{}|  +
diff --git a/experimental/l/lemko_qwerty/source/readme.htm b/experimental/l/lemko_qwerty/source/readme.htm new file mode 100644 index 0000000000..7d965730d6 --- /dev/null +++ b/experimental/l/lemko_qwerty/source/readme.htm @@ -0,0 +1 @@ +

Łemkowski — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/experimental/l/lemko_qwerty/source/welcome.htm b/experimental/l/lemko_qwerty/source/welcome.htm new file mode 100644 index 0000000000..7d965730d6 --- /dev/null +++ b/experimental/l/lemko_qwerty/source/welcome.htm @@ -0,0 +1 @@ +

Łemkowski — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From 41ad36501b9dfde113e55662715ff1f4697a1076 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 15:38:37 +0200 Subject: [PATCH 02/16] [lemko_qwerty] Submit under release with test status documented --- {experimental => release}/l/lemko_qwerty/HISTORY.md | 2 +- {experimental => release}/l/lemko_qwerty/LICENSE.md | 0 {experimental => release}/l/lemko_qwerty/README.md | 4 ++-- {experimental => release}/l/lemko_qwerty/lemko_qwerty.kpj | 0 .../l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout | 0 .../l/lemko_qwerty/source/lemko_qwerty.kmn | 0 .../l/lemko_qwerty/source/lemko_qwerty.kps | 0 .../l/lemko_qwerty/source/lemko_qwerty.kvks | 0 {experimental => release}/l/lemko_qwerty/source/readme.htm | 0 {experimental => release}/l/lemko_qwerty/source/welcome.htm | 0 10 files changed, 3 insertions(+), 3 deletions(-) rename {experimental => release}/l/lemko_qwerty/HISTORY.md (73%) rename {experimental => release}/l/lemko_qwerty/LICENSE.md (100%) rename {experimental => release}/l/lemko_qwerty/README.md (92%) rename {experimental => release}/l/lemko_qwerty/lemko_qwerty.kpj (100%) rename {experimental => release}/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout (100%) rename {experimental => release}/l/lemko_qwerty/source/lemko_qwerty.kmn (100%) rename {experimental => release}/l/lemko_qwerty/source/lemko_qwerty.kps (100%) rename {experimental => release}/l/lemko_qwerty/source/lemko_qwerty.kvks (100%) rename {experimental => release}/l/lemko_qwerty/source/readme.htm (100%) rename {experimental => release}/l/lemko_qwerty/source/welcome.htm (100%) diff --git a/experimental/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md similarity index 73% rename from experimental/l/lemko_qwerty/HISTORY.md rename to release/l/lemko_qwerty/HISTORY.md index 873bf6df47..0a5f3fedfa 100644 --- a/experimental/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -2,7 +2,7 @@ ## 0.3.0 — 2026-10-16 -* Initial experimental submission with desktop and phone/tablet layouts. +* Initial initial submission submission with desktop and phone/tablet layouts. * Apple Russian Phonetic base with direct є/Є and additional Option/AltGr mappings. * Language association rue, displayed as Lemko. * Native device acceptance tests pending. diff --git a/experimental/l/lemko_qwerty/LICENSE.md b/release/l/lemko_qwerty/LICENSE.md similarity index 100% rename from experimental/l/lemko_qwerty/LICENSE.md rename to release/l/lemko_qwerty/LICENSE.md diff --git a/experimental/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md similarity index 92% rename from experimental/l/lemko_qwerty/README.md rename to release/l/lemko_qwerty/README.md index 761cebf3e9..3dbd34ce02 100644 --- a/experimental/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,6 +1,6 @@ # Lemko QWERTY keyboard -Version 0.3.0, experimental. +Version 0.3.0, initial submission. A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. @@ -8,7 +8,7 @@ Includes desktop rules, on-screen keyboard legends, and phone/tablet touch layou ## Validation and status -Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an experimental submission, not a production-readiness claim. +Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an initial submission submission, not a production-readiness claim. This package contains no lexical model or dictionary data. A separately developed Lemko model is not included in this submission. The keyboard itself does not provide desktop autocorrection. diff --git a/experimental/l/lemko_qwerty/lemko_qwerty.kpj b/release/l/lemko_qwerty/lemko_qwerty.kpj similarity index 100% rename from experimental/l/lemko_qwerty/lemko_qwerty.kpj rename to release/l/lemko_qwerty/lemko_qwerty.kpj diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout similarity index 100% rename from experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout rename to release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn similarity index 100% rename from experimental/l/lemko_qwerty/source/lemko_qwerty.kmn rename to release/l/lemko_qwerty/source/lemko_qwerty.kmn diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kps b/release/l/lemko_qwerty/source/lemko_qwerty.kps similarity index 100% rename from experimental/l/lemko_qwerty/source/lemko_qwerty.kps rename to release/l/lemko_qwerty/source/lemko_qwerty.kps diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kvks b/release/l/lemko_qwerty/source/lemko_qwerty.kvks similarity index 100% rename from experimental/l/lemko_qwerty/source/lemko_qwerty.kvks rename to release/l/lemko_qwerty/source/lemko_qwerty.kvks diff --git a/experimental/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm similarity index 100% rename from experimental/l/lemko_qwerty/source/readme.htm rename to release/l/lemko_qwerty/source/readme.htm diff --git a/experimental/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm similarity index 100% rename from experimental/l/lemko_qwerty/source/welcome.htm rename to release/l/lemko_qwerty/source/welcome.htm From f6f7f14cc14809191e001ce70295dc86cc6142c4 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 15:39:11 +0200 Subject: [PATCH 03/16] [lemko_qwerty] Clarify initial submission status --- release/l/lemko_qwerty/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index 3dbd34ce02..624a42472b 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -8,7 +8,7 @@ Includes desktop rules, on-screen keyboard legends, and phone/tablet touch layou ## Validation and status -Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an initial submission submission, not a production-readiness claim. +Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an initial submission, not a production-readiness claim. This package contains no lexical model or dictionary data. A separately developed Lemko model is not included in this submission. The keyboard itself does not provide desktop autocorrection. From c436b3112e1af07d1bd1f92ff5efba5488dbcbce Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 15:39:59 +0200 Subject: [PATCH 04/16] [lemko_qwerty] Name keyboard Rusyn (Lemko, Poland) --- release/l/lemko_qwerty/README.md | 2 +- release/l/lemko_qwerty/source/lemko_qwerty.kmn | 2 +- release/l/lemko_qwerty/source/lemko_qwerty.kps | 4 ++-- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index 624a42472b..fd1a8c7bd8 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,4 +1,4 @@ -# Lemko QWERTY keyboard +# Rusyn (Lemko, Poland) keyboard Version 0.3.0, initial submission. diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn index 92367f2a20..9eca99885e 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kmn +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -1,5 +1,5 @@ c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. -store(&NAME) 'Lemko QWERTY' +store(&NAME) 'Rusyn (Lemko, Poland)' store(©RIGHT) '© lemko.tools' store(&VERSION) '10.0' store(&KEYBOARDVERSION) '0.3.0' diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kps b/release/l/lemko_qwerty/source/lemko_qwerty.kps index 2e8026e29c..78de347467 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kps +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kps @@ -11,10 +11,10 @@ - Lemko QWERTY - test release + Rusyn (Lemko, Poland) © lemko.tools lemko.tools - Lemko QWERTY - test release + Rusyn (Lemko, Poland) diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index 7d965730d6..6d3f3e2a2b 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Łemkowski — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index 7d965730d6..6d3f3e2a2b 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Łemkowski — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From 069c5dfd58f636df303d0046e5927e31fbb809ce Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 16:05:08 +0200 Subject: [PATCH 05/16] [lemko_qwerty] Name keyboard Rusyn (Lemko, Poland) --- release/l/lemko_qwerty/HISTORY.md | 4 ++++ release/l/lemko_qwerty/README.md | 2 +- .../l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout | 4 ++-- release/l/lemko_qwerty/source/lemko_qwerty.kmn | 2 +- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/release/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md index 0a5f3fedfa..a7b2351839 100644 --- a/release/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -1,5 +1,9 @@ # Version history +## 0.3.1 — 2026-10-16 + +* Use system sans-serif font fallbacks on phone and tablet instead of unavailable Tahoma on iOS. + ## 0.3.0 — 2026-10-16 * Initial initial submission submission with desktop and phone/tablet layouts. diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index fd1a8c7bd8..afa797b5bc 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,6 +1,6 @@ # Rusyn (Lemko, Poland) keyboard -Version 0.3.0, initial submission. +Version 0.3.1, initial submission. A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout index fb676d4cb1..425285a2f5 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout +++ b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -1,6 +1,6 @@ { "phone": { - "font": "Tahoma", + "font": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif", "layer": [ { "id": "default", @@ -679,7 +679,7 @@ ] }, "tablet": { - "font": "Tahoma", + "font": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif", "layer": [ { "id": "default", diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn index 9eca99885e..a9699939ff 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kmn +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -2,7 +2,7 @@ c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. store(&NAME) 'Rusyn (Lemko, Poland)' store(©RIGHT) '© lemko.tools' store(&VERSION) '10.0' -store(&KEYBOARDVERSION) '0.3.0' +store(&KEYBOARDVERSION) '0.3.1' store(&TARGETS) 'any' store(&MNEMONICLAYOUT) '0' store(&VISUALKEYBOARD) 'lemko_qwerty.kvks' diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index 6d3f3e2a2b..63ad1d57e1 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.1, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index 6d3f3e2a2b..63ad1d57e1 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.0, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.1, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From d9dda4d30fb93a6f5957b0989d3641ae7c23ab84 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 17:01:27 +0200 Subject: [PATCH 06/16] [lemko_qwerty] Name keyboard Rusyn (Lemko, Poland) --- release/l/lemko_qwerty/HISTORY.md | 6 ++ release/l/lemko_qwerty/README.md | 2 +- .../l/lemko_qwerty/source/lemko_qwerty.css | 11 ++++ .../source/lemko_qwerty.keyman-touch-layout | 60 ++++++++++++------- .../l/lemko_qwerty/source/lemko_qwerty.kmn | 3 +- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 7 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 release/l/lemko_qwerty/source/lemko_qwerty.css diff --git a/release/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md index a7b2351839..c9cab61c7b 100644 --- a/release/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -1,5 +1,11 @@ # Version history +## 0.3.2 — 2026-10-16 + +* Apply system sans-serif typography to suggestion text through embedded CSS. +* Widen the space key and round key corners without changing letter positions. +* Preserve platform colors and special-key icon fonts. + ## 0.3.1 — 2026-10-16 * Use system sans-serif font fallbacks on phone and tablet instead of unavailable Tahoma on iOS. diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index afa797b5bc..fb57e3f457 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,6 +1,6 @@ # Rusyn (Lemko, Poland) keyboard -Version 0.3.1, initial submission. +Version 0.3.2, initial submission. A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.css b/release/l/lemko_qwerty/source/lemko_qwerty.css new file mode 100644 index 0000000000..105d10385a --- /dev/null +++ b/release/l/lemko_qwerty/source/lemko_qwerty.css @@ -0,0 +1,11 @@ +/* Injected only while this keyboard is active. Preserve native light/dark colors, + hit targets, row geometry and Keyman's special-key icon font. */ +.kmw-suggestion-text, +.kmw-suggestion-container { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif !important; + font-weight: 400; + font-style: normal; +} +.kmw-key { + border-radius: 7px !important; +} diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout index 425285a2f5..7670ccbdac 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout +++ b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -200,30 +200,35 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", + "width": "120", "nextlayer": "symbols" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90" }, { "id": "U_002C", - "text": "," + "text": ",", + "width": "75" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "560" }, { "id": "U_002E", - "text": "." + "text": ".", + "width": "75" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "180" } ] } @@ -427,30 +432,35 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", + "width": "120", "nextlayer": "symbols" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90" }, { "id": "U_002C", - "text": "," + "text": ",", + "width": "75" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "560" }, { "id": "U_002E", - "text": "." + "text": ".", + "width": "75" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "180" } ] } @@ -879,30 +889,35 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", + "width": "120", "nextlayer": "symbols" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90" }, { "id": "U_002C", - "text": "," + "text": ",", + "width": "75" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "560" }, { "id": "U_002E", - "text": "." + "text": ".", + "width": "75" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "180" } ] } @@ -1106,30 +1121,35 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", + "width": "120", "nextlayer": "symbols" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90" }, { "id": "U_002C", - "text": "," + "text": ",", + "width": "75" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "560" }, { "id": "U_002E", - "text": "." + "text": ".", + "width": "75" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "180" } ] } diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn index a9699939ff..51f75c27d0 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kmn +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -2,9 +2,10 @@ c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. store(&NAME) 'Rusyn (Lemko, Poland)' store(©RIGHT) '© lemko.tools' store(&VERSION) '10.0' -store(&KEYBOARDVERSION) '0.3.1' +store(&KEYBOARDVERSION) '0.3.2' store(&TARGETS) 'any' store(&MNEMONICLAYOUT) '0' +store(&KMW_EMBEDCSS) 'lemko_qwerty.css' store(&VISUALKEYBOARD) 'lemko_qwerty.kvks' store(&LAYOUTFILE) 'lemko_qwerty.keyman-touch-layout' diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index 63ad1d57e1..676ea9e3d5 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.1, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.2, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index 63ad1d57e1..676ea9e3d5 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.1, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.2, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From 3c6dade0d643226b9d5474c5950a9a831bc75d7c Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 17:48:52 +0200 Subject: [PATCH 07/16] [lemko_qwerty] Name keyboard Rusyn (Lemko, Poland) --- release/l/lemko_qwerty/HISTORY.md | 5 + release/l/lemko_qwerty/README.md | 2 +- .../source/lemko_qwerty.keyman-touch-layout | 724 ++++++++++++++---- .../l/lemko_qwerty/source/lemko_qwerty.kmn | 96 ++- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 6 files changed, 641 insertions(+), 190 deletions(-) diff --git a/release/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md index c9cab61c7b..b79d40bae7 100644 --- a/release/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -1,5 +1,10 @@ # Version history +## 0.3.3 — 2026-10-16 + +* Split numbers and symbols into two four-row pages with balanced widths. +* Keep all digits equal in width, enlarge space, and provide a dedicated symbol-page toggle. + ## 0.3.2 — 2026-10-16 * Apply system sans-serif typography to suggestion text through embedded CSS. diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index fb57e3f457..d35a52b579 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,6 +1,6 @@ # Rusyn (Lemko, Poland) keyboard -Version 0.3.2, initial submission. +Version 0.3.3, initial submission. A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout index 7670ccbdac..f701764452 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout +++ b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -474,43 +474,63 @@ "key": [ { "id": "U_0031", - "text": "1" + "text": "1", + "width": "110", + "pad": "10" }, { "id": "U_0032", - "text": "2" + "text": "2", + "width": "110", + "pad": "5" }, { "id": "U_0033", - "text": "3" + "text": "3", + "width": "110", + "pad": "5" }, { "id": "U_0034", - "text": "4" + "text": "4", + "width": "110", + "pad": "5" }, { "id": "U_0035", - "text": "5" + "text": "5", + "width": "110", + "pad": "5" }, { "id": "U_0036", - "text": "6" + "text": "6", + "width": "110", + "pad": "5" }, { "id": "U_0037", - "text": "7" + "text": "7", + "width": "110", + "pad": "5" }, { "id": "U_0038", - "text": "8" + "text": "8", + "width": "110", + "pad": "5" }, { "id": "U_0039", - "text": "9" + "text": "9", + "width": "110", + "pad": "5" }, { "id": "U_0030", - "text": "0" + "text": "0", + "width": "110", + "pad": "5" } ] }, @@ -519,43 +539,63 @@ "key": [ { "id": "U_002D", - "text": "-" + "text": "-", + "width": "110", + "pad": "10" }, { - "id": "U_005F", - "text": "_" + "id": "U_002F", + "text": "/", + "width": "110", + "pad": "5" }, { - "id": "U_003D", - "text": "=" + "id": "U_003A", + "text": ":", + "width": "110", + "pad": "5" }, { - "id": "U_002B", - "text": "+" + "id": "U_003B", + "text": ";", + "width": "110", + "pad": "5" }, { - "id": "U_005B", - "text": "[" + "id": "U_0028", + "text": "(", + "width": "110", + "pad": "5" }, { - "id": "U_005D", - "text": "]" + "id": "U_0029", + "text": ")", + "width": "110", + "pad": "5" }, { - "id": "U_007B", - "text": "{" + "id": "U_0024", + "text": "$", + "width": "110", + "pad": "5" }, { - "id": "U_007D", - "text": "}" + "id": "U_0026", + "text": "&", + "width": "110", + "pad": "5" }, { - "id": "U_005C", - "text": "\\" + "id": "U_0040", + "text": "@", + "width": "110", + "pad": "5" }, { - "id": "U_007C", - "text": "|" + "id": "U_0022", + "text": "\"", + "width": "110", + "pad": "5" } ] }, @@ -563,124 +603,300 @@ "id": 3, "key": [ { - "id": "U_0027", - "text": "'" + "id": "K_SYMBOLS", + "text": "#+=", + "sp": "1", + "width": "170", + "pad": "5", + "nextlayer": "symbols2" }, { - "id": "U_2019", - "text": "’" + "id": "U_002E", + "text": ".", + "width": "150", + "pad": "5" }, { - "id": "U_02BC", - "text": "ʼ" + "id": "U_002C", + "text": ",", + "width": "150", + "pad": "5" }, { - "id": "U_0022", - "text": "\"" + "id": "U_003F", + "text": "?", + "width": "150", + "pad": "5" }, { - "id": "U_003B", - "text": ";" + "id": "U_0021", + "text": "!", + "width": "150", + "pad": "5" }, { - "id": "U_003A", - "text": ":" + "id": "U_0027", + "text": "'", + "width": "150", + "pad": "5" }, { - "id": "U_0021", - "text": "!" + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1", + "width": "200", + "pad": "5" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "sp": "1", + "width": "160", + "pad": "5", + "nextlayer": "default" }, { - "id": "U_003F", - "text": "?" + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1", + "width": "90", + "pad": "5" }, { - "id": "U_002F", - "text": "/" + "id": "K_SPACE", + "text": "", + "width": "665", + "pad": "5" + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1", + "width": "220", + "pad": "5" } ] - }, + } + ] + }, + { + "id": "symbols2", + "row": [ { - "id": 4, + "id": 1, "key": [ { - "id": "U_0040", - "text": "@" + "id": "U_005B", + "text": "[", + "width": "110", + "pad": "10" }, { - "id": "U_0023", - "text": "#" + "id": "U_005D", + "text": "]", + "width": "110", + "pad": "5" }, { - "id": "U_0024", - "text": "$" + "id": "U_007B", + "text": "{", + "width": "110", + "pad": "5" + }, + { + "id": "U_007D", + "text": "}", + "width": "110", + "pad": "5" + }, + { + "id": "U_0023", + "text": "#", + "width": "110", + "pad": "5" }, { "id": "U_0025", - "text": "%" + "text": "%", + "width": "110", + "pad": "5" }, { - "id": "U_0026", - "text": "&" + "id": "U_005E", + "text": "^", + "width": "110", + "pad": "5" }, { "id": "U_002A", - "text": "*" + "text": "*", + "width": "110", + "pad": "5" }, { - "id": "U_0028", - "text": "(" + "id": "U_002B", + "text": "+", + "width": "110", + "pad": "5" }, { - "id": "U_0029", - "text": ")" + "id": "U_003D", + "text": "=", + "width": "110", + "pad": "5" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_005F", + "text": "_", + "width": "110", + "pad": "10" + }, + { + "id": "U_005C", + "text": "\\", + "width": "110", + "pad": "5" + }, + { + "id": "U_007C", + "text": "|", + "width": "110", + "pad": "5" + }, + { + "id": "U_007E", + "text": "~", + "width": "110", + "pad": "5" }, { "id": "U_003C", - "text": "<" + "text": "<", + "width": "110", + "pad": "5" }, { "id": "U_003E", - "text": ">" + "text": ">", + "width": "110", + "pad": "5" + }, + { + "id": "U_20AC", + "text": "€", + "width": "110", + "pad": "5" + }, + { + "id": "U_00A3", + "text": "£", + "width": "110", + "pad": "5" + }, + { + "id": "U_00A5", + "text": "¥", + "width": "110", + "pad": "5" + }, + { + "id": "U_2022", + "text": "•", + "width": "110", + "pad": "5" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "width": "170", + "pad": "5", + "nextlayer": "symbols" + }, + { + "id": "U_2019", + "text": "’", + "width": "150", + "pad": "5" + }, + { + "id": "U_02BC", + "text": "ʼ", + "width": "150", + "pad": "5" }, { "id": "U_0060", - "text": "`" + "text": "`", + "width": "150", + "pad": "5" }, { - "id": "U_007E", - "text": "~" + "id": "U_2013", + "text": "–", + "width": "150", + "pad": "5" + }, + { + "id": "U_2026", + "text": "…", + "width": "150", + "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", - "sp": "1" + "sp": "1", + "width": "200", + "pad": "5" } ] }, { - "id": 5, + "id": 4, "key": [ { "id": "K_LOWER", "text": "*abc*", "sp": "1", + "width": "160", + "pad": "5", "nextlayer": "default" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90", + "pad": "5" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "665", + "pad": "5" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "220", + "pad": "5" } ] } @@ -1163,43 +1379,63 @@ "key": [ { "id": "U_0031", - "text": "1" + "text": "1", + "width": "110", + "pad": "10" }, { "id": "U_0032", - "text": "2" + "text": "2", + "width": "110", + "pad": "5" }, { "id": "U_0033", - "text": "3" + "text": "3", + "width": "110", + "pad": "5" }, { "id": "U_0034", - "text": "4" + "text": "4", + "width": "110", + "pad": "5" }, { "id": "U_0035", - "text": "5" + "text": "5", + "width": "110", + "pad": "5" }, { "id": "U_0036", - "text": "6" + "text": "6", + "width": "110", + "pad": "5" }, { "id": "U_0037", - "text": "7" + "text": "7", + "width": "110", + "pad": "5" }, { "id": "U_0038", - "text": "8" + "text": "8", + "width": "110", + "pad": "5" }, { "id": "U_0039", - "text": "9" + "text": "9", + "width": "110", + "pad": "5" }, { "id": "U_0030", - "text": "0" + "text": "0", + "width": "110", + "pad": "5" } ] }, @@ -1208,43 +1444,63 @@ "key": [ { "id": "U_002D", - "text": "-" + "text": "-", + "width": "110", + "pad": "10" }, { - "id": "U_005F", - "text": "_" + "id": "U_002F", + "text": "/", + "width": "110", + "pad": "5" }, { - "id": "U_003D", - "text": "=" + "id": "U_003A", + "text": ":", + "width": "110", + "pad": "5" }, { - "id": "U_002B", - "text": "+" + "id": "U_003B", + "text": ";", + "width": "110", + "pad": "5" }, { - "id": "U_005B", - "text": "[" + "id": "U_0028", + "text": "(", + "width": "110", + "pad": "5" }, { - "id": "U_005D", - "text": "]" + "id": "U_0029", + "text": ")", + "width": "110", + "pad": "5" }, { - "id": "U_007B", - "text": "{" + "id": "U_0024", + "text": "$", + "width": "110", + "pad": "5" }, { - "id": "U_007D", - "text": "}" + "id": "U_0026", + "text": "&", + "width": "110", + "pad": "5" }, { - "id": "U_005C", - "text": "\\" + "id": "U_0040", + "text": "@", + "width": "110", + "pad": "5" }, { - "id": "U_007C", - "text": "|" + "id": "U_0022", + "text": "\"", + "width": "110", + "pad": "5" } ] }, @@ -1252,124 +1508,300 @@ "id": 3, "key": [ { - "id": "U_0027", - "text": "'" + "id": "K_SYMBOLS", + "text": "#+=", + "sp": "1", + "width": "170", + "pad": "5", + "nextlayer": "symbols2" }, { - "id": "U_2019", - "text": "’" + "id": "U_002E", + "text": ".", + "width": "150", + "pad": "5" }, { - "id": "U_02BC", - "text": "ʼ" + "id": "U_002C", + "text": ",", + "width": "150", + "pad": "5" }, { - "id": "U_0022", - "text": "\"" + "id": "U_003F", + "text": "?", + "width": "150", + "pad": "5" }, { - "id": "U_003B", - "text": ";" + "id": "U_0021", + "text": "!", + "width": "150", + "pad": "5" }, { - "id": "U_003A", - "text": ":" + "id": "U_0027", + "text": "'", + "width": "150", + "pad": "5" }, { - "id": "U_0021", - "text": "!" + "id": "K_BKSP", + "text": "*BkSp*", + "sp": "1", + "width": "200", + "pad": "5" + } + ] + }, + { + "id": 4, + "key": [ + { + "id": "K_LOWER", + "text": "*abc*", + "sp": "1", + "width": "160", + "pad": "5", + "nextlayer": "default" }, { - "id": "U_003F", - "text": "?" + "id": "K_LOPT", + "text": "*Menu*", + "sp": "1", + "width": "90", + "pad": "5" }, { - "id": "U_002F", - "text": "/" + "id": "K_SPACE", + "text": "", + "width": "665", + "pad": "5" + }, + { + "id": "K_ENTER", + "text": "*Enter*", + "sp": "1", + "width": "220", + "pad": "5" } ] - }, + } + ] + }, + { + "id": "symbols2", + "row": [ { - "id": 4, + "id": 1, "key": [ { - "id": "U_0040", - "text": "@" + "id": "U_005B", + "text": "[", + "width": "110", + "pad": "10" }, { - "id": "U_0023", - "text": "#" + "id": "U_005D", + "text": "]", + "width": "110", + "pad": "5" }, { - "id": "U_0024", - "text": "$" + "id": "U_007B", + "text": "{", + "width": "110", + "pad": "5" + }, + { + "id": "U_007D", + "text": "}", + "width": "110", + "pad": "5" + }, + { + "id": "U_0023", + "text": "#", + "width": "110", + "pad": "5" }, { "id": "U_0025", - "text": "%" + "text": "%", + "width": "110", + "pad": "5" }, { - "id": "U_0026", - "text": "&" + "id": "U_005E", + "text": "^", + "width": "110", + "pad": "5" }, { "id": "U_002A", - "text": "*" + "text": "*", + "width": "110", + "pad": "5" }, { - "id": "U_0028", - "text": "(" + "id": "U_002B", + "text": "+", + "width": "110", + "pad": "5" }, { - "id": "U_0029", - "text": ")" + "id": "U_003D", + "text": "=", + "width": "110", + "pad": "5" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_005F", + "text": "_", + "width": "110", + "pad": "10" + }, + { + "id": "U_005C", + "text": "\\", + "width": "110", + "pad": "5" + }, + { + "id": "U_007C", + "text": "|", + "width": "110", + "pad": "5" + }, + { + "id": "U_007E", + "text": "~", + "width": "110", + "pad": "5" }, { "id": "U_003C", - "text": "<" + "text": "<", + "width": "110", + "pad": "5" }, { "id": "U_003E", - "text": ">" + "text": ">", + "width": "110", + "pad": "5" + }, + { + "id": "U_20AC", + "text": "€", + "width": "110", + "pad": "5" + }, + { + "id": "U_00A3", + "text": "£", + "width": "110", + "pad": "5" + }, + { + "id": "U_00A5", + "text": "¥", + "width": "110", + "pad": "5" + }, + { + "id": "U_2022", + "text": "•", + "width": "110", + "pad": "5" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SYMBOLS", + "text": "123", + "sp": "1", + "width": "170", + "pad": "5", + "nextlayer": "symbols" + }, + { + "id": "U_2019", + "text": "’", + "width": "150", + "pad": "5" + }, + { + "id": "U_02BC", + "text": "ʼ", + "width": "150", + "pad": "5" }, { "id": "U_0060", - "text": "`" + "text": "`", + "width": "150", + "pad": "5" }, { - "id": "U_007E", - "text": "~" + "id": "U_2013", + "text": "–", + "width": "150", + "pad": "5" + }, + { + "id": "U_2026", + "text": "…", + "width": "150", + "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", - "sp": "1" + "sp": "1", + "width": "200", + "pad": "5" } ] }, { - "id": 5, + "id": 4, "key": [ { "id": "K_LOWER", "text": "*abc*", "sp": "1", + "width": "160", + "pad": "5", "nextlayer": "default" }, { "id": "K_LOPT", "text": "*Menu*", - "sp": "1" + "sp": "1", + "width": "90", + "pad": "5" }, { "id": "K_SPACE", "text": "", - "width": "400" + "width": "665", + "pad": "5" }, { "id": "K_ENTER", "text": "*Enter*", - "sp": "1" + "sp": "1", + "width": "220", + "pad": "5" } ] } diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn index 51f75c27d0..eeb5ce53e4 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kmn +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -2,7 +2,7 @@ c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. store(&NAME) 'Rusyn (Lemko, Poland)' store(©RIGHT) '© lemko.tools' store(&VERSION) '10.0' -store(&KEYBOARDVERSION) '0.3.2' +store(&KEYBOARDVERSION) '0.3.3' store(&TARGETS) 'any' store(&MNEMONICLAYOUT) '0' store(&KMW_EMBEDCSS) 'lemko_qwerty.css' @@ -394,12 +394,30 @@ platform('macos') + [LALT SHIFT CAPS K_SPACE] > U+00A0 + [SHIFT U_0030] > U+0030 + [U_002D] > U+002D + [SHIFT U_002D] > U+002D -+ [U_005F] > U+005F -+ [SHIFT U_005F] > U+005F -+ [U_003D] > U+003D -+ [SHIFT U_003D] > U+003D -+ [U_002B] > U+002B -+ [SHIFT U_002B] > U+002B ++ [U_002F] > U+002F ++ [SHIFT U_002F] > U+002F ++ [U_003A] > U+003A ++ [SHIFT U_003A] > U+003A ++ [U_003B] > U+003B ++ [SHIFT U_003B] > U+003B ++ [U_0028] > U+0028 ++ [SHIFT U_0028] > U+0028 ++ [U_0029] > U+0029 ++ [SHIFT U_0029] > U+0029 ++ [U_0024] > U+0024 ++ [SHIFT U_0024] > U+0024 ++ [U_0026] > U+0026 ++ [SHIFT U_0026] > U+0026 ++ [U_0040] > U+0040 ++ [SHIFT U_0040] > U+0040 ++ [U_0022] > U+0022 ++ [SHIFT U_0022] > U+0022 ++ [U_003F] > U+003F ++ [SHIFT U_003F] > U+003F ++ [U_0021] > U+0021 ++ [SHIFT U_0021] > U+0021 ++ [U_0027] > U+0027 ++ [SHIFT U_0027] > U+0027 + [U_005B] > U+005B + [SHIFT U_005B] > U+005B + [U_005D] > U+005D @@ -408,49 +426,45 @@ platform('macos') + [LALT SHIFT CAPS K_SPACE] > U+00A0 + [SHIFT U_007B] > U+007B + [U_007D] > U+007D + [SHIFT U_007D] > U+007D -+ [U_005C] > U+005C -+ [SHIFT U_005C] > U+005C -+ [U_007C] > U+007C -+ [SHIFT U_007C] > U+007C -+ [U_0027] > U+0027 -+ [SHIFT U_0027] > U+0027 -+ [U_2019] > U+2019 -+ [SHIFT U_2019] > U+2019 -+ [U_02BC] > U+02BC -+ [SHIFT U_02BC] > U+02BC -+ [U_0022] > U+0022 -+ [SHIFT U_0022] > U+0022 -+ [U_003B] > U+003B -+ [SHIFT U_003B] > U+003B -+ [U_003A] > U+003A -+ [SHIFT U_003A] > U+003A -+ [U_0021] > U+0021 -+ [SHIFT U_0021] > U+0021 -+ [U_003F] > U+003F -+ [SHIFT U_003F] > U+003F -+ [U_002F] > U+002F -+ [SHIFT U_002F] > U+002F -+ [U_0040] > U+0040 -+ [SHIFT U_0040] > U+0040 + [U_0023] > U+0023 + [SHIFT U_0023] > U+0023 -+ [U_0024] > U+0024 -+ [SHIFT U_0024] > U+0024 + [U_0025] > U+0025 + [SHIFT U_0025] > U+0025 -+ [U_0026] > U+0026 -+ [SHIFT U_0026] > U+0026 ++ [U_005E] > U+005E ++ [SHIFT U_005E] > U+005E + [U_002A] > U+002A + [SHIFT U_002A] > U+002A -+ [U_0028] > U+0028 -+ [SHIFT U_0028] > U+0028 -+ [U_0029] > U+0029 -+ [SHIFT U_0029] > U+0029 ++ [U_002B] > U+002B ++ [SHIFT U_002B] > U+002B ++ [U_003D] > U+003D ++ [SHIFT U_003D] > U+003D ++ [U_005F] > U+005F ++ [SHIFT U_005F] > U+005F ++ [U_005C] > U+005C ++ [SHIFT U_005C] > U+005C ++ [U_007C] > U+007C ++ [SHIFT U_007C] > U+007C ++ [U_007E] > U+007E ++ [SHIFT U_007E] > U+007E + [U_003C] > U+003C + [SHIFT U_003C] > U+003C + [U_003E] > U+003E + [SHIFT U_003E] > U+003E ++ [U_20AC] > U+20AC ++ [SHIFT U_20AC] > U+20AC ++ [U_00A3] > U+00A3 ++ [SHIFT U_00A3] > U+00A3 ++ [U_00A5] > U+00A5 ++ [SHIFT U_00A5] > U+00A5 ++ [U_2022] > U+2022 ++ [SHIFT U_2022] > U+2022 ++ [U_2019] > U+2019 ++ [SHIFT U_2019] > U+2019 ++ [U_02BC] > U+02BC ++ [SHIFT U_02BC] > U+02BC + [U_0060] > U+0060 + [SHIFT U_0060] > U+0060 -+ [U_007E] > U+007E -+ [SHIFT U_007E] > U+007E ++ [U_2013] > U+2013 ++ [SHIFT U_2013] > U+2013 ++ [U_2026] > U+2026 ++ [SHIFT U_2026] > U+2026 diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index 676ea9e3d5..d9f37c1bfe 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.2, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.3, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index 676ea9e3d5..d9f37c1bfe 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.2, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.3, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From f797c91240fce574ab1560750f5d9560bf49ae05 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 18:05:40 +0200 Subject: [PATCH 08/16] [lemko_qwerty] Improve touch symbols, hints and sentence capitalization (0.3.4) --- release/l/lemko_qwerty/HISTORY.md | 6 + release/l/lemko_qwerty/README.md | 6 +- .../source/lemko_qwerty.keyman-touch-layout | 898 +++++++++++++----- .../l/lemko_qwerty/source/lemko_qwerty.kmn | 169 ++-- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 6 files changed, 806 insertions(+), 277 deletions(-) diff --git a/release/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md index b79d40bae7..2e89fac746 100644 --- a/release/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -1,5 +1,11 @@ # Version history +## 0.3.4 — 2026-10-16 + +* Match the requested EuroLatin-style numeric arrangement and add a currency page. +* Display grey long-press letter and symbol hints. +* Add touch sentence capitalization with manual Shift override; preserve decimal input. + ## 0.3.3 — 2026-10-16 * Split numbers and symbols into two four-row pages with balanced widths. diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index d35a52b579..f532873976 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -1,6 +1,6 @@ # Rusyn (Lemko, Poland) keyboard -Version 0.3.3, initial submission. +Version 0.3.4, initial submission. A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. @@ -19,3 +19,7 @@ This package contains no lexical model or dictionary data. A separately develope ## License MIT. Copyright 2026 lemko.tools. See LICENSE.md. + +## Touch behavior + +The number page follows the EuroLatin-style arrangement, with a second currency/symbol page. Grey corner labels show long-press alternatives. Automatic Shift is enabled at an empty field, after a newline, and after `.`, `?`, or `!` followed by one to three spaces. After a letter it returns to lowercase. Manual Shift can override the next letter; decimal points without a following space do not start a sentence. Abbreviations are not detected linguistically. Desktop capitalization is unchanged. diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout index f701764452..0844fae824 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout +++ b/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -15,6 +15,7 @@ { "id": "K_W", "text": "ш", + "hint": "щ", "sk": [ { "id": "U_0449", @@ -25,6 +26,7 @@ { "id": "K_E", "text": "е", + "hint": "єё", "sk": [ { "id": "U_0454", @@ -55,6 +57,7 @@ { "id": "K_I", "text": "и", + "hint": "ії", "sk": [ { "id": "U_0456", @@ -102,6 +105,7 @@ { "id": "K_G", "text": "г", + "hint": "ґ", "sk": [ { "id": "U_0491", @@ -112,6 +116,7 @@ { "id": "K_H", "text": "ч", + "hint": "ґ", "sk": [ { "id": "U_0491", @@ -247,6 +252,7 @@ { "id": "K_W", "text": "Ш", + "hint": "Щ", "sk": [ { "id": "U_0429", @@ -257,6 +263,7 @@ { "id": "K_E", "text": "Е", + "hint": "ЄЁ", "sk": [ { "id": "U_0404", @@ -287,6 +294,7 @@ { "id": "K_I", "text": "И", + "hint": "ІЇ", "sk": [ { "id": "U_0406", @@ -334,6 +342,7 @@ { "id": "K_G", "text": "Г", + "hint": "Ґ", "sk": [ { "id": "U_0490", @@ -344,6 +353,7 @@ { "id": "K_H", "text": "Ч", + "hint": "Ґ", "sk": [ { "id": "U_0490", @@ -538,63 +548,146 @@ "id": 2, "key": [ { - "id": "U_002D", - "text": "-", + "id": "U_0040", + "text": "@", + "hint": "#", + "sk": [ + { + "id": "U_0023", + "text": "#" + } + ], "width": "110", - "pad": "10" + "pad": "67.5" }, { - "id": "U_002F", - "text": "/", + "id": "U_0024", + "text": "$", + "hint": "€£¥", + "sk": [ + { + "id": "U_20AC", + "text": "€" + }, + { + "id": "U_00A3", + "text": "£" + }, + { + "id": "U_00A5", + "text": "¥" + } + ], "width": "110", "pad": "5" }, { - "id": "U_003A", - "text": ":", + "id": "U_003C", + "text": "<", + "hint": "«", + "sk": [ + { + "id": "U_00AB", + "text": "«" + } + ], "width": "110", "pad": "5" }, { - "id": "U_003B", - "text": ";", + "id": "U_003E", + "text": ">", + "hint": "»", + "sk": [ + { + "id": "U_00BB", + "text": "»" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0028", - "text": "(", + "id": "U_002B", + "text": "+", + "hint": "&", + "sk": [ + { + "id": "U_0026", + "text": "&" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0029", - "text": ")", + "id": "U_002D", + "text": "-", + "hint": "_–—", + "sk": [ + { + "id": "U_005F", + "text": "_" + }, + { + "id": "U_2013", + "text": "–" + }, + { + "id": "U_2014", + "text": "—" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0024", - "text": "$", + "id": "U_002A", + "text": "*", + "hint": "^", + "sk": [ + { + "id": "U_005E", + "text": "^" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0026", - "text": "&", + "id": "U_002F", + "text": "/", + "hint": "%\\", + "sk": [ + { + "id": "U_0025", + "text": "%" + }, + { + "id": "U_005C", + "text": "\\" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0040", - "text": "@", + "id": "U_003D", + "text": "=", + "hint": "≠", + "sk": [ + { + "id": "U_2260", + "text": "≠" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0022", - "text": "\"", - "width": "110", + "id": "T_SPACER", + "sp": "10", + "width": "52.5", "pad": "5" } ] @@ -604,47 +697,153 @@ "key": [ { "id": "K_SYMBOLS", - "text": "#+=", + "text": "€£¥", "sp": "1", - "width": "170", - "pad": "5", + "width": "110", + "pad": "10", "nextlayer": "symbols2" }, { - "id": "U_002E", - "text": ".", - "width": "150", + "id": "U_0028", + "text": "(", + "hint": "[{", + "sk": [ + { + "id": "U_005B", + "text": "[" + }, + { + "id": "U_007B", + "text": "{" + } + ], + "width": "110", "pad": "5" }, { - "id": "U_002C", - "text": ",", - "width": "150", + "id": "U_0029", + "text": ")", + "hint": "]}", + "sk": [ + { + "id": "U_005D", + "text": "]" + }, + { + "id": "U_007D", + "text": "}" + } + ], + "width": "110", "pad": "5" }, { - "id": "U_003F", - "text": "?", - "width": "150", + "id": "U_0027", + "text": "'", + "hint": "’ʼ‘`", + "sk": [ + { + "id": "U_2019", + "text": "’" + }, + { + "id": "U_02BC", + "text": "ʼ" + }, + { + "id": "U_2018", + "text": "‘" + }, + { + "id": "U_0060", + "text": "`" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_0022", + "text": "\"", + "hint": "“”„", + "sk": [ + { + "id": "U_201C", + "text": "“" + }, + { + "id": "U_201D", + "text": "”" + }, + { + "id": "U_201E", + "text": "„" + } + ], + "width": "110", "pad": "5" }, { "id": "U_0021", "text": "!", - "width": "150", + "hint": "¡", + "sk": [ + { + "id": "U_00A1", + "text": "¡" + } + ], + "width": "110", "pad": "5" }, { - "id": "U_0027", - "text": "'", - "width": "150", + "id": "U_003F", + "text": "?", + "hint": "¿", + "sk": [ + { + "id": "U_00BF", + "text": "¿" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_002C", + "text": ",", + "hint": ";", + "sk": [ + { + "id": "U_003B", + "text": ";" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_002E", + "text": ".", + "hint": ":…", + "sk": [ + { + "id": "U_003A", + "text": ":" + }, + { + "id": "U_2026", + "text": "…" + } + ], + "width": "110", "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", "sp": "1", - "width": "200", + "width": "110", "pad": "5" } ] @@ -691,62 +890,77 @@ "id": 1, "key": [ { - "id": "U_005B", - "text": "[", + "id": "U_20AC", + "text": "€", "width": "110", "pad": "10" }, { - "id": "U_005D", - "text": "]", + "id": "U_00A3", + "text": "£", "width": "110", "pad": "5" }, { - "id": "U_007B", - "text": "{", + "id": "U_00A5", + "text": "¥", "width": "110", "pad": "5" }, { - "id": "U_007D", - "text": "}", + "id": "U_00A2", + "text": "¢", "width": "110", "pad": "5" }, { - "id": "U_0023", - "text": "#", + "id": "U_20B4", + "text": "₴", "width": "110", "pad": "5" }, { - "id": "U_0025", - "text": "%", + "id": "U_20BD", + "text": "₽", "width": "110", "pad": "5" }, { - "id": "U_005E", - "text": "^", + "id": "U_0024", + "text": "$", + "hint": "€£¥", + "sk": [ + { + "id": "U_20AC", + "text": "€" + }, + { + "id": "U_00A3", + "text": "£" + }, + { + "id": "U_00A5", + "text": "¥" + } + ], "width": "110", "pad": "5" }, { - "id": "U_002A", - "text": "*", + "id": "U_00A4", + "text": "¤", "width": "110", "pad": "5" }, { - "id": "U_002B", - "text": "+", + "id": "U_20B9", + "text": "₹", "width": "110", "pad": "5" }, { - "id": "U_003D", - "text": "=", + "id": "U_20BF", + "text": "₿", "width": "110", "pad": "5" } @@ -756,63 +970,63 @@ "id": 2, "key": [ { - "id": "U_005F", - "text": "_", + "id": "U_005B", + "text": "[", "width": "110", - "pad": "10" + "pad": "67.5" }, { - "id": "U_005C", - "text": "\\", + "id": "U_005D", + "text": "]", "width": "110", "pad": "5" }, { - "id": "U_007C", - "text": "|", + "id": "U_007B", + "text": "{", "width": "110", "pad": "5" }, { - "id": "U_007E", - "text": "~", + "id": "U_007D", + "text": "}", "width": "110", "pad": "5" }, { - "id": "U_003C", - "text": "<", + "id": "U_0023", + "text": "#", "width": "110", "pad": "5" }, { - "id": "U_003E", - "text": ">", + "id": "U_0025", + "text": "%", "width": "110", "pad": "5" }, { - "id": "U_20AC", - "text": "€", + "id": "U_0026", + "text": "&", "width": "110", "pad": "5" }, { - "id": "U_00A3", - "text": "£", + "id": "U_005E", + "text": "^", "width": "110", "pad": "5" }, { - "id": "U_00A5", - "text": "¥", + "id": "U_007E", + "text": "~", "width": "110", "pad": "5" }, { - "id": "U_2022", - "text": "•", - "width": "110", + "id": "T_SPACER", + "sp": "10", + "width": "52.5", "pad": "5" } ] @@ -824,45 +1038,63 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", - "width": "170", - "pad": "5", + "width": "110", + "pad": "10", "nextlayer": "symbols" }, { - "id": "U_2019", - "text": "’", - "width": "150", + "id": "U_005C", + "text": "\\", + "width": "110", "pad": "5" }, { - "id": "U_02BC", - "text": "ʼ", - "width": "150", + "id": "U_007C", + "text": "|", + "width": "110", "pad": "5" }, { - "id": "U_0060", - "text": "`", - "width": "150", + "id": "U_005F", + "text": "_", + "width": "110", "pad": "5" }, { "id": "U_2013", "text": "–", - "width": "150", + "width": "110", + "pad": "5" + }, + { + "id": "U_2014", + "text": "—", + "width": "110", + "pad": "5" + }, + { + "id": "U_2022", + "text": "•", + "width": "110", + "pad": "5" + }, + { + "id": "U_003A", + "text": ":", + "width": "110", "pad": "5" }, { - "id": "U_2026", - "text": "…", - "width": "150", + "id": "U_003B", + "text": ";", + "width": "110", "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", "sp": "1", - "width": "200", + "width": "110", "pad": "5" } ] @@ -920,6 +1152,7 @@ { "id": "K_W", "text": "ш", + "hint": "щ", "sk": [ { "id": "U_0449", @@ -930,6 +1163,7 @@ { "id": "K_E", "text": "е", + "hint": "єё", "sk": [ { "id": "U_0454", @@ -960,6 +1194,7 @@ { "id": "K_I", "text": "и", + "hint": "ії", "sk": [ { "id": "U_0456", @@ -1007,6 +1242,7 @@ { "id": "K_G", "text": "г", + "hint": "ґ", "sk": [ { "id": "U_0491", @@ -1017,6 +1253,7 @@ { "id": "K_H", "text": "ч", + "hint": "ґ", "sk": [ { "id": "U_0491", @@ -1152,6 +1389,7 @@ { "id": "K_W", "text": "Ш", + "hint": "Щ", "sk": [ { "id": "U_0429", @@ -1162,6 +1400,7 @@ { "id": "K_E", "text": "Е", + "hint": "ЄЁ", "sk": [ { "id": "U_0404", @@ -1192,6 +1431,7 @@ { "id": "K_I", "text": "И", + "hint": "ІЇ", "sk": [ { "id": "U_0406", @@ -1239,6 +1479,7 @@ { "id": "K_G", "text": "Г", + "hint": "Ґ", "sk": [ { "id": "U_0490", @@ -1249,6 +1490,7 @@ { "id": "K_H", "text": "Ч", + "hint": "Ґ", "sk": [ { "id": "U_0490", @@ -1426,130 +1668,319 @@ "pad": "5" }, { - "id": "U_0039", - "text": "9", + "id": "U_0039", + "text": "9", + "width": "110", + "pad": "5" + }, + { + "id": "U_0030", + "text": "0", + "width": "110", + "pad": "5" + } + ] + }, + { + "id": 2, + "key": [ + { + "id": "U_0040", + "text": "@", + "hint": "#", + "sk": [ + { + "id": "U_0023", + "text": "#" + } + ], + "width": "110", + "pad": "67.5" + }, + { + "id": "U_0024", + "text": "$", + "hint": "€£¥", + "sk": [ + { + "id": "U_20AC", + "text": "€" + }, + { + "id": "U_00A3", + "text": "£" + }, + { + "id": "U_00A5", + "text": "¥" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_003C", + "text": "<", + "hint": "«", + "sk": [ + { + "id": "U_00AB", + "text": "«" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_003E", + "text": ">", + "hint": "»", + "sk": [ + { + "id": "U_00BB", + "text": "»" + } + ], + "width": "110", + "pad": "5" + }, + { + "id": "U_002B", + "text": "+", + "hint": "&", + "sk": [ + { + "id": "U_0026", + "text": "&" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0030", - "text": "0", + "id": "U_002D", + "text": "-", + "hint": "_–—", + "sk": [ + { + "id": "U_005F", + "text": "_" + }, + { + "id": "U_2013", + "text": "–" + }, + { + "id": "U_2014", + "text": "—" + } + ], "width": "110", "pad": "5" - } - ] - }, - { - "id": 2, - "key": [ + }, { - "id": "U_002D", - "text": "-", + "id": "U_002A", + "text": "*", + "hint": "^", + "sk": [ + { + "id": "U_005E", + "text": "^" + } + ], "width": "110", - "pad": "10" + "pad": "5" }, { "id": "U_002F", "text": "/", + "hint": "%\\", + "sk": [ + { + "id": "U_0025", + "text": "%" + }, + { + "id": "U_005C", + "text": "\\" + } + ], "width": "110", "pad": "5" }, { - "id": "U_003A", - "text": ":", + "id": "U_003D", + "text": "=", + "hint": "≠", + "sk": [ + { + "id": "U_2260", + "text": "≠" + } + ], "width": "110", "pad": "5" }, { - "id": "U_003B", - "text": ";", - "width": "110", + "id": "T_SPACER", + "sp": "10", + "width": "52.5", "pad": "5" + } + ] + }, + { + "id": 3, + "key": [ + { + "id": "K_SYMBOLS", + "text": "€£¥", + "sp": "1", + "width": "110", + "pad": "10", + "nextlayer": "symbols2" }, { "id": "U_0028", "text": "(", + "hint": "[{", + "sk": [ + { + "id": "U_005B", + "text": "[" + }, + { + "id": "U_007B", + "text": "{" + } + ], "width": "110", "pad": "5" }, { "id": "U_0029", "text": ")", + "hint": "]}", + "sk": [ + { + "id": "U_005D", + "text": "]" + }, + { + "id": "U_007D", + "text": "}" + } + ], "width": "110", "pad": "5" }, { - "id": "U_0024", - "text": "$", - "width": "110", - "pad": "5" - }, - { - "id": "U_0026", - "text": "&", - "width": "110", - "pad": "5" - }, - { - "id": "U_0040", - "text": "@", + "id": "U_0027", + "text": "'", + "hint": "’ʼ‘`", + "sk": [ + { + "id": "U_2019", + "text": "’" + }, + { + "id": "U_02BC", + "text": "ʼ" + }, + { + "id": "U_2018", + "text": "‘" + }, + { + "id": "U_0060", + "text": "`" + } + ], "width": "110", "pad": "5" }, { "id": "U_0022", "text": "\"", + "hint": "“”„", + "sk": [ + { + "id": "U_201C", + "text": "“" + }, + { + "id": "U_201D", + "text": "”" + }, + { + "id": "U_201E", + "text": "„" + } + ], "width": "110", "pad": "5" - } - ] - }, - { - "id": 3, - "key": [ - { - "id": "K_SYMBOLS", - "text": "#+=", - "sp": "1", - "width": "170", - "pad": "5", - "nextlayer": "symbols2" - }, - { - "id": "U_002E", - "text": ".", - "width": "150", - "pad": "5" }, { - "id": "U_002C", - "text": ",", - "width": "150", + "id": "U_0021", + "text": "!", + "hint": "¡", + "sk": [ + { + "id": "U_00A1", + "text": "¡" + } + ], + "width": "110", "pad": "5" }, { "id": "U_003F", "text": "?", - "width": "150", + "hint": "¿", + "sk": [ + { + "id": "U_00BF", + "text": "¿" + } + ], + "width": "110", "pad": "5" }, { - "id": "U_0021", - "text": "!", - "width": "150", + "id": "U_002C", + "text": ",", + "hint": ";", + "sk": [ + { + "id": "U_003B", + "text": ";" + } + ], + "width": "110", "pad": "5" }, { - "id": "U_0027", - "text": "'", - "width": "150", + "id": "U_002E", + "text": ".", + "hint": ":…", + "sk": [ + { + "id": "U_003A", + "text": ":" + }, + { + "id": "U_2026", + "text": "…" + } + ], + "width": "110", "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", "sp": "1", - "width": "200", + "width": "110", "pad": "5" } ] @@ -1596,62 +2027,77 @@ "id": 1, "key": [ { - "id": "U_005B", - "text": "[", + "id": "U_20AC", + "text": "€", "width": "110", "pad": "10" }, { - "id": "U_005D", - "text": "]", + "id": "U_00A3", + "text": "£", "width": "110", "pad": "5" }, { - "id": "U_007B", - "text": "{", + "id": "U_00A5", + "text": "¥", "width": "110", "pad": "5" }, { - "id": "U_007D", - "text": "}", + "id": "U_00A2", + "text": "¢", "width": "110", "pad": "5" }, { - "id": "U_0023", - "text": "#", + "id": "U_20B4", + "text": "₴", "width": "110", "pad": "5" }, { - "id": "U_0025", - "text": "%", + "id": "U_20BD", + "text": "₽", "width": "110", "pad": "5" }, { - "id": "U_005E", - "text": "^", + "id": "U_0024", + "text": "$", + "hint": "€£¥", + "sk": [ + { + "id": "U_20AC", + "text": "€" + }, + { + "id": "U_00A3", + "text": "£" + }, + { + "id": "U_00A5", + "text": "¥" + } + ], "width": "110", "pad": "5" }, { - "id": "U_002A", - "text": "*", + "id": "U_00A4", + "text": "¤", "width": "110", "pad": "5" }, { - "id": "U_002B", - "text": "+", + "id": "U_20B9", + "text": "₹", "width": "110", "pad": "5" }, { - "id": "U_003D", - "text": "=", + "id": "U_20BF", + "text": "₿", "width": "110", "pad": "5" } @@ -1661,63 +2107,63 @@ "id": 2, "key": [ { - "id": "U_005F", - "text": "_", + "id": "U_005B", + "text": "[", "width": "110", - "pad": "10" + "pad": "67.5" }, { - "id": "U_005C", - "text": "\\", + "id": "U_005D", + "text": "]", "width": "110", "pad": "5" }, { - "id": "U_007C", - "text": "|", + "id": "U_007B", + "text": "{", "width": "110", "pad": "5" }, { - "id": "U_007E", - "text": "~", + "id": "U_007D", + "text": "}", "width": "110", "pad": "5" }, { - "id": "U_003C", - "text": "<", + "id": "U_0023", + "text": "#", "width": "110", "pad": "5" }, { - "id": "U_003E", - "text": ">", + "id": "U_0025", + "text": "%", "width": "110", "pad": "5" }, { - "id": "U_20AC", - "text": "€", + "id": "U_0026", + "text": "&", "width": "110", "pad": "5" }, { - "id": "U_00A3", - "text": "£", + "id": "U_005E", + "text": "^", "width": "110", "pad": "5" }, { - "id": "U_00A5", - "text": "¥", + "id": "U_007E", + "text": "~", "width": "110", "pad": "5" }, { - "id": "U_2022", - "text": "•", - "width": "110", + "id": "T_SPACER", + "sp": "10", + "width": "52.5", "pad": "5" } ] @@ -1729,45 +2175,63 @@ "id": "K_SYMBOLS", "text": "123", "sp": "1", - "width": "170", - "pad": "5", + "width": "110", + "pad": "10", "nextlayer": "symbols" }, { - "id": "U_2019", - "text": "’", - "width": "150", + "id": "U_005C", + "text": "\\", + "width": "110", "pad": "5" }, { - "id": "U_02BC", - "text": "ʼ", - "width": "150", + "id": "U_007C", + "text": "|", + "width": "110", "pad": "5" }, { - "id": "U_0060", - "text": "`", - "width": "150", + "id": "U_005F", + "text": "_", + "width": "110", "pad": "5" }, { "id": "U_2013", "text": "–", - "width": "150", + "width": "110", + "pad": "5" + }, + { + "id": "U_2014", + "text": "—", + "width": "110", "pad": "5" }, { - "id": "U_2026", - "text": "…", - "width": "150", + "id": "U_2022", + "text": "•", + "width": "110", + "pad": "5" + }, + { + "id": "U_003A", + "text": ":", + "width": "110", + "pad": "5" + }, + { + "id": "U_003B", + "text": ";", + "width": "110", "pad": "5" }, { "id": "K_BKSP", "text": "*BkSp*", "sp": "1", - "width": "200", + "width": "110", "pad": "5" } ] diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/release/l/lemko_qwerty/source/lemko_qwerty.kmn index eeb5ce53e4..73f96a89ca 100644 --- a/release/l/lemko_qwerty/source/lemko_qwerty.kmn +++ b/release/l/lemko_qwerty/source/lemko_qwerty.kmn @@ -2,7 +2,7 @@ c Generated by scripts/generate-keyboard.mjs; edit the generator, not this file. store(&NAME) 'Rusyn (Lemko, Poland)' store(©RIGHT) '© lemko.tools' store(&VERSION) '10.0' -store(&KEYBOARDVERSION) '0.3.3' +store(&KEYBOARDVERSION) '0.3.4' store(&TARGETS) 'any' store(&MNEMONICLAYOUT) '0' store(&KMW_EMBEDCSS) 'lemko_qwerty.css' @@ -10,6 +10,29 @@ store(&VISUALKEYBOARD) 'lemko_qwerty.kvks' store(&LAYOUTFILE) 'lemko_qwerty.keyman-touch-layout' begin Unicode > use(main) +begin NewContext > use(NewContext) +begin PostKeystroke > use(PostKeystroke) +store(sentencePunctuation) '.?!' +store(whitespace) U+0020 U+00A0 U+0009 U+000A U+000D + +group(NewContext) readonly +platform('touch') > use(sentenceCase) + +group(PostKeystroke) readonly +platform('touch') if(&newLayer = 'default') if(&layer = 'symbols') > use(sentenceCase) +platform('touch') if(&newLayer = 'default') if(&layer = 'symbols2') > use(sentenceCase) +platform('touch') if(&layer = 'symbols') > context +platform('touch') if(&layer = 'symbols2') > context +platform('touch') if(&newLayer = '') > use(sentenceCase) + +group(sentenceCase) readonly +nul > layer('shift') +U+000A > layer('shift') +U+000D > layer('shift') +any(sentencePunctuation) any(whitespace) > layer('shift') +any(sentencePunctuation) any(whitespace) any(whitespace) > layer('shift') +any(sentencePunctuation) any(whitespace) any(whitespace) any(whitespace) > layer('shift') +nomatch > layer('default') group(main) using keys + [NCAPS K_BKQUOTE] > U+0449 @@ -392,79 +415,111 @@ platform('macos') + [LALT SHIFT CAPS K_SPACE] > U+00A0 + [SHIFT U_0039] > U+0039 + [U_0030] > U+0030 + [SHIFT U_0030] > U+0030 ++ [U_0040] > U+0040 ++ [SHIFT U_0040] > U+0040 ++ [U_0023] > U+0023 ++ [SHIFT U_0023] > U+0023 ++ [U_0024] > U+0024 ++ [SHIFT U_0024] > U+0024 ++ [U_20AC] > U+20AC ++ [SHIFT U_20AC] > U+20AC ++ [U_00A3] > U+00A3 ++ [SHIFT U_00A3] > U+00A3 ++ [U_00A5] > U+00A5 ++ [SHIFT U_00A5] > U+00A5 ++ [U_003C] > U+003C ++ [SHIFT U_003C] > U+003C ++ [U_00AB] > U+00AB ++ [SHIFT U_00AB] > U+00AB ++ [U_003E] > U+003E ++ [SHIFT U_003E] > U+003E ++ [U_00BB] > U+00BB ++ [SHIFT U_00BB] > U+00BB ++ [U_002B] > U+002B ++ [SHIFT U_002B] > U+002B ++ [U_0026] > U+0026 ++ [SHIFT U_0026] > U+0026 + [U_002D] > U+002D + [SHIFT U_002D] > U+002D ++ [U_005F] > U+005F ++ [SHIFT U_005F] > U+005F ++ [U_2013] > U+2013 ++ [SHIFT U_2013] > U+2013 ++ [U_2014] > U+2014 ++ [SHIFT U_2014] > U+2014 ++ [U_002A] > U+002A ++ [SHIFT U_002A] > U+002A ++ [U_005E] > U+005E ++ [SHIFT U_005E] > U+005E + [U_002F] > U+002F + [SHIFT U_002F] > U+002F -+ [U_003A] > U+003A -+ [SHIFT U_003A] > U+003A -+ [U_003B] > U+003B -+ [SHIFT U_003B] > U+003B ++ [U_0025] > U+0025 ++ [SHIFT U_0025] > U+0025 ++ [U_005C] > U+005C ++ [SHIFT U_005C] > U+005C ++ [U_003D] > U+003D ++ [SHIFT U_003D] > U+003D ++ [U_2260] > U+2260 ++ [SHIFT U_2260] > U+2260 + [U_0028] > U+0028 + [SHIFT U_0028] > U+0028 -+ [U_0029] > U+0029 -+ [SHIFT U_0029] > U+0029 -+ [U_0024] > U+0024 -+ [SHIFT U_0024] > U+0024 -+ [U_0026] > U+0026 -+ [SHIFT U_0026] > U+0026 -+ [U_0040] > U+0040 -+ [SHIFT U_0040] > U+0040 -+ [U_0022] > U+0022 -+ [SHIFT U_0022] > U+0022 -+ [U_003F] > U+003F -+ [SHIFT U_003F] > U+003F -+ [U_0021] > U+0021 -+ [SHIFT U_0021] > U+0021 -+ [U_0027] > U+0027 -+ [SHIFT U_0027] > U+0027 + [U_005B] > U+005B + [SHIFT U_005B] > U+005B -+ [U_005D] > U+005D -+ [SHIFT U_005D] > U+005D + [U_007B] > U+007B + [SHIFT U_007B] > U+007B ++ [U_0029] > U+0029 ++ [SHIFT U_0029] > U+0029 ++ [U_005D] > U+005D ++ [SHIFT U_005D] > U+005D + [U_007D] > U+007D + [SHIFT U_007D] > U+007D -+ [U_0023] > U+0023 -+ [SHIFT U_0023] > U+0023 -+ [U_0025] > U+0025 -+ [SHIFT U_0025] > U+0025 -+ [U_005E] > U+005E -+ [SHIFT U_005E] > U+005E -+ [U_002A] > U+002A -+ [SHIFT U_002A] > U+002A -+ [U_002B] > U+002B -+ [SHIFT U_002B] > U+002B -+ [U_003D] > U+003D -+ [SHIFT U_003D] > U+003D -+ [U_005F] > U+005F -+ [SHIFT U_005F] > U+005F -+ [U_005C] > U+005C -+ [SHIFT U_005C] > U+005C -+ [U_007C] > U+007C -+ [SHIFT U_007C] > U+007C -+ [U_007E] > U+007E -+ [SHIFT U_007E] > U+007E -+ [U_003C] > U+003C -+ [SHIFT U_003C] > U+003C -+ [U_003E] > U+003E -+ [SHIFT U_003E] > U+003E -+ [U_20AC] > U+20AC -+ [SHIFT U_20AC] > U+20AC -+ [U_00A3] > U+00A3 -+ [SHIFT U_00A3] > U+00A3 -+ [U_00A5] > U+00A5 -+ [SHIFT U_00A5] > U+00A5 -+ [U_2022] > U+2022 -+ [SHIFT U_2022] > U+2022 ++ [U_0027] > U+0027 ++ [SHIFT U_0027] > U+0027 + [U_2019] > U+2019 + [SHIFT U_2019] > U+2019 + [U_02BC] > U+02BC + [SHIFT U_02BC] > U+02BC ++ [U_2018] > U+2018 ++ [SHIFT U_2018] > U+2018 + [U_0060] > U+0060 + [SHIFT U_0060] > U+0060 -+ [U_2013] > U+2013 -+ [SHIFT U_2013] > U+2013 ++ [U_0022] > U+0022 ++ [SHIFT U_0022] > U+0022 ++ [U_201C] > U+201C ++ [SHIFT U_201C] > U+201C ++ [U_201D] > U+201D ++ [SHIFT U_201D] > U+201D ++ [U_201E] > U+201E ++ [SHIFT U_201E] > U+201E ++ [U_0021] > U+0021 ++ [SHIFT U_0021] > U+0021 ++ [U_00A1] > U+00A1 ++ [SHIFT U_00A1] > U+00A1 ++ [U_003F] > U+003F ++ [SHIFT U_003F] > U+003F ++ [U_00BF] > U+00BF ++ [SHIFT U_00BF] > U+00BF ++ [U_003B] > U+003B ++ [SHIFT U_003B] > U+003B ++ [U_003A] > U+003A ++ [SHIFT U_003A] > U+003A + [U_2026] > U+2026 + [SHIFT U_2026] > U+2026 ++ [U_00A2] > U+00A2 ++ [SHIFT U_00A2] > U+00A2 ++ [U_20B4] > U+20B4 ++ [SHIFT U_20B4] > U+20B4 ++ [U_20BD] > U+20BD ++ [SHIFT U_20BD] > U+20BD ++ [U_00A4] > U+00A4 ++ [SHIFT U_00A4] > U+00A4 ++ [U_20B9] > U+20B9 ++ [SHIFT U_20B9] > U+20B9 ++ [U_20BF] > U+20BF ++ [SHIFT U_20BF] > U+20BF ++ [U_007E] > U+007E ++ [SHIFT U_007E] > U+007E ++ [U_007C] > U+007C ++ [SHIFT U_007C] > U+007C ++ [U_2022] > U+2022 ++ [SHIFT U_2022] > U+2022 diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index d9f37c1bfe..8e642fb1f3 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.3, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.4

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index d9f37c1bfe..8e642fb1f3 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.3, wydanie testowe

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.4

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file From 7d8612e61d93b1d3a32b269d5e5c79807be3566d Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 22:22:06 +0200 Subject: [PATCH 09/16] Update descriptions and installation text as approved by author --- release/l/lemko_qwerty/HISTORY.md | 2 +- release/l/lemko_qwerty/README.md | 6 +----- release/l/lemko_qwerty/source/readme.htm | 2 +- release/l/lemko_qwerty/source/welcome.htm | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/release/l/lemko_qwerty/HISTORY.md b/release/l/lemko_qwerty/HISTORY.md index 2e89fac746..b405d66f60 100644 --- a/release/l/lemko_qwerty/HISTORY.md +++ b/release/l/lemko_qwerty/HISTORY.md @@ -23,7 +23,7 @@ ## 0.3.0 — 2026-10-16 -* Initial initial submission submission with desktop and phone/tablet layouts. +* Initial submission with desktop and phone/tablet layouts. * Apple Russian Phonetic base with direct є/Є and additional Option/AltGr mappings. * Language association rue, displayed as Lemko. * Native device acceptance tests pending. diff --git a/release/l/lemko_qwerty/README.md b/release/l/lemko_qwerty/README.md index f532873976..4f1404c246 100644 --- a/release/l/lemko_qwerty/README.md +++ b/release/l/lemko_qwerty/README.md @@ -2,14 +2,10 @@ Version 0.3.4, initial submission. -A positional Cyrillic keyboard for Lemko, based on the Apple macOS Russian Phonetic layout. The backslash position produces є instead of э; Shift produces Є. Option on macOS and right Alt on other platforms also provide є at the backslash position. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. +A phonetic Cyrillic keyboard for Lemko. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. Includes desktop rules, on-screen keyboard legends, and phone/tablet touch layouts. Touch long-press alternatives include і/ї on и, ґ on г, and щ on ш; a separate symbols layer provides numbers and punctuation. -## Validation and status - -Compiled without errors with Keyman Developer kmc 18.0.253. Desktop and mobile-profile tests pass in KeymanWeb 18.0.253 on Microsoft Edge, including direct є/Є, AltGr, macOS-profile Option, and phone/tablet symbol layers. Those are browser tests, not native Windows/macOS/Android/iOS acceptance tests. Native installation, shortcut interactions, and offline restart testing remain pending. This is an initial submission, not a production-readiness claim. - This package contains no lexical model or dictionary data. A separately developed Lemko model is not included in this submission. The keyboard itself does not provide desktop autocorrection. ## Build diff --git a/release/l/lemko_qwerty/source/readme.htm b/release/l/lemko_qwerty/source/readme.htm index 8e642fb1f3..7f56d6848d 100644 --- a/release/l/lemko_qwerty/source/readme.htm +++ b/release/l/lemko_qwerty/source/readme.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.4

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.4

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

diff --git a/release/l/lemko_qwerty/source/welcome.htm b/release/l/lemko_qwerty/source/welcome.htm index 8e642fb1f3..7f56d6848d 100644 --- a/release/l/lemko_qwerty/source/welcome.htm +++ b/release/l/lemko_qwerty/source/welcome.htm @@ -1 +1 @@ -

Rusyn (Lemko, Poland) — 0.3.4

Układ oparty na Apple Russian Phonetic. Klawisz \ wpisuje є; Shift wpisuje Є. Option/AltGr + \ również wpisuje є. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik. Nie zakończono testów natywnych ani oceny jakości całego słownika.

\ No newline at end of file +

Rusyn (Lemko, Poland) — 0.3.4

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

From aa5aa4c36e290c8c412e83256d131537851e51ee Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Fri, 16 Oct 2026 22:51:18 +0200 Subject: [PATCH 10/16] Fix copyright notice format required by Keyman build --- release/l/lemko_qwerty/LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/l/lemko_qwerty/LICENSE.md b/release/l/lemko_qwerty/LICENSE.md index 81acb22f7e..2bb9b5f71c 100644 --- a/release/l/lemko_qwerty/LICENSE.md +++ b/release/l/lemko_qwerty/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -© 2026 lemko.tools +Copyright © 2026 lemko.tools Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 894bd0bcd915d3827848644394f3bb0b6e4023a6 Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Mon, 19 Oct 2026 20:03:05 +0200 Subject: [PATCH 11/16] [lemko_qwerty] Move keyboard to experimental as requested in review --- {release => experimental}/l/lemko_qwerty/HISTORY.md | 0 {release => experimental}/l/lemko_qwerty/LICENSE.md | 0 {release => experimental}/l/lemko_qwerty/README.md | 0 {release => experimental}/l/lemko_qwerty/lemko_qwerty.kpj | 0 {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.css | 0 .../l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout | 0 {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kmn | 0 {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kps | 0 {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kvks | 0 {release => experimental}/l/lemko_qwerty/source/readme.htm | 0 {release => experimental}/l/lemko_qwerty/source/welcome.htm | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename {release => experimental}/l/lemko_qwerty/HISTORY.md (100%) rename {release => experimental}/l/lemko_qwerty/LICENSE.md (100%) rename {release => experimental}/l/lemko_qwerty/README.md (100%) rename {release => experimental}/l/lemko_qwerty/lemko_qwerty.kpj (100%) rename {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.css (100%) rename {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout (100%) rename {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kmn (100%) rename {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kps (100%) rename {release => experimental}/l/lemko_qwerty/source/lemko_qwerty.kvks (100%) rename {release => experimental}/l/lemko_qwerty/source/readme.htm (100%) rename {release => experimental}/l/lemko_qwerty/source/welcome.htm (100%) diff --git a/release/l/lemko_qwerty/HISTORY.md b/experimental/l/lemko_qwerty/HISTORY.md similarity index 100% rename from release/l/lemko_qwerty/HISTORY.md rename to experimental/l/lemko_qwerty/HISTORY.md diff --git a/release/l/lemko_qwerty/LICENSE.md b/experimental/l/lemko_qwerty/LICENSE.md similarity index 100% rename from release/l/lemko_qwerty/LICENSE.md rename to experimental/l/lemko_qwerty/LICENSE.md diff --git a/release/l/lemko_qwerty/README.md b/experimental/l/lemko_qwerty/README.md similarity index 100% rename from release/l/lemko_qwerty/README.md rename to experimental/l/lemko_qwerty/README.md diff --git a/release/l/lemko_qwerty/lemko_qwerty.kpj b/experimental/l/lemko_qwerty/lemko_qwerty.kpj similarity index 100% rename from release/l/lemko_qwerty/lemko_qwerty.kpj rename to experimental/l/lemko_qwerty/lemko_qwerty.kpj diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.css b/experimental/l/lemko_qwerty/source/lemko_qwerty.css similarity index 100% rename from release/l/lemko_qwerty/source/lemko_qwerty.css rename to experimental/l/lemko_qwerty/source/lemko_qwerty.css diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout similarity index 100% rename from release/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout rename to experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kmn b/experimental/l/lemko_qwerty/source/lemko_qwerty.kmn similarity index 100% rename from release/l/lemko_qwerty/source/lemko_qwerty.kmn rename to experimental/l/lemko_qwerty/source/lemko_qwerty.kmn diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kps b/experimental/l/lemko_qwerty/source/lemko_qwerty.kps similarity index 100% rename from release/l/lemko_qwerty/source/lemko_qwerty.kps rename to experimental/l/lemko_qwerty/source/lemko_qwerty.kps diff --git a/release/l/lemko_qwerty/source/lemko_qwerty.kvks b/experimental/l/lemko_qwerty/source/lemko_qwerty.kvks similarity index 100% rename from release/l/lemko_qwerty/source/lemko_qwerty.kvks rename to experimental/l/lemko_qwerty/source/lemko_qwerty.kvks diff --git a/release/l/lemko_qwerty/source/readme.htm b/experimental/l/lemko_qwerty/source/readme.htm similarity index 100% rename from release/l/lemko_qwerty/source/readme.htm rename to experimental/l/lemko_qwerty/source/readme.htm diff --git a/release/l/lemko_qwerty/source/welcome.htm b/experimental/l/lemko_qwerty/source/welcome.htm similarity index 100% rename from release/l/lemko_qwerty/source/welcome.htm rename to experimental/l/lemko_qwerty/source/welcome.htm From f5612fcdf5723e4fcd1fed6ce3c32005d599c36c Mon Sep 17 00:00:00 2001 From: paulolemko <30904570+paulolemko@users.noreply.github.com> Date: Wed, 21 Oct 2026 16:59:51 +0200 Subject: [PATCH 12/16] fix(lemko_qwerty): share phone touch layout with tablets --- .../source/lemko_qwerty.keyman-touch-layout | 1137 ----------------- 1 file changed, 1137 deletions(-) diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout b/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout index 0844fae824..3bb8f04c82 100644 --- a/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.keyman-touch-layout @@ -1135,1142 +1135,5 @@ ] } ] - }, - "tablet": { - "font": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif", - "layer": [ - { - "id": "default", - "row": [ - { - "id": 1, - "key": [ - { - "id": "K_Q", - "text": "я" - }, - { - "id": "K_W", - "text": "ш", - "hint": "щ", - "sk": [ - { - "id": "U_0449", - "text": "щ" - } - ] - }, - { - "id": "K_E", - "text": "е", - "hint": "єё", - "sk": [ - { - "id": "U_0454", - "text": "є" - }, - { - "id": "U_0451", - "text": "ё" - } - ] - }, - { - "id": "K_R", - "text": "р" - }, - { - "id": "K_T", - "text": "т" - }, - { - "id": "K_Y", - "text": "ы" - }, - { - "id": "K_U", - "text": "у" - }, - { - "id": "K_I", - "text": "и", - "hint": "ії", - "sk": [ - { - "id": "U_0456", - "text": "і" - }, - { - "id": "U_0457", - "text": "ї" - } - ] - }, - { - "id": "K_O", - "text": "о" - }, - { - "id": "K_P", - "text": "п" - }, - { - "id": "K_LBRKT", - "text": "ю" - } - ] - }, - { - "id": 2, - "key": [ - { - "id": "K_A", - "text": "а" - }, - { - "id": "K_S", - "text": "с" - }, - { - "id": "K_D", - "text": "д" - }, - { - "id": "K_F", - "text": "ф" - }, - { - "id": "K_G", - "text": "г", - "hint": "ґ", - "sk": [ - { - "id": "U_0491", - "text": "ґ" - } - ] - }, - { - "id": "K_H", - "text": "ч", - "hint": "ґ", - "sk": [ - { - "id": "U_0491", - "text": "ґ" - } - ] - }, - { - "id": "K_J", - "text": "й" - }, - { - "id": "K_K", - "text": "к" - }, - { - "id": "K_L", - "text": "л" - }, - { - "id": "K_RBRKT", - "text": "ж" - }, - { - "id": "K_BKSLASH", - "text": "є" - } - ] - }, - { - "id": 3, - "key": [ - { - "id": "K_SHIFT", - "text": "*Shift*", - "sp": "1", - "nextlayer": "shift" - }, - { - "id": "K_Z", - "text": "з" - }, - { - "id": "K_X", - "text": "х" - }, - { - "id": "K_C", - "text": "ц" - }, - { - "id": "K_V", - "text": "в" - }, - { - "id": "K_B", - "text": "б" - }, - { - "id": "K_N", - "text": "н" - }, - { - "id": "K_M", - "text": "м" - }, - { - "id": "K_HYPHEN", - "text": "ь" - }, - { - "id": "K_EQUAL", - "text": "ъ" - }, - { - "id": "K_BKSP", - "text": "*BkSp*", - "sp": "1" - } - ] - }, - { - "id": 4, - "key": [ - { - "id": "K_SYMBOLS", - "text": "123", - "sp": "1", - "width": "120", - "nextlayer": "symbols" - }, - { - "id": "K_LOPT", - "text": "*Menu*", - "sp": "1", - "width": "90" - }, - { - "id": "U_002C", - "text": ",", - "width": "75" - }, - { - "id": "K_SPACE", - "text": "", - "width": "560" - }, - { - "id": "U_002E", - "text": ".", - "width": "75" - }, - { - "id": "K_ENTER", - "text": "*Enter*", - "sp": "1", - "width": "180" - } - ] - } - ] - }, - { - "id": "shift", - "row": [ - { - "id": 1, - "key": [ - { - "id": "K_Q", - "text": "Я" - }, - { - "id": "K_W", - "text": "Ш", - "hint": "Щ", - "sk": [ - { - "id": "U_0429", - "text": "Щ" - } - ] - }, - { - "id": "K_E", - "text": "Е", - "hint": "ЄЁ", - "sk": [ - { - "id": "U_0404", - "text": "Є" - }, - { - "id": "U_0401", - "text": "Ё" - } - ] - }, - { - "id": "K_R", - "text": "Р" - }, - { - "id": "K_T", - "text": "Т" - }, - { - "id": "K_Y", - "text": "Ы" - }, - { - "id": "K_U", - "text": "У" - }, - { - "id": "K_I", - "text": "И", - "hint": "ІЇ", - "sk": [ - { - "id": "U_0406", - "text": "І" - }, - { - "id": "U_0407", - "text": "Ї" - } - ] - }, - { - "id": "K_O", - "text": "О" - }, - { - "id": "K_P", - "text": "П" - }, - { - "id": "K_LBRKT", - "text": "Ю" - } - ] - }, - { - "id": 2, - "key": [ - { - "id": "K_A", - "text": "А" - }, - { - "id": "K_S", - "text": "С" - }, - { - "id": "K_D", - "text": "Д" - }, - { - "id": "K_F", - "text": "Ф" - }, - { - "id": "K_G", - "text": "Г", - "hint": "Ґ", - "sk": [ - { - "id": "U_0490", - "text": "Ґ" - } - ] - }, - { - "id": "K_H", - "text": "Ч", - "hint": "Ґ", - "sk": [ - { - "id": "U_0490", - "text": "Ґ" - } - ] - }, - { - "id": "K_J", - "text": "Й" - }, - { - "id": "K_K", - "text": "К" - }, - { - "id": "K_L", - "text": "Л" - }, - { - "id": "K_RBRKT", - "text": "Ж" - }, - { - "id": "K_BKSLASH", - "text": "Є" - } - ] - }, - { - "id": 3, - "key": [ - { - "id": "K_SHIFT", - "text": "*Shift*", - "sp": "1", - "nextlayer": "default" - }, - { - "id": "K_Z", - "text": "З" - }, - { - "id": "K_X", - "text": "Х" - }, - { - "id": "K_C", - "text": "Ц" - }, - { - "id": "K_V", - "text": "В" - }, - { - "id": "K_B", - "text": "Б" - }, - { - "id": "K_N", - "text": "Н" - }, - { - "id": "K_M", - "text": "М" - }, - { - "id": "K_HYPHEN", - "text": "Ь" - }, - { - "id": "K_EQUAL", - "text": "Ъ" - }, - { - "id": "K_BKSP", - "text": "*BkSp*", - "sp": "1" - } - ] - }, - { - "id": 4, - "key": [ - { - "id": "K_SYMBOLS", - "text": "123", - "sp": "1", - "width": "120", - "nextlayer": "symbols" - }, - { - "id": "K_LOPT", - "text": "*Menu*", - "sp": "1", - "width": "90" - }, - { - "id": "U_002C", - "text": ",", - "width": "75" - }, - { - "id": "K_SPACE", - "text": "", - "width": "560" - }, - { - "id": "U_002E", - "text": ".", - "width": "75" - }, - { - "id": "K_ENTER", - "text": "*Enter*", - "sp": "1", - "width": "180" - } - ] - } - ] - }, - { - "id": "symbols", - "row": [ - { - "id": 1, - "key": [ - { - "id": "U_0031", - "text": "1", - "width": "110", - "pad": "10" - }, - { - "id": "U_0032", - "text": "2", - "width": "110", - "pad": "5" - }, - { - "id": "U_0033", - "text": "3", - "width": "110", - "pad": "5" - }, - { - "id": "U_0034", - "text": "4", - "width": "110", - "pad": "5" - }, - { - "id": "U_0035", - "text": "5", - "width": "110", - "pad": "5" - }, - { - "id": "U_0036", - "text": "6", - "width": "110", - "pad": "5" - }, - { - "id": "U_0037", - "text": "7", - "width": "110", - "pad": "5" - }, - { - "id": "U_0038", - "text": "8", - "width": "110", - "pad": "5" - }, - { - "id": "U_0039", - "text": "9", - "width": "110", - "pad": "5" - }, - { - "id": "U_0030", - "text": "0", - "width": "110", - "pad": "5" - } - ] - }, - { - "id": 2, - "key": [ - { - "id": "U_0040", - "text": "@", - "hint": "#", - "sk": [ - { - "id": "U_0023", - "text": "#" - } - ], - "width": "110", - "pad": "67.5" - }, - { - "id": "U_0024", - "text": "$", - "hint": "€£¥", - "sk": [ - { - "id": "U_20AC", - "text": "€" - }, - { - "id": "U_00A3", - "text": "£" - }, - { - "id": "U_00A5", - "text": "¥" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_003C", - "text": "<", - "hint": "«", - "sk": [ - { - "id": "U_00AB", - "text": "«" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_003E", - "text": ">", - "hint": "»", - "sk": [ - { - "id": "U_00BB", - "text": "»" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002B", - "text": "+", - "hint": "&", - "sk": [ - { - "id": "U_0026", - "text": "&" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002D", - "text": "-", - "hint": "_–—", - "sk": [ - { - "id": "U_005F", - "text": "_" - }, - { - "id": "U_2013", - "text": "–" - }, - { - "id": "U_2014", - "text": "—" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002A", - "text": "*", - "hint": "^", - "sk": [ - { - "id": "U_005E", - "text": "^" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002F", - "text": "/", - "hint": "%\\", - "sk": [ - { - "id": "U_0025", - "text": "%" - }, - { - "id": "U_005C", - "text": "\\" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_003D", - "text": "=", - "hint": "≠", - "sk": [ - { - "id": "U_2260", - "text": "≠" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "T_SPACER", - "sp": "10", - "width": "52.5", - "pad": "5" - } - ] - }, - { - "id": 3, - "key": [ - { - "id": "K_SYMBOLS", - "text": "€£¥", - "sp": "1", - "width": "110", - "pad": "10", - "nextlayer": "symbols2" - }, - { - "id": "U_0028", - "text": "(", - "hint": "[{", - "sk": [ - { - "id": "U_005B", - "text": "[" - }, - { - "id": "U_007B", - "text": "{" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_0029", - "text": ")", - "hint": "]}", - "sk": [ - { - "id": "U_005D", - "text": "]" - }, - { - "id": "U_007D", - "text": "}" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_0027", - "text": "'", - "hint": "’ʼ‘`", - "sk": [ - { - "id": "U_2019", - "text": "’" - }, - { - "id": "U_02BC", - "text": "ʼ" - }, - { - "id": "U_2018", - "text": "‘" - }, - { - "id": "U_0060", - "text": "`" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_0022", - "text": "\"", - "hint": "“”„", - "sk": [ - { - "id": "U_201C", - "text": "“" - }, - { - "id": "U_201D", - "text": "”" - }, - { - "id": "U_201E", - "text": "„" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_0021", - "text": "!", - "hint": "¡", - "sk": [ - { - "id": "U_00A1", - "text": "¡" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_003F", - "text": "?", - "hint": "¿", - "sk": [ - { - "id": "U_00BF", - "text": "¿" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002C", - "text": ",", - "hint": ";", - "sk": [ - { - "id": "U_003B", - "text": ";" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_002E", - "text": ".", - "hint": ":…", - "sk": [ - { - "id": "U_003A", - "text": ":" - }, - { - "id": "U_2026", - "text": "…" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "K_BKSP", - "text": "*BkSp*", - "sp": "1", - "width": "110", - "pad": "5" - } - ] - }, - { - "id": 4, - "key": [ - { - "id": "K_LOWER", - "text": "*abc*", - "sp": "1", - "width": "160", - "pad": "5", - "nextlayer": "default" - }, - { - "id": "K_LOPT", - "text": "*Menu*", - "sp": "1", - "width": "90", - "pad": "5" - }, - { - "id": "K_SPACE", - "text": "", - "width": "665", - "pad": "5" - }, - { - "id": "K_ENTER", - "text": "*Enter*", - "sp": "1", - "width": "220", - "pad": "5" - } - ] - } - ] - }, - { - "id": "symbols2", - "row": [ - { - "id": 1, - "key": [ - { - "id": "U_20AC", - "text": "€", - "width": "110", - "pad": "10" - }, - { - "id": "U_00A3", - "text": "£", - "width": "110", - "pad": "5" - }, - { - "id": "U_00A5", - "text": "¥", - "width": "110", - "pad": "5" - }, - { - "id": "U_00A2", - "text": "¢", - "width": "110", - "pad": "5" - }, - { - "id": "U_20B4", - "text": "₴", - "width": "110", - "pad": "5" - }, - { - "id": "U_20BD", - "text": "₽", - "width": "110", - "pad": "5" - }, - { - "id": "U_0024", - "text": "$", - "hint": "€£¥", - "sk": [ - { - "id": "U_20AC", - "text": "€" - }, - { - "id": "U_00A3", - "text": "£" - }, - { - "id": "U_00A5", - "text": "¥" - } - ], - "width": "110", - "pad": "5" - }, - { - "id": "U_00A4", - "text": "¤", - "width": "110", - "pad": "5" - }, - { - "id": "U_20B9", - "text": "₹", - "width": "110", - "pad": "5" - }, - { - "id": "U_20BF", - "text": "₿", - "width": "110", - "pad": "5" - } - ] - }, - { - "id": 2, - "key": [ - { - "id": "U_005B", - "text": "[", - "width": "110", - "pad": "67.5" - }, - { - "id": "U_005D", - "text": "]", - "width": "110", - "pad": "5" - }, - { - "id": "U_007B", - "text": "{", - "width": "110", - "pad": "5" - }, - { - "id": "U_007D", - "text": "}", - "width": "110", - "pad": "5" - }, - { - "id": "U_0023", - "text": "#", - "width": "110", - "pad": "5" - }, - { - "id": "U_0025", - "text": "%", - "width": "110", - "pad": "5" - }, - { - "id": "U_0026", - "text": "&", - "width": "110", - "pad": "5" - }, - { - "id": "U_005E", - "text": "^", - "width": "110", - "pad": "5" - }, - { - "id": "U_007E", - "text": "~", - "width": "110", - "pad": "5" - }, - { - "id": "T_SPACER", - "sp": "10", - "width": "52.5", - "pad": "5" - } - ] - }, - { - "id": 3, - "key": [ - { - "id": "K_SYMBOLS", - "text": "123", - "sp": "1", - "width": "110", - "pad": "10", - "nextlayer": "symbols" - }, - { - "id": "U_005C", - "text": "\\", - "width": "110", - "pad": "5" - }, - { - "id": "U_007C", - "text": "|", - "width": "110", - "pad": "5" - }, - { - "id": "U_005F", - "text": "_", - "width": "110", - "pad": "5" - }, - { - "id": "U_2013", - "text": "–", - "width": "110", - "pad": "5" - }, - { - "id": "U_2014", - "text": "—", - "width": "110", - "pad": "5" - }, - { - "id": "U_2022", - "text": "•", - "width": "110", - "pad": "5" - }, - { - "id": "U_003A", - "text": ":", - "width": "110", - "pad": "5" - }, - { - "id": "U_003B", - "text": ";", - "width": "110", - "pad": "5" - }, - { - "id": "K_BKSP", - "text": "*BkSp*", - "sp": "1", - "width": "110", - "pad": "5" - } - ] - }, - { - "id": 4, - "key": [ - { - "id": "K_LOWER", - "text": "*abc*", - "sp": "1", - "width": "160", - "pad": "5", - "nextlayer": "default" - }, - { - "id": "K_LOPT", - "text": "*Menu*", - "sp": "1", - "width": "90", - "pad": "5" - }, - { - "id": "K_SPACE", - "text": "", - "width": "665", - "pad": "5" - }, - { - "id": "K_ENTER", - "text": "*Enter*", - "sp": "1", - "width": "220", - "pad": "5" - } - ] - } - ] - } - ] } } From 20ada51f524197bf183307874427be9f65f5407a Mon Sep 17 00:00:00 2001 From: Lorna Evans Date: Wed, 21 Oct 2026 10:17:29 -0500 Subject: [PATCH 13/16] Update README.md Remove version from README.md so it doesn't have to be updated again. --- experimental/l/lemko_qwerty/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/experimental/l/lemko_qwerty/README.md b/experimental/l/lemko_qwerty/README.md index 4f1404c246..96fa91cbcc 100644 --- a/experimental/l/lemko_qwerty/README.md +++ b/experimental/l/lemko_qwerty/README.md @@ -1,7 +1,5 @@ # Rusyn (Lemko, Poland) keyboard -Version 0.3.4, initial submission. - A phonetic Cyrillic keyboard for Lemko. Additional mappings include і on Option/AltGr+I, ї on Option/AltGr+A and ґ on Option/AltGr+H. The language tag rue identifies Rusyn broadly; this keyboard and its visible labels target Lemko specifically. Includes desktop rules, on-screen keyboard legends, and phone/tablet touch layouts. Touch long-press alternatives include і/ї on и, ґ on г, and щ on ш; a separate symbols layer provides numbers and punctuation. From 2652f2504f0458032f07ec33db85fb07a0c6d9a3 Mon Sep 17 00:00:00 2001 From: Lorna Evans Date: Wed, 21 Oct 2026 10:20:21 -0500 Subject: [PATCH 14/16] Update readme.htm Update html for readme.htm and remove version for ease of maintenance in future. --- experimental/l/lemko_qwerty/source/readme.htm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/experimental/l/lemko_qwerty/source/readme.htm b/experimental/l/lemko_qwerty/source/readme.htm index 7f56d6848d..7ada4064f7 100644 --- a/experimental/l/lemko_qwerty/source/readme.htm +++ b/experimental/l/lemko_qwerty/source/readme.htm @@ -1 +1,17 @@ -

Rusyn (Lemko, Poland) — 0.3.4

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

+ + + + + Rusyn (Lemko, Poland) + + + +

Rusyn (Lemko, Poland)

+

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

+ + + From ed59c092de8e053b430b9c6a3e5368678b2dc970 Mon Sep 17 00:00:00 2001 From: Lorna Evans Date: Wed, 21 Oct 2026 10:21:46 -0500 Subject: [PATCH 15/16] Update welcome.htm Update html and remove version for ease in future maintenance. --- experimental/l/lemko_qwerty/source/welcome.htm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/experimental/l/lemko_qwerty/source/welcome.htm b/experimental/l/lemko_qwerty/source/welcome.htm index 7f56d6848d..43692b0b02 100644 --- a/experimental/l/lemko_qwerty/source/welcome.htm +++ b/experimental/l/lemko_qwerty/source/welcome.htm @@ -1 +1,17 @@ -

Rusyn (Lemko, Poland) — 0.3.4

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

+ + + + + Start Using Rusyn (Lemko, Poland) + + + +

Start Using Rusyn (Lemko, Poland)

+

Fonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.

+ + + From e3f31cbb7f79ee28cbe8a58a67d1a2e8f753a25c Mon Sep 17 00:00:00 2001 From: Lorna Evans Date: Wed, 21 Oct 2026 10:23:41 -0500 Subject: [PATCH 16/16] Update lemko_qwerty.kps Update description in .kps to include information that is in README.md. --- experimental/l/lemko_qwerty/source/lemko_qwerty.kps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/l/lemko_qwerty/source/lemko_qwerty.kps b/experimental/l/lemko_qwerty/source/lemko_qwerty.kps index 78de347467..840a734729 100644 --- a/experimental/l/lemko_qwerty/source/lemko_qwerty.kps +++ b/experimental/l/lemko_qwerty/source/lemko_qwerty.kps @@ -14,7 +14,7 @@ Rusyn (Lemko, Poland) © lemko.tools lemko.tools - Rusyn (Lemko, Poland) + A phonetic Cyrillic keyboard for Lemko.