<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        Hi Nicolas,<div><br></div><div>you can revert those key-duplication/swapping things if you think it is better for 5.3. :-) </div><div><br></div><div><span style="font-size: 10pt">Still, I am not sure we can solve the issue of keyboard shortcuts on all platforms for 5.3 in a satisfying way right now.</span><br></div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 06.01.2020 14:17:03 schrieb Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 6 janv. 2020 à 14:12, Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I do not see any handler for keyDown events, so I think that image is just handling regular keyStroke events...</div><div>I hav a franch keyboard, so maybe there is some device specific behavior?<br></div></div></blockquote><div>and big fingers...</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 6 janv. 2020 à 12:01, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de" target="_blank">marcel.taeumel@hpi.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div id="gmail-m_2757485435347186651gmail-m_-1797574976336309333__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: rgb(0,0,0)">
                                        Just because of key-down vs. key-stroke, right? And I removed that key-down check recently because of another bug. See DockingBarMorph>>#filterEvent:For:.<div><br></div><div>Best,</div><div>Marcel</div><div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:rgb(170,170,170);margin-top:10px">Am 06.01.2020 11:56:53 schrieb Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 6 janv. 2020 à 11:50, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de" target="_blank">marcel.taeumel@hpi.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div id="gmail-m_2757485435347186651gmail-m_-1797574976336309333gmail-m_7250685957440536754__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: rgb(0,0,0)">
                                        Ha! Damn. :-) Actual ctrl/cmd dupcliation causes too much trouble in the current Trunk? Hmpf...<div><br></div><div>But CTRL+[0-9] to trigger the world-main docking bar cannot work if duplication is enabled, can it?</div><div><br></div></div></div></blockquote><div>It appears to work on Windows VM</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div id="gmail-m_2757485435347186651gmail-m_-1797574976336309333gmail-m_7250685957440536754__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: rgb(0,0,0)"><div></div><div>Best,</div><div>Marcel</div><div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:rgb(170,170,170);margin-top:10px">Am 28.12.2019 22:16:01 schrieb <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">Nicolas Cellier uploaded a new version of Kernel to project The Inbox:<br><a href="http://source.squeak.org/inbox/Kernel-nice.1292.mcz" target="_blank">http://source.squeak.org/inbox/Kernel-nice.1292.mcz</a><br><br>==================== Summary ====================<br><br>Name: Kernel-nice.1292<br>Author: nice<br>Time: 28 December 2019, 10:15:37.810563 pm<br>UUID: 8cce1ea4-5e21-46f5-858f-0732cf2e33d5<br>Ancestors: Kernel-nice.1291<br><br>Assuming that patched VM will produce ASCII control characters (code 1 to 26) again when pressing ctrl+letter, revert some of the recent keyboard event mapping changes (See <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/460" target="_blank">https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/460</a>).<br><br>Those recent changes have unexpected consequences and implications that we might better postpone post release. We should never have to say that, but it's easier to fix the VM than the image in this case ;)<br><br>One example of consequences is that cmd+7 is captured by DockingBarMorph as menu #7 rather than passed to theTextEditor if Preferences duplicateAllControlAndAltKeys.<br><br>I guess that we have this preference enabled to make windows user experience not to werid wrt native feel (ctrl+key is the shortcut of choice)...<br><br>=============== Diff against Kernel-nice.1291 ===============<br><br>Item was removed:<br>- ----- Method: EventSensor class>>installControlKeyEntryFor: (in category 'key decode table') -----<br>- installControlKeyEntryFor: aPrintableCharacter<br>-        <br>-     | upper lower |<br>-      self assert: (aPrintableCharacter asInteger between: 64 and: 95).<br>-    <br>-     upper := aPrintableCharacter asInteger.<br>-      lower := aPrintableCharacter asInteger bitOr: 16r20.<br>-         <br>-     "For Unix/Linux VMs as of version 201911282316, no control characters will be sent from the VM. Avoid check for #platformName because the extra mapping will not affect others anyway."<br>-    self flag: #unixOnly.<br>-        KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower bitAnd: 16r9F . 2 "ctrl" }.<br>-         KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl+shift" } put: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.!<br><br>Item was changed:<br>  ----- Method: EventSensor class>>installDuplicateKeyEntryFor: (in category 'key decode table') -----<br>  installDuplicateKeyEntryFor: aPrintableCharacter<br>+       "Updates the key-decode table, which maps between pairs of {character code . modifier code}.<br>+        See the class comment for more information.<br>+      The purpose of this change is to let ctrl+key act like cmd+key (Mac) or alt+key (linux/windows).<br>+     It is especially usefull on windows VM where default feel is to use ctrl as shortcut (ctrl+C = copy, etc...).<br>+        Note that the bitmask 16r9F removes the high bits, which subtracts 64 from the key code for (upper) $A to $Z and 96 for (lower) $a to $z. The VM sends non-printable control characters for [ctrl]+[A-Za-Z] in ASCII < 32,="" but="" the="" given="" character="" is="" expected="" to="" be="" ascii="">= 32 and thus printable. So we have to convert control characters to printable characters in this mapping table."<br>-        "Updates the key-decode table, which maps between pairs of {character code . modifier code}. See the class comment for more information.<br>-        Note that the bitmask 16r9F removes the high bits, which subtracts 64 from the key code for (upper) $A to $Z and 96 for (lower) $a to $z. The VM sends non-printable control characters for [ctrl]+[A-Za-Z] in ASCII < 32,="" but="" the="" given="" character="" is="" expected="" to="" be="" ascii="">= 32 and thus printable. So we have to convert printable characters to control characters in this mapping table."<br>  <br>     | upper lower |<br>       upper := aPrintableCharacter asUppercase asInteger.<br>   lower := aPrintableCharacter asLowercase asInteger.<br>   <br>+         KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 8 "cmd/alt" }.<br>+  KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl + shift" } put: { upper . 8 bitOr: 1 "cmd/alt + shift" }.!<br>-   KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 2 bitOr: 8 "ctrl + cmd/alt" }.<br>-  KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl + shift" } put: { upper . (2 bitOr: 8) bitOr: 1 "ctrl + cmd/alt + shift" }.<br>-      KeyDecodeTable at: { lower . 8 "cmd/alt" } put: { lower . 8 bitOr: 2 "cmd/alt + ctrl" }.<br>-     KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt + shift" } put: { upper . (8 bitOr: 2) bitOr: 1 "cmd/alt + ctrl + shift" }.<br>- <br>-     "For Unix/Linux VMs as of version 201911282316, no control characters will be sent from the VM. Avoid check for #platformName because the extra mapping will not affect others anyway."<br>-    self flag: #unixOnly.<br>-        KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower . 2 bitOr: 8 "ctrl + cmd/alt" }.<br>-        KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl + shift" } put: { upper . (2 bitOr: 8) bitOr: 1 "ctrl + cmd/alt + shift" }.!<br><br>Item was changed:<br>  ----- Method: EventSensor class>>installKeyDecodeTable (in category 'class initialization') -----<br>  installKeyDecodeTable<br>   "Create a decode table that swaps or duplicates some keys if the respective preference is set."<br>  <br>         KeyDecodeTable := Dictionary new.<br>  <br>-        "In any case, ensure that control keys are mapped correctly."<br>-      self flag: #toRemove. "mt: If all VMs send the correct control keys on all platforms, we will remove this mapping."<br>-        64 "$@" to: 95 "$_"do: [:keyCode | self installControlKeyEntryFor: keyCode asCharacter].<br>- <br>      Preferences swapControlAndAltKeys <br>            ifTrue: [ (Character allByteCharacters select: [:ea | ea isAlphaNumeric]) do:<br>                                 [ :c | self installSwappedKeyEntryFor: c ] ].<br>         Preferences duplicateAllControlAndAltKeys<br>             ifTrue: [ (Character allByteCharacters select: [:ea | ea isAlphaNumeric]) do:<br>                                 [ :c | self installDuplicateKeyEntryFor: c ] ].<br>  <br>   self flag: #toDeprecate. "mt: This mapping should be deprecated in the future."<br>     Preferences duplicateControlAndAltKeys <br>               ifTrue: [ self defaultCrossPlatformKeys do:<br>                           [ :c | self installDuplicateKeyEntryFor: c ] ].<br>  !<br><br>Item was changed:<br>  ----- Method: EventSensor class>>installSwappedKeyEntryFor: (in category 'key decode table') -----<br>  installSwappedKeyEntryFor: aPrintableCharacter<br>       "Updates the key-decode table, which maps between pairs of {character code . modifier code}. See the class comment for more information.<br>         Note that the bitmask 16r9F removes the high bits, which subtracts 64 from the key code for (upper) $A to $Z and 96 for (lower) $a to $z. The VM sends non-printable control characters for [ctrl]+[A-Za-Z] in ASCII < 32,="" but="" the="" given="" character="" is="" expected="" to="" be="" ascii="">= 32 and thus printable. So we have to convert printable characters to control characters in this mapping table."<br>  <br>     | upper lower |<br>       upper := aPrintableCharacter asUppercase asInteger.<br>   lower := aPrintableCharacter asLowercase asInteger.<br>   <br>      KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 8 "cmd/alt" }.<br>       KeyDecodeTable at: { lower . 8 "cmd/alt" } put: { lower bitAnd: 16r9F . 2 "ctrl" }.<br>       KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" } put: { upper . 8 bitOr: 1 "cmd/alt+shift" }.<br>+    KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt+shift" } put: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.!<br>-       KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt+shift" } put: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.<br>-        <br>-     "For Unix/Linux VMs as of version 201911282316, no control characters will be sent from the VM. Avoid check for #platformName because the extra mapping will not affect others anyway."<br>-    self flag: #unixOnly.<br>-        KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower . 8 "cmd/alt" }.<br>-    KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl+shift" } put: { upper . 8 bitOr: 1 "cmd/alt+shift" }.!<br><br><br></div></blockquote>
                                        </div></div><br>
</blockquote></div></div>
</div></blockquote>
                                        </div></div><br>
</blockquote></div>
</blockquote></div></div>
</div></blockquote>
                                        </div></body>