pythonでIMEを制御する
pywinautoを使って操作を自動化しようとすると、IMEについても制御が必要になることがある。とはいっても、整理してみたら
- ブラウザを立ち上げてから URL を指定するとき(URLを入力するときはIMEをOFFにしたい)
くらいだった1が。そんなとき、Python側で頑張るのもひとつの方法だが、IMEのキーバインドで無条件で IME OFF になるような設定を用意しておいて、SendKeysでそのキーを送るのも手だと思った。実際のところ SHIFT_F12 とか、SHIFT_PGUPなどをそうしたキーに設定してみたが、当然のようにどの場合でもうまく制御できた。Google日本語入力なら、キーバインドを設定できるので、どの状態でもIME OFF になるようにすればいいのではないかと思う。こんな感じ
...
DirectInput Shift PageDown IMEOff
Precomposition Shift PageDown IMEOff
Composition Shift PageDown IMEOff
Conversion Shift PageDown IMEOff
Suggestion Shift PageDown IMEOff
Prediction Shift PageDown IMEOff
...
そして python の側ではこんなふうにして。
...
pywinauto.keyboard.SendKeys('+{PGDN}') # IME OFF
...
くだらないことだけれど、一安心。
-
逆に IME ON に制御したい場合にはいまのところ出くわしていない。もしそういう場合にも考え方は同じでできるみたい。なお、IME ONの制御が必要かな、と思ったのは、ページ内の特定の場所に SendKeys を行いたいといった意図で、その場所を特定するために、検索({^G}とか)で検索窓を立ち上げて、その窓内に対象文字列を入力するとき。たとえば、対象が全角で『パスワード』と書かれていたりする場合はよくある。だけど、そのときは、検索窓への入力としていきなり全角日本語文字をSendkeysできるみたい。わざわざIMEをONにしなくてもよい。やってみるとそりゃそうだ、という感じなのだけれど便利だなぁ。 ↩