smzht / fakeymacs

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

IME切替時のディレイにより期待と違う動作をすることがある #9

Closed gotoh closed 3 years ago

gotoh commented 3 years ago

config.py のL1831のei_updateKeymap()keymap.delayedCall(keymap.updateKeymap, 100) となっていますが、 このディレイ値(100)が大きいため思わぬ動作をすることがあります。

例えば日本語入力していって変換状態からC-mで確定し、間髪入れずにIMEをOFFにするためにC-oを 入力すると、その時点でまだkeymap_eiのままのようで C-oS-Right(文節を伸ばす)の動きを して1文字分の範囲設定がなされ、続く英字入力でそれを上書きして消してしまいます。 サクサクと文章入力をしていると高確率でこれの動きをします。 この他のキー操作でも同様でkeymap_emacsのキー定義を期待してる場面でkeymap_eiの定義の 動きが実施されることがあります。

100のディレイだと大きいようなので1に修正して使ってます。 このディレイの意味を理解していないので数字は適当ですけど、自分の環境ではとりあえず良好そうです。

smzht commented 3 years ago

報告ありがとうございます。まず、どこで対応した修正なのかを調べました。 https://github.com/smzht/fakeymacs/commit/ac6fd27f29119e725045bc4a97818c66e4a885cb Sakura エディタで Google日本語入力を使用する際に「確定取り消し」が正常に動作しない対策のためでした。 検討を継続します。

smzht commented 3 years ago

確認しましたが、現在の環境では上記のコミットで報告されている問題は発生しませんでした。 OS や Google日本語入力のバージョンによって発生していた問題の可能性があります。 とりあえず delay を 0 に戻し、様子を見ることにしました。 再度この問題が確認されるようであれば、delayの時間をパラメータで指定できるようするなど、 対策を検討したいと思います。 https://github.com/smzht/fakeymacs/commit/d14829cef37cda8475ea4203b006d0489db4fd9d

smzht commented 3 years ago

再現しました。delay を 0 にして Google 日本語入力を利用しているとき、Sakura エディタで漢字変換確定直後に C-t を押すと、変換した文字列がずれて二重に表示されます。この対策のため delay を 100 にしていたものでした。ただし、この現象の問題より、本 issue で報告された問題の方が影響が大きいと思われますので、delay 0 をデフォルトの設定にしたいと思います。Sakura エディタ対策のために delay 時間をパラメータ化するかどうかについては、別途検討します。

smzht commented 3 years ago

一応、本対策と思える対策を実施してみました。これでどちらの問題も解決していると思います。 https://github.com/smzht/fakeymacs/commit/438562655449540b2b481a7f8d06fb9cea53826

smzht commented 3 years ago

コードの見直しを行いました。機能に変更はありません。 https://github.com/smzht/fakeymacs/commit/60fa29a9ce7f85b0e453b8fedd406f4fc44312ab

smzht commented 3 years ago

対策を完了したのでクローズとします。