Open LinqLover opened 3 years ago
Hey all, just another issue in connection with VcXsrv: On my German QWERTZ keyboard, the circumflex key (^/°
) is a dead key, i.e. I need to press space after this key in order to actually type a circumflex. This works fine for Squeak in Windows, but in VcXsrv, it doesn't ... Instead of ^
, ̂
(sic: 16r20
16r302
) will be typed. Again, gedit recognizes this key correctly, so I think this could be an issue with sqUnixX11.c
.
I recorded the following keyboard event trace when pressing "dead_circumflex , space" in Squeak/VcXsrv:
keyUp (94)
keyDown (32)
keystroke '<space>' (32)
keyDown (770)
keystroke '̂' (770)
keyUp (32)
For comparison, in Squeak on Windows, the same keyboard input looks like this:
keyDown (220)
keyUp (220)
keyDown (32)
keystroke '^' (94)
keyUp (32)
220
appears to be the dead circumflex key code, I could reproduce this in a browser. It looks as if VcXsrv does not respect this protocol but sends a single undelayed circumflex key down. Or could this be an issue with the dead_key_case
handling in sqUnixX11.c
? gedit handles this input correctly. Under Linux, who is responsible for handling dead keys? The X11 server or the X11 client?
Again, it would be great if someone else with a native Linux installation could give some feedback about the behavior with a Qwertz keyboard without VcXrvc emulation. 😅
Setup: Win 2004 + WSL (Ubuntu) + VcXsrv
When I press the right enter key (part of the numpad), only keyDown and keyUp events are recorded by the VM, but not any keystroke event. The left enter key, however, works fine, and so does the right enter key on Windows do. Using
HandMorph >> #showEvents:
, the keyUp and keyDown events look the same for both enter keys (character code 13).I don't have a real Linux machine available at the moment. Can someone tell whether the issue also exists without VcXsrv?
In general, running Squeak works fine with this setup. However, some keys are not mapped correctly. First, I thought this would be a problem of VcXsrv (and partially, this is also true), but then I recognized that gedit recognizes the right enter key correctly through VcXsrv, so this appears to be a problem of OSVM indeed.
In sqUnixX11.c, apparently EventKeyDown and EventKeyChar events are always generated together with one exception:
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/7f69e44dd9cdf5d1fe2d838e824e86f7503abe93/platforms/unix/vm-display-X11/sqUnixX11.c#L3749
So either
x2sqKey()
orxkeysym2ucs4()
must be responsible for the bug. However, I have never read these sources before, so probably, I'm completely on the wrong track ... How can I enableDEBUG_KEYBOARD_EVENTS
?Looking forward to your help, Christoph