みずぴー日記

陽気なプログラマが世界を廻す

AquaSKK 4.2.5(LINE.appでの動作改善)

LINE対応 by jbking · Pull Request #13を取り込んだので、リリースを行なった。(thx to jbking)

ダウンロード

https://github.com/codefirst/aquaskk/releases/tag/4.2.5

変更内容

Mac版のLINE 4.0.0以降で、l/q/Lなどによる入力モードした場合、l/q/Lなどが入力されてしまう問題を修正した。 詳細は #13を参照してほしい。

余談

(使う上では関係のない余談です。Tl;dr)

このモード切り替え時にl/L/qの文字も入力されてしまう問題は、AquaSKKではよく発生する。過去にはJavaで作られたアプリケーション等で発生していた。現時点でもQtアプリケーションで発生するのは認識してるが対応できていない(#16)

あくまで推測だが、これらのアプリケーションではInputMethodの処理が以下のようになっていると考えられる。

  1. OS側にキーボードイベントを渡す
  2. テキストが挿入された場合はInputMethodで処理されとみなし、何もしない。
  3. 何も挿入されない場合はInputMethodで処理されていないとみなし、デフォルトの処理を行なう。

そのため、モード切り替えのみを行ないテキストを挿入しないl/q/Lは二重で処理されてしまう。

そこで、特定のアプリケーションの場合、l/q/Lが入力された場合は不可視の文字(0x0c)を入力し、この問題を回避している。

ただしこれはworkaroundであり、本来はInputMethod側で処理されたかどうかをテキストが挿入されたかどうかで判断しているアプリケーションを直したほがよいと考えている。(NSTextInputContexthandleEvent:YES を返したかどうかで判断すべき)