SqueakではInputInterpreterやLanguageEnvironmentが間に入って言語やホスト環境の差異を吸収しているのね。って既に知ってたわけだけど。
Pharoはそのあたりがメソッドの中に直に書かれていて、しかもParagraphEditor>>dispatchOnKeyEvent:with:でごにょごにょ気持ち悪いこととやっていて、これも問題だ。
特に、charとkeyCharの両者が文字を保持しており、charはRAWイベントの文字を使うくせに、keyCharはscanCodeから再度文字を生成しているのが問題。
Squeak4.2のTextEditor>>dispatchOnCharacter:with:を参考にしながら、charとkeyCharを同じ文字と見なして、keyValueをその文字コードにするというコードを加えたら問題なく入力できた。
(ParagraphEditor>>dispatchOnKeyEvent:with:へのコード追加部分)
char := keyEvent keyCharacter. + keyChar := char. + keyValue := char charCode.
しばらくこのまま使ってみて、問題があったらまた考え直そう。
(追記)
Pharo 1.2.1の情報はこちら。