とりあえず忘れないようにShortcutKey2URL作ったときのことをここに吐き出しておきます。
もともと、keyconfigで同じようなことをしていた(keyconfigのショートカットで同一URLを重複して開かないようにしておくと便利 - Enjoy*Study)けど、この方法だと、URLを追加するたびに、ショートカットキーの割り当てを整理しなおすのが面倒になってきて、だったら重複しないように別の空間で割り当てればいいんじゃないかってことでShortcutKey2URLを作りだした。Firefoxのショートカットキーってもう破滅的な状況だと思っている。(デフォルトのはいいけど、アドオンで追加したものは、被りまくりだし)
最初は「起動キー」->「URL毎のキー」という2段階のキー操作に違和感を感じたけど、使い出すとそんな感覚も無くなって、こういうアプローチもありだなと今は思っている。自分では、Emacsのコマンドみたいな感覚。
最初は、keyconfigみたいになんでも出来るものにしようかと思ったけど、いろんな人に使ってもらうには、そんないろんなことを出来るようにはしないで、もともと自分が欲しい機能に特化させたほうが良いかなと途中で思って方向変えた。
keyconfigみたいにすると、コピペだとしてもコードを書く必要があるので。それだけで控える人もいるんじゃないかなぁ。
んで、初めてまともにXUL書いて(っていってもコード的にはちょっとだけど…)ダイアログ作ったりした。設定画面のツリーの部分は、結構はまった。「SCRAPBLOG : カスタムツリービューの基本的な使い方(その1〜表示)」の連載があったおかげでどうにかなった。Gomitaさんの記事にはいつもお世話になっています。ありがとうございます。
一番悩んだのは、「起動キー」をどうするかってところ。ここは他のアドオンのショートカットキーと被る可能性があるので、どうしたものかなと。。
この被りを回避するためにわざわざkeyconfigを入れる必要があるんじゃしょうがないんで、ShortcutKey2URLの設定画面から起動キーの割り当てを変えられるようにし、他のショートカットキーと被っている場合には警告を表示するようにした。
で、被ったとしても、ShortcutKey2URLの起動キーが優先された方が嬉しい(ShortcutKey2URLを入れる人は、他のアドオンのショートカットキーよりこっちが優先されて欲しいはず)ってことで、いろいろ方法を考えたけど、Firefoxのショートカットキーの機構(keyset、key要素で割り当て)だと、もうどうしようもないので、やもえず独自にkeypressイベントでハンドリングすることにした。他のアドオンがこんなことしだすと収拾つかなくなるので、やめて欲しいけど、ShortcutKey2URLはショートカットキーの重複問題を解決するためのアドオンでもあるので、このやり方でもいいですよねって自分に言い聞かしている。
なお、Windowsだとこの方法で優先されるけど、Mac OSXだとkeypressイベントよりショートカットキーの方が先に実行されてしまい、優先することが出来なかった…
今回、アドレスバーにボタンのような感じのものを置いて、そこから操作できるようにしたかったので、最初からアイコン画像を作った。
キーを2回押して移動するっていうイメージでああなった。自分の画力だとあんな感じのアイコンくらいしか作れない。GIMPで作ったんだけど、作るのに3時間くらいかかった。時間かかりすぎ。
頻繁に表示するページってのを、どのように開けたら便利なのかって考えたとき、ショートカットキーがやっぱ便利だよねってことで、もともとkeyconfigでやっていて、URLが増えてもうkeyconfigでやるのが面倒になってきて、これを作ったんだけど、他の人がどのように頻繁に表示するサイトを開いているのか知りたいところ。自分は昔はアドレスバーで数文字入れて履歴から探したり、ブックマークツールバーで表示していた。
ShortcutKey2URLで特に便利なのは「既に開いているタブがあればそのタブに移動する」ってところで、URLを開くためのショートカットキーというのではなく、タブを移動するためのショートカットキーとしても重宝している。