[squeak-dev] The Inbox: Kernel-mt.1287.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Dec 13 15:30:16 UTC 2019


A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-mt.1287.mcz

==================== Summary ====================

Name: Kernel-mt.1287
Author: mt
Time: 13 December 2019, 4:30:11.846615 pm
UUID: 1e52cdbe-487d-ed47-8510-c491c1d57fca
Ancestors: Kernel-mt.1286

Proposal: Always map control characters to printable characters. This happens automatically when "duplicate (all) control and alt keys" or "swap control and alt keys" is enabled. But NOT when all of those preferences are disabled. Which can be surprising because when you type [ctrl]+[c], you expect a key value of 99 like in [cmd/alt]+[c]. ... and not 3 :-)

This is a proposal because we also would have to adapt and test:

TextEditor >> #dispatchOnKeyboardEvent:
TextEditor class >> #initializeShiftCmdKeyShortcuts
Editor class >> #specialShiftCmdKeys

=============== Diff against Kernel-mt.1286 ===============

Item was added:
+ ----- Method: EventSensor class>>installControlKeyEntryFor: (in category 'key decode table') -----
+ installControlKeyEntryFor: c
+ 	"Updates key-decode table. The table maps pairs of {character code . modifier code}. See the class comment for more information. Note that the bitmask 16r9F is used to convert control characters (ascii 0 to 31) to printable characters."
+ 
+ 	| upper lower |
+ 	upper := c asUppercase asInteger.
+ 	lower := c asLowercase asInteger.
+ 	
+ 	KeyDecodeTable at: { lower bitAnd: 16r9F . 2 "ctrl" } put: { lower . 2 "ctrl"  }.
+ 	KeyDecodeTable at: { upper bitAnd: 16r9F . 2 bitOr: 1 "ctrl+shift" } put: { upper . 2 bitOr: 1 "ctrl+shift" }.
+ !

Item was changed:
  ----- Method: EventSensor class>>installKeyDecodeTable (in category 'class initialization') -----
  installKeyDecodeTable
  	"Create a decode table that swaps some keys if 
  	Preferences swapControlAndAltKeys is set"
  	KeyDecodeTable := Dictionary new.
+ 	
+ 	"In any case, translate all control characters to printable characters."
+ 	64 +1 "because 0 is special, see UTF32InputInterpreter"
+ 		to: 95 -2 "except for our mouse-wheel up/down hack"
+ 		do: [:keyCode | self installControlKeyEntryFor: keyCode asCharacter].
+ 
  	Preferences duplicateControlAndAltKeys 
  		ifTrue: [ self defaultCrossPlatformKeys do:
  				[ :c | self installDuplicateKeyEntryFor: c ] ].
  	Preferences swapControlAndAltKeys 
  		ifTrue: [ self defaultCrossPlatformKeys do:
  				[ :c | self installSwappedKeyEntryFor: c ] ].
  	Preferences duplicateAllControlAndAltKeys
  		ifTrue: [ (Character allByteCharacters select: [:ea | ea isAlphaNumeric]) do:
  				[ :c | self installDuplicateKeyEntryFor: c ] ].
  !



More information about the Squeak-dev mailing list