MouseGesture.ahk	by AutoHotkey𗬍s点y[WǗl

Tv
}EX{^J[\ړȂǂ̑gݍ킹ɗlXȓ蓖ĂB
J[\EBhȄȂǂɉĕʂ̓蓖Ă邱Ƃ\B

ɂAutoHotkey(http://www.autohotkey.com/)KvB


t@C
readme.txt
    ̐
MouseGesture.ahk
    }EXWFX`XNvg{
MG_Edit.ahk
    ݒҏWMG_Config.ahk̐sBʏ̓j[ĂяoB
    Ɂu/ini2ahkvtĎsƁAMG_Config.ahk̐̂ݍs

MouseGesture.ini
    ݒۑinit@C
MouseGesture.ini.sample
    ftHginit@C(Abvf[gɏ㏑Ȃ悤ɕʖƂ)
MG_User.ahk
    AvP[V`CustomAWFX`Ɋ蓖Ă铮삩
    p邽߂̃Tu[`֐`ĂXNvgB
MG_Config.ahk
    init@C琶JX^̃XNvg
MG_Buttons\
    {^`W[i[tH_
MG_ScreenEdge\
	ʒ[F@\̃XNvgW[ƃ{^`W[
	gꍇ́Areadme.txtQ


gp@
PƂŗpꍇ́AMouseGesture.ahkAutoHotkeyŎs΂悢B
gCACR̃j[ɒǉTuj[Aȉ̑삪sB

L                WFX`̊JngK[̗L/؂ւ
ir\            ͒WFX`̃c[`bv\L/
gXNvgҏW  uMG_User.ahkvGfB^ŊJ
ċN              `XNvgĐAXNvgċN
ݒҏW            ݒʂJ

#Includeő̃XNvgɑgݍޏꍇ́AgXNvgƓtH_
SẴt@CEtH_uB
#IncludeAuGosub,MG_Initvs邱ƁB


Tu[`
zbgL[⃁j[Ȃǂ痘p邽߂ɁAȉ̃Tu[`pӂĂB

Gosub,MG_NaviToggleEnable:    ir\ON/OFF
Gosub,MG_Enable:              JngK̗L
Gosub,MG_Disable:             JngK
Gosub,MG_ToggleEnable:        JngK̗L/؂ւ
Gosub,MG_Edit:                ݒʕ\
Gosub,MG_EditUser:            MG_User.ahkҏW
Gosub,MG_Reload:              `XNvgĐAXNvgċN



ݒ
Ŝŋʂ̃{^̖͈ȉ̒ʂ
 +          EWFX``VK쐬
 -          Iڂ폜
 C          I`ini`eLXgNbv{[hɃRs[
          IڂɈړ
          IڂɈړ

 ύX       ҏW̒`̕ύX
 ǉ       ҏW̃[AWFX`p^[A슄蓖ĂVKɓo^
 XV       ҏW̃[AWFX`p^[A슄蓖Ă㏑

 OK         ݒۑAXNvgɔf
 LZ ݒۑɏI
 
 Nbv{[hC|[g
            Nbv{[hini`eLXg`ǉ

Nbv{[hւ̃Rs[EC|[gł́AfȂǂ֓\t邱ƂlA
TabyTABzɒuB


u`v^u
\tgƂu^Cgo[vȂǂ̏ɉ슄蓖ĂꍇA
炩߂ŏ`ĂB
`ɂ́AppƁu_v̂ݎgpłA̒`ƓO͕tȂB
uDisablev`ɂ́AWFX`̔F̂𖳌\tgȂǂ
񋓂B̏`́A폜El[łȂB

ʂƏl͂AuǉvuXVvœo^B
ЂƂ̒`ɑ΂āÃ[o^łB
ʏ́A[̂ǂꂩЂƂɈvΏɈvƂ݂Ȃ邪A
uׂĂɈvvIĂƁA񋓂ꂽׂẴ[ɈvƂ̂
̏`Ɉv̂Ƃ݂Ȃ悤ɂȂB

eʂ̈Ӗ͈ȉ̒ʂ
  WClass     ^[QbgEBhẼNXlɎw肵ƈv邩
  CClass     ^[QbgRg[̃NXlɎw肵ƈv邩
  Exe        ^[QbgEBhELvZX̖Olƈv邩
  Title      ^[QbgEBhẼ^CglɎw肵ƈv邩
  Custom     lɎw肵AutoHotkey̏^ɂȂ邩
  Include    lɎw肵`ɈvĂ邩

^[QbgEBhEA^[QbgRg[Ƃ́AWFX`JnꂽƂ
}EXJ[\ɂEBhERg[̂ƂłB
NX́AEBhE̎ނʂ邽߂ɕt閼ÔƁB

ʑI𗓂̉Éúv{^ƁAl͕̓⏕@\sB
Customł͏ev[g̑Ij[AIncludeł͏`Ij[
\AȊOł͎wEBhEl擾@\sB


uWFX``v^u
FWFX`̃p^[o^B
ЂƂ̃WFX``ɑ΂ĕ̃WFX`p^[o^łB
ẽWFX`́AŜňo^łȂB

WFX`p^[́AJ[\ړ{^̉EグɑΉ
q̂ŕ\Bڂdl͌qB
͗Ƀp^[͂AuǉvuXVvŁAXgɓo^B
̓̓plŃXg[N\{^NbNA{^Xg
_uNbN邱ƂŁA͗Ƀp^[ǉłB
u-v{^ŁA̓폜łB
͗𒼐ڕҏW邱Ƃ\B


u슄蓖āv^u
WFX``œo^WFX`FꂽƂɎs铮ݒ肷

uvŁA`œo^IAuvł̏ɈvƂ
s铮ݒ肵AuǉvuXVv{^œo^B
ŁuDefaultvIƁÅ蓖čςݏɈvȂƂ
ݒłB
ɕ̏𖞂ꍇɂ́Aԏ̊蓖Ă݂̂s悤ɂȂB

uvAutoHotkeỹXNvgŎw肷B
̃hbv_EXgŃev[gIāúv{^ƂŁA
悭g铮̓͂\łB
Ap[^ǉŋLqȂ΂ȂȂ̂B
ɂ悭gL[쑗MR}huSendv̎gɂẮALURLQƁB
http://lukewarm.s101.xrea.com/commands/Send.html
Win`nR}hŃEBhEẅȗƂ́A^[QbgEBhE
ΏۂƂȂBASendR}hȂǁA^[QbgEBhEɊ֌WȂ
WindowsŜɑ΂čpR}hB
̑xȋ@\ɂĂ͌qB


uݒv^u
e̐ݒύX

EuXg[NFɕKvȃsNZv
WFX`Fɂ̋ȏJ[\ړƃXg[NƂĔFB
Xg[NɂĂ͌qB

Eu^CAEgv
uړJnƂ݂ȂȂsNZvȏJ[\ŁA
u~Ƃ݂ȂԁvȏJ[\~ƁAWFX`̔Fł؂B

EuXg[NF̃C^[ov
傫ƔFׂ̕邪AFx͒ቺB

EuANeBuEBhE^[Qbgɂv
WFX`JñJ[\̃EBhEERg[ł͂ȂA
ANeBuEBhEƃtH[JX̂Rg[^[QbgƂ݂ȂB

EuNirLv
͒̃WFX`c[`bv\@\NONɂB

Euirv
WFX`̑ɁA͂ꂽXg[Nŕ\

Eu[hv
Xg[N4ł͂Ȃ8ŔF

Eu΂߂̍Lv
^΂(45,135,225,315x)𒆐Sɉx͈̔͂΂߂Ƃ݂ȂB
0ɂƏĉ݂ɁA90ɂƎ΂߂݂̂ɂȂB45xŁAc45x8ƂȂB
΂߂F₷ꍇ60AFɂꍇ30ƂƂB
1Xg[N̂ݎ΂߂gpꍇAučvu΂߂̌v0ɂB
cŊJnƂ͏ĉ݁A΂߂ŊJnƂ͎΂߂݂̂ɂꍇ́A
učv0ɁAu΂߂̌v90ɂB

EuVK{^`v
uL[vŎw肵L[uOvŎw肵{^ƂĔF悤ɂȂB
Ⴆ΁A{^}EX̃hCo[eBeBő6{^F13L[蓖Ă
uOvX3BAuL[vɁuF13vƓ͂āusv΁A
6{^uX3BvƂāuWFX``v^ũ{^ꗗɒǉB
uL[vɋLqL[ɂẮALURLQƁB
http://lukewarm.s101.xrea.com/KeyList.html

E`g6`12{^WFX``̃{^ꗗɐ\
ꍇ́A{^ꂼuLTvuRTvuX3Bv`uX9BvƂĒ`邱ƁB
ȊO̖Oœo^ꂽ{^́APɃ{^݂̂\B


ݒʂɂȂݒ荀
L̐ݒ́AMG_User.ahk̏ɋLq
w肪Ȃ΃ftHglg

;;;;;ir̐ݒ
MG_ExNaviFG=000000		;F(eRRGGBB\616i)
MG_ExNaviBG=			;wiF(VB󔒎͓)
MG_ExNaviSize=24		;TCY
MG_ExNaviSpacing=2		;̊Ԋu
MG_ExNaviPadding=4		;Ɖ̊Ԋu
MG_ExNaviMargin=8		;J[\̋(-1ɂƁAJnʒuɌŒ\)

MG_ExNaviFG_RB=			;RB/X1B/X2BȂǃ{^ƂɐFςꍇɎw

;;;;;;WFX`̏ԂɂȂƂAoȂǂ̃eLXg\
MG_Tooltip_(WFX``)=
(
WFX`̊蓖ĕ\Ȃ
)

WFX`̎dl

{^
{^̉́A{^ɑāu_vt(:LB_)ŕ\B
ԂŗpӂĂ{^́AuLB()vuRB(E)vuMB(zC[)v
uX1B(4)vuX2B(5)vuWU(zC[])vuWD(zC[])vłB
uVK{^`v@\q̃{^`W[Œǉ\B

{^́A{^̎ނ͋ʂu_vŕ\B
NbN({^ė)́AuLB__vuRB__v̂悤ɕ\ƂɂȂB
zC[]ɂ́A{^݂͑ȂB


Xg[N
{^܂܃J[\𓯂ɈʓƁAXg[NƂ݂ȂB
4[hł́A㉺Eւ̃Xg[NꂼuUvuDvuLvuRvŕ\B
8[hł́AL̂悤ɃeL[̈ʒuɑΉŕ\B

7  8  9
 _|^ 
4| |6
 ^|_ 
1  2  3

8[hł́Au΂߂̍Lv̐ݒ肪\B
ݒł́Ae45xłB̏ꍇ̏c̍L45xƂȂB
΂߂60xɐݒ肵ꍇc30xA30xɐݒ肷60xɂȂB
ɂAc͎΂߃Xg[N̂ǂ炩FՂłB

1Xg[NƁAcXg[ŇA΂߃Xg[ŇňقȂݒ\ŁA
ꂼL0x90xɂ邱ƂłB
ɂAcŎn߂ꍇ͏cXg[N݂̂ƂA1Xg[N̂8
Ƃݒ\łB


Xg[N
uݒv^úuʏXg[NvŎw肵ȏ̈ړł΁A
sNZł1Xg[NƂ݂Ȃ邪A3̐ݒŎw肵𒴂
uLLvuRRvuUUvuDDv̂悤ȒXg[NƂĔFB

ftHgݒ͂Ȃ傫߂Ȃ̂ŁAʓIȃfBXvCł2iK܂łł邪A
ݒl΁uLLLv̂悤3iKȏ̃Xg[N\łB


ʒ[ւ̐ڐG̔F
J[\ʒ[ɒB邱Ƃ{^ƂĔF@\pӂĂB
ڍׂ́uMG_ScreenEdgevtH_QƁB


WFX`̘A
uRB_MB__vuRB_Lv̂悤ȃWFX`ƁÃ{^ȊO
eZbgAuRB_v܂œ͂ꂽԂFĊJB
ׁ̈ÃWFX`́A{^܂܉xłAłB

ȂAuRB_MB_vɓ삪蓖ĂĂꍇAzC[{^ꂽ_
WFX`ǍuRB_MB_v̏ԂFsB
̌zC[{^ƁuRB_MB__v̏ԂɂȂB


uςȂŘAvɂ
uRB_LB_vȂǁA{^_ŔWFX`ɁA
L̂悤ȓ蓖ĂB
MG_While()֐̏ڍׂɂĂ͌qB

if(MG_While()){
	;ĂԂ̓
}else{
	;Ƃ̓
}


_uWFX`
ʏAuRB_LR_vuRB__v̂悤ȑ삪sASẴ{^ꂽ
ԂɂȂƁA͒̃WFX`e͊SɔjB
ׁ̈AuRB__RB__v̂悤ȁArőS{^WFX`͔FłȂB

Auݒv^ũ_uWFX`̊Ԋuݒ肵ĂꍇA
uRB__v̊蓖ēŁuMG_Wait(500)v̂悤ȏsꍇ́A
w肳ꂽ(~b)WFX`̒ǉ͂\ƂȂB

ɂuWU_vuWD_vȂǂ̉ςȂɂȂȂ{^Jn
WFX``ł邪Aɂ̓WFX`̊Jn{^ƂĎgĂ
{^gݍ߂ȂB
Ⴆ΁AuX1B_vŎn܂WFX`݂ȂꍇAuWU_X1B__v̂悤
WFX``ĂFȂB


^CAEg
FɁAJ[\ړĂ炵΂炭~ƁA^CAEgɂȂB
̎_ŉ̃{^̉ƃJ[\ړČꂳA
ȍ~͕ʂ̃}EX삪\ɂȂBED&DƂȂǂɗpB

uMG_Abort()v蓖Ă΁AɃ^CAEgԂɂ邱Ƃ\B


Zbg
F̃WFX`񂪒`ĂWFX`̍ő咷𒴂ƁA
Iɉ̃{^ȊO̓eNAꂽԂɂȂB



`
XNvgŎgpł@\̏ڍׂ́ALURL̃t@XQƁB
L[𔭐SendR}hAEBhE֘AR}h悭gB
http://lukewarm.s101.xrea.com/
http://lukewarm.s101.xrea.com/commands/Send.html
http://lukewarm.s101.xrea.com/commands/index.html#window
EBhE֘AR}hł́AftHg̑ΏۃEBhE^[QbgEBhE
ȂĂ̂ŁAΏۃEBhEw肷͏ȗ\łB

Ȃ΁APɓ͍ς݃WFX`̃Zbĝ݂sB

蓖Ă쎩̂́AȂׂɏI悤ɂ邱ƁB
_CAO̕\Ȃǂsꍇ́AqMG_Timer()𗘗pB



[eBeBϐE֐
`́uCustomvAWFX`Ɋ蓖Ă铮ł́A
ȉ̕ϐ֐𗘗płB
ȂA`Œ`́AuMG_Isݒ薼vƂO̊֐Ƃ
`B

MG_Gesture      ͒̃WFX`
MG_TickCount    WFX`JnA_TickCount̒l(̎_̌o߃~b)
MG_X            WFX`JnW()
MG_Y            WFX`JnW(c)
MG_HWND         WFX`JnWł̃}EXEBhẼnh
MG_HCTL         WFX`JnWł̃}EXRg[̃nh
MG_PID          ^[QbgEBhELvZXPID
MG_Exe          ^[QbgEBhELvZX̖O
MG_WClass       ^[QbgEBhẼNX
MG_CClass       ^[QbgRg[̃NX
MG_Title        ^[QbgEBhẼ^Cg
MG_Executed     ̃WFX`FɔWFX`̐

MG_GetFocus()
	tH[JX̂Rg[̃nh𓾂
MG_Win(cmd)
	^[QbgEBhEWinGet(ڍׂ͉LURLQ)ŏ擾B
	cmdɂ"PID"A"Transparent"A"TransColor"A"Style"A"ExStyle"Ȃ
    http://lukewarm.s101.xrea.com/commands/WinGet.html
MG_WinX()
	^[QbgEBhẺWԂ
MG_WinY()
	^[QbgEBhȄcWԂ
MG_WinW()
	^[QbgEBhE̕Ԃ
MG_WinH()
	^[QbgEBhE̍Ԃ
MG_CIndex()
	^[QbgEBhEɂ铯NXRg[ł
	^[QbgRg[̏ʂ1̐ŕԂB
	̒l͒ʏARg[ꂽԂɂȂB
	EBhEłAʕtϓꍇ̂ŁA܂蓖ĂɂȂȂB
MG_ControlX()
	^[QbgRg[̃EBhEł̉WԂ
MG_ControlY()
	^[QbgRg[̃EBhEł̏cWԂ
MG_ControlW()
	^[QbgRg[̕Ԃ
MG_ControlH()
	^[QbgRg[̍Ԃ
MG_ExePath(pid)
	^[QbgEBhE(PIDw莞͂̃vZX)̎st@CpX擾
MG_CommandLine()
	^[QbgEBhȄLvZX̃R}hC擾B
	XNvgzXgȂǂŎsĂvOŁAƂȂXNvg
	t@C肪ɔʂsƂɎgpB
	̈vɂ́uInStr()vuRegExMatch()vgB
MG_HitTest(c)
	^[QbgEBhE(c=1ȂRg[)̏ꏊ̎ނԂ
    ȕԂl"Client","Menu","HScroll","VScroll","Border","SizeBorder",
    "Caption","SysMenu","MinButton","MaxButton","CloseButton","HelpButton"B
    SysMenuƂ̂́A^Cgo[[̃ACR̂ƁB
MG_LvHitTest()
	^[QbgRg[Xgr[̎AJ[\ɂ̂̎ނԂ
	ԂĺAXgr[ȊOł""AȂƂł0Ȃ͉LB
	"ItemIcon","ItemLabel","ItemState"(sI^ڍו\̎2ڈȍ~Ȃ)
MG_TvHitTest()
	^[QbgRg[c[r[̎AJ[\ɂ̂̎ނԂ
	ԂĺAc[r[ȊOł""AȂƂł0Ȃ͉LB
	"ItemIcon","ItemLabel","ItemState"(sI^ڍו\̎2ڈȍ~Ȃ)
	"Indent"(ڂ̍),"Button"(TuACe̊J{^),"Right"(ڂ̉E)
MG_TreeListHitTest()
	J[\c[r[AXgr[̃ACeɂ邩ǂԂ
MG_GetCursor()
	^[QbgEBhEɂÃ݂}EXJ[\̃nh𓾂B
	WindowsW̃J[\𔻕ʂ鎮́AJX^͕̓⏕j[
	Iē͂łB
MG_DumpWinInfo()
	^[QbgEBhEARg[̃NXAʒuȂǂ̏񋓂
	ԂBuMsgBox,% MG_DumWinInfo()vȂǂƂĎgB


MG_Send(btn,DorU)
    {^G~[gBbtn̓{^(u"RB"vȂ)
    DorU"D"Ȃ牟A"U"Ȃ牟グAw莞̓NbNB
MG_Move(x,y)
    }EXJ[\wWɈړ
    x,yȗꍇAWFX`̊JnWɈړ
MG_Scroll(x=0,y=0,hctl=MG_HCTL)
	hctlŎw肵Rg[xJEgAcyJEgXN[
	1JEgӂ̈ړʂ́ARg[ƂɈႤ
MG_InstantScroll(stay=1,ppc_x=8,ppc_y=12,hctl=MG_HCTL)
	WFX`Jnʒȗ΋ɉăXN[
	ppc_x,ppc_ýA1JEgXN[̂ɕKvȈړ
	MG_While()Ƒgݍ킹ĎgB
	stay=1ł́AXN[J[\ʒu߂
	stay=0ɂƃJ[\ʒu߂炸AIẼzC[{^̂悤ȓɂȂ
MG_DragScroll(ppc_x=8,ppc_y=12,hctl=MG_HCTL)
	Rg[hbOĈړ悤ȊɃXN[
MG_DropFiles(filenames=Clipboard,target=ahk_id %MG_HWND%)
	t@CEBhEɃhbvBWM_DROPFILESgpB
	́Ahbvt@CBs؂ŕw\B
	ȗꍇ́ANbv{[h̃t@C/t@CB
	́APostMessagẽEBhEwŎg^CgB
	w莞̓^[QbgEBhEw肳B
MG_FilesToClipboard(flilenames,isMove=0)
	wt@CGNXv[Ȃǂɓ\t`ŃNbv{[hɃRs[
	́Ahbvt@CBs؂ŕw\B
	1ɂƁA\tƂɃRs[ł͂Ȃړ悤ɂȂB


MG_Abort()
    WFX`ɋIɃ^CAEg
MG_Counter(name=MG_Gesture,count=2)
	nameł̊֐Ă΂ꂽ񐔂JEgB
	namew莞́A͒̃WFX`񂪎gB
	s邲ƂɈ̏Ԃŕʂ̓𔭐ꍇȂǂɎgpB
	count2ȏ̏ꍇ́A̐Ŋ](0`count-1)ԂB
	count1̏ꍇ́Al0ɃZbgB
	count0̏ꍇ́AJEg𑝂₵ŁÃ݂JEgԂB
	count-1̏ꍇ́AJEg𑝂₳ɁÃ݂JEgԂB
	Ⴆ΁Acount2ȂAs邲Ƃ0,1݂ɕԂB
	count̏ꍇ́A݂̒l̎擾݂̂sB
MG_Wait(ms=0)
    蓖ĂŎsƁAWFX`LZƂȂA
    ͍ς݃WFX`̃ZbgsꂸAē͉\ɂȂB
    msőҋ@~bw肷ƁA_uWFX`̎t҂sB
    ́A_uWFX`̋N_ɂWFX`ȂꍇɎgB
MG_Timer(ms)
    ԍs̃^C}[ZbgBmsɑ҂(~b)wB
    }CiXɂlw肵ꍇAMG_Wait()sB
    ̏ꍇA҂Ԃ܂ł̊Ԃɓ͓eωƁA^C}[͎sȂB
    _uNbNƁu1̂݁ṽNbNœ𕪂ƂȂǂɎgB
    msȗƁAWFX`F̏I҂B
    ́A_CAO\Ȃǂ̎Ԃ̊|鏈蓖ĂƂɎgB
    ^C}[sƁAWFX`Tu[`ēxsB
    ̊֐́A^C}[o^ꍇ1A^C}[ŌĂ΂ꂽꍇ0ԂB
    蓖Ă̑OɁuif(MG_Timer())	return	vĎgB
MG_Defer()
	u!MG_Timer()vԂB
	WFX`̔FI҂ĒxsƂɎgB
MG_While(ms=20)
	uRB_vuRB_LB_vȂǂ̃{^ĂԒJԂsA
	{^Ƃɓ̓s肷B
	WFX`ĂяoƓo^A{^ƉB
	ms1ȏ̏ꍇAms~bƂɓWFX`Tu[`sB
	{^ꂽƂɂ́AɓWFX`Tu[`sB
	̊֐́Ao^ƌJԂśu1vԂÁu0vԂB
	܂AuMG_WhileStatevϐo^0Ao^1ɂȂĂB
	Ɏsł͈̂̂݁B
	uRB_vƁuRB_LB_vȂǁA2ȏ㓯Ɏs邱Ƃ͏oȂB
MG_Hold(max=0)
	Ă{^ꂽƂɓWFX`Tu[`sB
	WFX`Ƃɂ͋̕񂪁A{^ꂽƂɂ
	WFX`̌oߎ({^Ă)ԂB
	̃WFX`Tu[`ł́AxłĂяoB
	uif(MG_Hold()>500){	;	}v̂悤ɂ邱ƂŁA
	莞Ԉȏ̒ɓ蓖ĂB
	uif(MG_Hold() && MG_Hold()<500){	;	}vŁAZNbNƂ
	ɔB
	uRB_vƁuRB_LB_vȂǁA2ȏ㓯Ɏs邱Ƃ͏oȂB


ݒ
L̐ݒ́Aݒʂ́uNbv{[hC|[gvŎ荞݉\B
8[hp̃Xg[N`͊B

EWIȃWFX``
[E]
G=RB_U_
[E]
G=RB_D_
[E]
G=RB_L_
[E]
G=RB_R_
[E+]
G=RB_LR_
[E+NbN]
G=RB_LB__
[E+NbN]
G=RB_MB__
[EzC[]
G=RB_WU_
[EzC[]
G=RB_WD_

ECtrlL[ĂƂ͖

[Disable]
Custom=GetKeyState("Ctrl")

EWFX`FJnɃ^[QbgANeBuɂ
;uSendvȂǂŐ삪s悤
[Gesture_Start]
G=RB_
Default=WinActivateyTABzControlFocus,,ahk_id %MG_HCTL%


EE{^ŉɃhbOꍇ́AɒʏD&DJn
[R_DragStart]
G=RB_D
Default=MG_Abort()


EzC[^[QbgRg[Ƀ_CNg

[WheelRedirectUp]
G=WU_
Default=PostMessage,0x020A,% 0x00780000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6,% MG_Y<<16|MG_X,,ahk_id %MG_HCTL%

[WheelRedirectDown]
G=WD_
Default=PostMessage,0x020A,% 0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6,% MG_Y<<16|MG_X,,ahk_id %MG_HCTL%


EE{^Ȃ獶ړĕƁu߂vAEړŁuiށv

[R_Left]
G=RB_L_
Default=Send,!{Left}

[R_Right]
G=RB_R_
Default=Send,!{Right}


EE{^Ȃ獶AEƓĂƃEBhE

[R_LR]
G=RB_LR_
Default=WinClose

EE{^Ȃ獶NbNŁuF5vL[𑗐M
[R_LButton]
G=RB_LB__
Browser=Send,{F5}


EE{^ȂzC[̏㉺PageUp/PageDown
[R_WheelUp]
G=RB_WU_
Default=Send,{PgUp}

[R_WheelDown]
G=RB_WD_
Default=Send,{PgDn}


EE{^Ȃ獶{^čAEƓĂƋI

[R_L_LR]
G=RB_LB_LR_
Default=Process,Close,% MG_Win("pid")


EE{^Ȃ獶Eɑ傫ړă{^ƑSEBhEŏ

[R_RightLong]
G=RB_RR_
Default=WinMinimizeAll


E̔΂ŕ

[R_LeftLong]
G=RB_LL_
Default=WinMinimizeAllUndo


E5{^NbNōő剻/

[MaximizedWindow]
Custom=MG_Win("MinMax")=1

[X2B]
G=X2B__
MaximizedWindow=WinRestore
Default=WinMaximize


E5{^Ȃ獶EɈړƁAXނ̃EBhE؂ւ

[X2_Rights]
G=X2B_R
Default=WinSet,Bottom,,ahk_class %MG_WClass%	WinActivate,ahk_class %MG_WClass%

[X2_Lefts]
G=X2B_L
Default=WinActivateBottom,ahk_class %MG_WClass%

#5{^NbNɓ蓖Ăꍇ́Auif(MG_Executed=1)v
#؂ւWFX`Ăꍇ͔Ȃ悤ɂ
[X2B]
G=X2B__
Default=if(MG_Executed=1)	WinSet,Topmost,Toggle


ELł͏Ƃɐ؂ւĂ܂ĎgÂ炢ꍇ
[X2_Ignore]
G=X2B_L
G=X2B_LL
G=X2B_LLL
G=X2B_R
G=X2B_RR
G=X2B_RRR
Default=MG_Wait(1)
#MG_Wait()ő󂯕tꍇAThresholdsNZ̈ړŎFB

#rŔ΂Ɍꍇ̓Zbg
[X2_Cancel]
G=X2B_LR
G=X2B_LLR
G=X2B_LLLR
G=X2B_RL
G=X2B_RRL
G=X2B_RRRL
Default=

#ThresholdŎw肵4{Ƃɔ
[X2_4Rights]
G=X2B_RRRR
Default=WinSet,Bottom,,ahk_class %MG_WClass%	WinActivate,ahk_class %MG_WClass%

[X2_Lefts]
G=X2B_LLLL
Default=WinActivateBottom,ahk_class %MG_WClass%

[X2B]
G=X2B__
Default=if(MG_Executed=1)	WinSet,Topmost,Toggle



EE{^Ȃ~`ƂɎs
[R_CircleR]
#FႷ̂ŁA8[h̒`͏ȗ
G=RB_URDL
G=RB_RDLU
G=RB_DLUR
G=RB_LURD

IrfanView=Send,{+}

[R_CircleL]
G=RB_ULDR
G=RB_LDRU
G=RB_DRUL
G=RB_RULD

IrfanView=Send,{-}



E5{^Ń^Cgo[NbNƍŏA̕ł͍őOʕ\ON/OFF

[TitleBar]
Custom=MG_HitTest()="Caption"

[X2B]
G=X2B__
TitleBar=WinMinimize
Default=WinSet,Topmost,Toggle


E5{^̃VONbNōsIA_uNbNőSI

[x2]
G=X2B__
Editor=MG_Send("LB")	Send,{End}+{Home}	MG_Wait(500)
#{End}+{Home}Ƃ́A[End][Shift]+[Home]ƂӖ
#MG_Wait(500)ő̓͂҂

[x2d]
G=X2B__X2B__
Editor=Send,^a


E5{^̃VOE_uEgvNbNɂꂼʂ̓蓖

[x2]
G=X2B__
Default=if(MG_Timer(-500))	return	Send,1

[x2d]
G=X2B__X2B__
Default=if(MG_Timer(-500))	return	Send,2

[x2t]
G=X2B__X2B__X2B__
Default=Send,3


E5{^D&D邱ƂɂAI͈͂̈ړ(Jbg&y[Xg)s

#5{^Ȃ}EX𓮂Ă(uX2B_v̏Ԃɖ߂)
[X2_IgnoreStroke]
G=X2B_L
G=X2B_R
G=X2B_D
G=X2B_U
Default=

#Ctrl+XŃJbgAړNbNACtrl+Vœ\t
[X2_DnDMove]
G=X2B__
Default=Send,^x	MG_Send("LB")	Send,^v

#{^΁AuX2B_LB___v̂悤ɂȂĔj~ł



EE`gXN[

[LT]
G=LT_
Default=if(MG_While()){yTABzMG_Scroll(-3)yTABz}

[RT]
G=RT_
Default=if(MG_While()){yTABzMG_Scroll(3)yTABz}



u}E؁v̈ڍs@
KɊ撣ĂB


uStrokeItv̈ڍs@
KɊ撣ĂB


WindowsVistał̐
UAC̈ʌł́AǗҌ̃vZXSendȂǂőłȂB
tAutoHotkeỹvZXǗҌŎsĂꍇA
MG_CommandLine()ňʃvZX̃R}hC擾łȂȂǂ̐B

MG_User.ahkɁu#SingleInstance,offvLqADisableɁuMG_CommandLine()=""v
o^āAʌƊǗҌ̗MouseGesture.ahks΁A
̌̃vZXŊSɓ삷悤ȋCB




MouseGesture.ini̒ڕҏWɂݒ
init@C̎dĺAeLXgGfB^ȂǂłҏW₷悤ɐ݌vĂB
̑AGgEZNV̏ddl̂߁A
AutoHotkeyIniWriteȂǂœǂݏƉ\邱ƂɒӁB

SettingsZNVŉL̗̂悤EditCommandݒ肵ĂƁA
j[́uݒҏWvł̃R}hs悤ɂȂB
̏ꍇAҏWɁuċNvsăXNvgɔfKvB

EditCommand="edit " . A_ScriptDir . "\MouseGesture.ini"


t@CtH[}bg
u[ZNV]v̂悤ȍsZNV̎n܂A
uO=lv̂悤ȍsGgĈB
u#vŎn܂sƋsȂLtH[}bgɈvȂs͖B
pXy[X̓^uɑu#vsA
u/*vŎn܂su*/vŏIsRgƂĖB


`ZNV
ZNVɂ́ACӂ̉pŒ`LqB
L̃GgƁuGvuDefaultvƂO͎gȂB

uWClassvuCClassvuTitlevuExevuCustomvuIncludev
ƂÕGgŁA[`B
uAnd=1vƂGgƁASĂɈvꍇ̂݃}b`ƂȂB


WFX`ZNV
WFX`ƁAɑ΂铮`BZNV͉ł悢B
WFX`p^[`uGvƂÕGgȏ܂ނƁB

ʊ蓖ẮA`uDefaultvƂOGgƂA
lɓ̃XNvgLqB
s̃XNvǵATabŋ؂1sŋLqB


uSettingsvZNV
Gg͈ȉ̕BlɂAutoHotkey̎(ʏ͒PȂ鐔l)wB
w肷ꍇ́Au"vň͂܂ȂĂ͂ȂȂB

Interval=           WFX`F̃[vԊu(xオ)
TimeoutThreshold=   ^CAEg\ɂȂ̂ɕKvȈړsNZ
Timeout=            ^CAEgԂɂȂ܂ł̐Î~~b
Threshold=          Xg[N̔FɕKvȈړsNZ
8Dir=               1ɂ8[hɂȂ
DGInterval          _uWFX`̊Ԋȕ~b
LongThresholdX=     uLLvuRRv̔FɕKvȈړsNZ
LongThresholdY=     uUUvuDDv̔FɕKvȈړsNZ
LongThreshold=      8[hł̒Xg[NFɕKvȈړsNZ
EditCommand=        uҏWvj[ŎsR}h


{^`W[dl
}EX{^Ȃǂ̔F́A@\ǉՂ悤ɃW[ĂB
VKW[́Aݒʂ́uݒv^uuVK{^`vō쐬łB
ŃXNvg쐬΁AȔFv{^`\łB

W[́uMG_ButtonsvtH_ɁuO.ahkv̂悤ȖOŕۑB
OD,L,R,UȊÕAt@xbgŒ܂ށAȂׂȌȉpɂB
ȊÕTu[`Ȃǂ́AGotoŔщz悤ɋLq邱ƁB
܂AsA_ScriptDirϐ́AMouseGesture.ahk̂tH_ɂȂ̂ŒӁB

}EX{^̂悤ɉ܂܂ɂ邱ƂốAugKvƂ݂ȂB
gK`W[ɂ́Aȉ̂悤ȃx̃Tu[``B

MG_O_Enable:         ;gKLTu[`
MG_O_Disable:        ;gK𖳌Tu[`
MG_O_Down:           ;gK̉G~[gTu[`
MG_O_Up:             ;gK̉グG~[gTu[`

Ƃ͕ʂɁAgK̔FpӂB(zbgL[蓖ĂȂ)
FɂĉFꂽuMG_TriggerDown("O")vA
グFꂽuMG_TriggerUp("O")vsA{̂ɒʒmB

zC[]̂悤ɁA܂܂̏Ԃ́u{^vƂ݂ȂB
{^`W[̏ꍇAȉ̃Tu[``B

MG_O_Enable:         ;{^LTu[`
MG_O_Disable:        ;{^𖳌Tu[`
MG_O_Press:          ;{^G~[gTu[`

{^ꂽƂFAuMG_ButtonPress("O")vsB



pO[oϐE֐ETu[`
Oq̃[eBeBϐƁAMouseGesture.iniSettingsZNV̍ږ
uMG_vtO̕ϐ(uMG_IntervalvȂ)̑Aȉ̕B
ڍׂ̓XNvgeQƁB

MG_Triggers         WFX`̊JnɎg{^(u_v؂)
MG_SubTriggers      ͓rł̂ݎgp{^(u_v؂)
MG_MaxLength        o^ĂWFX`̍ő啶

MG_Enabled          WFX`̊Jn{^LĂ邩
MG_NaviEnabled      uir\v̏

MG_Active           WFX`̃Xg[NFsǂ
MG_TimedOut         WFX`^CAEgǂ
MG_Aborted          MG_Abort()Œfꂽꍇu1v
MG_LastTime         ŌɃWFX`񂪕ω(A_TickCount)

MG_CurTriggers      ݉Ă{^̈ꗗ(u_v؂)
MG_TriggerCount     ݉Ă{^

MG_TimerGesture     MG_Timer()ŗ\񂵂WFX`
MG_TimerMode        ^C}[̎ނԂi[
MG_WaitNext         MG_Wait()Őݒ肳ꂽҋ@~b

MG_ShowNavi:            ir\p^C}[Tu[`
MG_TimerExecute:        MG_Timer()̃^C}[Tu[`

MG_TriggerDown(name)    gK{^̕񍐂󂯕t
MG_TriggerUp(name)      gK{^グ̕񍐂󂯕t
MG_ButtonPress(name)    {^̕񍐂󂯕t
MG_GetMousePosInfo()    }EXJ[\ʒuMG_HWNDȂǂ擾
MG_Check(gesture)       ͂ꂽWFX``ς݂̏ꍇs
                        1ԂB
                        gesturew莞́ÃWFX`̓sB
MG_Gesture(trigger)     WFX`̃Xg[NFBtrigger͊Jn{^
                        Fsꍇ1ԂB



XV
2008/10/07
EMG_DropFiles()AMG_FilesToClipboard()ǉ

2008/09/18
EVK{^`Łu~v̃L[`Ƃ삷悤ɕύX

2008/09/15
EMG_Hold()AMG_Defer()ǉ

2008/09/12
EMG_CommandLine()ǉ

2008/09/11
EMG_GetCursor()ƂɔJX^ev[gǉ

2008/09/08
EꕔŁuǂꂩɈvv̕\ȂsC
EftHgŃgCj[[gɕ\悤ɕύX
Ȇ

2008/09/07
E^[QbgEBhEERg[̈ʒuTCYȂǂ擾֐ǉ
ETvƂēo^Ăݒ炵
Ȇ

2008/08/24
EMG_LvHitTest()AMG_TvHitTest()AMG_TreeListHitTest()AMG_PIDǉ

2008/03/16
EMG_GetFocus()AMG_Counter()AMG_ExePath()ǉ
EsC

2008/03/13
EMG_Scroll()AMG_DragScroll()AMG_InstantScroll()ǉ
EuANeBuEBhE^[QbgƂvݒǉ
EWFX`̊Jn{^蓖Ăs^[QbgsɂȂC

2008/03/12
Eʒ[ڐGFW[쐬
EݒʂɁuLTvuRTvuX3Bv`uX9Bv̕\`

2008/03/01
EMG_While()ǉ
EMG_Timer()̌AFɃWFX`eωĂ삷悤
EL[s[gL[gKɂƂ̕sC

2008/02/24
EݒʂɐVK{^`@\ǉ

2007/12/07
Eŏ̃gKɃANV蓖Ă悤ɕύX
Ec[`bvirɎw̃eLXg\@\ǉ
Eꕔt@C̉sR[hLF̂CRLFɕύX

2007/11/14
Eir̋@\ǉ
ENirLݒǉ

2007/11/05
E8[hŁA΂߂Ƃ݂Ȃpx͈̔͂ݒ\ɂ
EJ[\ړMG_Move()ǉ
EIvVݒ肪ۑȂoOC
Es̓ۑ2sڈȍ~oOC
EN̏AMG_Config.ahkɈړ]

2007/11/01
E슄蓖ĉʂŃc[o[̃{^ID𒲂ׂ@\ǉ
EXNvg̃ev[gŁA̓̓_CAOo悤ɂ
EݒҏWɃXNvgċNȂ̂C

2007/10/31
E`ɎgȂ܂񂾖O̊mh~
EWFX``̏dh~
EWFX``̃obNXy[X{^

2007/10/30
EԂŋNoȂC

2007/10/28
Eݒʂ쐬

