マクロのイベントで実行について

  1. 現在VSなどにあるような対括弧の自動挿入をマクロで行っています。

    その際イベントで "実行→文字が挿入された時" を指定しているのですが、
    例えば括弧の位置にキャレットがありctrl + sで保存などを行ったとき
    又ファイルを開いたばかりで括弧の位置にキャレットがありctrl + zなど(同様にctrl + s)を押したとき
    何も編集も行っておらず文字を打ち込んでいなくてもマクロが動作し括弧が挿入されてしまいます。

    これは何か使い方や指定の仕方が間違っているのでしょうか?
    もし宜しければご教示いただけるとありがたいです。

    タイトルの件とは別になりますが外部ツールバーボタンの表示切り替えの実装ありがとうございました。
    期待していた形で便利に使わせていただいています。

     |  ZZT  |  返信
  2. それはおかしいですね。[文字が挿入された時] は文字どおり、文字が挿入されたときに呼ばれるイベントとなっています。

    私のほうでも確認してみましたが Ctrl + Z や Ctrl + S でイベントは呼ばれませんでした。

    マクロの [イベント] でほかのイベントにもチェックが入っていたりしないでしょうか?(例えば [ファイルを保存した時] や [テキストが変更された時] など)

    また、他に考えられる原因としては [遅延時間] の設定が数秒になっていると、文字を入力したタイミングからワンテンポ遅れてマクロが実行されます。

    そのタイミングがたまたま Ctrl + S を押したときに重なったということも考えられます。

    [遅延時間] の設定はイベントの項目を選択すると設定できるので、0 にすると文字を挿入したタイミングですぐにイベントが呼ばれるようになります。

    > タイトルの件とは別になりますが外部ツールバーボタンの表示切り替えの実装ありがとうございました。
    > 期待していた形で便利に使わせていただいています。

    ありがとうございます。ご希望の動作が実現できたとのことで安心しました。

     |  Kuro  |  返信
  3. ご回答いただきありがとうございます。

    今使用しているmeryとは別途新規でポータブル版をダウンロードし
    何の設定も行っていない状態で試してみました。
    マクロの内容は

    Alert("");

    のみでテスト.jsとしイベントは文字が挿入された時のみ、
    遅延時間は0.0秒から0.5秒で試してみたのですが確かにctrl + zでは反応はありませんでした。
    ただ
    ctrl + t
    ctrl + u
    ctrl + s
    ctrl + d
    ctrl + j
    ctrl + k
    ctrl + \

    これらでマクロの反応がありました。
    環境はwin10 64bit バージョンは21H1でIMEはMS純正の物を使用しています。

    特にキーフックされるようなアプリケーションを入れているわけではないのですが
    他に原因となりそうなものがあればまた情報を頂けるとありがたく思います。

    影響のあると困るような編集を行っているときはマクロを切ればよいだけなので
    お時間のある時にでもよろしくお願いいたします。

     |  ZZT  |  返信
  4. ご確認いただきありがとうございます。

    Ctrl + T や Ctrl + J だと私の環境でも現象を確認できました。

    調べてみましたところどうやらキーボードの仕様が関係しているようで、Ctrl + T や Ctrl + J といったキーは制御文字の入力になっているらしいです。

    【参考】ASCII コードとキー割り当て(キーバインド)
    http://users321.web.fc2.com/hash/doc/ascii.html

    これらのキーは目には見えないけれどデータ処理などを制御するための文字、「制御文字」の入力に割り当てられているとのことです。

    Mery の [文字が挿入された時] は Windows から送られてくる文字入力のイベントを拾っているだけなので、これらの制御文字の入力にも反応してしまうようです。

    次のバージョンではこういった制御文字には反応しないよう対策をしてみたいと思います。

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