[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