読者です 読者をやめる 読者になる 読者になる

blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

Windows 8.1でGoogle日本語入力を使うと、IMEの入力モードを正しく取得できないことがある

 先日、Windows 8.1Google日本語入力を使うと、DvorakJの日本語入力用配列の設定が完全に無効化されてしまうとの報告を受けた。私は普段ATOKを利用しており、そうした症状に出くわすことはなかった。なるほど、Windows 8.1Google日本語入力を導入してDvorakJを動かすと、たしかに日本語入力用配列の設定が無効になってしまう。
 おそらくIMEの判定処理が関係する問題だと思って調べたら、IME.ahk*1ではIMEの入力モードを正しく取得できないことがあることに気づいた。Google日本語入力ローマ字入力の日本語入力を行っているはずなのに、IME.ahkによる入力モードの判定結果はかな入力となる*2。そのため、IMEが実際にはローマ字入力を利用しているのに、DvorakJではIMEがかな入力を使用中だと誤認してしまうのだ。ただ、この現象はWindows 7には現れず、Windows 8.1Google 日本語入力を併用している場合に限り生じるようだ。
 そこで、本日公開した版に、Google 日本語入力を使用中であるとDvorakJで明示的に設定できるようにした。以前も同様の設定項目を設けていたが、今回盛り込んだ設定は上記の問題に対処するためのものである。設定画面の当該箇所の画像を下記に掲載しておこう。

f:id:blechmusik2:20140329020610p:plain

 Windows 8.1Google日本語入力を利用している方は、今回実装した機能を是非とも活用してほしい。

*1:eamat @Cabinet - IME制御

*2:具体的に言うと、IME_GetConvMode()の返り値が本来26(ローマ字入力ひらがなバージョン)になるべきなのに、9(かな入力ひらがなバージョン)となってしまう。場合によっては26の値を取得できることもあったが、正しい値を取得できる場合とできない場合の違いはまだ分からない。