See #396, #454, and #42. Maybe also #43.

I investigated the differences in the low-level event array sent by the VM to the image for relevant CTRL-key combinations.

For key-character events, that array is structured as follows:

{
   2 "type for keyboard event"
   293847 "timestamp"
   ... "character code ASCII"
   0 "key character, not key down or key up"
   2 "ctrl key as modifier pressed only"
   ... "character code as Unicode"
   0 "reserved"
   1 "host window number 1"
}

So, please focus on those character codes.


Windows 10 (Version 1909)
cog.spur 201911282316
Squeak 5.3beta 19276
Image format 6521 (32 bit)

mouse wheel up
#(2 91706953 30 0 2 0 0 1)
mouse wheel down
#(2 91731109 31 0 2 0 0 1)

ctrl + up
#(2 91746671 30 0 2 30 0 1)
ctrl + down
#(2 91778531 31 0 2 31 0 1)

ctrl + c
#(2 91802453 3 0 2 3 0 1)

Result: Our mouse-wheel hack does not set the Unicode character. Only the ASCII character.


Debian 10 (Gnome, X11)
cog.spur 201911282316
Squeak 5.3beta 19276
Image format 68021 (64 bit)

mouse wheel up
#(2 109872 30 0 15 30 0 1)
mouse wheel down
#(2 109923 31 0 15 31 0 1)

ctrl + up
#(2 212175 30 0 2 30 0 1)
ctrl + down
#(2 249663 31 0 2 31 0 1)

ctrl + c
#(2 184765 99 0 2 99 0 1)

Result: Our mouse-wheel hack raises all modifier keys as pressed. Not just the CTRL key. Also, the ASCII control characters are not considered. See https://en.wikipedia.org/wiki/Control_character.


macOS Sierra (10.12.6)
cog.spur 201911282316
Squeak 5.3beta 19276
Image format 68021 (64 bit)

mouse wheel up
#(2 57855 30 0 15 30 0 1)
mouse wheel down
#(2 84690 31 0 15 31 0 1)

ctrl + up
#(2 290999 30 0 2 30 0 1)
ctrl + down
#(2 322197 31 0 2 31 0 1)

ctrl + c
#(2 337191 3 0 2 3 0 1)

Result: Our mouse-wheel hack raises all modifier keys as pressed. Not just the CTRL key.


Implications for the image side: We cannot consistently (or easily or without magic) duplicate or swap or unpack character codes via KeyDecodeTable in EventSensor >> #processEvent: because:


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.