33 lines · 790 B
Raw Download
1
#Requires AutoHotkey v2.0+
2
#SingleInstance Force
3
4
; Define volume levels
5
volume_levels := [0, 2, 5, 8, 12, 20, 30, 40, 50, 60, 70, 80, 90, 100]
6
7
current_volume := Round(SoundGetVolume())
8
9
; Find the closest volume level index
10
closest_idx := 1
11
min_diff := Abs(volume_levels[1] - current_volume)
12
13
for idx, level in volume_levels {
14
    diff := Abs(level - current_volume)
15
    if (diff < min_diff) {
16
        min_diff := diff
17
        closest_idx := idx
18
    }
19
}
20
21
; Calculate new index
22
new_idx := closest_idx + 1
23
24
; Ensure we don't exceed maximum
25
if (new_idx > volume_levels.Length)
26
    new_idx := volume_levels.Length
27
28
; Set new volume
29
new_volume := volume_levels[new_idx]
30
SoundSetVolume new_volume
31
ToolTip("Volume " new_volume "%")
32
SetTimer () => ToolTip(), -500
33