検索ウィンドウがアクティブかどうかでショートカット動作を振り分けたい

  1. 開発お疲れさまです。

    本年も大変お世話になりました。
    シンプルさを保ちながらも便利なアップデートを続けるMeryに、今年も大変助けられました。来年もどんなアップデートがあるのかと楽しみにしております。
    (Zen時計も、以前Twitterで見たときにパワーアップしていたので、公開をひそかに楽しみにしています)

    さて、今年最後の質問となりそうですが、年末年始はお忙しいでしょうから、お暇なときにご確認いただければ幸いです。

    ---

    以下の動作を実現したいです。

    1. エディタウィンドウがアクティブな時にShift+Enter: 通常の改行
    2. 検索ウィンドウがアクティブな時にShift+Enter: 前を検索 (各種ブラウザやExcelのようなショートカット動作)

    現状、「前を検索」にShift+Enterを割り当てることで、2は実現できています。
    しかし当然ながらこの場合、常に2が発動してしまうため、1の動作が実現できません。

    ちなみに1は、私が以下マクロをEnterに割り当てている兼ね合いで、Wordやパワポにあるような「箇条書き内での改行」を実現したいため、設定したいと考えていました。
    https://www.haijin-boys.com/wiki/Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する

    どうにかこれを実現できるアイデアはないでしょうか?例えば、マクロでこのあたりの処理の出し分けができるか、など…。

    お知恵を拝借できると助かります。

     |  yuko  |  返信
  2. こちらこそ、本年も大変お世話になりました。

    動作検証のご協力、そしてフォント関連の開発のときはお力添えをいただきましてありがとうございました。

    > 来年もどんなアップデートがあるのかと楽しみにしております。

    正式版をリリースしたいと言っておきながら、今年は結局、Markdown 機能のプログラミングで遊んでしまいました😱

    Typora が有料化されたので、Mery もやる気を出してしまいました。

    ちなみに、Markdown リスト内での改行でリスト記号の自動入力 (Shift + Enter で通常の改行) も ↑ の Markdown 機能の中に含まれていますが…

    ---

    さて、お問い合わせの件、確認してみたのですが難しそうですね。

    仕様上、ショートカットキーの有効範囲は現在フォーカスのあるウィンドウ内なので、検索ウィンドウにフォーカスがあるときにメインウィンドウ側の機能をショートカットキーで呼び出すことはできません。

    [前を検索] は検索ウィンドウ内にもある機能なので、検索ウィンドウにフォーカスがある状態でもショートカットキーが効く、というわけです。

    [マクロの実行] はメインウィンドウ内の機能なので、検索ウィンドウにフォーカスがある状態で呼び出すことはできません。

    また、マクロの仕様としては、現在フォーカスのあるエディターを対象に実行されるため、エディターにフォーカスがない状態 (検索ウィンドウにフォーカスがある状態) でマクロを実行できたとしても、対象のエディターがないため、マクロのほとんどの機能は動作しないものと思われます。

    > 1. エディタウィンドウがアクティブな時にShift+Enter: 通常の改行
    > 2. 検索ウィンドウがアクティブな時にShift+Enter: 前を検索 (各種ブラウザやExcelのようなショートカット動作)

    上記の仕様を踏まえると、2 を実現するためには [前を検索] に Shift + Enter を割り当てるしかなくなりますね。

    すると Shift + Enter にマクロを割り当てることができなくなるので 1 は無理となってしまいます。Ctrl + Enter とかなら大丈夫だと思いますが…

    > 例えば、マクロでこのあたりの処理の出し分けができるか、など…。

    Shift + Enter にマクロを割り当てても検索ウィンドウからはマクロを実行することができないため、マクロで実現するのは難しいと思います。プラグインならそのあたりは自由度が高いのですが…。

     |  Kuro  |  返信
  3. 挙動の解説ありがとうございます。やはり難しいですか…😅 残念ですが、1か2のどちらかを諦めるしかなさそうですね。

    > ちなみに、Markdown リスト内での改行でリスト記号の自動入力 (Shift + Enter で通常の改行) も ↑ の Markdown 機能の中に含まれていますが…

    おおーっ、素晴らしい!
    そういう操作に対応するとなると、いよいよMarkdownエディタとしてもガンガン使えてしまいそうです☺️最近はWiki系のシステムだけでなく、SlackのようなチャットでもMarkdownは多用しますから、フッ軽な日本語エディターとしての立ち位置がより強くなりますね!

    ちなみにプラグインの形での提供になるのでしょうか?ショートカットの割り当たり方がどうなるかが気になってます。(もしかして、Markdown機能によって、この"リスト内改行"と"前を検索"を同居させたい問題が解消したりしないかをほのかに期待)

    1. 設定画面 > キーボード のところで割当てる?
    2. プラグインをONにしている間だけ、EnterとShift+Enterがフックされる?
    3. 特定の編集モード(Markdown)のときだけ、EnterとShift+Enterがフックされる?

    もし、上記2か3の方式の場合、設定画面 > キーボード でEnter, Shift+Enterに何らかの機能を割り当てている場合、どちらが優先されるでしょうか?

     |  yuko  |  返信
  4. > 最近はWiki系のシステムだけでなく、SlackのようなチャットでもMarkdownは多用しますから、フッ軽な日本語エディターとしての立ち位置がより強くなりますね!

    VS Code があればわざわざ Mery を使う必要もなさそうですが😅 プレビューに WebView2 を使うことにしたのでプレビューの起動が爆速というところだけは VS Code よりも良いかもしれません。

    > ちなみにプラグインの形での提供になるのでしょうか?

    はい。使わない人もいると思うのでプラグインにしました。

    > 1. 設定画面 > キーボード のところで割当てる?
    > 2. プラグインをONにしている間だけ、EnterとShift+Enterがフックされる?
    > 3. 特定の編集モード(Markdown)のときだけ、EnterとShift+Enterがフックされる?

    今のところ、Enter キーによるリスト編集機能のキーボード割り当ては Enter キー固定になってますね。

    プラグイン側で Enter キーをフックする条件は 2 と 3 に該当します。プラグインを ON にしていて、編集モードが Markdown のときだけです。

    > もしかして、Markdown機能によって、この"リスト内改行"と"前を検索"を同居させたい問題が解消したりしないかをほのかに期待

    でも、フックするのは Enter キーが単独で押された場合だけなので、Shift + Enter が押されたときはフックしません。

    本体側で Shift + Enter にキーボード割り当てされている場合はそれが発動しますし、何も割り当てられていない場合は普通に改行されるだけ、ということになります。

    つまり、[前を検索] を同居させたい問題は解決できないことになりますね… ^^;

    ところで、検索ウィンドウで Enter は [次を検索] ですから、キーボード割り当てをしなくても、標準機能として Shift + Enter で [前を検索] にしても良いかもしれませんね。

    そうすると Shift + Enter が空くのでマクロを割り当てることもできますし、何も割り当てなければ通常の改行になりますから、シンプルに解決できそうな気がします。

     |  Kuro  |  返信
  5. > ところで、検索ウィンドウで Enter は [次を検索] ですから、キーボード割り当てをしなくても、標準機能として Shift + Enter で [前を検索] にしても良いかもしれませんね。

    ですね。それが可能なら、設定もシンプルになり、私としては願ったり叶ったりです。それにShift+Enterは多くのアプリケーションでも前検索の動きをしますから、普遍的な動作として違和感もないように思えます。

    > VS Code があればわざわざ Mery を使う必要もなさそうですが

    いやぁ、ダブルクリックやCtrl+Left/Rightの日本語の文節区切りなど、日本語の文書編集に関する配慮はやはりMeryに軍配が上がります。Markdownはコーディングの言語というより文書的な色の方が強いと感じていて、そうなると日本語の文書作成を得意とするMeryの方が扱いやすいなーと感じています。実際今も、Markdownな文書はVSCodeよりMeryで書くことの方が多いです😊

    > プラグイン側で Enter キーをフックする条件は 2 と 3 に該当します。プラグインを ON にしていて、編集モードが Markdown のときだけです。
    > 本体側で Shift + Enter にキーボード割り当てされている場合はそれが発動しますし、何も割り当てられていない場合は普通に改行されるだけ、

    なるほどなるほど、それでShift+Enterは通常改行になるわけですね。

    ちなみにこのEnter動作、編集モードがMarkdown以外のときもオプション的にONにできたりしませんか?

    具体的には、編集モード「Text」でも使えれば…と考えています。以下の理由からです。
    ・新規作成直後のエディタ(未保存状態なので編集モード「Text」)で、Markdown的なEnter動作を扱いたい
    ・編集モード「Text」と「Markdown」で強調設定は分けておきたい

    上記については先述のMarkdownマクロをEnterに割り当てることで実現できているので、あまり強い要望ではないのですが、新規作成直後のタブでも扱えると私のようにMarkdown構文で日常的にメモを取る人間には嬉しいかな、と考えた次第です。

     |  yuko  |  返信
  6. ご返信ありがとうございます。

    > Shift+Enterは多くのアプリケーションでも前検索の動きをしますから、普遍的な動作として違和感もないように思えます。

    メモ帳も秀〇エディタさんも E〇Editor さんも実装されていないようですが、VS Code や Sublime Text など、海外製のエディターだと一般的なようですね。

    あっても邪魔にはならないと思いますし、知ってる人なら普通に使えるということで Mery 的には実装しても良さそうです。

    > 実際今も、Markdownな文書はVSCodeよりMeryで書くことの方が多いです😊

    それは嬉しいですね😂 ぜひ、Markdown プラグインを使ってご感想をいただきたいところです。

    > 具体的には、編集モード「Text」でも使えれば…と考えています。

    これは私も悩んだ部分ですが、今のところは編集モードが Markdown のときだけ固定になっています。

    Text モードのときには発動してほしくないこともありそうですし、かといって編集モードを設定する画面を設けるほど、他の編集モードで使う必要もない機能だと思いますし。

     |  Kuro  |  返信
  7. > あっても邪魔にはならないと思いますし、知ってる人なら普通に使えるということで Mery 的には実装しても良さそうです。

    ご検討ありがとうございます!
    以前実装いただいたShift+スクロールのように、「あっ試したら使えた」となる動きで、とても良いと思います。

    > ぜひ、Markdown プラグインを使ってご感想をいただきたいところです。

    はいー、公開されることを心待ちにしています☺️(もし同梱してリリースするより先にお試し公開があるようなら、感想を投稿します)

    > これは私も悩んだ部分ですが、今のところは編集モードが Markdown のときだけ固定になっています。
    > Text モードのときには発動してほしくないこともありそうですし、かといって編集モードを設定する画面を設けるほど、他の編集モードで使う必要もない機能だと思いますし。

    そもそもMarkdownプラグインと謳っているわけですし、固定で発動というのもそれは然るべき仕様かと思います。余計なことを言ってしまいましたね。失礼しました。

     |  yuko  |  返信
  8. Shift + Enter は Ver 3.3.3 でこっそり仕込んでおきました。

    > はいー、公開されることを心待ちにしています☺️(もし同梱してリリースするより先にお試し公開があるようなら、感想を投稿します)

    ほんとですかー!実はすでに完成はしているものの、テストする時間がなかなか取れなくて困っていました。

    あまり目立たないように、このトピックの中でこっそりベータ版として貼らせてもらおうかな…。

    > そもそもMarkdownプラグインと謳っているわけですし、固定で発動というのもそれは然るべき仕様かと思います。余計なことを言ってしまいましたね。失礼しました。

    いえいえ。これがなかなか言葉では説明しづらい仕様になっていまして…。

    Markdown 機能は Markdown プレビュープラグインと、Markdown バープラグインの 2 つを用意しているのですが、Markdown バーっていう、ツールバーのボタンから Markdown 構文をワンクリックで入力できるバーの、オマケ機能としてリスト編集を補助する機能が搭載されてるんです。

    そして、そのバーは編集モードに応じてオン・オフできるような設定画面まであるんです。

    でも、バーが起動していないときにもリスト編集補助だけは使いたいというご要望がありそうだったので、リスト編集補助用にもう一つ同じような設定画面を作るのか?となって、それはそれで違うなーと思って保留にしていた感じです。

    説明が下手ですみません。とりあえず実物をみていただけると分かりやすいと思うので近いうちに貼ってみますね😁

     |  Kuro  |  返信
  9. > Shift + Enter は Ver 3.3.3 でこっそり仕込んでおきました。

    おおっ、おかげさまでワークアラウンド的なShift+Enterのキー設定が削れて、さらにリスト内改行ができるようになりました!これでまた一歩、MarkdownエディタなMeryになりました😊

    > とりあえず実物をみていただけると分かりやすいと思うので近いうちに貼ってみますね😁

    やったー、楽しみにしています😋

     |  yuko  |  返信
スポンサーリンク