KeySnail+Scrollet

Firefox アドオンの KeySnail に、スクロールに関する機能を追加する Scrollet プラグインを入れて、KeySnail の設定ファイル(_keysnail.js)を少し変更。

key.setViewKey('j', function (ev) {
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
}, '5行スクロールダウン');

key.setViewKey('k', function (ev) {
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
    key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
}, '5行スクロールアップ');

上のように書いていたのですが、Scrollet の機能を使って以下のようにしました。

key.setViewKey('j', function (ev) {
    plugins.scrollet.scrollLines(5)
}, '5行スクロールダウン');

key.setViewKey('k', function (ev) {
    plugins.scrollet.scrollLines(-5)
}, '5行スクロールアップ');

コードスッキリ!

あと、vim のマークのようなこともできるようなので以下のように記述。

key.setViewKey('m', function (ev, arg) {
    ext.exec("scrollet-set-mark", arg, ev);
}, '現在の位置をマークに保存', true);

key.setViewKey('C-m', function (ev, arg) {
    ext.exec("scrollet-jump-to-mark", arg, ev);
}, 'マークに保存された位置へジャンプ', true);

vim とは違ってファイルを超えたマークは出来ず、ブラウザを終了するとマーク位置情報は消えるみたいです。それでも一時的に場所を記録できるのは長いページでは便利だなー。