bitfocus / companion

Bitfocus Companion enables the reasonably priced Elgato Stream Deck and other controllers to be a professional shotbox surface for an increasing amount of different presentation switchers, video playback software and broadcast equipment.
http://bitfocus.io/companion
Other
1.64k stars 505 forks source link

Feedback for Button Duration Groups #2833

Open JonFStr opened 7 months ago

JonFStr commented 7 months ago

Is this a feature relevant to companion itself, and not a module?

Is there an existing issue for this?

Describe the feature

It would be great to have an option to change button feedback depending on how long a button has been held down already. This would synergize well with the new "Duration Groups" on buttons in v3, because one could add feedback telling the user "if you let go now, this will happen".

Usecases

I use a few buttons in my setup to remotely start and stop computers and currently give feedback with delayed actions in order to know when I can let go to power off the machine again (power off is after a few seconds of delay to avoid accidental shutdowns). Currently i do it with the setup in the image - but it would be much cleaner (and not mess up the button "default style") if I could do it with feedbacks duration feedback

Julusian commented 7 months ago

This needs thought on how to solve, as it is possible for a button to be being pressed by multiple streamdecks/sufaces at the same time. When that is that case, what should happen? I'm not opposed to doing something sensible, and acknowledging in the feedback description how it behaves in those scenarios

dnmeid commented 7 months ago

@JonFStr what do you mean with "feedback"? Just a visual cue on the button, or a feedback in terms of a companion feedback of the internal module where you can configure some stuff? If we are not talking of a companion feedback, this would be a duplicate of #2466

JonFStr commented 7 months ago

@Julusian I would be fine with it having an exclusive lock on the first surface pressing the button - however, in my case there will not be a second person using the same button at the same time so I don't know if that is a viable solution for everyone.

Another option could be to display the currently "latest" advancement in the duration group, i.e. the feedback always uses the state of the surface which pressed the button first (out of all that currently have it pushed down).

One could also copy the behavior of the "Button: When Pushed" feedback and have it be overridden by each new event (push or release) - however this could become confusing since the feedback will then display wrong information on the first surface pushing the button and then on the second surface when the first surface releases it.


@dnmeid For my usecase, I would just be happy to have a button feedback, similar to the existing "Button: Check Step" and "Button: When Pushed" feedbacks, which can be configured either with arbitrary delays after holding down the button or have it be linked to the "current" duration group which would be executed when the button is released now.

However, I'd argue that this is different from the "timeline" feature, since I'd like to tell the user, that a specific set of actions will be fired in case of releasing the button, while the timeline could also be used to display the progress during the execution of a list of actions - depending on how you interpret the issue.

Still, I'd like to completely configure the style of the button (e.g. color it yellow and replace the text with "power off?" followed by a red color as soon as the duration group has been reached) instead of just displaying a progress bar at the top