[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] Cross-platform differences for CTRL keys (#456)

Marcel Taeumel notifications at github.com
Tue Dec 17 10:03:59 UTC 2019


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:

```Smalltalk
{
   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:

- The Linux platform does not transport control characters to the image.
- The Windows platform omits to set Unicode for mouse-wheel events.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/456
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20191217/5b92a49e/attachment-0001.html>


More information about the Vm-dev mailing list