- 作成者投稿
- 2009年1月24日 4:57 am #6990kshi参加者
※ 書き込み後に[編集]でかなり直しました。
キーアサインを動的に変更するマクロを作ろうと、いろいろ試しているうちに疑
問がわきましたので書かせていただきます。以下のマクロを実行すると、[無題]テキストにキーアサインのリストを出力しま
す。editor.NewFile();
cfg = document.Config;
keylist = cfg.Keyboard.List;
keylist.Add(0x4E, eeCtrl, 4195); //Ctrl+Nを「上に行挿入(4195)」に割り当てる ×
//keylist.Add(0x4E, eeCtrl+1, 4195); //Ctrl+Nを「上に行挿入(4195)」に割り当てる ○
cfg.Save();for(i = 1; i <= keylist.Count; i++){ item = keylist.item(i); document.writeln( "item.key: " + item.Key.toString() + "t(0x" + item.key.toString(16) + ")" + "tItem.Flags:" + item.Flags + "tItem.command:" + item.command ); } document.writeln("eeVirtualKey: " + eeVirtualKey); document.writeln("eeCtrl: " + eeCtrl); document.writeln("eeShift: " + eeShift); document.writeln("eeAlt: " + eeAlt);
リストの最後の4行は Ctrl, Shift, Alt 押下時の定数を出力します。
eeVertualKey: 1
eeCtrl: 8
eeShift: 4
eeAlt: 16ちなみに、マクロリファレンスでは以下のとおり説明されています。
【KeyboardItem オブジェクトのFlags プロパティ説明】
eeVirtualKey オブジェクトの Key プロパティは、仮想キー コードであるこ
とを示します。このフラグが指定されていない場合、Key プロ
パティは文字コードを示すことになります。
eeShift SHIFT キーを押しながら、指定するキーを押すことを示します。
eeCtrl CTRL キーを押しながら、指定するキーを押すことを示します。
eeAlt ALT キーを押しながら、指定するキーを押すことを示します。■ Ctrl は 9 ?
Ctrl+Nを「上に行挿入(4195)」に割り当てるコードも入っています。
リストの最後あたりに Flags:8 と出力されるはずです。item.key: 78 (0x4e) Item.Flags:8 Item.command:4195
ところが、他の Ctrl + ? の Flags は全て 9 になっています。
[無題]テキストのキーアサインを[ツール]→[現在の設定のプロパティ]→[キーボ
ード]で調べると、確かに Ctrl + N が追加されています([テキストの新規作成]
のキーアサインは消えている)が、キーボードから Ctrl + N を入力しても反応し
ません。一方、[ツール]→[すべてのコマンド]からメニュー選択すると実行でき
ます。どうも Flags が eeCtrl だけではNGらしいので、+1 してやると、
・Ctrl+N
item.key: 78 (0x4e) Item.Flags:9 Item.command:4195とリスト出力され、キーボードから Ctrl + N で実行できます。
■ Ctrl + Shift は 13 ?
複数のシフトキーを押した場合も、合計値に +1 する必要があるようです。シフ
トキーなしの Tab も Flags:1 となっていることからも +1 が既定ということで
しょうか。・Tab
item.key: 9 (0x9) Item.Flags:1 Item.command:4188・Ctrl+Tab
item.key: 9 (0x9) Item.Flags:9 item.Command:4245・Shift+Tab
item.key: 9 (0x9) Item.Flags:5 item.Command:4189・Ctrl+Shift+Tab
item.key: 9 (0x9) Item.Flags:13 item.Command:4246「eeVertualKey +1 が既定になる」「+1 しなくても設定に追加されるのは仕様外である」という考え方で良いのでしょうか。ご教示いただければ幸いです。
2009年1月24日 6:45 pm #6992Yutaka Emuraキーマスター+1 というのは eeVertualKey のことですね。
値は、これらのフラグの組み合わせの合計になるため、たとえば、Tab は eeVertualKey だけで 1
Ctrl+Tab は eeVirtualKey + eeCtrl = 9
Shift+Tab : eeVirtualKey + eeShift = 5
Ctrl+Shift+Tab : eeVirtualKey + eeCtrl + eeShift = 13となります。これでおわかりでしょうか?
他にも何かご質問がございましたらご連絡ください。8.02 正式版はまもなく公開したいと思いますが、それまでに何か不具合などがありましたら修正したいと思いますので、おはやめにご連絡ください。よろしくお願いします。2009年1月25日 2:10 am #6993kshi参加者江村さん、ご回答ありがとうございます。
当初、eeVirtualKey を eeVertualKeyとタイプミスして、
「宣言されていません」エラーが出て、一人で混乱しておりました。KeyboardList コレクションひとつ取り上げてみても、
EmEditorの深部に立ち入る仕組みが用意されており、
いろいろなことが出来そうです。2009年1月26日 11:24 am #7005kshi参加者特殊キーのコードを調べるのがちょっと面倒くさいな~と
思っていたら、ライブラリにEmurasoftさんによる・ 秀丸エディタのキー割り当てをインポートするマクロ
があるのに今頃気づきました。
良いリファレンスになります。 - 作成者投稿
- このトピックに返信するにはログインしてください。