お気に入りのGreasemonckeyスクリプトにショートカットを追加する
今日のお題は、こたにきさんのniconicoplaylist.user.jsにショートカット機能への追加です。
niconicoplaylistは、ニコニコ動画にプレイリストを追加するすてきなスクリプトなのですが、下記のような操作の場合にいちいちミニWindowを開く必要があり、個人的にはそれがちょっと面倒でした。
- プレイリスト追加モード、ノーマルモードの切替
- リスト登録動画の再生ボタン
- 途中でその動画見るのをやめて次の動画に飛ばしたい場合
ってことで、ショートカットキーをniconicoplaylistに追加してみましょう。ショートカットを追加するには、Handling Keyboard Shortcuts in JavaScript(BSDライセンス)を使用してみます。@require で、インポートできればよかったのですが、なぜかできなかったため、とりあえずコピーで取り込みます。
].forEach( function ([eventname, func]){ Util.observe(window.content, eventname, func, false); }); //niconicoplaylistの末尾近くです。 //------------------------------------------------------- //Handling Keyboard Shortcuts in JavaScript //------------------------------------------------------- /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ var shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } //以下省略・・・・
で、次にショートカットキーを設定していきます。
if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } } //------------------------------------------------------- //ここまで、Handling Keyboard Shortcuts in JavaScript(BSD) //------------------------------------------------------- //上記を使った設定 //キーのバインドは趣味で。 //あと、他の機能にもショートカットを張りたい場合は、 //あきらめてソース読むこと。ボタン名から探してけば、 //結構簡単に見つかります。 // ADDにモード変更 shortcut.add("Alt+a",function() { controller.setMode('add'); }); // Normalにモード変更 shortcut.add("Alt+n",function() { controller.setMode('none'); }); // 再生ボタンの中身 shortcut.add("Alt+p",function() { controller.playNext(); }); // 画面の最大化 shortcut.add("Alt+z",function() { player.setFullScreen(true); }); // 画面の最小化 shortcut.add("Alt+x",function() { player.setFullScreen(false); });
こんな感じで、多少JavaScriptが読めれば、お気に入りのスクリプトにショートカットを足していくことが可能です。