WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2 Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2

Post by divanebaba » 21 May 2024, 02:57

Hallo.
Das Scrollrad meiner Maus ist defekt. Beim Scrollen scrollt es manchmal kurz in die andere Richtung.
Zum Beheben dieses Problems habe ich folgenden Code geschrieben.
Die Variablendeklarierung ist überraschenderweise ziemlich kompliziert gewesen und ich habe sie folgendermaßen gelöst.

Funktion des Scripts ist ganz einfach.
Wenn zuvor in eine bestimmte Richtung gescrollt wurde, wird ein einzelnes entgegengesetztes Signal einfach verschluckt.
Variable "dd2" wird wie eine Art Merker verwendet.

Code: Select all

global dd := "d"
global dd2 := "d"

$WheelDown::
{
global dd := "d"
if (dd = "d" && dd2 = "d")
	sendinput "{Wheeldown}"
global dd2 := "d"
}

$WheelUp::
{
global dd := "u"
if (dd = "u" && dd2 = "u")
	sendinput "{WheelUp}"
global dd2 := "u"
}
Ich finde den Code, auch wenn er bisher reibungslos funktioniert, irgendwie seltsam und wüsste gerne, wie man professioneller mit diesen "globalen" Variablen umgeht.
Einfach nur ein toller Typ. :mrgreen:

Nussbeisser
Posts: 121
Joined: 17 Jul 2019, 08:49

Re: WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2  Topic is solved

Post by Nussbeisser » 21 May 2024, 04:26

Hallo,
Ich wäre bei der Variablen so vorgegangen:

Code: Select all

 dd := "d"
dd2 := "d"

$WheelDown::
{
global
dd := "d"
if (dd = "d" && dd2 = "d")
	sendinput "{Wheeldown}"
dd2 := "d"
}

$WheelUp::
{
global
dd := "u"
if (dd = "u" && dd2 = "u")
	sendinput "{WheelUp}"
dd2 := "u"
}

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2

Post by divanebaba » 21 May 2024, 04:46

Hallo @Nussbeisser.
Dein Vorschlag sieht besser aus und funktioniert, soweit ich das erkennen kann, genausogut.
Vielen Dank.
Einfach nur ein toller Typ. :mrgreen:

just me
Posts: 9582
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2

Post by just me » 21 May 2024, 07:10

Moin,

in v2 sind auch Hotkeyroutinen Funktionen. Man kann sie für mehrere Hotkeys 'stacken' und mit eigenen statischen Variablen ausstatten.

Code: Select all

#Requires AutoHotkey v2.0

$WheelDown::
$WheelUp::
{
   Static PreviousWheel := ""
   If (PreviousWheel = ThisHotkey)
      Send("{" . SubStr(ThisHotkey, 2) . "}")
   PreviousWheel := ThisHotkey
}
Ist das nicht wunderbar?
(Kein falscher Neid, in v1 könnte man das ähnlich lösen)

User avatar
Noitalommi_2
Posts: 335
Joined: 16 Aug 2023, 10:58

Re: WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2

Post by Noitalommi_2 » 21 May 2024, 16:01

Hi.

In dem Fall könnte man die statische Variable weglassen und stattdessen A_PriorHotkey nutzen.

Code: Select all

$WheelDown::
$WheelUp:: {

	if A_PriorHotkey = ThisHotkey
		Send "{" SubStr(ThisHotkey, 2) "}"
}
Der allererste Send-Befehl geht damit zwar ins Leere, da A_PriorHotkey zu Beginn noch leer ist. Sollte aber eigentlich nicht stören, falls doch dann ginge dies:

Code: Select all

$WheelDown::
$WheelUp:: {

	if (k := ThisHotkey) = ((p := A_PriorHotkey)?p:k)
		Send "{" SubStr(k, 2) "} "
}

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: WheelUp-, WheelDown-Hotkey wegen defektem Scrollrad - V2

Post by divanebaba » 22 May 2024, 05:48

Hallo zusammen.
Wirklich erstaunlich, welche professionellen Lösungsmöglichkeiten es gibt.
Ich habe mich für den ersten Vorschlag von Noitalommi_2 entschieden, da dieser verständlicher ausgeführt ist.
Vielen Dank für die Codebeispiele.
Einfach nur ein toller Typ. :mrgreen:

Post Reply

Return to “Ich brauche Hilfe”