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 @@
+
+
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 @@ +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 @@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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 @@ -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 +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 EvansFonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.
+ + + + +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 EvansFonetyczny układ cyrylicy qwerty. Windows i macOS: klawiatura. Android i iOS: klawiatura dotykowa; zainstaluj osobno słownik.
+ + + + +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