This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
v7: winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL.
user32/tests: Add tests for SendInput with numpad scancodes.
server: Send numpad virtual keys if NumLock is active.
win32u: Store the full KBD vkey information in kbd_tables_init_vsc2vk.
win32u: Allow drivers to send only the scan code for keyboard events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601
This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
v6: winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL.
user32/tests: Add tests for SendInput with numpad scancodes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601
In update_external_font_keys(), remove the fonts from the registry
immediately after we mark them for deletion, and then proceed to add or
update values in the registry.
This prevents a font from being marked as deleted, then being updated in
the registry, and then removed from the registry regardless. When this
happened, the registry would not contain the value for this font that we
intended to update it with. This function would need to run again for
this value to be added to the registry, but since this function runs
during initialization, this means that a subsequent launch of wine was
necessary. By removing the old value from the registry first, and then
adding the new one, the initialization process becomes idempotent
starting from the first run.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5684