Cuperino / QPrompt-Teleprompter

Teleprompter software for all video creators. Built with ease of use, productivity, control accuracy, and smooth performance in mind.
https://qprompt.app
GNU General Public License v3.0
379 stars 26 forks source link

Shuttle Pro/Xpress support #37

Open videosmith opened 2 years ago

videosmith commented 2 years ago

Currently, there is a workaround using nanosyzygy/ShuttlePRO code. However it occasionally crashes while being used.

An integrated option may be more stable.

Cuperino commented 2 years ago

Dedicated hardware support requires said device to be developed for individually on each supported platform. I've already identified a library that can be used to abstract some of the code so that its easier to support all platforms.

If you or anyone is willing to donate one or more of these devices, I will add support for them.

videosmith commented 2 years ago

Good afternoon. I apologize for the late response on this, covid can be somewhat distracting ;/ I may have located an old ShuttleXpress (I need to determine if it is functional). If so, where should I ship it? Regards, Stuart

Cuperino commented 2 years ago

Oh shoot... I know I said on the forum thread I was in the process of getting a Shuttle Xpress and a Pro V2. A few days after I managed to buy the Xpress and failed to get the Pro V2, so I kept looking and found a V1 for cheap, and I ended up getting one of those instead. I'm still on the lookout for a Shuttle Pro V2 and am talking to another seller to see if they can ship to my location.

Keep your Shuttle for now, I'm assuming you've found the V1. Mine is said to be in working condition, but I won't know for sure until it has arrived.

videosmith commented 1 year ago

Understood. If yours is not, let me know and I will ship my old one to you. Stuart

Cuperino commented 1 year ago

Thanks.

In the end I got all, the v1, v2 and XPress, and they're all in good enough condition for development; and some in perfect condition for daily use. I have paused work on the Shuttles for now to enable global hotkeys first. Global hotkeys would work with any device that can be mapped to keyboard inputs, and allow the inputs to be received regardless of what app is in focus.

videosmith commented 1 year ago

I switched to the latest Shuttle-Lander build to work around nanosyzygy/ShuttlePRO's Wayland/kde issues. So far performance is reasonably equivalent to the prior app, however still challenged with shuttle ring operation and this app won't save profiles in Wayland. Also had to build Arm release from source.

Cuperino commented 1 year ago

Please refresh my memory on the shuttle ring operation issues. Was it that you required the ability to configure each step as a separate key that maps to a fixed velocity?

videosmith commented 1 year ago

The jog wheel has only two mappable fields/repeatable only in the same rotational direction., so one can be increase and the other decrease. When you change direction, the other field gets focus.

The shuttle has at least 7, 3 left rotation, 3 right and one null. So if you change rotation direction past the first field in one direction, rotation to the next lower field increases the animation value instead of reducing it.

Hope this makes sense.

Cuperino commented 1 year ago

It does. That was the behavior I got while attempting to map my Shuttles on Windows and macOS, using their official software.

videosmith commented 1 year ago

The only option I could think of is some form of macros assigned to each shuttle ring field with if/then or case of logic... however the possible lag may affect performance.

Have yet to locate the stored values retrieved upon boot/reboot.

videosmith commented 1 year ago

Found it: ~/.config/ShuttleLander/shuttlerc

Not certain what their values refer to... Not a hex conversion, keysym conversion, ascii...

videosmith commented 1 year ago

Would it be a lot of work to assign velocity slider values to key combinations?

Ex: Left-Alt-2=-02 Left-Alt-1=-01 Left and Right-Alt-0=+00 Right-Alt-1=+01 Right-Alt-2=+02 Etc.... Up to Alt-9s With the user able to decide which to assign to ShuttleLander's shuttle positions?

20230322_103006

Cuperino commented 1 year ago

Yes. Nevertheless, there's an architectural bug in the way QPrompt's animations are triggered that would prevent the animation from taking place if the velocity number being switched to has the same oddness/evenness as the current velocity. Fortunately, this will not be an issue when going through the wheel, for the keys should always be triggered sequentially. That is assuming the device skips none of the inputs, which could happen due to a faulty cable or bad USB port.

I was already planning to add this feature soon, so I might as well work on it next. I estimate it should take two to three weeks since I'm mostly programming QPrompt on weekends and these next weekends will be busy with other stuff as well.

videosmith commented 1 year ago

There have been events where turning a jog or mouse wheel doesn't always register an event requiring a second 'click' in many apps... will this be a problem?

Also the scroll ring hardware possibly has 2 null positions according to the ShuttleLander gui? I suppose one could be left blank...

Cuperino commented 1 year ago

There have been events where turning a jog or mouse wheel doesn't always register an event requiring a second 'click' in many apps... will this be a problem?

It sounds like the app wasn't focused, in which case, hotkeys would help, but only on X11 since Wayland doesn't support hotkeys yet.

Also the scroll ring hardware possibly has 2 null positions according to the ShuttleLander gui? I suppose one could be left blank...

They could both set the velocity to 0.

videosmith commented 1 year ago

Or the rotary encoders aren't precise...

Will this approach work in fullscreen mode when the velocity slider is hidden?

Cuperino commented 1 year ago

Will this approach work in fullscreen mode when the velocity slider is hidden?

Yes, it will.

Keyboard inputs are presently handled within the prompter component, and inputs captured elsewhere in the UI are just routed to the prompter.