piusare/mausuHoldo.ahk

247 lines
5 KiB
AutoHotkey

;;TODO: calcular tuckaway con getpos en launch y pensar en multiscreen
;; poner clics laterales del raton
;; comprobar puntero en local
;; ugly af lo de flagear para compartir un sincro sin sincro, bro. no creo que lo cambie xddd
;;
;;eveentos down del teclado no paraban de joder porque paraban el unico hilo, so _h it was, its threading time
#MaxThreadsPerHotkey 2
#HotkeyInterval 10000
#MaxHotkeysPerInterval 9999
#NoEnv
#WarnContinuableException Off
#Persistent
;;Process, Priority, , R
;;DllCall("mouse_event", "UInt", 1, "UInt", (rightMov + lefMov) , "UInt", upMov + downMov )
;;WINDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWS y ahk unaware del futuro de los escritorios
;;https://www.autohotkey.com/boards/viewtopic.php?t=97706
DllCall("SetThreadDpiAwarenessContext", "ptr", -3, "ptr")
freqUpdater := DllCall("GetProcAddress", "Ptr" , DllCall("GetModuleHandle", "Str", "kernel32", "Ptr"), "AStr", "QueryPerformanceCounter", "Ptr")
;;VarSetCapacity(baseTime, 2334423432128)
;;VarSetCapacity(currentTime, 423523423128)
DllCall(freqUpdater, "Int64*" , baseTime)
DllCall(freqUpdater, "Int64*" , currentTime)
DllCall("QueryPerformanceFrequency", "Int64*", updateRate)
updateRate := updateRate / 1000
currentTime := currentTime ;;/ 1.0
baseTime := baseTime ;;/ 1.0
mouseActive := 0
rBtnHold := 0
mBtnHold := 0
lBtnHold := 0
defaultSpeed := 10
slowDown := 0
slowDownFactor := 90
test1 := 0
test2 := 0
test3 := 0
test4 := 0
;;pressMouseButton("Left", lBtnHold, u)
pressMouseButton(ByRef mouseButton, ByRef toggleState, ByRef keyPressed, ByRef toggle := 0)
{
Global mouseActive
if(mouseActive == 1)
{
if (toggleState == 1)
{
MouseClick, %mouseButton%, , , 1, , U
toggleState := 0
return
}
if (toggleState == 0 && toggle == 1)
{
MouseClick, %mouseButton%, , , 1, , D
toggleState := 1
return
}
if (toggle == 0)
{
MouseClick, %mouseButton%
return
}
KeyWait, %keyPressed%
}
return
}
share:=CriticalObject({"lefMov" : 0,"rightMov" : 0,"downMov" : 0,"upMov" : 0,"mouseSpeed" : slowDown * slowDownFactor + defaultSpeed})
;;TODO DAVBID Y EL ENTER
LAlt & RAlt::
RAlt & LAlt::
;;<^>!LAlt::
;;LAlt & RAlt::
mouseActive := !(mouseActive)
if (mouseActive == 1)
{
mouseThread := AhkThread("
(
#Persistent
Process, Priority, , H
DllCall(""SetThreadDpiAwarenessContext"", ""ptr"", -3, ""ptr"")
freqUpdater := DllCall(""GetProcAddress"", ""Ptr"" , DllCall(""GetModuleHandle"", ""Str"", ""kernel32"", ""Ptr""), ""AStr"", ""QueryPerformanceCounter"", ""Ptr"")
;;VarSetCapacity(baseTime, 2334423432128)
;;VarSetCapacity(currentTime, 423523423128)
DllCall(freqUpdater, ""Int64*"" , baseTime)
DllCall(freqUpdater, ""Int64*"" , currentTime)
DllCall(""QueryPerformanceFrequency"", ""Int64*"", updateRate)
ticksPerSecond := 1000
updateRate := Floor(updateRate / ticksPerSecond)
currentTime := currentTime ;;/ 1.0
baseTime := baseTime ;;/ 1.0
obj := CriticalObject(A_Args[1])
lefMov := obj.lefMov
rightMov := obj.rightMov
downMov := obj.downMov
upMov := obj.upMov
mouseSpeed := obj.mouseSpeed
delta := 0
Loop
{
DllCall(freqUpdater, ""Int64*"" , currentTime)
if (currentTime - baseTime >= updateRate) {
delta := (currentTime - baseTime) / ticksPerSecond
MouseMove, (obj.rightMov + obj.lefMov) * (delta / obj.mouseSpeed), (obj.upMov + obj.downMov) * (delta / obj.mouseSpeed), 0, R
;;DllCall(freqUpdater, ""Int64*"" , baseTime)
baseTime := currentTime
}
}
)", &share "")
}
else
{
mouseThread.ahkTerminate()
;;ahkthread_free(mouseThread)
share.lefMov := 0
test1 := 0
share.rightMov := 0
test2 := 0
share.upMov := 0
test3 := 0
share.downMov := 0
test4 := 0
lBtnHold := 0
mBtnHold := 0
rBtnHold := 0
;;break
}
return
#if mouseActive == 1
;;Toggle speed
'::
h::
Global share
;;SendInput, {RCtrl Up}
slowDown := !(slowDown)
share.mouseSpeed := slowDown * slowDownFactor + defaultSpeed
;;SendInput, {RCtrl Down}
return
;;tuckaway
;;targeting 1080p displays with taskbar on top. Change at your leisure.
p::
y::
;;DllCall("ShowCursor", "Int", slowDown)
MouseMove, 1940, 100
;;inputCleaning()
return
$j::
if (test1 == 0)
{
test1 := 1
share.lefMov := -1
}
return
j Up::
share.lefMov := 0
test1 := 0
return
$sc027::
if (test2 == 0)
{
test2 := 1
share.rightMov := 1
}
return
sc027 Up::
share.rightMov := 0
test2 := 0
return
$l::
if (test3 == 0)
{
test3 := 1
share.upMov := -1
}
return
l Up::
share.upMov := 0
test3 := 0
return
$k::
if (test4 == 0)
{
test4 := 1
share.downMov := 1
}
return
k Up::
share.downMov := 0
test4 := 0
return
$u::
pressMouseButton("Left", lBtnHold, u)
return
u Up::return
$m::
pressMouseButton("Left", lBtnHold, m, 1)
return
m Up::return
$i::
pressMouseButton("Middle", mBtnHold, i)
return
i Up::return
$sc033::
pressMouseButton("Middle", mBtnHold, sc033m, 1)
return
sc033 Up::return
$o::
pressMouseButton("Right", rBtnHold, o)
return
o Up::return
$.::
pressMouseButton("Right", rBtnHold, ".", 1)
return
. Up::return
#if
return