the script responds to keybord: volume up/down, mute and play/pause keys
its not so hard to change the hotkeys for your sute
#Persistent #SingleInstance force DetectHiddenText, On DetectHiddenWindows, On Menu, Tray, Click, 1 Menu, Tray, NoStandard Menu, Tray, Add, &Mute, mute Menu, Tray, Add, &Volumeslider, slider Menu, Tray, Default, &Volumeslider Menu, Tray, Add, &Winamp, Winamp Menu, Tray, Add Menu, Tray, Add, Pre&v, Prev Menu, Tray, Add, &Play/PausePause, Pause Menu, Tray, Add, &Stop, Stop Menu, Tray, Add, &Next, Next Menu, Tray, Add Menu, Tray, Add, E&xit, Exit Menu, Tray, Add, &Reload, Reload gosub, changeicon gosub, changetip return slider: run, sndvol32.exe /t, , , NewPID Process, WaitClose, %NewPID% gosub, changeicon gosub, changetip return esc:: IfWinExist, volume { progress, off reset = false } return Winamp: IfWinExist ,ahk_class Winamp v1.x { PostMessage, 0x111,40001,,,ahk_class Winamp v1.x } else { run, C:\Program Files\winamp\winamp.exe } return Media_Play_Pause:: Pause: Gosub, osd SendMessage, 0x400,0,104,,ahk_class Winamp v1.x reset = true if errorlevel = 0 { SendMessage, 0x111,40045,,,ahk_class Winamp v1.x } else { SendMessage, 0x111,40046,,,ahk_class Winamp v1.x } Progress, %Volumelvl%, volume at %Volumelvl%`%, Winamp Play/Pause return Stop: Gosub, osd PostMessage, 0x111,40047,,,ahk_class Winamp v1.x Progress, %Volumelvl%, volume at %Volumelvl%`%, Winamp Stop return Prev: Gosub, osd PostMessage, 0x111,40044,,,ahk_class Winamp v1.x Progress, %Volumelvl%, volume at %Volumelvl%`%, Winamp Prev return Next: Gosub, osd PostMessage, 0x111,40048,,,ahk_class Winamp v1.x Progress, %Volumelvl%, volume at %Volumelvl%`%, Winamp Next return volume_up:: SoundSet, +2, MASTER Gosub, osd reset = true Progress, %Volumelvl%, volume at %Volumelvl%`%, Volume Up Return volume_down:: SoundSet, -2, MASTER Gosub, osd reset = true Progress, %Volumelvl%, volume at %Volumelvl%`%, Volume Down Return volume_mute:: gosub, mute Gosub, osd reset = true Progress, %Volumelvl%, volume at %Volumelvl%`%, Mute is %master_mute% return osd: IfWinNotExist, volume { Progress, b1 zx0 zy0 w500 FS20 Fm20 CW77aebc, lalala, lalala , volume, Backlash BRK, progress WinSet, Transparent, 200, progress } WinSet, Transparent, 200, volume SoundGet, Volumelvl SoundGet, master_mute, , mute transform, Volumelvl, Round, %Volumelvl% Progress, %Volumelvl%, volume at %Volumelvl%`% gosub, changetip reset = false SetTimer, label, 1000 Return label: dtime := 2000 ltime := dtime / 200 xxx := 200 Loop, 255 { WinSet, Transparent, %xxx% , volume if reset = true { goto, osd } sleep, %ltime% xxx -- } progress, off Return mute: SoundSet, +1, , mute SoundGet, master_mute, , mute gosub, changeicon gosub, changetip return changeicon: SoundGet, master_mute, , mute if master_mute = on { Menu, Tray, Icon, C:\WINDOWS\system32\MMSYS.CPL, 40 menu, Tray, check, &Mute } else { Menu, Tray, Icon, C:\WINDOWS\system32\MMSYS.CPL, 1 menu, Tray, uncheck, &Mute } return changetip: SoundGet, Volumelvl transform, Volumelvl, Round, %Volumelvl% SoundGet, master_mute, , mute menu, tray, tip, volume at %Volumelvl%`%`nmutestatus is %master_mute% return reload: reload Exit: Exitapppreview of osd: