自動起動マクロへの追加要望No.31333
misono さん 12/07/10 16:11
 
いつも秀丸を便利に使わせていただいています。ありがとうございます。
さて、マクロ登録→自動起動に追加の要望があります。
ここに「何かキーが押されたら」のイベントを追加していただくことは可能でしょう
か。
どうしてもカーソル移動後タイマーでは実現できない実装がありまして、キーが押さ
れたタイミングでマクロを実行させたいと考えています。

よろしくお願いします。


[ ]
RE:31333 自動起動マクロへの追加要望No.31335
秀丸担当 さん 12/07/10 17:11
 

>いつも秀丸を便利に使わせていただいています。ありがとうございます。
>さて、マクロ登録→自動起動に追加の要望があります。
>ここに「何かキーが押されたら」のイベントを追加していただくことは可能でしょう
>か。

何か特定のキーを押したときにマクロを動かすということであれば、マクロ登録
して、キー割り当てでマクロをキーに割り当てるといいと思います。
そうだとしたらおそらくご存じだと思うので、どういう目的かがわかると何か適
切な方法もあるかもしれないです。

キー割り当てできないアルファベットのキー単体でも、何でも動作させたい場合
は、編集後タイマーでできそうです。
何でもいいからキーが押されたときの自動起動マクロは無いですが、「編集後タ
イマー」と「カーソル移動後タイマー」の両方に設定しておくと、たいていの
キーで動くことになると思います。

特定のシーンで、何でもいいからユーザーのキー入力の受付を待機するマクロを
作るという目的であれば、inputchar関数を使う方法と、iskeydownでループさせ
る方法の2つの方法があります。

[ ]
RE:31335 自動起動マクロへの追加要望No.31336
misono さん 12/07/10 17:25
 
>何か特定のキーを押したときにマクロを動かすということであれば、マクロ登録
>して、キー割り当てでマクロをキーに割り当てるといいと思います。
>そうだとしたらおそらくご存じだと思うので、どういう目的かがわかると何か適
>切な方法もあるかもしれないです。

秀丸リーダーを使用せずにマクロ+DLLで読み上げモジュールを作成しています。
この場合、上記の特定のキーでは、それこそある特定の動作を実行するための
キーバインドとなってしまい不向きです。

>キー割り当てできないアルファベットのキー単体でも、何でも動作させたい場合
>は、編集後タイマーでできそうです。
>何でもいいからキーが押されたときの自動起動マクロは無いですが、「編集後タ
>イマー」と「カーソル移動後タイマー」の両方に設定しておくと、たいていの
>キーで動くことになると思います。

確かに。しかしこれらの組み合わせでは編集もカーソルもアップデートされてい
ない場合のキーの挙動までは制御できません。たとえば EOF にカーソルがある
とき、さらに右矢印キーを押しても上記のイベントが平成24年7月9日(月)しない
ことになります。さらに右矢印を押した場合には、同じく EOF と読ませたいこ
とがあります。

>特定のシーンで、何でもいいからユーザーのキー入力の受付を待機するマクロを
>作るという目的であれば、inputchar関数を使う方法と、iskeydownでループさせ
>る方法の2つの方法があります。

なので inputchar は不向きで、
iskeydownのループだとCPUに付加がかかるのと、応答速度が落ちるであろうこと
が予測できます。
いかがでしょうか・・・?

[ ]
RE:31335 自動起動マクロへの追加要望No.31337
misono さん 12/07/10 17:27
 
>何か特定のキーを押したときにマクロを動かすということであれば、マクロ登録
>して、キー割り当てでマクロをキーに割り当てるといいと思います。
>そうだとしたらおそらくご存じだと思うので、どういう目的かがわかると何か適
>切な方法もあるかもしれないです。

秀丸リーダーを使用せずにマクロ+DLLで読み上げモジュールを作成しています。
この場合、上記の特定のキーでは、それこそある特定の動作を実行するための
キーバインドとなってしまい不向きです。

>キー割り当てできないアルファベットのキー単体でも、何でも動作させたい場合
>は、編集後タイマーでできそうです。
>何でもいいからキーが押されたときの自動起動マクロは無いですが、「編集後タ
>イマー」と「カーソル移動後タイマー」の両方に設定しておくと、たいていの
>キーで動くことになると思います。

確かに。しかしこれらの組み合わせでは編集もカーソルもアップデートされてい
ない場合のキーの挙動までは制御できません。たとえば EOF にカーソルがある
とき、さらに右矢印キーを押しても上記のイベントが機能しないことになります。
さらに右矢印を押した場合には、同じく EOF と読ませたいことがあります。

>特定のシーンで、何でもいいからユーザーのキー入力の受付を待機するマクロを
>作るという目的であれば、inputchar関数を使う方法と、iskeydownでループさせ
>る方法の2つの方法があります。

なので inputchar は不向きで、
iskeydownのループだとCPUに付加がかかるのと、応答速度が落ちるであろうこと
が予測できます。

いかがでしょうか・・・?

[ ]
RE:31335 自動起動マクロへの追加要望No.31338
あべのり さん 12/07/10 17:45
 
すみません,横から失礼します.本題とは関係ないのですが,気になることがあるの
で質問をさせてください.

>キー割り当てできないアルファベットのキー単体でも、何でも動作させたい場合
>は、編集後タイマーでできそうです。
>何でもいいからキーが押されたときの自動起動マクロは無いですが、「編集後タ
>イマー」と「カーソル移動後タイマー」の両方に設定しておくと、たいていの
>キーで動くことになると思います。

これらのマクロで「カーソルからの一文字入力」と「ペーストによる一文字入力」を
見分けることはできますか?

[ ]
RE:31337 自動起動マクロへの追加要望No.31339
K'zawa さん 12/07/10 21:41
 
K'zawaです。

>確かに。しかしこれらの組み合わせでは編集もカーソルもアップデートされてい
>ない場合のキーの挙動までは制御できません。たとえば EOF にカーソルがある
>とき、さらに右矢印キーを押しても上記のイベントが機能しないことになります。

逆に文頭で左矢印では、カーソル移動後タイマーがきくところが謎ですね。

[ ]
RE:31339 自動起動マクロへの追加要望No.31340
秀丸担当 さん 12/07/11 10:24
 

>>確かに。しかしこれらの組み合わせでは編集もカーソルもアップデートされてい
>>ない場合のキーの挙動までは制御できません。たとえば EOF にカーソルがある
>>とき、さらに右矢印キーを押しても上記のイベントが機能しないことになります。
>
>逆に文頭で左矢印では、カーソル移動後タイマーがきくところが謎ですね。

確かにファイル先頭の左矢印では効いて、EOFでの右矢印は効いていませんでし
た。
行頭でHomeや、行末でEndでも効きました。
EOFの右矢印だけは例外的に扱ってしまっていました。
EOFの右矢印でも同じように動くようになったほうがいいと思うので、そのよう
に修正させていただきます。

>なので inputchar は不向きで、
>iskeydownのループだとCPUに付加がかかるのと、応答速度が落ちるであろうこと
>が予測できます。

リーダー用マクロが目的ということで、言われている通りinputcharは不向きで、
iskeydownは負荷がかかると思います。

[ ]
RE:31338 自動起動マクロへの追加要望No.31341
秀丸担当 さん 12/07/11 10:27
 

>これらのマクロで「カーソルからの一文字入力」と「ペーストによる一文字入力」を
>見分けることはできますか?

編集後タイマーで遅延が0msのとき限定になりますが、geteventparam(4) で、
IMEを介さない直接入力の一文字か、それ以外かを判定することはできます。
どういう目的かによると思いますが、とりあえずこれでどうでしょうか。

[ ]
RE:31341 自動起動マクロへの追加要望No.31342
あべのり さん 12/07/11 13:29
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>どういう目的かによると思いますが、とりあえずこれでどうでしょうか。

ありがとうございます.確かにこれで判定できそうです.

[ ]
RE:31340 自動起動マクロへの追加要望No.31345
misono さん 12/07/11 17:19
 
>確かにファイル先頭の左矢印では効いて、EOFでの右矢印は効いていませんでし
>た。
>行頭でHomeや、行末でEndでも効きました。
>EOFの右矢印だけは例外的に扱ってしまっていました。
>EOFの右矢印でも同じように動くようになったほうがいいと思うので、そのよう
>に修正させていただきます。

私自身はこれで十分なのですが、マクロを公開すると、
ユーザーから、あるキーが押されたらこういう風に読み上げてほしいとか
要望が出そうなので、できれば、何かキーが押された、というイベントが
マクロで実装できたらなあと思っています。

検討していただけますと幸いです。

[ ]
RE:31345 自動起動マクロへの追加要望No.31346
misono さん 12/07/12 07:15
 
たびたびすいません。

たとえば、カーソル移動後タイマーにマクロを登録しておいて、そのマクロ内で、
どのコマンドで実行されたかを条件で判定したいのですが、
やり方はありますでしょうか。

たとえば、{ } へジャンプはデフォルトだと Ctrl+K に割り当てられていると
思いますが、メニューから実行されるケースもあるし、キーの割り当てが
変更されて実行されるケースもあるし、それらを判定したいのですが?

[ ]
RE:31346 自動起動マクロへの追加要望No.31347
秀丸担当 さん 12/07/12 10:19
 

>私自身はこれで十分なのですが、マクロを公開すると、
>ユーザーから、あるキーが押されたらこういう風に読み上げてほしいとか
>要望が出そうなので、できれば、何かキーが押された、というイベントが
>マクロで実装できたらなあと思っています。

一般的には、あるキーが押されたらある操作をしたいという場合、幾つかの機能
のマクロを用意しておいて、ユーザーがキー割り当てで任意のキーに任意のマク
ロを割り当てるということになるかと思います。

自動起動マクロは、現状の編集後タイマーとカーソル移動後タイマーで、けっこ
うなオーバーヘッドになってしまっているので、さらにいろいろ追加するのはつ
らいところですが、できたらいいということでご意見参考にさせていただきます。

>たとえば、カーソル移動後タイマーにマクロを登録しておいて、そのマクロ内で、
>どのコマンドで実行されたかを条件で判定したいのですが、
>やり方はありますでしょうか。

いまのところカーソル移動後タイマーによるコマンドを知る方法は無いです。
geteventparamで取得できる情報に追加することは比較的簡単です。
追加を検討します。

[ ]
RE:31347 自動起動マクロへの追加要望No.31348
misono さん 12/07/12 10:56
 
>自動起動マクロは、現状の編集後タイマーとカーソル移動後タイマーで、けっこ
>うなオーバーヘッドになってしまっているので、さらにいろいろ追加するのはつ
>らいところですが、できたらいいということでご意見参考にさせていただきます。

了解しました。

>>たとえば、カーソル移動後タイマーにマクロを登録しておいて、そのマクロ内で、
>>どのコマンドで実行されたかを条件で判定したいのですが、
>>やり方はありますでしょうか。
>
>いまのところカーソル移動後タイマーによるコマンドを知る方法は無いです。
>geteventparamで取得できる情報に追加することは比較的簡単です。
>追加を検討します。

これについては、早めに対応していただけましたらと思っています。
geteventparamの戻り値でCommandIDを取得し対応する処理を行うといった具合に
なりますかね。

よろしくお願いいたします。

[ ]
RE:31348 自動起動マクロへの追加要望No.31352
秀まるお2 さん 12/07/12 16:55
 
 秀丸担当の方で修正したバージョンですが、明日(金曜日)中にV8.20β29と
してアップロード予定とさせていただきます。

[ ]
RE:31352 自動起動マクロへの追加要望No.31357
misono さん 12/07/16 15:06
 
> 秀丸担当の方で修正したバージョンですが、明日(金曜日)中にV8.20β29と
>してアップロード予定とさせていただきます。

確認しました。おもしろいようにコマンドが取り出せます!いろいろできそうで
す。

ありがとうございました。

[ ]