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 と柔軟に設定できます。カスタマイズ好きな方はハマると思います :)