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.