tumblrのキーボードショートカットが便利になっとる。2012年10月17日 21時41分27秒

すんごい久しぶりにtumblrのことなど

それ以前にブログ更新するのがすんごい久しぶり、ってのは置いておいて。

いまだにメインブラウザがFirefoxなもので、tumblrのダッシュボード向けに、執念深く古いグリモン+Minibuffer+LDRize+Autopagerizeという環境で回しているんだけども、最近ふと気が付いたらダッシュボードでjした時に「カクッ」と動くようになってることに気付いた。

いつのまにか標準キーバインドが復活しとる

結構前からダッシュボードには、標準でキーバインドが組み込まれてて、使いづらいので これをキャンセルするグリモンスクリプトを組み込んでたんだけど、どうやらこれが効かなくなったらしい。

何日か前にこれに気付いて、なんとかキャンセルできるようにしたんだが、今日になったらまたコードが効かなくなってた。矢継ぎ早なアップデートみたい。

なんとか解除してみる

仕方ないのでまたJSのデバッグコンソールをごにょごにょいじって調べたところ、いつの間にやらキーバインドを処理するための Tumblr.KeyCommands なるオブジェクトが加わってて、これが suspended プロパティやら、suspend() メソッドなんかが実装されてることが分かったので、ためしにグリモンで

unsafeWindow.Tumblr.KeyCommands.suspend();
なんてやってみたら見事にキャンセルできた。

ところで、標準キーバインドってなにができるん?

KeyCommands 周りを調べてる過程で気づいたんだけど、「like」とか「reblog」、「notes」、「play」なんて興味深いメソッドが実装されてて興味が出たので、どんなキー操作ができるのかを調べてみた。tumblrのほうにエントリ挙げたけどあんまり見やすくないので、以下にもう一度まとめておく。

j(ジェイ)次のpostへ移動
k(ケー)前のpostへ移動
l(エル)like / like解除
n(エヌ)notesを開く / 閉じる
r(アール)reblog(別ウィンドウが開く)
R(Shift+アール)即時reblog
E(Shift+イー)キュー(投稿予約)へreblog
スペース動画再生?(未確認)
カーソルキー左前のページへ
カーソルキー右次のページへ

謎の処理もあるんだけども

この他に修飾キー(Windowsの場合はWindowsキー、Macの場合はoptionキーと思われる)を押しながら以下のkeyCodeでTumblr.blog_switcher()という処理を呼び出してるみたい。

Windows 9(Tab)、27(Esc)、192(???)
Mac 9、27、192、37(カーソル左)、39(カーソル右)

なんだけど、これが何をするのかよくわからんし、自分の環境ではなにも起きないのでとりあえず無視

標準キーバインドのほうが便利くさいので方針転換

先のキーバインドの機能、大体はこれまでのグリモン環境でもできてたことなんだけども、即時reblogは自分の環境ではできなかったので非常に魅力的。

ということで、www.tumblr.com ではMinibufferもLDRizeも外すことにして、標準キーバインドを使うようにするよう方針転換。ついでといってはなんだが、標準同士の組み合わせのほうが安定してるのは目に見えてるのでAutopagerizeも外して、settings/dashboard で「Enable endless scrolling」を有効に。

標準のendless scrollingを有効にしたのでiPadで見る場合なんかはかえって便利になったりといううれしい誤算もあり、結構うれしかったり。

でもちょっと手を入れないと

ただ、標準機能のままだとpostの移動が「カクッ」となっててこれはちょっと気持ち悪いのでなんとかならんかと調べたところ、 Tumblr.KeyCommands が「animate_scroll」というプロパティを持っていた。さっそくこれをtrueに設定したら案の定スムーズスクロールするようになって快適。

また、animate_scroll = true の状態でも個人的にはちょっと速度が速いように感じられたので、一緒に見つけてた「scroll_speed」プロパティをデフォルトの100から150にしたら結構いい感じ。

これらの設定(どころか、キーバインドの有効/無効の切り替えすら)はtumblrの設定からいじれないので、ひとまず

unsafeWindow.Tumblr.KeyCommands.animate_scroll = true;
unsafeWindow.Tumblr.KeyCommands.scroll_speed = 150;
みたいなグリモンスクリプトを作って対応。

オマケ:ブックマークレットも作ってみたよ

いちいち起動しなきゃなんないのは面倒だけど、おんなじようなことを行うブックマークレットも作ってみた。

スムーズスクロールを有効に

中身はこんな感じも。

(function() {
    if(Tumblr && Tumblr.KeyCommands) {
        with(Tumblr.KeyCommands) {
            animate_scroll = true;
            scroll_speed = 150
        }
    }
})()