You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@guacamole.apache.org by "Adam (Jira)" <ji...@apache.org> on 2026/04/01 21:37:00 UTC
[jira] [Created] (GUACAMOLE-2252) AltGr key combinations fail in RDP sessions - release_simulated_altgr prematurely strips Ctrl+Alt scancodes
Adam created GUACAMOLE-2252:
-------------------------------
Summary: AltGr key combinations fail in RDP sessions - release_simulated_altgr prematurely strips Ctrl+Alt scancodes
Key: GUACAMOLE-2252
URL: https://issues.apache.org/jira/browse/GUACAMOLE-2252
Project: Guacamole
Issue Type: Bug
Components: guacamole-common-js
Affects Versions: 1.5.5, 1.6.1 [staging]
Environment: Client OS: Windows 10/11 (Chrome, Edge, Firefox)
Target OS: Windows Server 2016–2025
Reporter: Adam
h3. Problem
AltGr+key combinations produce nothing or the wrong character in RDP sessions when connecting from a Windows host with any AltGr-dependent keyboard layout.
On Windows, the browser sends a synthetic Left Ctrl keydown before the AltGraph keydown. The {{release_simulated_altgr}} function in {{Keyboard.js}} checks whether Ctrl+Alt are pressed and, for printable keysyms, releases them. However, it does not check whether AltGr (0xFE03) or Right Alt (0xFFEA) is genuinely held in {{{}guac_keyboard.pressed{}}}. This causes Ctrl+Alt to be released even when AltGr is active.
Windows RDP targets require both Ctrl and Alt scancodes to remain active for AltGr character resolution. When they are prematurely released, the target receives only the base scancode without the AltGr modifier, producing the wrong character or nothing at all.
h3. Reproduction
# Connect to a Windows RDP target from a Windows host
# Set keyboard layout to Italian (it-it-qwerty)
# Open Notepad
# Press AltGr+ò (should produce @)
*Result: nothing is typed, or the base character ò appears*
h3. Affected Layouts
Any layout using AltGr for tertiary characters: Italian, French AZERTY, Danish, Swiss German, Czech, German, Spanish, Portuguese, and others.
h3. Proposed Fix
Add a guard in {{release_simulated_altgr}} to return early if {{guac_keyboard.pressed[0xFE03]}} (ISO Level 3 Shift / AltGr) or {{guac_keyboard.pressed[0xFFEA]}} (Right Alt) is truthy. When AltGr is genuinely held, Ctrl+Alt must remain pressed for correct character resolution on the target.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)