This may not be a guacamole vnc issue, it maybe the debian keyboard mapping
inside the Debian OS, I ran across this issue years ago with early development
on xrdp. Once I am back home I will post my solution fix , it may help. Sent
by Android Ai hijacked INS communications 6G
-------- Original message --------From: Yves Auffret <[email protected]> Date:
11/13/22 7:40 AM (GMT-08:00) To: [email protected], Michael Jumper
<[email protected]> Subject: Re: Guacamole & special characters issue Hi
Mike,First of all, I would like to thank you for the very detailed messages and
for your help which is much appreciated.Here are the results of my tests and a
possible workaround.All my tests were done on a PC with a French PC keyboard
(AZERTY) and on a Mac with the official French Mac keyboard (AZERTY).On the
Guacamole login web page in the username field I can enter all the special
characters: { } and | . Everything works perfectly in this field whether on PC
or Mac.But when I am connected to the LXDE desktop via Guacamole (VNC mode)
here are my results:On a Mac with a French Mac keyboard:With the command: xev
-event keyboardWhen I press Alt_L + Shift_L + L which is the combination for
the |. We can see the event in xev but this key combination does not work in
applications with LXDE, nothing is displayed.KeyPress event, serial 40,
synthetic NO, window 0x2800001, root 0x394, subw 0x0, time 82378885,
(212,195), root:(256,286), state 0x10, keycode 64 (keysym 0xffe9, Alt_L),
same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0
bytes: XFilterEvent returns: FalseKeyPress event, serial 40, synthetic NO,
window 0x2800001, root 0x394, subw 0x0, time 82382500, (210,193),
root:(254,284), state 0x18, keycode 50 (keysym 0xffe1, Shift_L), same_screen
YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes:
XFilterEvent returns: FalseKeyPress event, serial 40, synthetic NO, window
0x2800001, root 0x394, subw 0x0, time 82384698, (210,193), root:(254,284),
state 0x19, keycode 51 (keysym 0x7c, bar), same_screen YES, XLookupString
gives 1 bytes: (7c) "|" XmbLookupString gives 1 bytes: (7c) "|"
XFilterEvent returns: FalseKeyRelease event, serial 40, synthetic NO, window
0x2800001, root 0x394, subw 0x0, time 82384787, (210,193), root:(254,284),
state 0x19, keycode 51 (keysym 0x7c, bar), same_screen YES, XLookupString
gives 1 bytes: (7c) "|" XFilterEvent returns: FalseWith a PC and a French PC
keyboard and the key combination AltGr + 6 (which includes – (minus) and |
(pipe symbol)).Sometimes it works but more often it doesn't.(from
altgr.txt)…KeyPress event, serial 28, synthetic NO, window 0x1200001, root
0x394, subw 0x1200002, time 570310, (36,51), root:(140,121), state 0x84,
keycode 94 (keysym 0x7c, bar), same_screen YES, XKeysymToKeycode returns
keycode: 51 XLookupString gives 1 bytes: (1c) "" XmbLookupString gives 1
bytes: (1c) "" XFilterEvent returns: FalseKeyRelease event, serial 28,
synthetic NO, window 0x1200001, root 0x394, subw 0x1200002, time 570410,
(36,51), root:(140,121), state 0x84, keycode 94 (keysym 0x7c, bar),
same_screen YES, XKeysymToKeycode returns keycode: 51 XLookupString gives
1 bytes: (1c) "" XFilterEvent returns: False…With a PC and a French PC
keyboard and the key combination Ctrl_L + Alt_L + 6 (which includes – (minus)
and | (pipe symbol)).This key combination works fine, I get the |
Everytime.(From ctrlalftleft.txt)…KeyPress event, serial 28, synthetic NO,
window 0x1200001, root 0x394, subw 0x0, time 667274, (108.77),
root:(212.147), state 0x1, keycode 51 (keysym 0x7c, bar), same_screen YES,
XLookupString gives 1 bytes: (7c) "|" XmbLookupString gives 1 bytes: (7c)
"|" XFilterEvent returns: False…I managed to make it work on PC and Mac but
using these key combinations:
PC with French
PC keyboard
Normal use
With
Guacamole (VNC) and LXDE
{
ALTGr + { or CTRL + ALT + {
CTRL + ALT + {
}
ALTGr + } or CTRL + ALT + }
CTRL + ALT + }
[
ALTGr + [ or CTRL + ALT + [
CTRL + ALT + [
]
ALTGr + ] or CTRL + ALT + ]
CTRL + ALT + ]
|
ALTGr + | or CTRL + ALT + |
CTRL + ALT + |
Mac with French
Mac keyboard
Normal use
With
Guacamole (VNC) and LXDE
{
ALT + (
ALT Right + (
}
ALT + )
ALT Right + )
[
ALT + SHIFT + (
ALT Right + SHIFT + (
]
ALT + SHIFT + )
ALT Right + SHIFT + )
|
ALT + SHIFT + L
ALT Right + SHIFT + L
This is good news but I don't know where the malfunction comes from with the
other key combinations.Regards,YALe 13 novembre 2022 à 07:58:21, Michael Jumper
([email protected]) a écrit: On Sat, Nov 12, 2022 at 12:22 PM Yves Auffret
<[email protected]> wrote:At the moment, I don't know where the bug
is.Sometimes it works, but most of the time it doesn't.Most often it works when
I type several characters before the pipe symbol or the curly brackets.When it
doesn't work, I have to release all the keys, wait a bit and try again, and
sometimes by some miracle it works.It's like LXDE (or Guacamole) can't quite
figure out the key combination.Try installing the "xev" tool (which logs X11
events, including keypresses), run it within a terminal in the VNC session, and
see what is reported when keys are behaving as expected vs. not.If you're
seeing correct behavior in the keyboard tester at
https://guacamole.apache.org/pub/tests/guac/keyboard-test.html, then it's
unlikely that there's an issue with Guacamole's keyboard handling. The keysyms
that you see there would be passed exactly as-is to the VNC server. Something
as fundamental as the ability to type "{}" or "|" on a French keyboard would
also likely have been
noticed:https://guacamole.apache.org/faq/#probably-not-a-bugIt's not impossible
that there is some modifier state getting stuck through some
difficult-to-replicate sequence of events, but the fact that you're seeing
incorrect behavior immediately suggests that is not the case. There is also
next to zero additional key event processing in the case of VNC - unlike RDP,
we can just send the events straight through untouched.How is the combination
of CTRL+ALT+SHIFT handled in Guacamole, doesn't this event handle side
effects?The keys Ctrl, Alt, and Shift are sent immediately upon being pressed.
For Ctrl+Alt+Shift, when the third key in that sequence is pressed, the
Guacamole withholds *that* event and automatically sends release events for the
two that were pressed. For example:1. Press Ctrl (Guacamole sends press event
for Ctrl)2. Press Alt (Guacamole sends press event for Alt)3. Press Shift
(Guacamole sends release events for Ctrl and Alt, and opens the menu)or:1.
Press Shift (Guacamole sends press event for Shift)2. Press Ctrl (Guacamole
sends press event for Ctrl)3. Press Alt (Guacamole sends release events for
Shift and Ctrl, and opens the menu)etc.Guacamole will also automatically
release ALL keys that it knows you have pressed once the browser window loses
focus (since Guacamole will no longer be able to know whether you have released
those keys).- Mike