Daigoバージョンアップ

Daigoにより、入力が効率化しましたが、操作しているときに、微妙に違和感を覚えることがありました。それがどのような操作のときであるのかが分からなかったのですが、今回何が問題なのかが分かり、それを解消するためにバージョンアップをしましたので説明します。

1.操作上の問題

Daigoは、キー入力を監視して、辞書に登録しているトリガーとマッチングしたら、以下の操作を受け付けるようにしていました。

(1)確定

登録した単語に置き換える

(2)続行

続けて文字を入力すれば続行する

(3)中断

エスケープによりマッチング状態から抜ける

(4)バックスペース

バックスペースで文字を消す

通常はこの4つの操作ができればいいのですが、ときどき違った操作をしようとして問題が発生していることが分かりました。

というのは、ホームポジションキーパーにより簡単に日本語の切り替え(半角/全角キー)が押せるので、マッチングしたときにも日本語入力の状態を切り替えようとするのですが、上記の4通りの操作しかできないので、無視されます。これが操作の違和感であると気づきました。

そこで、今回のバージョンアップで(2)の続行時に全てのキー操作を受け入れることにしました。もちろんこのことにより「半角/全角」キーの操作も有効になりました。

2.副作用

これで「半角/全角」の操作もマッチング時に行えるようになりましたが、副作用も発生しました。それはカーソルキー操作などが有効になるので、カーソルを移動した後に確定操作を行うと、その場所で確定操作が行われてしまうようになりました。

これを防ぐことは、かなり難しいので、今回は「半角/全角」を有効にすることを優先しました。

今後はDaigoにホットキー機能を追加できればと考えていますが、この時点でホームポジションキーパーと統合して、新しいアプリにしても良いのではと考えています。

11件のコメント

  1. dulunoj さん

    Daigo を愛用させていただいております。
    いつもありがとうございます。

    利用させていただいていて恐縮ですが、不具合報告をさせていただきます。

    当バージョンにてエクスプローラ上での任意のファイル名変更時に Daigo による入力を行うと、文字入力がされずに新しいエクスプローラのウィンドウが開かれるようになりました。
    (当バージョンから確定時の文字入力方式が変わったのでしょうか?)

    OS は Windows 10 64bit, なお通常のテキストエディタ等での動作は問題ありません。
    ご確認いただけると幸いです。

    ちなみに、当記事にも記載されている通り当バージョンから「確定」「続行」「中断」「バックスペース」以外の動作もできるようになり、その副作用として確定操作のタイミングによっては文字挿入位置がズレてしまう (と同時に、削除されるべき文字位置もズレる) という動作に変わった認識です。

    この副作用ですが、直接の文字入力以外のキー (矢印キー等) の押下時には以下のような順序の動作にすることで回避できないでしょうか?

    1. 中断 (現状エスケープキーで発動している機能)
    2. 押下された本来のキー動作

    例えば、以下のような動作イメージです。

    1. 文字ヒット状態になる (あとは Enter を押すと Daigo で文字入力がされる段階)
    2. 「←」キーが押下される
    3. 「中断」動作 +「←」キー動作を発動
    4. 直後に Enter キーを押すと、Daigo の「確定」ではなく通常の Enter 動作となる

    現状の仕様上、矢印キー入力直後に Daigo での確定操作が行われると、意図せぬ文字が消えたり残ったりすると思います。
    これが誤植に繋がる可能性もあるかと思いますので、「中断」動作を入れることで Daigo での「確定」が行われないようにした方が、安全なように感じます。

    ちなみに、もしこの動作ができるとすれば、以下のキーでは「中断」を差し込んでも差し支えないように個人的には思います。

    – 矢印4方向キー,
    – Ctrl
    – Alt
    – 全/半
    – 無変換
    – 変換

    少しでも参考となれば幸いです。

    1. yuko様

      コメントありがとうございます。
      また、返事が遅れ申し訳ありません。

      ご指摘の件、バージョンアップ後にGoogleの検索窓などで不具合が発生してバグに気が付きました。

      確定操作の場合にキー操作を受け入れるようにしたため、確定操作であるEnterそのものも受け入れてしまったために発生しておりました。

      そのため、Enterキー自体の操作も判定するようにして、不具合を回避するように改良中です。

      また、ご指摘のようにカーソル制御などで思わぬ操作にならないような回避策も組み入れたものについても、できるだけ組み入れてバージョンアップする予定です。

      ただ、その過程ホームポジションキーパーとの競合という根本的な問題にぶつかり、その回避も同時に進めています。

      とりあえずは、現行のEnter問題を解決したバージョンを作成して公開を先に行おうと思います。

      今後とも、よろしくお願いいたします。

  2. dulunoj さん

    ご返信ありがとうございます。
    まずは状況把握いただけたようで何よりです。

    色々と勝手に回避策を申し上げて失礼しました。
    引き続き、お時間あるときに回避策の組み込みを検討いただければ幸いです。

    あとこれは将来的なところで要望ですが、daigo.ini で各使用フォントも指定できるようになるとメイリオ等の画面表示が綺麗なフォントが指定できるので嬉しいです。
    もし AutoHotkey で Gui, Font コマンドを使っているようでしたら、そのコマンドの引数でそのまま指定できたかと思います。

    今後も応援しております。

    1. yuko様
      ようやく、根本的な回避策を見つけ、修正が完了しました。
      確定操作中では、以下のキーはそのままの操作を行うとともに、確定操作自体はキャンセルされるようにしました。

      Control、Alt、Win、アプリケーションキー
      ファンクションキー(F1~F12)
      カーソルキー(矢印キー)
      Home、End、PageUp、PageDown
      Deleteキー

      また、ホームポジションキーパーとの競合も発生しなくなりましたので、私自身もより快適に作業できるようになりました。
      アドバイスありがとうございました。

      本日、Vectorに登録申請しましたので近日公開されると思います。

      また、フォントを指定できるようにとのご要望、私もPhraseExpressを使っていたときに重宝していたことを思い出しました。

      少し難しそうですが、チャレンジしてみます。

      今後ともよろしくお願いします。

  3. dulunoj さん

    解決されたようで何よりです。
    私もさらに快適に利用させていただけるので嬉しいです。

    それとすみません。フォントの件なのですが、もしかしたら誤解を招いたかもしれません。

    「候補ヒントやクリップボードヒントの表示フォントの指定をしたい」という意図で要望しておりました。

    もし、「各スニペットの入力にフォント属性を指定したい」という意図で解釈されていたら、誤解を招いてしまい申し訳ありません。

    とはいえスニペットにフォント属性も指定できるとしたら、例えば word 等で特定の文脈だけフォントを変えるときに便利そうだなーと思ってしまいました^^;

    個人的には、開発関係の資料を作るときにコードの記載のところだけ consolas を適用させるといったことをよくやるので、それが Daigo でもできたら素晴らしいですね。

    1. yuko様
      Daigoを使っていて、前から確定操作時に意識してエスケープを押すことが面倒でしたが、今回の回避策で非常にスムーズに入力できるようになりました。
      Daigoが動いていることを意識せずにキー操作ができるようになったことは思ったより楽になりました。

      フォントの件、誤解しておりました。DaigoのGUIのフォント指定でしたら比較的簡単にできそうですので、時間を見つけて機能追加しようと思います。

      出力にフォント指定を組み込むことはPhraseExpressではできていたので、技術的には可能なことは分かっていますが、仕組みを含めて勉強からしないと難しそうです。一度チャレンジしてみます。

      今後とも、よろしくお願いいたします。

  4. Daigo 3.11 ダウンロードさせていただきました。

    おかげさまで快調に動いております。
    ありがとうございました!

    1. yuko様

      早速のコメントありがとうございます。
      今回のバージョンアップはDaigoを使用し始めた当初から、操作性でひっかかていたところでしたが、なにが問題でどのようにすればいいかの整理がついていませんでした。

      これでだいぶ整理できたのですが、確定操作のEnter自体に問題があるので、もう少し修正を入れるつもりです。

      というのも、マッチング状態になったときにEnterを入れたいと思っても確定操作になってしまうので、シフトキーを併用しようと考えています。

      つまり確定操作をShift+Enterにするか、マッチングしたときにEnterを入れたいときはShiftを押すか選択できるようにしようと思います。

      これでマッチング状態のときに操作の制約がほとんどなくなると考えています。

      また、以前のバージョンアップのときにIMEがONのときに反転表示をしなくなっていたことが分かりましたので、これも修正します。

      今後ともよろしくお願いいたします。

  5. > というのも、マッチング状態になったときにEnterを入れたいと思っても確定操作になってしまうので、シフトキーを併用しようと考えています。
    > つまり確定操作をShift+Enterにするか、マッチングしたときにEnterを入れたいときはShiftを押すか選択できるようにしようと思います。

    これ、いいですね!
    実は私も同じようなフラストレーションを抱えておりました。

    私の場合はそういった押し間違いを防ぐために判定文字列の末尾全てに統一して「;」を入れるようにして、「明示的な確定操作として最後に「;」を入力」といった仕組みにしていました。
    Shift + Enter で操作ができるようになると、この仕組みが不要になるのでありがたいです。

    ただこの仕様と衝突しないか気になる点が、Google 日本語入力での Shift + Enter でのサジェスト第一候補の確定操作です。 (もしかしたら ATOK も同様かもです?)
    Daigo と Google 日本語入力のどちらの操作を優先させたいか、という課題がありそうです。

    あるいは、Enter と一緒に押す修飾キーをコントロールできるようにしても良いかもしれません。
    例えば、とある項目の設定数値によって以下のような具合で変わる等です。

     0: Enter のみで確定
     1: Shift + Enter で確定
     2: Ctrl + Enter で確定
     3: Alt + Enter で確定

    これなら、もしも Shift + Enter が何らかと衝突してしまうような環境でも、他の選択肢を選べます。サジェスト確定操作との衝突を回避するのとユーザの好みに合わせられる点から良さそうな気がします。

    また、以前にご報告した、

    > また、CBTimeとCBHintの関係についてご指摘ありがとうございます。
    > これもバグですので、CBHintの値に関わらずCBTimeが0で無効化するよう改善したいと思います。

    の件もまだ残っているようですので、もしお時間あれば見ていただけると幸いです。

    この際には「CBHintの値に関わらずCBTimeが0で無効化するよう改善」と仰っていましたが、個人的には「CBHint が 0 で無効化する」とした方が設定としてはシンプルな気がします。
    というのも、「CBHint を Off にする = 一時登録を使わない」と考えるのではないかと思うからです。

    いろいろと意見してしまって恐縮ですが、今後のアップデートも楽しみにお待ちしています。

    1. yuko様
      コメントありがとうございます。
      Enterの件、参考になりました。
      実は、私自身Wordを使っているときはShift+Enterを良く使いますし、GMailではショートカットキーでCtrl+EnterをスプレッドシートではAlt+Enterを使います。

      つまり、Enterキーと修飾キーは全ての組み合わせを使っているユーザーの場合は、どれかと衝突しそうです。

      そこで、Enterキーの長押しを使って見てはどうかと考えました。
      メリットとしては、どの修飾キーとも衝突しなくなります。

      デメリットとしては、長押しなので、操作に一定の時間がかかる(0.2秒ぐらい)ことと、 Enterの押しっぱなし連入力ができなくなることです。

      しかし、どの修飾キーとも衝突しないメリットは大きいので、これも選択できるようにしようと思います。

      また、CBHintの件、同時に次のバージョンアップで修正しようと思います。

      アドバイスありがとうございました。

  6. dulunoj さん

    とんでもありません。少しでも参考になったようで何よりです。

    たしかに、長押しも中々良さそうです。
    Daigo でのマッチング時だけ、Enter 連打不可 (つまりマッチングしていないときには影響しない) とできると影響も少なくなりベストですね。

    次のアップデートも楽しみです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です