chore(linux): remove no longer needed lintian overrides 🍒🏠
It looks like we no longer need these lintian overrides: - package-contains-documentation-outside-usr-share-doc got resolved by excluding these directories from our source package - the other one was a false positive that looks like it got fixed in Debian
Cherry-pick-of: #14810
This was flagged years ago as a potential performance hotspot: each
locale is loaded at process start for any kmcomapi-involved process,
which takes quite a long time. This refactor moves the locale
enumeration out of kmcomapi and into the build process, so we have a
static list of locales put into locale/index.xml.
This includes a minor breaking change to Keyman Engine API on Windows:
`MessageFromID(id, locale)` now only allows the three ids
SKUILanguageName, SKUILanguageNameWithEnglish, and SKLanguageCode, for
performance reasons. At this point, only SKUILanguageNameWithEnglish is
actually used anywhere in Keyman, and it is unlikely that any other
consumers are requesting alternate IDs.
Fixes: #14787
Build-bot: skip release:windows
Change Keyman shortcuts to standard Windows shortcuts, rather than
advertised shortcuts, to work around a problem with advertised shortcuts,
elevated custom actions, and non-admin users, as described in #14791.
The problem is related to advertised shortcuts in Windows Installer. When
you have an advertised shortcut, the first use of the shortcut triggers a
repair to prepare the app for use in the new user's context. And now, with
Aug 2025 Windows security patch KB5063878, tweaked in Sep 2025, this
triggers an elevation dialog, which the non-admin user cannot work around.
This means that the shortcuts will be regular Windows shortcut files rather
than advertised shortcuts, and are added to
`%ProgramData%\Microsoft\Windows\Start Menu\Programs\Keyman for Windows`
(so, available for all users on that machine, but will not follow a user
across machines).
* DISABLEADVTSHORTCUTS: https://learn.microsoft.com/en-us/windows/win32/msi/disableadvtshortcuts
* Shortcut advertisement: https://learn.microsoft.com/en-us/windows/win32/msi/advertisement
Relates-to: #14809Fixes: #14791
Cherry-pick-of: #14814
Build-bot: skip release:windows
It looks like we no longer need these lintian overrides:
- `package-contains-documentation-outside-usr-share-doc` got resolved
by excluding these directories from our source package
- the other one was a false positive that looks like it got fixed in
Debian
Cherry-pick-of: #14810
Test-bot: skip
With this change we wait two seconds after creating the PR before trying
to get the number of the PR so that GitHub can catch up. Previously
recently it wasn't able to get the PR#.
Also adjust the commit message and use the new header for skipping tests.
Cherry-pick-of: #13890
Build-bot: skip
Test-bot: skip
The original `$KEYMAN_VERSION` variable was cherry-picked from 19.0, but
we should have been using `$VERSION` for the 18.0 code.
Fixes: #14778
Follows: #14614
Test-bot: skip
Build-bot: skip
`onboard-keyman` isn't available on Debian/Ubuntu and doesn't work properly with Wayland. This change removes the `onboard-keyman` recommends which used to cause `onboard-keyman` to be installed automatically together with `keyman`. The user can still manually install `onboard-keyman`.
Fixes: #14769Fixes: #5214
Cherry-pick-of: #14772
`onboard-keyman` isn't available on Debian/Ubuntu and doesn't work
properly with Wayland. This change removes the `onboard-keyman`
recommends which used to cause `onboard-keyman` to be installed
automatically together with `keyman`. The user can still manually install
`onboard-keyman`.
Fixes: #14769Fixes: #5214
Cherry-pick-of: #14772
Build-bot: skip
Test-bot: skip
Fixes: #14748
Fixes: KEYMAN-LINUX-8Q
Cherry-pick-of: #14760
# User Testing
**TEST_INSTALL**: open `km-config` and install a keyboard. Verify that
the keyboard gets added to the list of installed keyboards in `km-config`
as well as to the languages dropdown in the taskbar.
Some keyboards seem to be missing the `keyboards` section in the `kmp.json` file. This change prevents a crash and instead returns `None` and thus we don't create a .ldml file and so onboard will show the default keyboard instead. The alternative would be to create an empty .ldml file, but that causes onboard to show a keyboard with all key caps being empty.
Cherry-pick-of: #14708Fixes: #14707
Fixes: KEYMAN-LINUX-8P
When loading package files generated by kmc or edited on non-Windows
systems, the Package Editor will now convert any forward slashes in the
path to backslashes. This is necessary because the path manipulation
functions in Keyman Developer work only with backslashes.
Fixes: #14719
Build-bot: skip release:developer
Cherry-pick-of: #14721
Some keyboards seem to be missing the `keyboards` section in the
`kmp.json` file. This change prevents a crash and instead returns `None`
and thus we don't create a .ldml file and so onboard will show the
default keyboard instead. The alternative would be to create an empty
.ldml file, but that causes onboard to show a keyboard with all key caps
being empty.
Cherry-pick-of: #14708Fixes: #14707
Fixes: KEYMAN-LINUX-8P
Test-bot: skip
PR #13860 fixed a similar error by adding a check for NaN. However, it missed doing it for `layoutWidth` and only changed `layoutHeight`. This PR adds a similar check to `layoutWidth` and `internalHeight` and will thus fix the error we're still seeing in Sentry.
Also add unit tests for all three methods.
Fixes: #14108
Fixes: [KEYMAN-WEB-RA](https://keyman.sentry.io/issues/6579536471/?referrer=github_integration)
Cherry-pick-of: #14684
PR #13860 fixed a similar error by adding a check for NaN. However, it
missed doing it for `layoutWidth` and only changed `layoutHeight`. This
PR adds a similar check to `layoutWidth` and will thus fix the error
we're still seeing in Sentry.
The same error could potentially happen in `internalHeight`, so we
add the check for NaN there as well. Addresses code review comments.
Also add unit tests for all three methods.
# User Testing
TEST_INUKTITUT_KEYBOARD: Using Keyman for Android, install the
`inuktitut_pirurvik` and verify that no error notifications appear.
Fixes: #14108
Fixes: [KEYMAN-WEB-RA](https://keyman.sentry.io/issues/6579536471/?referrer=github_integration)
Cherry-pick-of: #14684