2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonでIMEを制御

Last updated at Posted at 2018-12-30

pythonでIMEを制御する

pywinautoを使って操作を自動化しようとすると、IMEについても制御が必要になることがある。とはいっても、整理してみたら

  • ブラウザを立ち上げてから URL を指定するとき(URLを入力するときはIMEをOFFにしたい)

くらいだった1が。そんなとき、Python側で頑張るのもひとつの方法だが、IMEのキーバインドで無条件で IME OFF になるような設定を用意しておいて、SendKeysでそのキーを送るのも手だと思った。実際のところ SHIFT_F12 とか、SHIFT_PGUPなどをそうしたキーに設定してみたが、当然のようにどの場合でもうまく制御できた。Google日本語入力なら、キーバインドを設定できるので、どの状態でもIME OFF になるようにすればいいのではないかと思う。こんな感じ

keymap.txt
...
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 の側ではこんなふうにして。

aho.py
...
pywinauto.keyboard.SendKeys('+{PGDN}') # IME OFF
...

くだらないことだけれど、一安心。

  1. 逆に IME ON に制御したい場合にはいまのところ出くわしていない。もしそういう場合にも考え方は同じでできるみたい。なお、IME ONの制御が必要かな、と思ったのは、ページ内の特定の場所に SendKeys を行いたいといった意図で、その場所を特定するために、検索({^G}とか)で検索窓を立ち上げて、その窓内に対象文字列を入力するとき。たとえば、対象が全角で『パスワード』と書かれていたりする場合はよくある。だけど、そのときは、検索窓への入力としていきなり全角日本語文字をSendkeysできるみたい。わざわざIMEをONにしなくてもよい。やってみるとそりゃそうだ、という感じなのだけれど便利だなぁ。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?