Skip to content

Conversation

@keyman-server
Copy link
Collaborator

Test-bot: skip
Build-bot: build

mcdurdin and others added 30 commits October 8, 2025 14:32
…ssed

When a European layout is active, and the user presses AltGr, Windows
generates a simulated VK_LCONTROL event alongside the VK_RMENU event.
This was causing the OSK to show LCtrl as depressed alongside RAlt, so
the OSK would show the wrong modifier layer, which was unhelpful and
confusing to the end user.

It is possible to detect the simulated VK_LCONTROL in the WH_KEYBOARD_LL
hook, because the scan code generated is 0x21D, instead of 0x1D.
Warning: this is not a documented value. (But, this 0x21D scan code is
not passed to the WM_KEYDOWN event!) Therefore, we use Keyman's existing
kmnLowLevelKeyboardProc to pass modifier key events on to the visual
keyboard.

This patch handles only this specific scenario, by watching for that
specific scan code in the new handler in the UfrmOSKOnScreenKeyboard
module, together with some minor refactoring so that it fits neatly.

A future improvement would be to have all modifier key processing go
through this new handler, and eliminate the timer-based polling of the
keyboard. However, there is some additional risk around missing events,
leading to 'stuck modifiers'.

Fixes: #14890
Build-bot: skip release:windows
I think this change avoids the misunderstanding that deleting the rightmost ("last") key on the row will delete the entire row.
docs(developer): Update keyboard-editor.md to clarify when entire row will be deleted
Test-bot: skip
Build-bot: skip
auto: increment master version to 19.0.138
addresses issue with Bengali text

Fixes: #14160
fix(android): Update Sample1 text field to resize
Test-bot: skip
Build-bot: skip
auto: increment master version to 19.0.139
Co-authored-by: rc-swag <58423624+rc-swag@users.noreply.github.com>
…on-osk

fix(windows): osk: handle simulated left Control event when AltGr pressed
Test-bot: skip
Build-bot: skip
auto: increment master version to 19.0.140
When running `km-package-install` with `sudo`, cache files owned by
root get created in the users directory. This makes it harder to
replace, and if the user tries to install the keyboard again under his
user account, installation will fail. This change prevents the use
of the cache when running with `sudo`.

Test-bot: skip
Installing into the shared area (`/usr/local/share`) requires `root`
permissions, so in order to install into the shared area the user has
to call `km-package-install` with `sudo`. But we also want to add the
keyboard to the user's list of available keyboards so that he can
switch to it. That needs to be done in the user context. However,
when `sudo` ran the command in the user context, the environment
variables to connect to the user's session dbus were not set.

This change fixes this by passing `DBUS_SESSION_BUS_ADDRESS` along
with the `sudo -u <user>` call. Since `root` doesn't have this variable
set (or at least not pointing to the user's dbus), we construct the
dbus address based on the user's uid.

On newer Ubuntu versions (>=25.04) we also have to set `XDG_RUNTIME_DIR`,
at least when running the autopkgtests.

Fixes: #14911
This change adds tests that execute km-package-install,
km-package-list-installed, and km-package-uninstall and verifies the
results. We have two sets of tests, for both gnome-shell and
ibus-proper environments.

Test-bot: skip
Our oldest supported Ubuntu version is 22.04 which comes with Python 3.10,
so we can remove the code for Python 3.7.

Test-bot: skip
fix(mac): add Microsoft Word to non-compliant app list
Build-bot: skip
Test-bot: skip
…story-to-alpha

auto: cherry-pick 18.0.243 history to alpha
Make the float UI KeymanWeb link point to the home for KeymanWeb, and
https rather than http, and update the helpURL documentation to match
the current endpoint.

Test-bot: skip
Build-bot: skip
Also improve detection when running with root permissions.

Fixes: #14943
Test-bot: skip
This improves two scenarios when running `keyman-config/build.sh install`:
- on newer Ubuntu versions it's no longer possible to directly install
  Python packages, so we have to use a virtual environment. This change
  detects a virtual environment and installs into that.
- detect if we're running directly as `root` user instead of `sudo`
  and explicitly install into `/usr/local`.

Test-bot: skip
test(developer): add test to kmc-analyze for Warn_PreviousMapFileCouldNotBeLoaded
@keymanapp-test-bot
Copy link

keymanapp-test-bot bot commented Oct 24, 2025

User Test Results

Test specification and instructions

User tests are not required

@keymanapp-test-bot keymanapp-test-bot bot changed the title auto: A19S14 merge master into ng-compiler auto: A19S14 merge master into ng-compiler 🤔 Oct 24, 2025
@keymanapp-test-bot keymanapp-test-bot bot added this to the A19S14 milestone Oct 24, 2025
@keyman-server keyman-server merged commit f6df0d9 into epic/ng-compiler Oct 24, 2025
26 checks passed
@keyman-server keyman-server deleted the chore/A19S14-merge-master-into-ng-compiler branch October 24, 2025 12:30
@github-project-automation github-project-automation bot moved this from Todo to Done in Keyman Oct 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

8 participants