最近まで Firefox でのキーバインドは Firemacs を使っていましたが
どうにも物足りない。確かに充分動いてくれてはいるのだけれど。
なぜだろう。周りの人が Vimperator を使っていて、あの変態っぷりなカズタマイズが
Firemacs にもほしいなぁと思ってたりしました。そんなときに KeySnail を発見しました。
https://addons.mozilla.org/ja/firefox/addon/13118
これは Vimperator と同じように(って考えてもいいのかな)、JavaScript で
いろんな関数を定義しつつそれをキーに割り当てることができるので
拡張性がさらに高まっているんじゃないかと思います。何よりデフォルトで Emacs ライクなのがベネ。
少し触ってみた感じ、特に問題無し。
タブの移動が lh ってのは vim のアレだと思いますが(w3m?)、これもまあよし。
Firemacs に慣れていたので、C-f、C-b で動けばいいなー。なぜか今は動かないけど。
せっかくなので、何かプラグインを作ろうと考え、簡単そうな翻訳をすることに。
エキサイト翻訳の英和・和英に対応したやつを試しに作ってみました。
key.setGlobalKey('C-1', function (ev, arg) { var trans_list = []; trans_list.push(["je", "和英"]); var JAEN = 0; trans_list.push(["ej", "英和"]); var ENJA = 1; prompt.selector({ message: "Select Translation", collection: trans_list, callback: function (sel) { prompt.read("String: ", function (input, trans) { function createHttpRequest() { if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e2) { return null; } } } else if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { return null; } } var xhr = createHttpRequest(); xhr.onreadystatechange = function (aEvent) { if (xhr.readyState == 4) { if (xhr.status != 200) { // error 処理とか return; } var text = xhr.responseText; text.match(/<textarea [^>]+after[^>]+>(.+)<\/textarea>/i); alert(RegExp.$1); } }; var uri = "http://www.excite.co.jp/world/english/?"; var direction = ""; if (trans == JAEN) { direction = "JAEN"; } else { direction = "ENJA"; } xhr.overrideMimeType("text/html; charset=Shift_JIS"); xhr.open("GET", uri + "wb_lp=" + direction + "&before=" + EscapeSJIS(input), true); 1970 00:00:00 GMT"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(""); }, sel); } }); }, 'translation');
操作方法は
- C-1 を押すと 英和(je)か和英(ej)を選ぶ prompt.selector が起動
- 選択すると、次に翻訳したい文字列を入力し、Enter
- 翻訳結果を alert() で表示するというダサい仕様
まだまだ見落としありそうですが、なんとか動いています。
もう少し形になったら github にでも上げるか。へぼくてもいい。人間だもの。
翻訳対象の文字列は、encodeURIComponent() 経由で渡しても文字化けしてしまったので
エキサイト翻訳のcharset である ShiftJIS に変換して渡してあります。
EscapeSJIS は http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html のライブラリから呼んでいます。
他jsファイルを使う場合は、本家HP にも書いてあるように
該当ファイルを準備してから
userscript.require("ecl.js");
とやれば読んでくれるでしょう。
これからいろいろ作っていきたい。