Skip to content

Add isv_latin: Interslavic (Latin), standard orthography - #4092

Open
radoslove wants to merge 3 commits into
keymanapp:masterfrom
radoslove:add-isv-latin
Open

Add isv_latin: Interslavic (Latin), standard orthography#4092
radoslove wants to merge 3 commits into
keymanapp:masterfrom
radoslove:add-isv-latin

Conversation

@radoslove

Copy link
Copy Markdown

First Interslavic keyboard in the catalogue.

Standard orthography only — č š ž ě plus the punctuation Interslavic texts use („ ” – —). The extended alphabet is deliberately absent: it is not written in new text, and this matches the author's Windows (.klc), macOS (.keylayout) and Android layouts, which carry exactly the same four letters.

Touch: no AltGr exists on a touchscreen, so the letters sit on longpress of their base key — hold c for č — the same mnemonic as AltGr+C on desktop. The longpress keys are touch-only T_* keys with their own rules rather than a re-use of the RALT rules, because a touch subkey cannot reach the rightalt layer. Both sets are generated from one table so they cannot drift apart.

Language: isv-Latn (ISO 639-3 isv), resolves natively. Tested on iPadOS 26 via Keyman: install, typing, longpress, capitals. Builds warning-clean with kmc 18.0.249.

Sources and the generator: https://github.com/radoslove/keyboard-interslavic

First Interslavic keyboard in the catalogue.

Standard orthography only — č š ž ě plus the punctuation Interslavic texts use
(„ ” – —). The extended alphabet is deliberately absent: it is not written in
new text, and this matches the author's Windows (.klc), macOS (.keylayout) and
Android layouts, which carry exactly the same four letters.

Touch: no AltGr exists on a touchscreen, so the letters sit on longpress of
their base key — hold `c` for `č` — the same mnemonic as AltGr+C on desktop.
The longpress keys are touch-only T_* keys with their own rules rather than a
re-use of the RALT rules, because a touch subkey cannot reach the rightalt
layer. Both sets are generated from one table so they cannot drift apart.

Language: isv-Latn (ISO 639-3 `isv`), resolves natively.
Tested on iPadOS 26 via Keyman: install, typing, longpress, capitals.
Builds warning-clean with kmc 18.0.249.

Sources and the generator: https://github.com/radoslove/keyboard-interslavic
@keyman-server

Copy link
Copy Markdown
Collaborator

Thank you for your pull request. You'll see a "build failed" message until the Keyman team has reviewed the pull request and manually initiated the build process.

Every change committed to this branch will become part of this pull request. When you have finished submitting files and are ready for the Keyman team to review this pull request, please post a "Ready for review" comment.

radoslove pushed a commit to radoslove/keyboard-interslavic that referenced this pull request Aug 8, 2026
Reported from a real iPad: `s`, `c`, `z` produced the plain letter roughly half
the time. Not autocorrect and not a missing rule — a plain letter means Keyman
read the hold as a tap, so the longpress threshold was simply missed. `e` looked
reliable only because it happens to be pressed with a different rhythm.

Longpress is timing-dependent by nature, so rather than fight the threshold the
letters now also have a flick: swipe north-east. A flick cannot be mistaken for
a tap, and it is the same gesture the Android layout already uses for the same
four letters, so the two mobile platforms now share one habit.

Longpress is untouched — this is additive, not a replacement.

minKeymanVersion deliberately stays at 10.0 even though flicks need 17+.
Raising it would lock out everyone on an older Keyman to gain a feature they
would not get anyway; they keep longpress, which is what 10.0 supports. The
compiler hint about this is the correct outcome, not a defect to silence.

Not yet reflected in keymanapp/keyboards#4092 — that gets updated once the
fix is confirmed on the device it was reported from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Licence: `Copyright © 2026 Radoslove` — the bare `©` came straight from the
`kmc generate` template. Same slip was in the lexical model submission and is
fixed there too.

Flicks: the four letters now respond to a swipe in any direction as well as to a
longpress. Reported from a real iPad — longpress alone gives the bare letter
roughly half the time, because Keyman expects you to slide onto the popup before
releasing and the popup lands somewhere different for every key. The stock
EuroLatin keyboard misses the same way, so this is not specific to this layout;
the flick simply removes the timing from the equation.

Longpress is untouched. minKeymanVersion deliberately stays at 10.0 even though
flicks need 17+ — raising it would lock out older installs to add a feature they
would not get anyway, and they keep the longpress that 10.0 supports.

Tested on iPadOS 26 via Keyman: install, typing, capitals, both gestures.
@LornaSIL

Copy link
Copy Markdown
Contributor

Thanks for your keyboard submission. It looks to be in very good shape. There are a few things you should update:

  • go to the "On-Screen" keyboard tab (in the .kmn) and select "Auto-fill underlying layout" and then select "Fill from layout". That way users who choose to use the On-Screen keyboard will see what they should type. This is also what we would use in our online help file. More on that below.
  • In the .kmn you can select the target of "any" and unselect all the others.
  • In the touch layout, when the tablet and phone have the exact layout, just remove one of them. In this case, remove the tablet one. That makes it much easier to maintain your keyboard when you make changes. The phone layout will work on tablet, etc.
  • Any keyboard that goes into the release section is required to have an online help file. You would create a help folder within source. Add a file called isv_latin.php in that folder. You would likely want to include most of the content you have in welcome.htm but you need to use the php header and styles. (You may not need the the "data-states" since you've documented the keyboard with a table.) You can read about it here: https://help.keyman.com/developer/keyboards/phphelpfile If you need help with this, I will look at it after you submit what you think will work.

@radoslove

Copy link
Copy Markdown
Author

Thanks for the review — all four are done, plus one thing that turned up while I was in there.

On-Screen keyboard. The .kvks was an empty stub, so the OSK rendered blank and there was no way to discover that č is AltGr+C. It now carries the underlying US layout on the base and shift layers together with this keyboard's own RALT / SHIFT+RALT cells, and sets displayunderlying and usealtgr. I generate the sources rather than use the IDE (I'm on macOS), so I took the shift-state codes — "", S, RA, SRA — from existing catalogue keyboards rather than guessing; the touch-layout vocabulary doesn't carry over.

Targets. Now any.

Tablet form. Removed — it was byte-identical to phone. One caveat in the interest of being straight with you: my on-device iPad pass was run with the tablet form present, so phone-on-tablet is the documented fallback rather than something I have re-confirmed on hardware. I'll re-test on the iPad; say the word if you'd rather I confirm that before this goes in.

Online help. source/help/isv_latin.php, following the spec you linked. Most of the content is welcome.htm's, including the iOS 16+ Full Access notice, which is the single thing users most need to be told. I did keep the data-states blocks — with the .kvks now populated they render something useful, and the phone block shows the swipe layout that the table can't. Happy to take a round on this file; I'd rather you look than have me guess.

One extra you didn't ask for: HISTORY.md listed 1.0 only, while the keyboard had already reached 1.5. I've reconstructed the intermediate entries from the generator's own history and called this round 1.6, since the OSK fix is user-visible.

Everything except the .php and HISTORY.md is generated from one table by build_keyman.py, so the desktop and touch sets can't drift apart. Builds warning-clean with kmc 18.0.249 — there is one hint, that flicks want Keyman 17+, and that one is deliberate: minKeymanVersion stays at 10.0 so older installs keep longpress rather than being locked out for a purely additive feature.

@radoslove

Copy link
Copy Markdown
Author

Ready for review

…h layout

All four review points, plus a HISTORY.md that had fallen behind.

* The .kvks was an empty stub, so the OSK rendered blank. It now carries the
  underlying US layout on base and shift plus this keyboard's own RALT and
  SHIFT+RALT cells, with `displayunderlying` and `usealtgr` set.
* Online help in source/help/isv_latin.php — mostly welcome.htm's content,
  including the iOS 16+ Full Access notice.
* &TARGETS is 'any' instead of a hand-written platform list.
* The `tablet` touch form is gone; it was byte-identical to `phone`, which
  Keyman uses on tablets anyway. Not re-confirmed on hardware yet — the iPad
  pass was run with the tablet form present.
* HISTORY.md listed 1.0 only while the keyboard had reached 1.5. Entries are
  reconstructed from the generator's history, and this round is 1.6.

Everything but the .php and HISTORY.md is generated from one table by
build_keyman.py, so desktop and touch cannot drift apart. Warning-clean with
kmc 18.0.249, bar one deliberate hint: flicks want Keyman 17+, while
minKeymanVersion stays at 10.0 so older installs keep longpress.
@LornaSIL

Copy link
Copy Markdown
Contributor

I think it looks good. There is no need to bump the version each time you make a change, unless it's been distributed. But, it's fine to do it this way.
I wonder if you would want to change the description in the .kps to what you have in the readme.htm:

Tipkovnica za medžuslovjansky jezyk — standardna ortografija: č š ž ě.
Interslavic keyboard — standard orthography: č š ž ě.

If you do, I could make that change for you. The reason I suggest it, is that is the text which will show up on the keyboard home page, so it would be nice to be in the language.

Otherwise, it's fine.

@LornaSIL

Copy link
Copy Markdown
Contributor

Did you want to update the description?

radoslove pushed a commit to radoslove/keyboard-interslavic that referenced this pull request Aug 20, 2026
Answers keymanapp/keyboards#4092 (LornaSIL). The generated sources already
carried the four review changes; this adds the version bump they earn and the
HISTORY.md entries, which had stalled at 1.0 while the keyboard reached 1.5.

Intermediate entries are reconstructed from this generator's own history rather
than invented. Pushed upstream as 51f7e9e99.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants