4月になってからblechmusikさんのDvorakJでフル実装のACT09とSandSを使い出して、さらにVistaマシンに乗り換えて、日々快適なキーライフ(?)を送っています。

が、原理的にDvorakJの難点は、日本語入力モード中に、英単語や略語を打とうとすると、ACT09の拡張ローマ字変換の綴りが出力されてしまうことです。もっとも、そのような単語を打つ前にIMEをOFFにすれば何ら問題はないのですが、どうしてもIME OFFの操作を忘れてしまい、結構ストレスがたまっていました。
個人的な環境、特徴かもしれませんが、日本語文章中で英単語・略語を打つ時はほとんどの場合、大文字から、あるいは大文字だけなのです。ということは、DvorakJのスクリプトちゅうで、SandSの処理に入ったところで、強制的にIMEをOFFにすればいいのでは、と思いつきました。
で、とにかくSandSの処理、つまりシフト処理のところにIME OFFのスクリプトを入れてみました。ふむふむ、これはいけそうだ。
しかし、こんどは全角のままにしておきたい?記号などが半角でしか入力できない。アルファベット以外のときはIMEをOFFにしないようにすればOKだろう。
ということで、DvorakJ.ahkをちょっといじってみました。
以下、DvorakJ.ahkの140行め付近の IfEqual, IME_Mode, 1 の行の手前に入れます。

;記号キーの場合はフラグを立てる(Dvorak配列で)
flag:=0 ;フラグの初期化
StringRight test_str,this_key,2 ;'Space & SC002' の右端2文字を切り取る
if test_str in 02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,10,11,12,1A,28,29,2A,2C,36 ;これらの場合フラグを立てる
flag=1
IfEqual, flag, 0 ;通常のアルファベットの場合(フラグが立っていない場合)はIMEをOFFにする。
IME_SET(0, "A")

実装してみると結構いい感じ。
だけど今度は、大文字アルファベットから始まる単語・略語は半角でしか入力できないことに。私の場合は、文章中のアルファベットは半角に統一するようにしているので問題はあまり感じられませんが、人によっては受け入れられない仕様かもしれませんね。