Firefox Quantum マウスジェスチャ機能の代替
Firefox Quantum (57以上) で使用不可になった 「FireGestures」の代替を考える。
やりたいこと
- ロッカージェスチャでタブを閉じる/閉じたタブを開く
- ホイールジェスチャで先頭/末尾へスクロール
- 以上(他のジェスチャ機能は使わない)
- できれば、オプション画面やアドオンサイトで動作する
※ ロッカージェスチャ(マウスの右ボタンを押しながら左ボタンを押す、またはマウスの左ボタンを押しながら右ボタンを押す)
※ ホイールジェスチャ(マウスの右ボタンを押しながらホイールを上/下へ回転する)
これまでの経緯
- Firefox57から「FireGestures」が使用不可となる
- 「Foxy Gestures」を使用する
- Add-onsページ等でジェスチャが効かない
- userChrome.jsで実現 ←いまここ
実現方法
userChrome.jsの「MouseGestures2.uc.js」を編集して使用する。
※「MouseGestures2.uc.js」は、「FireGestures」の作者である「Gomita」さんが作成したユーザスクリプトのようです。
お世話なっておりますm(_ _)m
※MouseGestures.uc.jsは、ネット上に大量の派生物が存在します。本uc.jsの選定理由は、発見した中でソースコード量が少なく理解が容易だったため、採用しました。
やったこと
上記を参考にイベント処理部分のみを修正する。
MouseGestures2.uc.js修正部分のみ _performAction: function(event)
{
// These are the mouse gesture mappings. Customize this as you like.
switch (this._directionChain) {
// 閉じたタブを開く
case "L<R": document.getElementById("History:UndoCloseTab").doCommand(); break;
// タブを閉じる
case "L>R": document.getElementById("cmd_close").doCommand(); break;
// 先頭へスクロール
case "W-": goDoCommand("cmd_scrollTop"); break;
// 末尾へスクロール
case "W+": goDoCommand("cmd_scrollBottom"); break;
// Unknown Gesture
default: throw "Unknown Gesture: " + this._directionChain;
}
}
userChrome.jsの導入方法は、「userChrome.js用スクリプト 」のFirefox57以降でuserChrome.js用スクリプトを利用する方法を参考にしてください。
Firefox61対応
Firefox61で「MouseGestures2.uc.js」が動作しなくなったため、一部修正して対応する。ソースコードのライセンスが不明のため、uc.jsのソースコードではなく、変更点のみを記載する。
下記の記述を置き換える。
gBrowser.mPanelContainer
→gBrowser.tabpanels
XULBrowserWindow.statusTextField.label
→StatusPanel._label
_performAction
関数の末尾でthis._directionChain
をクリアする。(2重実行を防止のため)
_performAction: function(event)
{
switch (this._directionChain) {
...
}
this._directionChain = "";
}