Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Can you make Seek Bar and Volume Control _not_ respond to scroll wheel (Read 5361 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

I'm using Foobar 0.9.6.8 with the Standard interface for casual DJ-ing. Scrolling through playlists and Album List with the mouse scroll wheel is really helpful for getting around long lists, but if the mouse pointer were to wander into the Volume Control or Seek Bar it would be a major problem. I haven't done that live so far, but it's a disaster waiting to happen. Aside from just sheer inattention, this would come up especially with a free-spinning scroll wheel -- which is otherwise great for quickly scrolling through those lists -- 'cause the wheel can easily be still spinning without me realizing it.

So, can those controls be set up not to respond to the scroll wheel? If not, are there corresponding components that that will not respond to the scroll wheel? I could live with the Volume Control being hidden, like in earlier versions, but it's still helpful to see the volume level graphically. I really need the Seek Bar display or equivalent; I just need it to be harder to affect unintentionally. I haven't accidentally clicked or dragged either of those, but it would also be great if the controls would only respond to, say, a Control-click.

So can their behavior be changed or other components substituted?

Thanks,
Drew

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #1
Maybe "Preferences > General > Other > Mouse wheel..." should do that for you, but unfortunately not right now.
I've also noticed that it doesn't have any impact on CUI panels: wheel behaves on object currently below pointer and not the object with focus (although I like that behavior)

You can disable volume toolbar and set it through keyboard shortcuts, but then what about seek bar

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #2
You can disable volume toolbar and set it through keyboard shortcuts, but then what about seek bar

Seek bar can be disabled as well.
Ceterum censeo, there should be an "%is_stop_after_current%".

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #3
Maybe "Preferences > General > Other > Mouse wheel..." should do that for you, but unfortunately not right now.
I've also noticed that it doesn't have any impact on CUI panels: wheel behaves on object currently below pointer and not the object with focus (although I like that behavior)

You can disable volume toolbar and set it through keyboard shortcuts, but then what about seek bar
Hmm, what does that mouse wheel checkbox change at this point? Would this count as a bug, for me to post about in the Support area?

Seek bar can be disabled as well.
I see how to remove the controls, but can they (or something similar) still be displayed while making them insensitive to the scroll wheel? I could live with them being totally passive displays. I particularly need to see graphically how much time is left on this track, so I know when to panic 'cause I haven't lined up the next one.

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #4
Assuming as a DJ you don't actually want to be seeking, or changing the volume via software, why not just add both to the status bar? You can add a volume indicator to the status bar that displays the volume via number and you can add %playback_time_remaining% to your status bar string in the preferences.

Easy peasy.
elevatorladylevitateme

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #5
Assuming as a DJ you don't actually want to be seeking, or changing the volume via software, why not just add both to the status bar? You can add a volume indicator to the status bar that displays the volume via number and you can add %playback_time_remaining% to your status bar string in the preferences.

Easy peasy.


Well sure. There's already the played/length on the Status Bar, but the key term is "graphically". There's lot going on sometimes, and a lot to read. The Seek Bar is just the sort of thing I need in my peripheral vision while I'm reading everything else. The ideal thing would be something like a nice passive red-on-black progress bar, but the standard seek bar would certainly do the job, as long as I won't accidentally blow everything to Hell because the mouse pointer drifts into it. Sounds like there isn't that sort of thing available.

Not to whine or anything, but it just seems peculiar and hazardous for anyone that only the controls are exempt when you'd expect that the scroll wheel to act only on the object with focus, and that there's no way to turn that off.

I'll throw this into the Support group as something that might be considered a bug. In the meantime, maybe I can rig a field in the status bar of rectangular block characters  showing the portion of the track played.

Thanks,
Drew

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #6
try this for status bar:

'['$progress(%playback_time_seconds%,%length_seconds%,50,|,.)']'

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #7
Excelente.

Thanks

Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #8
try this for status bar:

'['$progress(%playback_time_seconds%,%length_seconds%,50,|,.)']'
This works great, but I also rigged an AutoHotkey script to squelch the scroll wheel in either control. If anyone is interested, you don't even have to learn anything about AutoHotkey. Just download it from http://www.autohotkey.com/download/, install it, then throw this script in your Startup folder as whatever.ahk:

Code: [Select]
; Disable Scroll Wheel in Foobar Seekbar and Volume Control

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
#HotkeyInterval 1000        ; These two lines allow 200 wheel signals a second before
#MaxHotkeysPerInterval 200  ; AutoHotkey stops to complain; good for free-spinning wheels.

WheelUp::                                                ; Intercept Wheelup
Process, priority,,B
WinGetClass, WinClass, A 
If (WinClass!="{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}")  ; If the active window isn't Foobar
  Goto SendUp                                            ;  go send WheelUp
MouseGetPos,,,,ClassNN
if (ClassNN="{596C5150-D8FF-4ed4-81AB-99B3DDA08AF1}1")  ; If in Seekbar, send nothing
  Return
if (ClassNN="{5C0890EE-4552-4dcf-8943-3F1563A13F1D}1")  ; If in Vol Ctrl, send nothing
  Return
SendUp:
  Send {WheelUp}                                        ; Otherwise pass WheelUp
Return

WheelDown::                                              ; Intercept WheelDown
Process, priority,,B 
WinGetClass, WinClass, A 
If (WinClass!="{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}")  ; If the active window isn't Foobar
  Goto SendDown                                          ;  go send WheelDown
MouseGetPos,,,,ClassNN
if (ClassNN="{596C5150-D8FF-4ed4-81AB-99B3DDA08AF1}1")  ; If in Seekbar, send nothing
  Return
if (ClassNN="{5C0890EE-4552-4dcf-8943-3F1563A13F1D}1")  ; If in Vol Ctrl, send nothing
  Return
SendDown:
  Send {WheelDown}                                      ; Otherwise pass WheelDown
Return
This does in fact intercept every wheel signal anywhere, but it's surprisingly lightweight and I've set up the script to run at Below Normal priority, which might make a difference. You can change those B's to L or N. And of course you can edit that script to disable the wheel in just the Seekbar or the Volume Control.

I still think it would be mighty fine if this was a checkbox in Preferences, but in the meantime...

Enjoy,
Drew


Can you make Seek Bar and Volume Control _not_ respond to scroll wheel

Reply #9
And it occurred to me that the question isn't whether the active window is the main Foobar window, but whether the active window is any Foobar window. Revised script:

Code: [Select]
; Suppress scroll Wheel signals in Foobar Seekbar and Volume Control
; Rev. 1

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
#HotkeyInterval 1000        ; These two lines allow 200 wheel signals a second
#MaxHotkeysPerInterval 200  ; before AutoHotkey stops to complain

WheelUp::                                                ; Intercept Wheelup
Process, priority,,B
WinGet ActiveWinProcess, ProcessName, A                  ; Get the Process Name for the active window
if (ActiveWinProcess!="foobar2000.exe")                  ; If the active window isn't Foobar
  Goto SendUp                                            ;  go send WheelUp
MouseGetPos,,,,ClassNN
if (ClassNN="{596C5150-D8FF-4ed4-81AB-99B3DDA08AF1}1")  ; If in Seekbar, send nothing
  Return
if (ClassNN="{5C0890EE-4552-4dcf-8943-3F1563A13F1D}1")  ; If in Vol Ctrl, send nothing
  Return
SendUp:
  Send {WheelUp}                                        ; Otherwise pass WheelUp
Return

WheelDown::                                              ; Intercept WheelDown
Process, priority,,B 
WinGet ActiveWinProcess, ProcessName, A                  ; Get the Process Name for the active window
if (ActiveWinProcess!="foobar2000.exe")                  ; If the active window isn't Foobar
  Goto SendDown                                          ;  go send WheelDown
MouseGetPos,,,,ClassNN
if (ClassNN="{596C5150-D8FF-4ed4-81AB-99B3DDA08AF1}1")  ; If in Seekbar, send nothing
  Return
if (ClassNN="{5C0890EE-4552-4dcf-8943-3F1563A13F1D}1")  ; If in Vol Ctrl, send nothing
  Return
SendDown:
  Send {WheelDown}                                      ; Otherwise pass WheelDown
Return