Adobe Bridgeのキーボードショートカットカスタマイズとコンテキストメニューの話。

先日、フォトグラファーのイイダ先生が、
「BridgeのPhotoshopイメージプロセッサーってキーボードショートカット割り当てられないのかなぁ。。。」
とおっしゃっていたので、検証してみようと思ったのがキッカケです。
勉強の機会をくださり、ありがとうございました。

結論としては、Macでは可能。
Windowsでは、既存のショートカットの割り当ての変更は可能だけれど、新規での割り当ては不可能だと分かりました。

**Mac キーボードショートカットのカスタマイズ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/a5d99f38-bd61-f7c7-a04c-2fa25df1f080.png)
▲システム環境設定 > キーボード > ショートカット とたどり、左のアプリケーションを選択。続けて下部の「+」ボタンを押下。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/cf2d84df-a6d8-c14b-7758-d4fc184029ef.png)
▲アプリケーションからBridgeを選択。メニュータイトルに「イメージプロセッサー...」、任意のショートカットを設定します。
「イメージプロセッサー...」と「...」まで含ませないと表示されないので要注意。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/96768410-e34b-d3b5-923a-5bb4eefb2ac5.png)
▲設定したキーボードショートカットが表示されました。

他にも、Macには「Keyboard Maestro」という便利なソフトがあるのでカスタマイズの幅が広がります。
※私は「Keyboard Maestro」を使ったことがないので、恐らくですが。。。

**既存のキーボードショートカットのカスタマイズ**
**Windows 10**
\Program Files\Adobe\Adobe Bridge CC 2019\Resources\ja\shortcuts.txt
**Mac**
/Applications/Adobe Bridge CC 2019/Adobe Bridge CC 2019.app/Contents/Resources/ja.lproj/shortcuts.txt
※Contents は Adobe Bridge CC 2019.app を右クリック、「パッケージの内容を表示」で表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/5d7594d7-0d90-18e2-0e56-903b2e095dd1.png)
▲「shortcuts.txt」を開くと設定されているキーボードショートカット一覧が表示されます。
記述されているショートカットが重複しないように書き換えます。
行を増やせば追加できそうですが無理でした。
※バックアップをとっておくことをお勧めします。

他の手段を試してみました。

###試してみたこと
**1. Adobe CEP**
Adobe CEPとJSXを組み合わせればパネルとして表示できそう。
→ 設定までは行いましたが色々と面倒なので中断。。。
**2. ExtendScript Toolkit**
フロートパネル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/f1356916-c4b7-b241-956b-a4a75e0c22b9.png)
▲こんなやつ
▼ソース

```javascript:IMGProBri2PH.jsx
#target 'bridge'
var bridgeTalk = new BridgeTalk(); //BridgeTalk bridgeへ
bridgeTalk.target = "bridge";
bridgeTalk.body = uneval(doScript());
bridgeTalk.send();

function doScript() {
    win = new Window("palette", "Photoshopイメージプロセッサー", [200, 150, 400, 230]);
    var executionBtn = win.add("button", [10, 10, 185, 30], "実行");
    var closeBtn = win.add("button", [10, 40, 185, 60], "閉じる");

    win.show(); //ウィンドウを表示
    win.center(); //センターに表示 

    executionBtn.onClick = function () { //実行ボタンが押されたとき
        app.document.chooseMenuItem('ImageProcessor');
    }

    closeBtn.onClick = function () { //閉じるボタンが押されたとき
        win.close();
    }
}
```

→ Bridgeからダブルクリックで起動でき、重宝しますが、Startup Scriptsからの起動だと、Bridge画面の背面に表示されてしまいます。
イマイチ使い勝手が良くない。

**3. ExtendScript Toolkit**
コンテキストメニュー
色々と調べた結果、コンテキストメニューを追加できることが分かりました。

```javascript:addContextMenu.jsx
var menuItem2 = new MenuElement("command", "イメージプロセッサー", "at the beginning of Thumbnail");
menuItem2.onSelect = function () {
    app.document.chooseMenuItem('ImageProcessor'); //イメージプロセッサー
}
```
▲ソース
![WS001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122812/c0725e0f-ac9b-0dbc-68db-52bb9016b929.jpeg)
▲コンテキストメニューに追加されました。
Startup Scriptsに入れておけばBridge起動とともに使えます。

上記ソースの3行目 chooseMenuItem の引数(Menu ID)を変えれば他のメニューにも対応できます。
Adobeが配布している「Bridge CC 2019 JavaScript Reference.pdf」も参考にしましたが、64ページ目の「Tools submenus」と「Tools commands」にはBridgeのみのメニューしか記載されてなかったので、調べるのに少々苦労しました。。。
まとめておきます。


| Bridge Tools commands       |       Menu ID |
|:-----------------|------------------:|
| HDR Pro に統合...            |              MergeToHDR |
| Photomerge...          |            Photomerge |
| イメージプロセッサー...             |              ImageProcessor |
| コンタクトシートII...               |                ContactSheet |
| バッチ...             |             Batch |
| ファイルを Photoshop レイヤーとして読み込み...          |           ? |
| レンズ補正...          |           LensCorrect |


下記のサイトを参考にさせていただきました。
ありがとうございました。
**Adobe CEP**
[「Photoshopのエクステンションを自作する」nishioka様](https://www.tam-tam.co.jp/tipsnote/tool/post14513.html)
[Adobe CEP](https://github.com/Adobe-CEP/Samples/tree/master/Bridge)

**ExtendScript**
[Adobe Bridge例文辞典 古籏 一浩様](http://www.openspc2.org/reibun/Bridge/)
[「Bridge CC Scripting メニュー項目の追加について」 Tan A様](https://forums.adobe.com/community/international_forums/japanese/automation/blog/2018/03/21/br-bridge-cc-scripting-%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E9%A0%85%E7%9B%AE%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
[手抜きLab＠DTPの現場 「Bridge Scripting」 Tan A様](http://chuwa.iobb.net/tech/archive/2014/02/bridge-scripting.html)