トリガーキー(デフォルトはSHIFT)を押しながらマウス移動で、移動方向にスクロール開始。
始点からのマウス移動距離でスクロール速度変更。
トリガーキーを離すと速度固定。再度トリガーキーを押すと停止。
トリガーキーはCTRL,SHIFT,ALTから選べる(ALT単独は不可)。
ALTキー単独だとメニューにフォーカスが移っちゃうので今のところ単独は不可にしてある。
Macでは関係無いけどめんどうなので制限はそのままになってる。
CTRL+SHIFTといった設定も可能。
MacではCTRLがCOMMANDに、ALTがOPTIONに対応。
設定はExtension一覧にあるUninstallの右のボタンメニューのPreferencesから
http://blog.livedoor.jp/tzifa/archives/50879428.htmlにあるuserjsが時々動きがおかしいことがあるので自分でも作ってみた。
ソースを読んでもなにやってるんだかよくわからなかったので適当に書いた。なのでbody要素のみのスクロール。
とは言ってもこれの動きもおかしいことはある。
ノートPCがホイールクリックによる自動スクロールが困難なので、そんな時に。
Linuxとかでミドルクリックペーストを使いたいときも便利みたい(コメントより)
あとはキーボードオンリーのものが欲しい。
MacのOperaだと、keyup,keydownイベント中はevent.ctrlKeyやevent.shiftKeyが常にfalseっぽい?
全てキーコードで判断する必要があるみたいだけど、そうなると同時押しが簡単に判別出来ない。
とりあえず、mousemoveイベント中はevent.ctrlKeyとかは有効なので、mousemoveイベント中にキー判定するように。
んで、Macだけは停止キーをトリガーキーに関係無く、SHIFT,OPTION,COMMANDのどれかを押したときということにした。
Merurialリポジトリ
Opera Extensionsページに登録してみたが、
Japaneseの一覧に表示させる方法がわからん。
わかった。xml:lang入れたあとにDescriptionを書きなおす必要があるとのこと。
次回更新するときがあったらJapaneseに表示させる。
問題点
- フレーム内はスクロールしない(body要素のみ)
- スクロールがもう少しスムーズに見えるように調整が必要
- CTRLをトリガーにしているとき、SHIFT+CTRLでは発動しないが、CTRL+SHIFTでは発動する?(いつのまにか直ったかも?)
開発メモ
空間ナビゲーションをすると、マウス座標が選択要素の左上になって、mousemoveイベントが開始される。元々マウスが使えない環境用の機能だからしょうがないか。
CTRL+Dとかでダイアログを出すと、ダイアログにフォーカスが移って、CTRLを離してもkeyupイベントが送られなくなる。
でもmousemoveは送られる。mousemoveのときはkeyCode=0みたい。ctrlKeyとかaltKeyは有効。
Shift+Middleクリックでミドルクリックの設定ダイアログが出るが、これが出るとmouseupイベントが送られないので、離されたことが判断出来ない。イベント関係無く現在のマウスの状態を取得する関数はないのか?