秀丸エディタマクロの「KeyboardMacro拡張」とか、「クリップボード履歴の取り込み」、さらには、セキセイニャンコ(nyan)さん作成の「NYANKEY ver 3 ...文字列 Cut&Paste バッファ× 280個」の登録をしようとしたときに、大量のショートカットキーの設定が必要になります。
ただ、秀丸エディタのキー割り付けのダイアログボックスって、ショートカットキーを指定して、そのあとに、割り当てる機能を選択するようなダイアログボックスなので、同じマクロを、違うショートカットキーに割り付ける作業は、無意味に、大変です。(新たなショートカットキーを割り付けるとき、かならず、最初は、(なし)から始まるので、そのあとの同じ機能選択をひたすら繰り返す羽目になる。)
そして、h-tomさん作成の「キー設定マクロ(key-assign-set.mac)」なるものを見つけて、どうやら、秀丸エディタ自体のショートカットキーの設定のレジストリやその取り込みの挙動を解析して実現したようで、すごそうなのですが、ただ、どうやら、ませまさん作成の「キー割り当て拡張マクロ」を使った場合のiniファイルを読み込んで動作するようです。
まだ、ませまさん作成の「キー割り当て拡張マクロ」は使ったことがないのですが、どうも、機能概要を見ても、自分には、必要そうがありません。
で、ここまでのところで、WSHで、秀丸エディタのモーダルダイアログを操作してきているので、同様に、秀丸エディタの「キー割り当て」ダイアログボックスを操作してしまうのはどうだろうと思ってしまい、まずは、「キー割り当て」ダイアログボックスの中のキーリストと、そのキーのiskeydown関数のコードを調べてみました。
秀丸エディタV6.11のキー割り当てダイアログのキーリスト
この表の中の[採取データ]を元に、[テーブルデータ]のように、マスターテーブルを作って、そのインデックスを参照するように、Shift/Ctrl/Altの状態で、テーブルを切り替えようと考えてみました。
そのあと、WSHのSendKeysで、本当に、登録済みのマクロのショートカットキーの設定ができるものかどうかを、まずは、KeyboardMacro拡張のEVAL機能を使って試していたら、あまり、汎用性を考えなければ、このEVALとキーボードマクロだけで、うまくいきそうです。
まあ、一度、設定してしまったら、そんなに、頻繁に設定するものでもないし、ここまでの情報を元に、設定の度ことに、キーボードマクロで、設定するだけで良いような気がしてきました。(まぁ、もう少し、頑張るんだったら、秀丸エディタのマクロをハードコーディングしても良いかもね。)
以下は、私のマシン上でのディレクトリパスや、設定するマクロの番号が固定だったりするので、調整が必要になります。
○ Alt+Shift+0~9を(なし)をマクロ41に設定する場合
$_=61~70
#M=41;$K="%L%S%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+Ctrl+1~9をマクロ41に設定する場合
$_=62~70
#M=41;$K="%L%S%T%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Ctrl+Num0~Num9をマクロ41に設定する場合
$_=75~84
#M=41;$K="%L%T%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+0~9を(なし)にクリアする場合
$_=61~70
$KEY_SEQUENCE="%L%S%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+Ctrl+1~9を(なし)にクリアする場合
$_=62~70
$KEY_SEQUENCE="%L%S%T%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Ctrl+Num0~Num9を(なし)にクリアする場合
$_=75~84
$KEY_SEQUENCE="%L%T%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
ただ、秀丸エディタのキー割り付けのダイアログボックスって、ショートカットキーを指定して、そのあとに、割り当てる機能を選択するようなダイアログボックスなので、同じマクロを、違うショートカットキーに割り付ける作業は、無意味に、大変です。(新たなショートカットキーを割り付けるとき、かならず、最初は、(なし)から始まるので、そのあとの同じ機能選択をひたすら繰り返す羽目になる。)
そして、h-tomさん作成の「キー設定マクロ(key-assign-set.mac)」なるものを見つけて、どうやら、秀丸エディタ自体のショートカットキーの設定のレジストリやその取り込みの挙動を解析して実現したようで、すごそうなのですが、ただ、どうやら、ませまさん作成の「キー割り当て拡張マクロ」を使った場合のiniファイルを読み込んで動作するようです。
まだ、ませまさん作成の「キー割り当て拡張マクロ」は使ったことがないのですが、どうも、機能概要を見ても、自分には、必要そうがありません。
で、ここまでのところで、WSHで、秀丸エディタのモーダルダイアログを操作してきているので、同様に、秀丸エディタの「キー割り当て」ダイアログボックスを操作してしまうのはどうだろうと思ってしまい、まずは、「キー割り当て」ダイアログボックスの中のキーリストと、そのキーのiskeydown関数のコードを調べてみました。
秀丸エディタV6.11のキー割り当てダイアログのキーリスト
この表の中の[採取データ]を元に、[テーブルデータ]のように、マスターテーブルを作って、そのインデックスを参照するように、Shift/Ctrl/Altの状態で、テーブルを切り替えようと考えてみました。
そのあと、WSHのSendKeysで、本当に、登録済みのマクロのショートカットキーの設定ができるものかどうかを、まずは、KeyboardMacro拡張のEVAL機能を使って試していたら、あまり、汎用性を考えなければ、このEVALとキーボードマクロだけで、うまくいきそうです。
まあ、一度、設定してしまったら、そんなに、頻繁に設定するものでもないし、ここまでの情報を元に、設定の度ことに、キーボードマクロで、設定するだけで良いような気がしてきました。(まぁ、もう少し、頑張るんだったら、秀丸エディタのマクロをハードコーディングしても良いかもね。)
以下は、私のマシン上でのディレクトリパスや、設定するマクロの番号が固定だったりするので、調整が必要になります。
○ Alt+Shift+0~9を(なし)をマクロ41に設定する場合
$_=61~70
#M=41;$K="%L%S%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+Ctrl+1~9をマクロ41に設定する場合
$_=62~70
#M=41;$K="%L%S%T%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Ctrl+Num0~Num9をマクロ41に設定する場合
$_=75~84
#M=41;$K="%L%T%K{DOWN "+$_+"}%C^{END}{UP}{TAB}^{HOME}{DOWN "+str(#M+7)+"}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $K + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+0~9を(なし)にクリアする場合
$_=61~70
$KEY_SEQUENCE="%L%S%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Shift+Ctrl+1~9を(なし)にクリアする場合
$_=62~70
$KEY_SEQUENCE="%L%S%T%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
○ Alt+Ctrl+Num0~Num9を(なし)にクリアする場合
$_=75~84
$KEY_SEQUENCE="%L%T%K{DOWN " + $_ + "}%C^{HOME}{TAB}^{HOME}"; run "wscript.exe \"C:\\Program Files\\Hidemaru\\Macro\\KeyboardMacro拡張\\KeyboardMacroEx.vbs\" \"" + $KEY_SEQUENCE + "\" \"Not fond ERROR\" /W:\"キー割り当て\" /T:5"; keyassign;
※コメント投稿者のブログIDはブログ作成者のみに通知されます