さようなら keyconfig、こんにちは KeySnail

firefox のキーバインド変更をずっと keyconfig でしていましたが、数日前から keyconfig の代わりに KeySnail を使い始めました。

keyconfig の動作に不満はなかったんですが、add-on 自体が更新されなくなって長いのが気になっていて。今後 firefox のバージョンアップに伴い、古い add-on だし使えなくなるかもしれないけれど、依存して利用しているので動かなくなると大打撃。そうなったら怖いなーと思い、「keyconfig の代替えとなりうる、今も開発が続いていて、ちょうど手頃な add-on ないかなあ」と探していました。

keyconfig では以下のようなことをしていました。

  • 元々あるキーバインドを変えたり、追加したり
  • bookmarklet をワンキーで使ったり(CSS on/off を F1 キーで一発とか)
  • vim のように j で下にスクロール、k で上にスクロール、gg でページ先頭に移動、etc..

中々見つからず「きっと他にはないんだな…」と思って諦めたら、偶然 KeySnail という add-on を発見。探している時は見つからないのに、探してないと見つかるジンクス…!

さっそく試用してみたところ、これがよく出来ていて素晴らしい!久しぶりに「おおおー」と思う add-on でした。KeySnail は keyconfig で出来たことは出来るうえ、+α が大きいので、vimperator のように「環境」な面もあるかも。

2~3 日使ってみた感想は、keyconfig で出来たことは問題なく出来るし、管理もしやすいし、keyconfig にはなかったような機能もある、といった具合でかなり好印象です。この便利さはたまらないなーということで、長くお世話になった keyconfig から KeySnail に移行を決意 :)

KeySnail は Emacs ユーザー向きなのかな?と最初思ったのですが、Vim っぽい指定もできるのであまり問題なかったです。私は Vim っぽいキーバインド指定で使っています。

KeySnail プラグイン

KeySnaill はプラグインで機能を拡張させることができます。便利なものが多くて感動。特にいいなあと思ったものを紹介+メモ。

Prefer LDRize

このプラグインは、KeySnail と LDRize がぶつからないように、よきにはからうよう設定できるものです。
Prefer LDRize プラグインで LDRize と KeySnail をいい感じに共存させる – リタマス を参考にして、PRESERVE エリアに以下のように設定しました。

plugins.options["prefer_ldrize.keymap"] = {
    "p"   : null,
    "l"   : null,
    "v"   : null,
    "o"   : null,
};
plugins.options["prefer_ldrize.keymap"]["C-d"] = function () { ext.exec("prefer-ldrize-scroll-next-item"); };
plugins.options["prefer_ldrize.keymap"]["C-b"] = function () { ext.exec("prefer-ldrize-scroll-previous-item"); };

デフォルトだと LDRize の移動キーも j k 、私が設定しているスクロール用キーも j k でバッティングするので、私は後者を優先して LDRize のキーバインドを変更。これはグリモンの LDRize を開いてキー設定部分を書き換えてもいいかもしれません。

KeySnail を切れば通常の LDRize のキーバインドで動くし、バックアップするファイルも少ない方がいいし、ということで私は KeySnail の設定に書きました。

また、元々私の LDRize の利用方法は j k で移動するのがメインで、たまに v で開いたり、p でピンをたてて o で開いたり、といったライトなものだったので、必要最低限のキー p l v o だけ残し、あとは潰してしまうことに。思っていた以上に使いやすくなりました。

Yet Another Twitter Client KeySnail

Twitter クライアントです。これすごいな~。リストは見れないのですが、TL を気軽に見たり、ぱぱっと Twitter に投稿したりするには手軽で良いです。サクサク感がいいです :)

2010/02/24 追記
私が見落としていただけで、リスト表示にも対応していました。コメントで教えていただきました。ありがとうございます><

新しくなった Twitter クラアイントプラグインは操作性が格段に向上 – リタマス を参考に、PRESERVE エリアに以下のように指定。

plugins.options["twitter_client.keymap"] = {
    "C-e"   : "prompt-toggle-edit-mode",
    "SPC"   : "prompt-next-page",
    "b"     : "prompt-previous-page",
    "j"     : "prompt-next-completion",
    "k"     : "prompt-previous-completion",
    "g"     : "prompt-beginning-of-candidates",
    "G"     : "prompt-end-of-candidates",
    "q"     : "prompt-cancel",
    // twitter client specific actions
    "C-t"     : "tweet",
    "r"     : "reply",
    "R"     : "retweet",
    "D"     : "delete-tweet",
    "f"     : "add-to-favorite",
    "v"     : "display-entire-message",
    "V"     : "view-in-twitter",
    "c"     : "copy-tweet",
    "s"     : "show-target-status",
    "@"     : "show-mentions",
    "/"     : "search-word",
    "o"     : "open-url"
};

“C-e” : “prompt-toggle-edit-mode”, は、デフォルトだと “C-c” : “prompt-toggle-edit-mode”, となっていますが、これだとコピーのショートカットキー(C-c)を潰してしまうので押しやすくて使っていないキーを選んで C-e としました。

_keysnail.js に以下のように書いて、[C-s] [T] で今見ているページのタイトルと URL が入った書き込み欄、[C-s] [t] で普通の書き込み欄が出るようにしました。URL は、ちゃんと j.mp で短縮されるのが細かいながらに凄いなぁ。

key.setGlobalKey(['C-s', 'T'], function (ev, arg) {
    ext.exec("twitter-client-tweet-this-page", arg);
}, 'このページのタイトルと URL を使ってつぶやく', true);

key.setGlobalKey(['C-s', 't'], function (ev, arg) {
    ext.exec("twitter-client-tweet", arg);
}, 'つぶやく', true);

bit.ly (or j.mp) はアカウントを作って URL を短縮すると、クリックされた数などがみれます。デフォルトだと自分のアカウントにはならないので、「URL を自分の bit.ly (or j.mp) アカウントを使って短縮したい!」という場合には、プラグイン本体の yet-another-twitter-client-keysnail.ks.js を編集する必要があります。

具体的には、yet-another-twitter-client-keysnail.ks.js の 1271 ~1272 行目にある以下の部分の id と key を、自分の id と API key に書き換えれば OK です。自分の id と API key は、アカウントを作ってあれば http://bit.ly/account/ などで確認できます。

             const id  = "stillpedant";
             const key = "R_168719821d1100c59352962dce863251";

バージョンアップのたび書き換えないといけないので、私はそのうち失念してしまう予感がちょっとしますが、まぁとりあえず。この設定を _keysnail.js に書いておけるようになれば最高なんだけれど、いずれそうならないかな~

※プラグインは MIT ライセンスとなっていたので bit.ly (or j.mp) の id や API key を書き換えても大丈夫だと思いますが、行う場合には自己責任でお願いします。

2010/02/24 追記
作者の方がプラグイン本体を変更しなくても、_keysnail.js に設定を書いておけば良いようにしてくださいました!これでプラグインの更新があっても、都度書き換える必要がなくなりとても楽になりました。MOOZ さん本当にありがとうございます!

その他

他にも色々とプラグインがあるので、自分にあったものを探すのも楽しいかと思います :) あれもこれも試してみたくなってしまうなー><

その他設定 – migemo を利用

Customizing (Japanese) – keysnail – GitHub を参考に、PRESERVE エリアに以下のように書いて XUL/Migemo の機能を通じてマッチングするように。これはちょっと重くなるようなので、環境によっては指定しないほうがよいかもしれません。

//migemo 有効に
prompt.useMigemo           = true;
prompt.migemoMinWordLength = 3;

keyconfig でやっていた、bookmarklet へのキーバインド指定

_keysnail.js に以下のように書くことで可能でした。

key.setViewKey(['b', 'c'], function (ev, arg) {
    if (window.loadURI) {
        loadURI(getShortcutOrURI("css", {}));
    }
}, 'CSS on/off');

firefox の bookmarklet -> 右クリック -> プロパティ -> キーワード「css」、と予めして上記のように書けば、b を押してから c で、その bookmarklet が実行されます。

たとえば bookmarklet のキーワードを「hatebu」としていて、これを F1 に割り当てる場合には、以下のようにすれば OK です。

key.setViewKey('F1', function (ev, arg) {
    if (window.loadURI) {
        loadURI(getShortcutOrURI("hatebu", {}));
    }
}, 'hatebu に登録');

まとめ

書ききれないのですが、他にも設定できることはたくさんあっておもしろい!設定用の画面もありとっつきやすく、少し分かったらテキストエディタでがしがし編集も OK と柔軟に設定できます。カスタマイズ好きな方はハマると思います :)

“さようなら keyconfig、こんにちは KeySnail” への3件の返信

  1. 大変詳しい & 分かりやすいエントリどうもです。

    Twitter Client プラグインですが、先ほどオプションで j.mp のアカウントを設定出来るようにしておきました。プラグインマネージャから更新を確認してみて下さい。

    設定は PRESERVE エリアへ

    plugins.options[“jmp_id”] = “foo”;
    plugins.options[“jmp_key”] = “bar”;

    のような記述を行うことで可能です。

    あと、こっそりとですがリスト機能にも対応していまして、ステータスバーのアイコン (未読数などが表示されている部分) を右クリックして「リスト一覧表示」を選ぶか “twitter-client-show-my-lists” を呼ぶことで、リストを閲覧することが出来ます。

    ただ、非常に使いにくいので、実用には耐えないかもしれないです。自分がフォローしているリストは見れなかったりしますし。

    それでは、これからも keysnail をよろしくお願いします。

  2. >MOOZ さん
    初めまして、こんにちはー。
    ご本人様にコメントいただけてびっくり&嬉しいです。
    とても便利な add-on &プラグインを作ってくださって感謝です :)

    Twitter Client プラグインの更新ありがとうございます!
    エントリを書いて数時間後に実装していただけるとは夢にも思っていなかったので、とても感動です。本当にありがとうございます。

    リスト機能あったのですね、すっかり見落としていました。すみません;
    さっそくリスト表示もキーバインドを振りました。

    これからも KeySnail 使わせていただきますねー!今後もよろしくお願いします。

コメントは受け付けていません。