WhiteMagic / JoystickGremlin

A tool for configuring and managing joystick devices.
http://whitemagic.github.io/JoystickGremlin/
GNU General Public License v3.0
313 stars 46 forks source link

Feature Request: Nested Action Containers / User Defined Action Containers #408

Closed TheGoodIdeaFairy closed 2 years ago

TheGoodIdeaFairy commented 2 years ago

Brief of request: 1) Nested Containers 2) User Added Multiple Container Members (3+ in Tempo/Double Tap) 2.a) User Definition of Temporal Container Member Parameters (Tempo/Double Tap; eg. Min-Time/Max-Time/Number-of-Taps) 2.b) Disparate Member Types in Temporal Containers (mix of Tempo and Multi-Tap in same container)

I'd like to be able to add a container (Tempo, Double Tap, Chain, etc) as a sub-member of a container. For instance, I'd like to be able to add a Chain as a sub-member of a Tempo container. The purpose in my case is that I need to have two separate macro subsets to press/release some vJoy buttons, but these on/off macros interfere with each other (hence the Chain). These macros are intended to be on the same button with the use of a Tempo container.

I would also like to be able to define additional/extra members of certain containers. For instance, a single/double/triple tap, or a double tap where a quick 2x tap (eg. under .2s) gives one output, while a slower one (eg. 0.21s - 0.8s) gives another. Ideally I'd be able to define each entry in these temporal containers similarly to the previous sub-feature request, so that one container could hold a single tap, a double tap, a long press, and perhaps even a longer press as well (with user defined min/max times). I believe this could be achieved without significantly altering the UI. The time range's lower bound would be defined by the previous member-action, and the detection of multi-tap would determine if the logic branches to tempo or multi. However, each member-action should probably have it's own "activate on press/release" radial. Ideally the user would be able to define other parameters, for instance a quick press followed by a long press, but I could see this level of granularity requiring a much bigger rework of the underlying logic.

It's important that these be in the same container, as the current workaround (creating multiple containers) causes undesired misfires of other containers (usually the single/short tap actions). For example, if I want to have a Tempo and a Double Tap on the same button, if I put my short tap option in the Tempo container, any time I attempt to use the Double Tap, the Single will fire. If I instead put it in the Double Tap container, whenever I use the Long Press action, the Single Tap will fire. Behavior is similar when a Chain container is substituted for either.

This has come up numerous times over the months I've been using your software as a missing feature that was very difficult or impossible to work around. I thoroughly enjoy using JG, and it has genuinely changed the way I use my joysticks. I hope that I can help make your community creation better. Thank you and each of this project's contributors.

WhiteMagic commented 2 years ago

Those are two different aspects. However, nesting containers or actions in any other manner than what is shown at the moment is absolutely impossible from a technical point of view with R13 code based though part of the rewrite is addressing this. The other bits are simply new actions as the ones that exist serve a singular and specific purpose.

Gremlin's purpose is to make commonly performed tasks simple at the cost of customizability. Custom needs are handled via the plugins or people writing their own actions. Currently sharing novel actions is not really possible without rebuilding the executable, however, at some point in the future that should be easier. As such while these ideas aren't bad they will never be integrated into the existing actions, as that would overcomplicate them for the large majority of use cases.