smzht / fakeymacs

Emacs-like key bindings for Keyhac
MIT License
112 stars 49 forks source link

設定に関わらずIME状態のバルーンが出てしまう #11

Closed gotoh closed 3 years ago

gotoh commented 3 years ago

fc.emacs_ime_mode_balloon_message = None としてもIME状態として"[A]"や"[あ]"のバルーンが出てしまいます。 popImeBalloon()が上記変数に対応していないからかな? とりあえず以下のようにして回避しています。 (c798c15 を使用してます)

diff -r c6439f5d7d10 config.py
--- a/config.py Mon Jun 14 10:37:45 2021 +0900
+++ b/config.py Mon Jun 14 10:55:34 2021 +0900
@@ -745,7 +745,8 @@
         if ime_status is None:
             ime_status = keymap.getWindow().getImeStatus()

-        if not fakeymacs.is_playing_kmacro:
+        if fc.emacs_ime_mode_balloon_message and \
+           not fakeymacs.is_playing_kmacro:
             if ime_status:
                 message = "[あ]"
             else:

これがないと ei_popBalloon() では出なくしているはずの LINEでもバルーンがでちゃって重なっちゃいますし、 別の例として、画面キャプチャするために画面を切り替え、ALT-PrintScreenを押すタイミングで バルーンが出てキャプチャに入り込んでしまうという嫌な弊害も。

smzht commented 3 years ago

fc.emacs_ime_mode_balloon_message パラメータは、emacs 日本語入力モードのバルーンを 表示するかどうかを制御するものとしています。 今回は、fc.ime_status_balloon_message パラメータを追加し、対応してみました。 develop branch にコミットしてみましたので、確認ください。

https://github.com/smzht/fakeymacs/commit/356cc5708384b97ab4679b76b53ff2d610ee58ae

LINE の扱い(IME ステータスのバルーンをデフォルトで非表示にするかどうか)については、 現在確認する環境に居ないため、後ほど確認し、判断したいと思います。

以上、よろしくお願いします。

smzht commented 3 years ago

LINEの確認をしました。▲のバルーンヘルプを出すと入力文字に重なるようですが、IMEの状態を表示する バルーンヘルプはウインドウ外に出るため、問題はありませんでした。 このことから、LINEに対する追加の対策は行わない予定です。何か不都合がある場合はお知らせください。 以上、よろしくお願いします。

gotoh commented 3 years ago

ありがとうございます。 fc.emacs_ime_mode_balloon_message = Nonefc.ime_status_balloon_message = Noneを設定することで希望の動きになりました。 その点では本件はクローズなのですが、上記変数の設定を行わずデフォルトの設定のままでLINE上で操作すると、妙な感じになりましたので残しておきます。

IME切替時の[A] / [あ] の表示は他アプリだとカーソル位置の下だったり、ウィンドウの左下だったりするのですが、 、LINEだとカーソルの右に出ます。すぐ消えるのでさほどの害はないです。奇妙なことに一度他のアプリ(例えば左下タイプ)をアクティブにしてから戻るとLINEも同様の表示位置になったりしますが、なにか操作するとまた右に出ます。 [▲]は添付の画像のように変換文字領域にもろにかぶりました。変換モードから抜けるまでその状態が続きます。 添付の画像は「かんじへんかん」と入力した状態。 Windows10 pro/ 64 で Line v7.0.0 で Google IME を使ってます。

image

smzht commented 3 years ago

LINEのアプリ判定が効いていないようです。Keyhac の内部ログを ON にして、LINE アプリで キー入力したときの、exe 名と class 名を教えていただけますか?

現在、LINE アプリを使える環境に居ないので、こちらでも 後ほど LINE アプリのバージョン等 確認してみます。

smzht commented 3 years ago

Windows版 LINE アプリには、ストアアプリのものとそうでないものと2種類あるのですね。

恐らく、この辺りが関係していると思われます。後ほど調べてみます。

gotoh commented 3 years ago

内部ログをONして取った情報です。

Window : exe   : LINE.exe
       : class : Qt5152QWindowIcon
       : text  : LINE

使ってるラインはストアアプリではなくダウンロードしてインストールしたはず。

ちなみに TortoiseHg も同じような現象でした。 共通するのは Qt5 かな? 現象として少し違うのは、▲の挙動はほぼ同じなんだけど、 TortoiseHgは [A]と[あ]のバルーンはウィンドウ(フレーム)左下にでる点でしょうか。 ついでにthgの情報も。

Window : exe   : thg.exe
       : class : Qt5QWindowIcon
       : text  : keyhac-config - TortoiseHg Workbench
gotoh commented 3 years ago

Qt5*.dll で探したところ、LibreCAD、MuseScore, Calibreでも TortoiseHgと同じ振る舞いでした。

Window : exe   : LibreCAD.exe
       : class : Qt5QWindowIcon
       : text  : LibreCAD - [無題 1 [作図モード]]
Window : exe   : MuseScore.exe
       : class : Qt5QWindowIcon
       : text  : MuseScore 2: 名称未設定
Window : exe   : calibre.exe
       : class : Qt5QWindowIcon
       : text  : calibre - || Calibre ||
smzht commented 3 years ago

いろいろ情報いただき、ありがとうございます。 こちらでは LINE のストアアプリを使っていて、class は Qt5QWindowIcon となっていました。 これを config.py の ei_popBalloon 関数内で判定していますので、if 文をくぐり抜けているのは これが理由のようです。

対象アプリを判定している checkWindow 関数はワイルドカードが使えるので、判定方法を 見直してみました。(とりあえず、▲ のバルーンヘルプの方だけ。テストできていません。)

https://github.com/smzht/fakeymacs/commit/1377a2ffbf4101f03fe4647f34da752bd5c6781c

あとは、IMEステータスのバルーンヘルプも非表示にするかどうか。 IMEステータスのバルーンヘルプの表示に影響が出ているのは、LINEだけですかね?

gotoh commented 3 years ago

▲の方は出なくなりましたね。 [A]/[あ]はLINEだけ邪魔をします。 他のはカーソルの近くではなく、結構遠くの隅っこで出ることになりがちなので、 それはそれでどうかと思いますが、害はないです。

smzht commented 3 years ago

スマホアプリでないLINEアプリで発生する現象を確認し、対策しました。

https://github.com/smzht/fakeymacs/commit/166cc8bc52801efe29c7f10e43a126fb22e61b6c

またこの対応で、fc.ime_status_balloon_message パラメータとは別に fc.use_ime_status_balloon パラメータを新たに設け、こちらのパラメータでバルーンヘルプを表示するかどうかを制御する ように見直しました。

見直しした理由は、バルーンヘルプをデフォルトで表示しない設定とした場合でも、pop_ime_balloon 拡張機能の機能により、明示的にバルーンヘルプを表示できるようにするためです。

この内容で問題なさそうであれば、master branch に merge したいと思います。 以上、よろしくお願いします。

gotoh commented 3 years ago

新しい設定項目での切り替えを使用しましたが、特に問題はありませんでした。 ありがとうございます。 クローズしときます。

smzht commented 3 years ago

master branch にマージしました。

https://github.com/smzht/fakeymacs/commit/8f6026a2c00c3910032983441357589e6200166c