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

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Jan 6 13:12:53 UTC 2020


Le lun. 6 janv. 2020 à 14:12, Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> a écrit :

> I do not see any handler for keyDown events, so I think that image is just
> handling regular keyStroke events...
> I hav a franch keyboard, so maybe there is some device specific behavior?
>
and big fingers...


> Le lun. 6 janv. 2020 à 12:01, Marcel Taeumel <marcel.taeumel at hpi.de> a
> écrit :
>
>> 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:.
>>
>> Best,
>> Marcel
>>
>> Am 06.01.2020 11:56:53 schrieb Nicolas Cellier <
>> nicolas.cellier.aka.nice at gmail.com>:
>>
>> 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/7c2c54b2/attachment.html>


More information about the Squeak-dev mailing list