2011年3月27日日曜日

Firefox のアドオン KeySnail で「ブックマークレット」にホットキーを設定 - Google Bookmarks への投稿するウィンドウを呼び出す

1. 「ブックマークレット」をショートカットキーで呼び出したい

Firefox 4 へ移行  したことにより、Google Bookmarks を利用するためのアドオン GMarks が使えなくなった。

その代わりに本家サイトに用意されている ブックマークレット を使い、ブックマークをすることにした。

SnapCrab_No-0953

しかし、マウスでブックマークをクリックするのは面倒。 (+_+) ブックマークレットにショートカットキーを割当てたい。

追記 (2011.3.30) : Gmarks が Firefox 4 に対応してれた。

 

2. KeySnail でショートカットキーを割当てる

ブックマークレットは、JavaScript で記述されている。

アドオン keysnail の機能は、JavaScript に対して、ショートカットキーを割り当てることができる。

あらかじめ用意されたコマンドだけでなく、 JavaScript を使ってオリジナルの関数を書き、それらを 自由なキーの組み合わせ に割り当てることが可能です。

そこで、Google Bookmarks のブックマークレットを、 keysnail を使い、ショートカットキーを割当てることにした。

 

KeySnail のインストールと初期設定

GitHub より keysnail をアドオンに D&D することによりインストール。

最初に起動したとき、設定ファイルを新しく作成する。

CropperCapture[130]

保存場所を尋ねられるので、複数の PC で設定を共有したいので、Dropbox 上を作成先に指定。

デフォルトのキーバインドは、

「とにかく Emacs」

にした。必要なければ、「キーバインドの設定なし」を選択。

CropperCapture[131]

 

キーバインドの設定

メニューより、

  • ツール > KeySnail > 設定ダイアログを開く

を選択。「キーバインド」において、「追加」ボタンを押して「オリジナルのコマンド」を選ぶ。

モードを

View

にして、コマンド名を適当に付ける。

キーは Firefox でブックマークをするときの動作を上書きするために

C-d

を割当てた。

CropperCapture[137]

 

ブックマークレットをキーバインドに設定

次に、上図の「編集」ボタンを押す。

公式のGoogle ブックマークレットの JavaScript の内容は、以下の通り。

javascript:(function(){var%20a=window,b=document,c=encodeURIComponent,d=a.open('http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk='+c(b.location)+'&title='+c(b.title),'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=420px,width=550px,resizable=1,alwaysRaised=1');a.setTimeout(function(){d.focus()},300)})();

これをキーバインドに設定するために、 一部を修正した、以下のコードを貼り付け、「変更の反映」ボタンを押して OK 。

function (ev, arg) {
    var a = window,
        b = a.content.document,
        c = encodeURIComponent,
        d = a.open(
	    'http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=' 
		+ c(b.location) 
		+ '&title=' 
		+ c(b.title)
	    , 'bkmk_popup'
	    , 'left=' 
		+ ((a.screenX || a.screenLeft) + 10) 
		+ ',top=' 
		+ ((a.screenY || a.screenTop) + 10) 
		+ ',height=420px,width=550px,resizable=1,alwaysRaised=1');
    a.setTimeout( 
	function () {
	    d.focus()
	}
	, 300)
}

これでブックマークをしたいページで

Ctrl + d

でブックマークできるになる。

 

ブックマークレットの修正点について

上記ブックマークレットで修正したのは、以下の点。

URL 最初の

javascript:

を削除。

decodeURIComponent により文字列をデコード。

全体を囲っている

(function(){  ...  })();

を削除。 ( cf. JavaScript の無名関数に引数を与える )

document.location

でブックマークしたいページの URL を取得できなかったので、代わりに

window.content

経由でアクセス。

 

3. Emacs 風にしたときの操作の注意点

検索をするとき、

  1. 新しくタブを開いて ( Ctrl + t ) 、
  2. 検索バーにフォーカスを移そうと Ctrl + K を押しても、

ロケーションバーにフォーカスが移ってしまう。

これを回避するには、現在閲覧しているページにおいて

  1. Ctrl + K を押し
  2. 検索したい単語を入力
  3. Alt + Enter を押す

ことにより、検索するのが効率的。

 

4. Adblock の設定

追記(2014/6/2): Adblock で特定のフィルタを利用していると、Google Bookmarks のウィンドウが閉じてしまう。

 

参考サイト