Miscelaneous improvements and fixes#18
Conversation
lkc-rc
commented
Oct 21, 2025
- Fix an issue where the compositor wasn't actually minimizing redraws
- Add support for Qt > 6.7
- refactor keyboard handling code in its own class
- fix a few minor keyboard handling issues
- Add two strategies to enable interoperability with qtwebengine using keyboard layouts other than US qwerty
|
This
|
|
Okay so:
|
|
For 1 (runtime option), that could take the form of two different keyboard handling classes. When I've seen the changes that were moving the keyboard handling to its own class, I though that |
|
That indeed sounds way better, I just wasn't able to make that happen with my limited knowledge of qt platform plugins. We just need to make sure that Also, there is no need for a second Do you, by any chance, have additional documentation on |
Nope, but you can look at the code or if you set |
0fd2bad to
7adfd4c
Compare
|
Would be nice if you could rebase your PR on master, I've added CI checks on the repo so that we can test builds with Qt 5 and 6. |
Native windows machines generate a stream of keydown events when a key is held down, including modifiers. This led to modifiers in xkb_state being stuck in spurious states. This commit disables the update of xkb's state on subsequent occurences of a key down event, as recommended by https://xkbcommon.org/doc/current/md_doc_2quick-guide.html
This line was incorrect given the type declared previously, and the default behavior seems correct compared to an actual french windows observed in the wild.
Also factorize code to send full refresh to the connected peer.
Caching was done on a stall variable not used anymore instead of using the actual region updated by Qt.
Our compositor fix was a bit too overzealous and we ended up trimming even update that should have been full
When confronted with an unknown platform like qfreerdp, qtwebengine falls back to assuming that all inputs are generated by a US qwerty keyboard. In order to be able to use web apps that rely on DOM (key) .code (supposed to represent the physical location of the keys on the keyboard, not affected by any layout setting), we transform the Qt::Key sent along each QKeyEvent as if sent by a US keyboard. Given that qtwebengine seems to rely on the `text` attribute to generate DOM .key event attributes, this workaround should not affect text entry with different layouts. https://github.com/qt/qtwebengine/blob/603a1809481eb4d4ca972f0f64915d29fb99f53b/src/core/web_event_factory.cpp#L1641
QFreeRdpPeer was starting to get a bit too crowded, especially with all the conversion tables. Keyboard handling fits well as its own unit, and will make writing unit tests for it later easier. This was also the occasion to review the code and upgrade some call to libxkbcommon to a more modern API.
Only supported for Qt > 6.6.
The original name was just cruel to users.
Also modernize modifiers xkb state handling code.
This will improve keyboard support on qt webengine apps.
Introduces a new platform name: "freerdp_xcb", and does not conflict with the actual installed xcb plugin anymore.
Rev your scrollwheels!
7adfd4c to
44359af
Compare