Part of Script factory. scriptfactory@mac.com .
Dialog Directorで作ったText Fieldに日本語を入力するには、いろいろ問題がある事が解った。 当然Text Fieldにinline入力など期待できるはずもないが、そんなこと問題にならないくらいの大問題がある事に気付いた。まともに日本語を入力できないCaseが多々あるのだ。Dialog Directorとの付き合いは長いのに、日本語を入力する事はあんまりしなかったせいか、ついこの間まで気付かなかった。。。お恥ずかしい。。こんだけDialog DirectorのScriptを作りまくっておきながらね。。。
Dialog DirectorのText Fieldにtextを入力する時、変換windowで確定し、Text Fieldに文字が流し込まれる際にCodeの一部がかけてしまうという事が良く起きるのに気付いた。別に2byte characterに限った話ではないようだ。半角英数文字だけの場合でも一部の文字が欠損したりする。2byte characterの場合は更に悲惨で、どちらかの1byteだけが欠けたりするので、むちゃくちゃな文字が入力されてしまったりする。MacOSの中身を良く知っているわけではないので、何でかは良く解らない。しかし他のapplicationにtellしてDialogを開かせたりすると、単純なkey入力を取りこぼしたりするので(live dialogの場合)、所詮AppleScriptで処理しているという遅さが原因にあるのかもしれない。live dialogの場合はText Fieldに1byte入力されるたびにevent loopがまわるらしい。しかし、よくよく突き詰めてみるとそうでもないかもしれないという結果になった。
いろいろ試してみると、上記のような問題が起きるのはlive dialogを使っている場合だけである事に気付いた。auto dialogの場合は常にちゃんと入力する事が出来る。Dialog Directorについて余り詳しくない人に向けてちょっと説明すると、auto dialogと言うのはbuttonを押したらそれでおしまいと言う単純な動作をするdialogの事だ。live dialogというのは、dialogに向けてのeventに対して、例えばbuttonを押したりしたら、dynamicにdialogの中身を入れ替えたり、もう一つdialogを開いたりと、非常に凝った仕掛けを施せるdialogの事だ。かっこ良くて便利なScriptを作りたいと思ったら、どうしてもlive dialogを使いたくなる。
live dialogを使ったら日本語入力は絶望的なんだろうか。。。はい、いろいろ試しました。結論として、current application以外のapplicationのflating windowとしてdialogを開いた場合は、ちゃんと日本語入力が出来る。current applicationのfloating windowではだめなようだ。他のapplication上のfloating windowでなければならない。また一般に他のapplicationにtellしてdialogを開かせた場合、近所のクリーニング屋のおばあちゃんのようなスローモーションで動いてくれるが、そんな時でもfloating windowとして実装しておくと非常にスローモーションではあるが、ちゃんと日本語が入力する事が出来る。
というわけで、Text Fieldを持ったlive dialgoの場合は他のapplicationのfloating windowとして実装しましょうと言う事でした。
更にもう一つ、どんな場合でもきちんと日本語を入力する方法がある。それはOSA Menu内でScriptを実行する事だ。但しCompatible Modeで実行しては行けない。
というわけでと言うのも変ですが、これからもDialog Directorをバキバキ使って行きたいと思います。このOSAXがなかったら、自分はfreewareを公開していなかっただろうな。。。
1999年 4月 6日 (火) at 9:06:12 PM by TK
This page was last built on 99.12.18; 1:41:09 AM with Frontier 5. At the moment I am using Macintosh to work on this website. Thanks for checking it out!