フォーラムの返信を作成しました。
- 作成者投稿
- uruメンバー
今回ご報告させていただいた、「Ctrl を押していると、一部のショートカット(C, H, I, J, M、つまり Ctrl+C, Ctrl+H, Ctrl+I, Ctrl+J, Ctrl+M)が機能しない件」ですが、EmEditor 依存では無いようですので、ご報告させていただきます。お騒がせしました。
OS やアプリケーションにかかわらず再現する現象のようです。Windows7 や、別の PC の Windows XP でも現象が確認でき、別のアプリケーションでも、ポップアップメニュー上で同様の挙動が確認できました。
いろいろと検索して調べていますが、何に依存した現象なのか、ヒントが得られていません。
実現したいこととしては、Ctrl を押したままの Q->C などの2ストローク入力です。ポップアップを使わずに Ctrl+Q に続くキーイベントを取得してマクロを実行するような方法があれば対処できるのですが、どなたかアイデアがありましたら教えていただけないでしょうか。
どうぞよろしくお願いいたします。
uruメンバー江村様
早速のご確認、ご回答、ありがとうございます!
標準設定の Ctrl+K に割り当てられている「ユーザーメニュー(1)」の挙動で確認してみました。
私の環境では、ポップアップメニューの表示がされる前でも、また、後でも、Ctrl+K -> K は Ctrl を押したままで正しく機能しました。
ただ、Ctrl+K -> C については、ポップアップメニューが表示される前では Ctrl を押したままで正しく機能するものの、表示された後では、ご指摘のように Ctrl を離さないと受け付けられませんでした。
2番目のキー(ポップアップメニュー中のショートカット)について、C, H, I, J, M の場合のみ、Ctrl を押したままだと受け付けられず、ほかのキーについては、押したままで受け付けられています。すべてのキーが受け付けられないのではなく、特定のキーのみ、挙動が違うようなのです(これについては環境依存でないか、別の環境でも挙動を確認してみます)。
ユーザーメニュー(1) に関しては、ポップアップの表示を遅延させることで現象の回避が正しくできました。ありがとうございます!
ただ、先の VZ化スニペット(http://jp.emeditor.com/modules/news/article.php?storyid=121)では、たとえば Ctrl+Q に対して、マクロでその場でポップアップメニューを生成して表示し、2ストローク対応をしています。ポップアップメニュー中の R (^QR) は Ctrl を押したまま機能するのですが、C (^QC) は Ctrl を押したままだと認識されません。マクロによるポップアップメニューの処理についても、同様に表示の遅延を設定するような方法があれば教えていただけないでしょうか。以下簡単なサンプルです。
var mainMenu = CreatePopupMenu();
mainMenu.Add( “&R text top”, 4168 ); // OK with Ctrl
mainMenu.Add( “&C text bottom”, 4169 ); // NG with Ctrl
var selectedID = mainMenu.Track(0);
if (selectedID != 0){
editor.ExecuteCommandByID(selectedID);
}長文になってしまいすみません。引き続きよろしくお願いいたします。
- 作成者投稿