[squeak-dev] The Inbox: Kernel-nice.1292.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Jan 6 10:56:28 UTC 2020


Le lun. 6 janv. 2020 à 11:50, Marcel Taeumel <marcel.taeumel at hpi.de> a
écrit :

> Ha! Damn. :-) Actual ctrl/cmd dupcliation causes too much trouble in the
> current Trunk? Hmpf...
>
> But CTRL+[0-9] to trigger the world-main docking bar cannot work if
> duplication is enabled, can it?
>
> It appears to work on Windows VM

Best,
> Marcel
>
> Am 28.12.2019 22:16:01 schrieb commits at source.squeak.org <
> commits at source.squeak.org>:
> Nicolas Cellier uploaded a new version of Kernel to project The Inbox:
> http://source.squeak.org/inbox/Kernel-nice.1292.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-nice.1292
> Author: nice
> Time: 28 December 2019, 10:15:37.810563 pm
> UUID: 8cce1ea4-5e21-46f5-858f-0732cf2e33d5
> Ancestors: Kernel-nice.1291
>
> 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
> https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/460).
>
> 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 ;)
>
> One example of consequences is that cmd+7 is captured by DockingBarMorph
> as menu #7 rather than passed to theTextEditor if Preferences
> duplicateAllControlAndAltKeys.
>
> 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)...
>
> =============== Diff against Kernel-nice.1291 ===============
>
> Item was removed:
> - ----- Method: EventSensor class>>installControlKeyEntryFor: (in category
> 'key decode table') -----
> - installControlKeyEntryFor: aPrintableCharacter
> -
> - | upper lower |
> - self assert: (aPrintableCharacter asInteger between: 64 and: 95).
> -
> - upper := aPrintableCharacter asInteger.
> - lower := aPrintableCharacter asInteger bitOr: 16r20.
> -
> - "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."
> - self flag: #unixOnly.
> - KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower bitAnd: 16r9F . 2
> "ctrl" }.
> - KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl+shift" } put: { upper
> bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.!
>
> Item was changed:
> ----- Method: EventSensor class>>installDuplicateKeyEntryFor: (in category
> 'key decode table') -----
> installDuplicateKeyEntryFor: aPrintableCharacter
> + "Updates the key-decode table, which maps between pairs of {character
> code . modifier code}.
> + See the class comment for more information.
> + The purpose of this change is to let ctrl+key act like cmd+key (Mac) or
> alt+key (linux/windows).
> + It is especially usefull on windows VM where default feel is to use ctrl
> as shortcut (ctrl+C = copy, etc...).
> + 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."
> - "Updates the key-decode table, which maps between pairs of {character
> code . modifier code}. See the class comment for more information.
> - 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."
>
> | upper lower |
> upper := aPrintableCharacter asUppercase asInteger.
> lower := aPrintableCharacter asLowercase asInteger.
>
> + KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 8
> "cmd/alt" }.
> + KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl + shift" }
> put: { upper . 8 bitOr: 1 "cmd/alt + shift" }.!
> - KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 2
> bitOr: 8 "ctrl + cmd/alt" }.
> - KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl + shift" }
> put: { upper . (2 bitOr: 8) bitOr: 1 "ctrl + cmd/alt + shift" }.
> - KeyDecodeTable at: { lower . 8 "cmd/alt" } put: { lower . 8 bitOr: 2
> "cmd/alt + ctrl" }.
> - KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt + shift" } put: { upper
> . (8 bitOr: 2) bitOr: 1 "cmd/alt + ctrl + shift" }.
> -
> - "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."
> - self flag: #unixOnly.
> - KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower . 2 bitOr: 8 "ctrl
> + cmd/alt" }.
> - KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl + shift" } put: { upper .
> (2 bitOr: 8) bitOr: 1 "ctrl + cmd/alt + shift" }.!
>
> Item was changed:
> ----- Method: EventSensor class>>installKeyDecodeTable (in category 'class
> initialization') -----
> installKeyDecodeTable
> "Create a decode table that swaps or duplicates some keys if the
> respective preference is set."
>
> KeyDecodeTable := Dictionary new.
>
> - "In any case, ensure that control keys are mapped correctly."
> - self flag: #toRemove. "mt: If all VMs send the correct control keys on
> all platforms, we will remove this mapping."
> - 64 "$@" to: 95 "$_"do: [:keyCode | self installControlKeyEntryFor:
> keyCode asCharacter].
> -
> Preferences swapControlAndAltKeys
> ifTrue: [ (Character allByteCharacters select: [:ea | ea isAlphaNumeric])
> do:
> [ :c | self installSwappedKeyEntryFor: c ] ].
> Preferences duplicateAllControlAndAltKeys
> ifTrue: [ (Character allByteCharacters select: [:ea | ea isAlphaNumeric])
> do:
> [ :c | self installDuplicateKeyEntryFor: c ] ].
>
> self flag: #toDeprecate. "mt: This mapping should be deprecated in the
> future."
> Preferences duplicateControlAndAltKeys
> ifTrue: [ self defaultCrossPlatformKeys do:
> [ :c | self installDuplicateKeyEntryFor: c ] ].
> !
>
> Item was changed:
> ----- Method: EventSensor class>>installSwappedKeyEntryFor: (in category
> 'key decode table') -----
> installSwappedKeyEntryFor: aPrintableCharacter
> "Updates the key-decode table, which maps between pairs of {character code
> . modifier code}. See the class comment for more information.
> 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."
>
> | upper lower |
> upper := aPrintableCharacter asUppercase asInteger.
> lower := aPrintableCharacter asLowercase asInteger.
>
> KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 8
> "cmd/alt" }.
> KeyDecodeTable at: { lower . 8 "cmd/alt" } put: { lower bitAnd: 16r9F . 2
> "ctrl" }.
> KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" } put:
> { upper . 8 bitOr: 1 "cmd/alt+shift" }.
> + KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt+shift" } put: { upper
> bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.!
> - KeyDecodeTable at: { upper . 8 bitOr: 1 "cmd/alt+shift" } put: { upper
> bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" }.
> -
> - "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."
> - self flag: #unixOnly.
> - KeyDecodeTable at: { lower . 2 "ctrl" } put: { lower . 8 "cmd/alt" }.
> - KeyDecodeTable at: { upper . 2 bitOr: 1 "ctrl+shift" } put: { upper . 8
> bitOr: 1 "cmd/alt+shift" }.!
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200106/61206d68/attachment.html>


More information about the Squeak-dev mailing list