On Linux, Qt reports the raw X11 KeyCode as QKeyEvent::nativeScanCode(), not a PC/AT set-1 scancode (what RDP expects). rdp_session_backend.cpp was treating the X11 keycode as if it were a PC/AT scancode directly. The two numbering schemes only coincidentally agree for some keys and diverge for others -- e.g. X11 keycode 0x30 is the apostrophe/quote key, while PC/AT scancode 0x30 is the B key, so pressing ' (or Shift+') sent b/B instead.
Fixed in commit 793fdd9: scancodeFromNativeScanCode() now calls FreeRDP's authoritative freerdp_keyboard_get_rdp_scancode_from_x11_keycode() table on Linux instead of doing ad hoc bit math.
On Linux, Qt reports the raw X11 KeyCode as `QKeyEvent::nativeScanCode()`, not a PC/AT set-1 scancode (what RDP expects). `rdp_session_backend.cpp` was treating the X11 keycode as if it were a PC/AT scancode directly. The two numbering schemes only coincidentally agree for some keys and diverge for others -- e.g. X11 keycode 0x30 is the apostrophe/quote key, while PC/AT scancode 0x30 is the B key, so pressing `'` (or Shift+`'`) sent `b`/`B` instead.
Fixed in commit 793fdd9: `scancodeFromNativeScanCode()` now calls FreeRDP's authoritative `freerdp_keyboard_get_rdp_scancode_from_x11_keycode()` table on Linux instead of doing ad hoc bit math.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
On Linux, Qt reports the raw X11 KeyCode as
QKeyEvent::nativeScanCode(), not a PC/AT set-1 scancode (what RDP expects).rdp_session_backend.cppwas treating the X11 keycode as if it were a PC/AT scancode directly. The two numbering schemes only coincidentally agree for some keys and diverge for others -- e.g. X11 keycode 0x30 is the apostrophe/quote key, while PC/AT scancode 0x30 is the B key, so pressing'(or Shift+') sentb/Binstead.Fixed in commit
793fdd9:scancodeFromNativeScanCode()now calls FreeRDP's authoritativefreerdp_keyboard_get_rdp_scancode_from_x11_keycode()table on Linux instead of doing ad hoc bit math.