keyconfigでCtrl+SPACEにPageUpを割り当てる

FirefoxではSPACEキーにPageDown、Shift+SPACEにPageUpが割り当てられている。しかし、LinuxだとShift+SPACEはIMEの起動キーだったりするのでちょっと困っていた。そこでkeyconfigを使ってCtrl+SPACEにPageUpを割り当てる方法を調べた。
結論から言えば、最も簡単に実現するには次のようにすればいい。

  • keyconfigをインストール
  • 設定画面から「新しいキーを追加」→名前:scrollPageUp(任意)、Globalをチェック、内容を以下のようにする
goDoCommand('cmd_scrollPageUp');
  • キー入力欄でCtrl+SPACEを押して「適用」
  • Firefoxを再起動

この方法で、あとは好みに合わせていくらでも別のキーバインディングを追加できる。user.jsの編集などは必要ない(Firefox 2.0 + keyconfig 20060828 版で確認)。

裏側を覗く

この設定を行った後で、about:configには以下の内容が追加されている。

keyconfig.main.xxx_key__scrollPageUp control][ ][][goDoCommand('cmd_scrollPageUp');][

逆に言えば、about:configにこの内容を直接書き込んでも良い。
(というか実はこちらの方法から逆に上の方法を発見した)

ちなみにgoDoCommand('cmd_scrollPageUp')の部分はmozless*1のソースを読んで見つけた。

追加

Ctrl+, Ctrl+. で前後のタブに移動する

keyconfig.main.xxx_key__nextTab control][.][][gBrowser.mTabContainer.advanceSelectedTab(1);][
keyconfig.main.xxx_key__prevTab control][,][][gBrowser.mTabContainer.advanceSelectedTab(-1);][

これは便利。

さらに追加

Ctrl+Shift+J Ctrl+Shift+K で上下1行スクロールする

keyconfig.main.xxx_key__scrollLineDown control shift][J][][goDoCommand('cmd_scrollLineDown');][
keyconfig.main.xxx_key__scrollLineUp control shift][K][][goDoCommand('cmd_scrollLineUp');][

いや1行なんてケチくさいこと言わないで、いっそ3行ぐらい一気にスクロールしたらどうだろう?

keyconfig.main.xxx_key__scrollLinesDown control shift][J][][goDoCommand('cmd_scrollLineDown');goDoCommand('cmd_scrollLineDown');goDoCommand('cmd_scrollLineDown');][
keyconfig.main.xxx_key__scrollLinesUp control shift][K][][goDoCommand('cmd_scrollLineUp');goDoCommand('cmd_scrollLineUp');goDoCommand('cmd_scrollLineUp');][

スクロール量はお好みで。自分は5行にしてみた。

さらに^2追加

Ctrl+Dで(ブラウザのブックマークではなく)はてなブックマークに追加する
(事前にCtrl+Dの割り当てを外しておく)

keyconfig.main.xxx_key__addHatenaBookmark control][D][][var url='http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title='+escape(content.document.title)+'&url='+escape(content.document.location.href);gBrowser.selectedTab=gBrowser.addTab(url);][

見づらいのでスクリプト部分だけ抜粋したものはこちら:

var url = 'http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title='+escape(content.document.title)+'&url='+escape(content.document.location.href);
gBrowser.selectedTab = gBrowser.addTab(url);

正直、こんなことができるとは思わなかった。キーボードショートカットから任意のJavascriptが実行できるなら何でもやり放題じゃん!

*1:Google Readerと相性が悪いのでmozless自体は使っていない