livedoor Reader のホットキーをカスタマイズするブックマークレット

いずれ設定で変更できるようになると思いますが、やってみました。基本的に私個人の好みに従ったカスタマイズになっています。

挙動を微妙に変更:

  • k: 上の記事へ。無ければ前のフィードへ
  • space: 下スクロール。一番下まで行くと次のフィードへ
  • v: 現在の記事を開く (一つのウィンドウを使いまわす)

削除:

  • enter, shift+enter: デフォルトの動作に

"k" は上へ行き過ぎる (前のフィードに行く) ようにしたんですが、"j" は行き止まりになるようにしました: 現在の記事が最後かどうかは分かりにくい場合があり、意図せず次のフィードへ行ってしまうケースが多発するためです。

その代わりにスペースの動作を変更し、これ一つでフィードを読み進められるようにしました。

enter キーに関しては、フォーカスが置かれているリンクをブラウザで開きたいので (つまり、マウスを使いたくないので) 削除しました。

"v" キーやエンター、クリックでの記事表示についてですが、一つのウィンドウを使いまわすようにしました。これは好みが別れるんでしょうかね? Bloglines では設定可能だったと思います。


追加:

  • b: 現在の記事をブックマーク (id:reinyannyan:20060501:p1)
  • d: 現在の記事を消して次の記事へ。消すべき記事が無ければ次のフィードへ

"d" の動作は、現在機能のみ提供されていて使用はされていないものです。スペースの代用としても使えるかも知れません。

IE の字数的にはかなりギリギリです:

よろしければどうぞ。

Update [20060512]:

記事の描画中にスペースを押しすぎても次のフィードに行かないようにしました。


追記 [20060523]:

昨日のバージョンアップで "d" の機能が廃止になりました。関連する (削除分を記録したり戻したりする) メソッド等もごっそり消えているので復活の可能性は低いかも知れません。

有れば面白いという感じで、無くて困る機能ではないわけですが、作りかけと思しきものを勝手に使ってしまったのはマズかったですね…


Update [20060527]:

現在は、私自身は全ての拡張を一つの外部スクリプトで行う方法を採っています。キーバインド関連はおよそこんな感じになっています:


(利用していただく場合は id:reinyannyan:20060515:p1 を参照してください)


初期バージョンとの主な相違点:

  • g: ページのトップへ (本当は vi 風に gg としたいところです)
  • G: ページの最下部へ
  • m: ウィンドウの最大化のトグル (Bloglines を意識しました)
  • q/Q: ウィンドウを閉じる
  • x: 現在の「記事」を読んだことにして次へ (「フィード」の未読・既読とは関係ありません)


技術的な補足:

既存のキーバインドを変更するために custom_control という関数を使用しています。これは、既にキーバインドが設定された後でオリジナルの関数 (メソッド) を書き換えても効果が無いため、必要な工夫です。

つまり、

function key_function(){...};
var key = key_function;

とした後で key_function を定義し直しても、key は元の関数への参照を保っているため、変更は反映されないのです。

JavaScript (に限らないでしょうが) で嵌りやすい罠の一つではないかと思います (Greasemonkey 等で、割り当ての前に関数を変更できる場合は問題ありません)。