[ 新規に投稿する ]

menuからのCtrl+INo.10200
igus さん 23/10/05 20:30 [ コメントを投稿する ]
  メニューからの選択で Ctrl を押している場合と押していない場合とでマクロの挙動を変えたい場合があるのですが、使っていてちょっと気になる動作があったので教えてください。

//=== ctrlチェック.mac ここから ===

#fc=0;setmenudelay 1000;
mousemenu
"&A ctrlチェック1",
"&I ctrlチェック2";

#res=result;
if(iskeydown(0x11))#fc=1;
if(#res==0)endmacro;
if(#fc){message "ctrlが押された";}
else{message "ctrlが押されてない";}

//=== ctrlチェック.mac ここまで ===

こんなマクロでメニューが表示されている場合「Ctrl+A」は使えるのですが「Ctrl+I」の方はメニューが選べないようです。
メニューの表示される前やマウスを使っての選択は可能なのでそれほど困ることはないのですが、なにか制限があるのでしょうか?
[ ]
RE:10200 menuからのCtrl+INo.10201
秀丸担当 さん 23/10/06 10:14 [ コメントを投稿する ]
  確かにそうなることが確認できました。
一通りしてみたら、なぜだか、Windows標準のメニューは特定のキーが効かないようでした。
C H I J Mができないようです。
コンソールアプリでは一般的に^C中断、^Hバックスペースとか、タブ、改行(LF)、改行(CR)に相当するキー操作なのだと思いますが、メニューでは関係ないはずで、何のために使われているのか謎です。

秀丸エディタの場合、ユーザーメニューの遅延時間、ユーザーメニューでは2ストロークキーのために自前で処理していました。
menu文のsetmenudelayの期間も自前でした。
menu文でいったんメニューが出ると自前の処理がなくてだめでした。
この場合もできるようになんとかします。
[ ]
RE:10201 menuからのCtrl+INo.10202
igus さん 23/10/06 14:43 [ コメントを投稿する ]
  windows 標準のキー操作が何故か悪さをしてるらしいということで、了解しました。
マクロを呼ぶのに emacs っぽく C-xC-i なんてキーバインドとかで使ってたのですが、タイミングによってうまく発動してくれないのはちょっとしたストレスでした。なんとかしてもらえるなら嬉しいです。
ありがとうございました。
[ ]

[ 新規に投稿する ]