I changed this method to see better what happens: HandMorph class>>showDebugEvent: evt
ShowEvents == true ifTrue: [ | ofs| Display fill: (0@0 extent: 500@120) rule: Form over fillColor: Color white. ofs := (owner hands indexOf: self) - 1 * 60. evt printString displayAt: (0@ofs) + (evt isKeyboard ifTrue: [0@30] ifFalse: [0@0]). self keyboardFocus printString displayAt: (0@ofs)+(0@45). evt isKeyboard ifTrue: [ Transcript show: evt printString;cr ] ]. KeyboardEvent>> printOn: aStream "Print the receiver on a stream" aStream nextPut: $[. aStream nextPutAll: type; nextPutAll: ' '''. self printKeyStringOn: aStream. aStream nextPut: $'. aStream space; nextPutAll: 'keyValue: ', self keyValue asString. aStream nextPut: $] set HandMorph showEvents:true Now, pressing single space, gives me this: [keyDown ' ' keyValue: 49] [keystroke ' ' keyValue: 32] [keyUp ' ' keyValue: 49] [keyUp ' ' keyValue: 49] Pressing delete key (or fn-backspace , for those who having a lot of spare fingers to use bad keyboards): [keyDown ' ' keyValue: 117] [keystroke '⌦' keyValue: 188] [keyUp ' ' keyValue: 117] [keyUp ' ' keyValue: 117] now, can someone tell me , why there is 2 keyUp events for each keyDown? and of course, main question is why key values are different for keydown and keystroke events? (and why delete key is not 127, but 117 or 188?) Editor expecting 127: cmdMap at: (127 + 1) put: #forwardDelete:. "del key" -- Best regards, Igor Stasenko.