-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dead key inputs not working properly on Ubuntu #120
Comments
BTW, the right enter key (numeric keypad) is also not detected in Squeak under X11. The VM does not emit any event when I hit it. |
Hi all, here is a quick update of what I have tried and found out so far:
For now, I am just dropping these notes here 1) because I will have to suspend this work and resume it later and 2) because I (quite desperately) hope that someone on the list has a better understanding of these input method semantics and could share it with me or point me to some resources or best practices for handling dead keys in Linux. (/cc @marceltaeumel @dtlewis290) |
When looking at the keyboard events on X11, the /usr/bin/xev utility can be helpful. This will show you the actual X11 keyboard events before they are delivered to the VM. In the VM, the X11 events are converted to Squeak events before being delivered to the image. If your keystrokes show up in /usr/bin/xev then it's not really a dead key, but might be something this is not mapped in the VM. |
Thank you for the pointer! When I run
Notably, the first two events appear immediately, that is before I press the second key. In contrast, in Squeak no event will be received from It also seems as if the As a vague theory, the VM might be too clever and try to split up combined characters again. Or it mixes up the order of some things. I will have a look into the sources on another day. If someone can point me to a dead key-aware reference implementation, this still would be helpful. :-) |
Related, although not sure how relevant: take a look at the ImmX11 class and plugin. |
Oh, also, in SqueakJS I pass the first character to the image, and send backspace before the composed character: https://github.com/codefrau/SqueakJS/blob/main/squeak.js#L766 |
I would recommend Note keyboard code in platforms/unix/vm-display-fbdev which makes use of /dev/input/event* If you update keyboard input, it would be nice if framebuffer display worked the same. |
Ubuntu 20 or 22 (tested on both), Qwertz keyboard layout, trying to enter different characters into a Workspace using dead keys:
^
(as expected)^
, got̂
(space + U+0302 COMBINING CIRCUMFLEX ACCENT, rendered as question mark in Squeak)´
, got'
(single apostroph, depending on your editor preferences, this character might be duplicated automatically)'
, got́
(space + U+0301 COMBINING ACUTE ACCENT, rendered as question mark in Squeak)`
(as expected)'
, got̀
(space + U+0300 COMBINING GRAVE ACCENT, rendered as question mark in Squeak)When typing the "mixed dead keys" (ending in Space) into a keyboard exerciser morph, an error is raised because the combining accent keycodes are not known by
EventSensor class>>#virtualKeyTable
.The expected inputs are what most other applications such as the gnome desktop environment or Chromium on the same machine behave like.
I don't know enough about this domain to even say whether this should be fixed in the image or the VM. Probably other keyboard layouts are affected as well.
The text was updated successfully, but these errors were encountered: