automatischer RE/LI-Mausklick (RSI / Mausarm Beschwerden)

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rick007
Posts: 1
Joined: 16 Apr 2018, 09:20

automatischer RE/LI-Mausklick (RSI / Mausarm Beschwerden)

16 Apr 2018, 10:17

Hallo,

ich leide unter Schmerzen im Unterarm durch RSI / Mausarm und habe mir zur Entlastung ein Script mit Hotkeys etc. erstellt. Zusätzlich habe ich ein Script gefunden und abgeändert, sodas automatisch am Ende einer Mausbewegung einen Mausklick links macht. Dieses möchte wie folgt ergänzen, scheitert aber an tieferen AHK Kenntnissen.

Das unten angeführte Script soll so abgeändert werden dass, nach dem Beenden einer Mausbewegung:

1. automatischer Mausklick links ausgeführt wird, falls keine Taste gedrückt ist. Diese Funktion ist im Script umgesetzt, leider funktioniert es nicht ganz richtig, da es beim Text schreiben ständig einen automatischen Mausklick auf die Stelle macht, wo die Maus zuletzt hinbewegt wurde.
2. bei gleichzeitig gedrückter ALT - Taste ein automatischer Mausklick rechts ausgeführt wird
3. bei gleichzeitig gedrückter STRG+ALT Taste ein automatischer Mausklick unterdrückt wird - kein Klick durchgeführt wird
4. durch STRG + Q der automatische Klick bis zum nächsten STRG+ Q pausiert wird (toggle)

5. bei gleichzeitig gedrückter STRG- Taste ein automatischer DOPPEL-Mausklick links ausgeführt wird

und falls nicht zu kompliziert auch:
6. bei gleichzeitig gedrückter STRG+WIN Linke Taste die linke Maustaste gedrückt wird und solange gedrückt bleibt bis die Maus erneut stehen bleibt (Maus ziehen)

Es wäre super, wenn mich jemand hierbei unterstützen kann, am wichtigsten wäre mir, dass 1. bis 4. funktionieren, Funktionen unter 5 und 6 benötige ich seltener.

das aktuelle SCRIPT

Code: Select all

#NoEnv
Do_ToolTip:=1
mWait:=200
gosub Mouse_Check
return  ; end auto execute

MOUSE_STOPPED:

sleep, 500
    Send {LButton}
	return

Mouse_Check:
	mStill:=0
	MouseGetPos, Ox, Oy
	Sleep %mWait%
	loop {
		MouseGetPos, Mx, My
		if( Mx = Ox && My = Oy ) {
			mStill++
			if( mStill >= 5 ) {   ; 5 = 1000/mWait 
				mStill:=0
				if( !IS_MSTOPPED && Do_ToolTip )
					ToolTip, Mouse has stopped moving.
				IS_MSTOPPED:=1
				SetTimer, MOUSE_STOPPED, -1
			}
		} else  {
			IS_MSTOPPED:=0
			ToolTip
		}
		Ox:=Mx, Oy:=My
		Sleep %mWait%
	}
	return


!Esc::       ; Alt + Esc to quit
	ExitApp
danke
Rick

Mod edit: Code-Tags hinzugefügt.
Rohwedder
Posts: 7627
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: automatischer RE/LI-Mausklick (RSI / Mausarm Beschwerden)

17 Apr 2018, 09:15

Hallo,
1. bis 4. sollten jetzt funktionieren (so wie definiert)

Code: Select all

#SingleInstance, Force
#Persistent
#NoEnv
#InstallKeybdHook
CoordMode, Mouse ,Screen
#NoEnv
Do_ToolTip:=1
mWait:=200
gosub Mouse_Check
return  ; end auto execute

Mouse_Check:
	mStill:=0
	MouseGetPos, Ox, Oy
	Sleep %mWait%
	loop {
		MouseGetPos, Mx, My
		if( Mx = Ox && My = Oy ) {
			mStill++
			if( mStill >= 5 ) {   ; 5 = 1000/mWait 
				mStill:=0
				if( !IS_MSTOPPED && Do_ToolTip )
					ToolTip, Mouse has stopped moving.
				IS_MSTOPPED:=1
				SetTimer, MOUSE_STOPPED, -1
			}
		} else  {
			IS_MSTOPPED:=0
			ToolTip
		}
		Ox:=Mx, Oy:=My
		Sleep %mWait%
	}
	return
	
MOUSE_STOPPED:
If GetKeyState("Alt","P")
{
	If GetKeyState("Str","P")
		Return
	Else
		Click, Right
}
Else If !GetKeyState(A_PriorKey,"P") ;keine Taste ist gedrückt
	Click
Return

!Esc:: ; Alt + Esc to quit
	ExitApp
^q:: ;Strg + q zum ein/aus	
	Suspend
	Pause,,1
Return
aber ich bezweifle, daß du damit glücklich wirst.
Meine Lösung war, lernen die Maus auch links zu betätigen (ohne die Linkshändereinstellung zu aktivieren!).
Jetzt kann ich jederzeit zur gesünderen Hand wechseln, auch an fremden Rechnern.

Ich habe den fürchterlichen Dauerloop zum Timer gemacht aber das Ergebnis wird nicht viel besser.

Code: Select all

#SingleInstance, Force
#Persistent
#NoEnv
#InstallKeybdHook
;CoordMode, Mouse ,Screen
#NoEnv
Do_ToolTip:=1
Mbewegt := False
diff = 10 ;Koordinatendifferenz im Quadrat
MouseGetPos, Ox, Oy
SetTimer, Mouse_Check, 200
return  ; end auto execute
Mouse_Check:
	MouseGetPos, Mx, My
	If ((Mx - Ox)*(Mx - Ox)+(My - Oy)*(My - Oy) > diff)
		SetTimer, MOUSE_STOPPED, -1000	
	Ox:=Mx, Oy:=My
Return
	
MOUSE_STOPPED:
if Do_ToolTip
{
	ToolTip, Mouse has stopped moving.
	SetTimer, ToolTip_Stopp, -500
}
If GetKeyState("Alt","P")
{
	If GetKeyState("Str","P")
		Return
	Click, Right
}
Else If !GetKeyState(A_PriorKey,"P") ;keine Taste ist gedrückt)	Click
	Click
Return

ToolTip_Stopp:
	ToolTip
Return

!Esc:: ; Alt + Esc to quit
	ExitApp
^q:: ;Strg + q zum ein/aus	
	Suspend
	Pause,,1
Return

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: gero and 55 guests