bootstrappedなアドオンでショートカットキーを追加するときのはまりどころ

bootstrappedなアドオン(bootstrap.jsを使った再起動不要なアドオン)を作る際に、ショートカットキーの登録を、XULオーバレイでやるときのように、mainKeySet配下にkeyを追加すると、アドオンのインストール、無効→有効化など、アドオンの状態が変わった際に、思ったような動作をしない場合があります。

問題となる実装方法(mainKeySet配下に追加)

XULオーバレイの時のように、id=mainKeySet のkeysetの配下に追加した場合、Firefox自体の再起動を経由しないとうまく動作しません。

正しい実装方法(別のkeysetとして追加)

mainKeySetとは別のkeysetとして追加することにより、追加されたタイミングから正常に動作します。(下記ではmainKeySetと同列に別のkeysetとして追加)

アドオンの無効時やアンインストール時には、追加したkeysetを削除してあげることにより、ショートカットキーを無効にします。

おわりに

実際に自分で作ったアドオンで、mainKeySetに追加してしまって問題となり、過去に自分で書いた下記の記事を参考に修正しました。

ここの、動的に追加する部分の説明が、今回の問題と同じことを回避する方法であり、それを忘れて、同じことを繰り返してしまいました…

ただ、こうやって昔に自分が書いたことが参考になったので、良かったと思います。

アウトプットしておくことは重要ですね!