gotin blog

Whatever gotin wanna write

gmacsでGreasemonkeyスクリプト起動のキーボードショートカットを定義

ちょっといいことを思いついたような気がしています。気のせいだとは思いますが。

[背景]
GreasemonkeyスクリプトのSBMCommentsViewerを便利に使わせてもらっています。
だけどいつも表示するんじゃなくて、キーボードショートカットで実行を制御できたりしないだろうか、と思っておりました。
(コメント一覧表示 - カウント表示のトルグのショートカットはオリジナルの機能になっていますが、実行そのものを制御したい、ということです)

↑実はもともとちゃんと実行の制御もできていたそうです。
↓つっこみをいただいておりました。以下実行の制御方法を引用させていただきます。

silog - diary/2007-01-08/SBMCommentsViewerの実行そのものを制御したい〜出来るよっ!〜
一番上の Comment / TagCloud? / Auto start の

Auto Start

というところをクリックして自動で実行しないようにすれば、
ページを開いて最初の Alt + C でリクエストを投げるってことになってます。


いろいろなGreasemonkeyスクリプトで「使いたい」というタイミングで使えるようになればいいのになぁ、と感じていたわけです。

[思いつき]
gmacsならそれが割と簡単にできます。

[やり方]
まず、Greasemonkeyスクリプトを gmacsファイルパスの/plugins/以外のところにインポート*1します。
たとえば /js/hoge.user.js*2

次に、/plugins/ 直下のところにキーボードショートカット定義用の*.jsを作成します。
たとえば /plugins/keyconfig.js

# init.jsの中でもいいです。

そこに、以下のようなコードを書いて保存します。


document.addEventListener("keydown",
function(event){
if(KeyProcessor.code(event) == "C-q"){
Executer.execute("/js/hoge.user.js")
}
},
true);

できたら適当なページにアクセスします(リロードでよいです)。
すると、コントロールキーを押しながらqを押すことで、
hoge.user.jsを実行することができます。



[追記]
最新版gmacs.user.jsではもっと簡単に書けるようにしました。

KeyProcessor.addShortCutExec("C-n", "/js/hoge.user.js", false);

の一行でOKです。


KeyProcessor.addShortCutExec("C-n", "/js/hoge.user.js", true);

と書くとgmacsが起動しているとき(編集画面が表示されているとき)に機能します。
第3引数がtrueならgmacsが起動してるとき、falseなら起動していないときに
第2引数で指定したパスのjavascriptを実行します。


KeyProcessor.addShortCutExec("C-n C-m", "/js/hoge.user.js", false);

と書いてもよいです。この場合はコントロールキーを押しながらnを押し、続けてコントロールキーを押しながらmを押す設定になります。


KeyProcessor.addShortCutExec("C-n", ["/js/hoge.user.js","/js/foo.user.js"], false);

と書くと、コントロールキーを押しながらnを押すと、/js/hoge.user.js と /js/foo.user.jsを実行します。

*1:インポートの仕方については「[http://d.hatena.ne.jp/gotin/20061208/1165512154:title=GreasemonkeyEmacsチックなテキストエディタ]」をごらんください。

*2:インポート機能によるデフォルトの保存先は/plugins/以下になっているので別のディレクトリ以下になるようにしないとダメです。