Pharo 1.1.1 (Windows)での日本語入力(その3)

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の情報はこちら。

id:nqthm:20110403