Hi Nick,

quick update on my issue.

After more tests, I found out the problem wasn’t specifically related to XRDP, but to *any RDP session started while **_Caps Lock_**is already enabled on the client machine*.

If I start the RDP session with Caps Lock ON, Guacamole ends up sending an extra Shift internally.
As a result:

 *

   |CTRL + C| becomes |CTRL + SHIFT + C|

 *

   |CTRL + S| becomes |CTRL + SHIFT + S|

 *

   and so on…

But if the RDP session is already running and I toggle Caps Lock /inside/ the session, then everything works perfectly. So the keyboard state only gets out of sync *at session start*.

I found this (old) issue that seems related: https://issues.apache.org/jira/browse/GUACAMOLE-518


Seems that guacamole doesn’t synchronize the initial state of lock keys (Caps/Num) when the session begins. If Caps Lock is active before connecting, the backend assumes it’s off and compensates by injecting Shift.


Any ideas for this?


Thanks in advance.

Steph.


Il 10/11/25 17:09, steph01 ha scritto:

Hi Nick,

I’m using *Guacamole 1.5.5*.

About contributing — yes, I’d like to! I’ve submitted a couple of small fixes in the past, nothing major yet. To clarify: I haven’t completely rewritten the frontend — I’m using the *Guacamole JavaScript libraries* and integrating them into an existing *React* project. Though, by now, I’ve gotten fairly familiar with how the client side of Guacamole works.
Unfortunately, I’m not really familiar with the ongoing Angular rewrite.

Thanks for mentioning the Ctrl–Alt–Shift case — in my setup those shortcuts aren’t used, so it’s probably something else.

Do you think there could be a workaround for this kind of stuck key state?
I was thinking about something like *detaching and reattaching the keyboard session programmatically*, since reconnecting the whole session seems to reset everything correctly — though that feels a bit hacky.

Any ideas or safer approaches you’d suggest?

Thanks again!
— Steph


Il 10/11/25 15:55, Nick Couchman ha scritto:
On Mon, Nov 10, 2025 at 8:37 AM steph01 <[email protected]> wrote:

    **

    Hi everyone,

    I’m running both *guacamole-server* and *guacamole-client* on my
    own implementation of Guacamole — I’ve rewritten the frontend in
    *React*, following the logic and specs from the original Angular
    code.


What version of Guacamole have you based your React re-write on? (Also, have you considered contributing this code to the community? There's a rewrite in progress from AngularJS to Angular, but it's possible others would be interested in a React version of it...)

    I’m running into a strange issue that seems to happen *only on
    XRDP sessions to Linux machines* (I haven’t seen it on Windows).
    Basically, it looks like the *Shift key stays “stuck”* in the
    backend after some time.

    For example:

     *

        When I press *CTRL+C*, Guacamole sends *CTRL+SHIFT+C* instead
        (in NetBeans, this triggers “comment block” instead of copy).

     *

        *CTRL+S* becomes *CTRL+SHIFT+S* (“Save As”).

The only similar thing that I've seen, and I believe is limited to xrdp, is that, depending on the sequence in which I press the keys to activate the "hidden" Guacamole menu - Ctrl-Alt-Shift or Ctrl-Shift-Alt - one of the keys gets stuck. I don't think it's the Shift key, I think it's either Ctrl or Alt, but It sounds like it could be related to what you're seeing. Other than that, I'm not seeing the Shift key get stuck in the way you're reporting.

-Nick

Reply via email to