MouseGesture.ahk用 画面端接触認識モジュール

●概要

マウスカーソルが画面端に触れることをボタン押し下げとして扱えるようにする。


●使用方法

「buttons」フォルダ内のボタン定義モジュールを、MouseGesture.ahkのフォルダ内の
「MG_Buttons」フォルダに入れることで、ジェスチャ定義画面のボタン名一覧に
表示されるようになり、ジェスチャ定義に使用できるようになる。
28個全部入れると邪魔なので、使いたい物のみを入れるといい。


●ボタン名と部分の対応

ET   上端全体
ETA  上端左半分
ETB  上端右半分
ET1  上端左1/3
ET2  上端中央1/3
ET3  上端右1/3

EB   下端全体
EBA  下端左半分
EBB  下端右半分
EB1  下端左1/3
EB2  下端中央1/3
EB3  下端右1/3

EL   左端全体
ELA  左端上半分
ELB  左端下半分
EL1  左端上1/3
EL2  左端中央1/3
EL3  左端下1/3

ER   右端全体
ERA  右端上半分
ERB  右端下半分
ER1  右端上1/3
ER2  右端中央1/3
ER3  右端下1/3

CRT  右上角
CLT  左上角
CRB  右下角
CLB  左下角


●仕様・注意点

ジェスチャの開始ボタンとして使用されている部分のみ、認識が有効化される。
開始ボタンとしては使用されていないが途中のボタンとして使用されている部分は、
他の開始ボタンが押されてジェスチャ認識が実行中の間のみ、有効化される。

有効化されている部分にカーソルが触れると、トリガ押し下げ操作として認識される。
画面端からカーソルが離れると、画面端トリガの押し上げ操作が認識される。
一旦画面端から離れない限り、他の画面端接触が認識されることはない。

各辺の「全体」と「半分」や「1/3」など重複する部分が同時に有効化されている場合、
「1/3」「半分」「全体」の順に優先される。
例えば、上端系のうち「上端全体」と「上端左1/3」のみが有効になっている場合、
上端の左1/3は「上端左1/3」、残り2/3は「上端全体」として認識される。

角は辺よりも優先されるが、「右上角」と共に「上端全体」「右端全体」などが
有効化されている場合、角に触れるより先に辺に接触して認識されてしまうことが多く、
角への接触を認識させるのが難しくなってしまう。
角への接触を使いたい場合、角と繋がっている辺は使用しないようにすればいい。


●画面端接触とその他の操作の複合ジェスチャ

画面端への接触はマウスボタンなどと同じトリガとして定義される為、
「左端に触れながら右クリック」や「上端に触れながら左にカーソル移動」など、
他の操作と組み合わせた操作に対して動作を割り当てることも可能となっている。

端に触れた後にカーソルが大きく動くと、ストロークとして認識されてしまうため、
素早く端に触れながらのボタン操作を実行しようとすると後失敗しやすい。
下記のように、端に触れながらのストロークを無視するように設定しておけばいい。

[IgnoreEdgeStroke]
G=ET_L
G=ET_R
Default=

「RB_ET_」のようなジェスチャは、画面端の寸前でボタンを押さないと
端に達する前にストロークが認識されてしまうため、上手く認識させづらい。
ストローク後に接触するという操作を、同じジェスチャ定義に登録しておけばいい。

[R_TopEdge]
G=RB_ET_
G=RB_UET_


●「画面端で一定時間待機したとき」に発動

画面端に触れた瞬間ではなく、一定時間画面端に留まったときに発動させたい場合、
「ET_」などのジェスチャに下記のような動作を割り当ててタイマー実行させる。

if(!MG_Timer(-400)){
	;動作
}

画面端接触後、発動までの間に、カーソルが一定以上動いてストロークが認識されたり、
画面端から離れてトリガ押し上げが認識されると、発動がキャンセルされる。



●その他使用例

・画面下端に触れながら左右移動でボリューム変更
[EB_Left]
G=EB_L
Default=SoundSet,-1,MASTER,VOLUME

[EB_Right]
G=EB_R
Default=SoundSet,+1,MASTER,VOLUME


