更新:2010-11-9
1Password for Chrome のベータが取れてアプリからインストールできる公式版になりましたが、編集するファイルの置かれている場所など大幅に変更があったので更新しておきました。一番下の追記へどうぞ。

これまで Chrome の 1Password 拡張でキーボードショートカットが使えなかったことが個人的にはかなりのマイナスで、Safari と Chrome を行ったり来たりしていたんですが、最近バージョン 0.7.2 からショートカットが使えるようになっていたことを知りました。デフォルトでは [command+\] か [control+/] のようですね。

ただ、Safari と Firefox で使っているショートカットではなく、しかも右手か両手を使うデフォルトのショートカットでは個人的にしっくりこない。

というわけでカスタムのショートカットを割り振れないかと探していたところ、Hacking Chrome Extensions という記事を見つけたので試してみました。
– via Hacking Crome extensions – How I added keyboard shortcuts to 1Password in Chrome « Guillaume Boudreau Geek Blog

現在の 1Password Chrome 拡張のバージョンは 0.8.1。手動で変更するため今後のアップデートで設定したラインが消えてしまうかもしれないので、デフォルトと編集後のファイルの両方のバックアップを取っておいたほうがいいかと思います。

1Password 拡張のファイルを編集

編集するのは以下のファイル。

~/Library/”Application Support”/Google/Chrome/Default/Extensions/ gkndfifopckmhdkohjeoljlbfnjhekfg/0.8.1_0/content_script.js

バージョン番号部分はアップデート毎に変更されますが、前のランダムの文字列(ID)は変更されないようです。どのコンピュータでも同じだとは思いますが、Chrome拡張の一覧画面で ID として表示されているものがその文字列ですね。

そのファイルの一番下 (275行目あたり)にショートカット関連のショートカットがありました。

ws_agile_keyDownListener(e) という関数に cmdBackslashPressed と ctrlSlashPressed という2つの変数があります。これでショートカットキーを指定しているんですね。metaKey は command キーで、他の修飾キーの名前はそのまま。keyCode については以下のテストページで確認することができます。
– via JavaScript Event KeyCode Test Page

function ws_agile_keyDownListener(e) {
    var cmdBackslashPressed = (e.keyCode == 220 && e.metaKey && !e.shiftKey && !e.altKey && !e.ctrlKey);
    var ctrlSlashPressed = (e.keyCode == 191 && !e.metaKey && !e.shiftKey && !e.altKey && e.ctrlKey);
    if (cmdBackslashPressed || ctrlSlashPressed) {
        chrome.extension.sendRequest({name:"activatePopUp"});
    }
    if (e.keyCode == 220 && e.metaKey && !e.shiftKey && e.altKey) {
        chrome.extension.sendRequest({name:"activateGoAndFill"});
    }
}

私は、[command+shift+1] といういつも使っているショートカットを追加するために、cmdShiftOnePressed という変数を追加してみました。

function ws_agile_keyDownListener(e) {
    var cmdBackslashPressed = (e.keyCode == 220 && e.metaKey && !e.shiftKey && !e.altKey && !e.ctrlKey);
    var ctrlSlashPressed = (e.keyCode == 191 && !e.metaKey && !e.shiftKey && !e.altKey && e.ctrlKey);
    if (cmdBackslashPressed || ctrlSlashPressed) {
        chrome.extension.sendRequest({name:"activatePopUp"});
    }
    if (e.keyCode == 220 && e.metaKey && !e.shiftKey && e.altKey) {
        chrome.extension.sendRequest({name:"activateGoAndFill"});
    }
}

2つめの if はまだ使えないのかな? 試してみても何も起きませんでした。でも、自分で決めたショートカットでポップアップが出てくれるのはすごく助かります。Safari の 1Password プラグインにはまだまだ敵いませんが、少し Chrome に傾いたかなー。

追記:2010-11-9
1Password 3.5 の公式版がリリースされました。ベータ版を使っていた方は少し前から気づいていたかもしれませんが、インターフェースの大幅な変更の時からファイルが増えたり場所が移動されたり裏側でも多くの変更がありました。

というわけで、上記とはコードが少し変わっていてそのままでは使えなくなっていますが、それでも同じ方法を使っていましたので少しの変更でショートカットが変更できました。

まず、ファイルの位置が変更され以下のディレクトリへ移動しています。

/Users/MoonyHart/Library/"Application Support"/Google/Chrome/ Default/Extensions/gkndfifopckmhdkohjeoljlbfnjhekfg/ 3.5.1.30796_0/src/content_script.js

ファイルの中身もかなり変更されていましたが、103行目辺りにショートカット関連のコードがありました。keydown で検索してみるとすぐにひっかかるかと。

あまり難しくしたくなかったので、if で始まるラインの keycode を 220 から 49(私の場合は数字の1)に変更し、f.shiftKey の前の!を消して [command + shift + 1] でポップアップが出てくるよう設定しました。

window.addEventListener("keydown", function(f) {
  var i = f.keyCode == 191 && !f.metaKey && !f.shiftKey && !f.altKey && f.ctrlKey;
  if(f.keyCode == 49 && f.metaKey && f.shiftKey && !f.altKey && !f.ctrlKey || i) {
    chrome.extension.sendRequest({name:"activatePopUp"})
  }
  f.keyCode == 220 && f.metaKey && !f.shiftKey && f.altKey && chrome.extension.sendRequest({name:"activateGoAndFill"})
}

これで、Chrome を再起動するか 1P 拡張を一度無効にして有効化すれば設定したショートカットでポップアップが呼び出せるようになってると思います。


Trackback URL:
http://www.laloopa.com/20100910/force-1p-chrome-ext-to-use-custom-key-shortcuts/trackback

コメント


Return to Top

Chrome の 1Password 拡張で強制的にキーボードショートカットを設定する [Updated] 

Clip to Evernote

人気エントリー   powered by はてなブックマーク