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)