'From etoys4.0 of 9 October 2008 [latest update: #2192] on 8 December 2008 at 9:52:01 pm'! "Change Set: jaInputDec8-yo Date: 8 December 2008 Author: Yoshiki Ohshima Make Anthy based Japanese input work."! !UnixUTF8JPInputInterpreter methodsFor: 'as yet unclassified' stamp: 'yo 12/8/2008 21:48'! nextCharFrom: sensor firstEvt: evtBuf | firstChar aCollection bytes peekEvent keyValue type stream multiChar evt | keyValue _ evtBuf third. evtBuf fourth = EventKeyChar ifTrue: [type _ #keystroke]. peekEvent _ sensor peekEvent. (peekEvent notNil and: [peekEvent fourth = EventKeyDown]) ifTrue: [ sensor nextEvent. peekEvent _ sensor peekEvent]. (type == #keystroke and: [peekEvent notNil and: [peekEvent first = EventTypeKeyboard and: [peekEvent fourth = EventKeyChar]]]) ifTrue: [ firstChar _ keyValue asCharacter. aCollection _ OrderedCollection with: firstChar.. bytes _ (keyValue <= 127) ifTrue: [ 0 ] ifFalse: [ (keyValue bitAnd: 16rE0) = 192 ifTrue: [ 1 ] ifFalse: [ (keyValue bitAnd: 16rF0) = 224 ifTrue: [ 2 ] ifFalse: [ 3 ] ] ]. [bytes > 0] whileTrue: [ (evt := sensor nextEvent) fourth = EventKeyChar ifTrue: [ bytes := bytes - 1. aCollection add: (Character value: evt third)]]. "aCollection do: [ :each | Transcript show: (each asciiValue hex , ' ')]. Transcript show: Character cr." stream _ ReadStream on: (String withAll: aCollection). multiChar _ converter nextFromStream: stream. multiChar isOctetCharacter ifFalse: [ sensor nextEvent ]. ^ multiChar]. ^ keyValue asCharacter! !