Skip to content

Commit fe84eef

Browse files
committed
Added multi-sliders
Due to popular request, it is now possible to control the debounce delay for individual mouse buttons!
1 parent b1cd008 commit fe84eef

File tree

1 file changed

+62
-33
lines changed

1 file changed

+62
-33
lines changed

ClickFix.ahk

Lines changed: 62 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ startup_shortcut := A_Startup . "\ClickFix.lnk"
1313
settings := Object()
1414

1515
; Initialize Settings in the following way:
16-
; array[key] := ["Section", "Key", "Value"]
16+
; array[key] := ["Section", "Key", "Value", "OPT: Other variables" ...]
1717
settings["lb"] := ["Mouse", "left_button", false]
1818
settings["mb"] := ["Mouse", "middle_button", false]
1919
settings["rb"] := ["Mouse", "right_button", false]
20-
settings["pr"] := ["General", "pressure", 25]
20+
settings["lpr"] := ["General", "left_pressure", 25, "Left click"]
21+
settings["mpr"] := ["General", "middle_pressure", 25, "Middle click"]
22+
settings["rpr"] := ["General", "right_pressure", 25, "Right click"]
2123
settings["sww"] := ["General", "startup_run", false]
2224

2325
; Initialize Last-click times
@@ -78,16 +80,16 @@ settingsGui() {
7880

7981
; Leading Paragraph
8082
Gui, Settings:font, s10 c101013, Arial
81-
Gui, Settings:Add, Text, Left W500 yp+22, Choose which mouse button needs fixing - you can select multiple.`nIf you're having issues, adjust the slider until your clicks are fixed!
83+
Gui, Settings:Add, Text, Left W500 yp+22, Choose which mouse button needs fixing - you can select multiple.`nIf you're having issues, adjust the corresponding slider until your clicks are fixed!
8284

8385
; Standard Settings
8486
Gui, Settings:font, s8 c505050, Trebuchet MS
8587
Gui, Settings:Add, GroupBox, w235 h220, Standard Settings
8688
Gui, Settings:font, s10 c10101f, Trebuchet MS
8789
Gui, Settings:Add, Text, Left w210 xp+12 yp+22, Choose mouse buttons to fix:
88-
Gui, Add, Checkbox, yp+25 vcheck_left_button, Fix Left Mouse Button
89-
Gui, Add, Checkbox, yp+25 vcheck_middle_button, Fix Middle Mouse Button
90-
Gui, Add, Checkbox, yp+25 vcheck_right_button, Fix Right Mouse Button
90+
Gui, Add, Checkbox, yp+25 vcheck_left_button gSettingsCheckBoxes, Fix Left Mouse Button
91+
Gui, Add, Checkbox, yp+25 vcheck_middle_button gSettingsCheckBoxes, Fix Middle Mouse Button
92+
Gui, Add, Checkbox, yp+25 vcheck_right_button gSettingsCheckBoxes, Fix Right Mouse Button
9193
Gui, Settings:Add, Text, Left w210 yp+35, Other Settings:
9294
Gui, Add, Checkbox, yp+25 vcheck_start_with_windows, Start on Windows Startup
9395
Gui, Settings:font, s10 c810000, Arial
@@ -97,27 +99,41 @@ settingsGui() {
9799
Gui, Settings:font, s8 c505050, Trebuchet MS
98100
Gui, Settings:Add, GroupBox, xp+245 y106 w235 h190, Advanced
99101
Gui, Settings:font, s10 c101013, Trebuchet MS
100-
Gui, Settings:Add, Text, Left w210 xp+12 yp+22, "Pressure" for the fix:
101-
Gui, Add, Slider, yp+20 xp-6 w218 vslide_pressure gSettingsPressureSlider, 20
102-
Gui, Settings:font, s8 c101013 w700, Arial
103-
Gui, Settings:Add, Link, Left w210 yp+32 xp+6 vslide_readout, Currently 0ms of delay.
104-
Gui, Settings:font, s8 c101013 w400, Arial
105-
Gui, Settings:Add, Text, Left w210 yp+18, Note that the pressure scale is not linear.
106-
Gui, Settings:Add, Text, Left w210 yp+18, Slide this more to the right if ClickFix isn't working properly all the time. Don't forget`nto hit "Apply" between changes.
102+
Gui, Settings:Add, Text, Left w210 xp+12 yp+22, "Pressure" for each mouse button:
103+
Gui, Settings:font, s7 c101013 w700, Arial
104+
Gui, Settings:Add, Link, Left w210 yp+25 vslide_readout_l, Left click has 0ms of delay.
105+
Gui, Add, Slider, yp+13 xp-7 w218 vslide_pressure_l gSettingsPressureSlider, 20
106+
Gui, Settings:Add, Link, Left w210 yp+32 xp+7 vslide_readout_m, Middle click has 0ms of delay.
107+
Gui, Add, Slider, yp+13 xp-7 w218 vslide_pressure_m gSettingsPressureSlider, 20
108+
Gui, Settings:Add, Link, Left w210 yp+32 xp+7 vslide_readout_r, Right click has 0ms of delay.
109+
Gui, Add, Slider, yp+13 xp-7 w218 vslide_pressure_r gSettingsPressureSlider, 20
107110

108111
; Buttons
109-
Gui, Settings:Add, Button, Default xp-12 Y302 w75, Ok
112+
Gui, Settings:font, s8 c101013 w400, Arial
113+
Gui, Settings:Add, Button, Default xp-6 Y302 w75, Ok
110114
Gui, Settings:Add, Button, xp+80 Y302 w75, Apply
111115
Gui, Settings:Add, Button, xp+80 Y302 w75, Cancel
112116

113117
loadSettingsToGui()
118+
settingsCheckBoxes()
114119
Gui, show, W530 H345 center, ClickFix Settings
115120
}
116121

117122
; GUI Actions
123+
settingsCheckBoxes() {
124+
global
125+
Gui, Settings:Submit, NoHide
126+
GuiControl, Settings:Enable%check_left_button%, slide_pressure_l
127+
GuiControl, Settings:Enable%check_middle_button%, slide_pressure_m
128+
GuiControl, Settings:Enable%check_right_button%, slide_pressure_r
129+
settingsPressureSlider()
130+
}
118131
settingsPressureSlider() {
119132
global
120-
GuiControl, Settings:, slide_readout, % slidePressureReadout(slide_pressure)
133+
bufferSlidePressure()
134+
GuiControl, Settings:, slide_readout_l, % slidePressureReadout(settings["lpr"], check_left_button)
135+
GuiControl, Settings:, slide_readout_m, % slidePressureReadout(settings["mpr"], check_middle_button)
136+
GuiControl, Settings:, slide_readout_r, % slidePressureReadout(settings["rpr"], check_right_button)
121137
}
122138
settingsButtonOk() {
123139
if (pullSettingsFromGui()) {
@@ -132,41 +148,54 @@ loadSettingsToGui(){
132148
GuiControl, Settings:, check_left_button, % settings["lb"][3]
133149
GuiControl, Settings:, check_middle_button, % settings["mb"][3]
134150
GuiControl, Settings:, check_right_button, % settings["rb"][3]
135-
GuiControl, Settings:, slide_pressure, % settings["pr"][3]
136-
GuiControl, Settings:, slide_readout, % slidePressureReadout(settings["pr"][3])
151+
GuiControl, Settings:, slide_pressure_l, % settings["lpr"][3]
152+
GuiControl, Settings:, slide_pressure_m, % settings["mpr"][3]
153+
GuiControl, Settings:, slide_pressure_r, % settings["rpr"][3]
154+
GuiControl, Settings:, slide_readout_l, % slidePressureReadout(settings["lpr"], settings["lb"][3])
155+
GuiControl, Settings:, slide_readout_m, % slidePressureReadout(settings["mpr"], settings["mb"][3])
156+
GuiControl, Settings:, slide_readout_r, % slidePressureReadout(settings["rpr"], settings["rb"][3])
137157
GuiControl, Settings:, check_start_with_windows, % settings["sww"][3]
138158
}
139159
pullSettingsFromGui(){
140160
global
141161
Gui, Settings:Submit, NoHide
142-
if (slidePressureScale(slide_pressure) >= 150) {
143-
MsgBox, 0x31, Severe Lag Warning!, Warning! Setting the fix pressure above 150ms can make the mouse frustrating to use and may cause problems with double clicking.
144-
IfMsgBox, Cancel
145-
return false
146-
}
147162
settings["lb"][3] := check_left_button
148163
settings["mb"][3] := check_middle_button
149164
settings["rb"][3] := check_right_button
150-
settings["pr"][3] := slide_pressure
165+
bufferSlidePressure()
151166
settings["sww"][3] := check_start_with_windows
152167
save()
153168
update_sww_state(settings["sww"][3])
154169
updateTrayMenuState()
155170
return true
156171
}
172+
173+
bufferSlidePressure() {
174+
global
175+
Gui, Settings:Submit, NoHide
176+
settings["lpr"][3] := slide_pressure_l
177+
settings["mpr"][3] := slide_pressure_m
178+
settings["rpr"][3] := slide_pressure_r
179+
}
180+
157181
settingsButtonCancel(){
158182
Gui, Settings:Destroy
159183
}
160184
settingsButtonReset() {
161185
Gui, Settings: +OwnDialogs
162186
reset()
163187
}
164-
slidePressureReadout(unscaled) {
165-
suffix := ""
166-
if (slidePressureScale(unscaled) >= 150) {
188+
slidePressureReadout(obj, toggler=1) {
189+
suffix := "."
190+
if (slidePressureScale(obj[3]) >= 150 && toggler == 1) {
167191
suffix := "!"
168192
}
169-
return "Currently " . slidePressureScale(unscaled) . "ms of delay" . suffix
193+
if (toggler == 0) {
194+
value := "no delay (fix disabled)"
195+
} else {
196+
value := slidePressureScale(obj[3]) . "ms of delay"
197+
}
198+
return obj[4] . " has " . value . suffix
170199
}
171200
slidePressureScale(pressure){
172201
return Ceil(1.0202**(pressure + 250) - 140)
@@ -316,45 +345,45 @@ restart() {
316345
; The real logic of the program - hotkeys triggered by mouse events
317346
#If, settings["mb"][3]
318347
MButton::
319-
if (A_TickCount - last_m_down >= slidePressureScale(settings["pr"][3]) && A_TickCount - last_m_up >= slidePressureScale(settings["pr"][3])) {
348+
if (A_TickCount - last_m_down >= slidePressureScale(settings["mpr"][3]) && A_TickCount - last_m_up >= slidePressureScale(settings["mpr"][3])) {
320349
Send {Blind}{MButton Down}
321350
last_m_down := A_TickCount
322351
}
323352
return
324353

325354
MButton up::
326355
Send {Blind}{MButton Up}
327-
if (A_TickCount - last_m_up >= slidePressureScale(settings["pr"][3])) {
356+
if (A_TickCount - last_m_up >= slidePressureScale(settings["mpr"][3])) {
328357
last_m_up := A_TickCount
329358
}
330359
return
331360

332361
#If, settings["lb"][3]
333362
LButton::
334-
if (A_TickCount - last_l_down >= slidePressureScale(settings["pr"][3]) && A_TickCount - last_l_up >= slidePressureScale(settings["pr"][3])) {
363+
if (A_TickCount - last_l_down >= slidePressureScale(settings["lpr"][3]) && A_TickCount - last_l_up >= slidePressureScale(settings["lpr"][3])) {
335364
Send {Blind}{LButton Down}
336365
last_l_down := A_TickCount
337366
}
338367
return
339368

340369
LButton up::
341370
Send {Blind}{LButton Up}
342-
if (A_TickCount - last_l_up >= slidePressureScale(settings["pr"][3])) {
371+
if (A_TickCount - last_l_up >= slidePressureScale(settings["lpr"][3])) {
343372
last_l_up := A_TickCount
344373
}
345374
return
346375

347376
#If, settings["rb"][3]
348377
*RButton::
349-
if (A_TickCount - last_r_down >= slidePressureScale(settings["pr"][3]) && A_TickCount - last_r_up >= slidePressureScale(settings["pr"][3])) {
378+
if (A_TickCount - last_r_down >= slidePressureScale(settings["rpr"][3]) && A_TickCount - last_r_up >= slidePressureScale(settings["rpr"][3])) {
350379
Send {Blind}{RButton Down}
351380
last_r_down := A_TickCount
352381
}
353382
return
354383

355384
*RButton up::
356385
Send {Blind}{RButton Up}
357-
if (A_TickCount - last_r_up >= slidePressureScale(settings["pr"][3])) {
386+
if (A_TickCount - last_r_up >= slidePressureScale(settings["rpr"][3])) {
358387
last_r_up := A_TickCount
359388
}
360389
return

0 commit comments

Comments
 (0)