Skip to content

Conversation

@jeinstei
Copy link

@jeinstei jeinstei commented Jan 1, 2026

Motivation:
I have a Streamdeck Plus that I want to use as an additional gamepad for better axis mapping in Star Citizen. This led me to find that the ControllerPlugin is absolutely awesome, but missing a couple of key features for me. In particular, better mapping to the dials, set to maximum and minimum events, and generally better ease of use.

This PR is an initial attempt to fix some of these concerns.

Changes:

  • Switch to ActionCore for event registration
  • Better default actions based on dials as well
  • A couple of helper defines added to Joystick.py for easier-to-read coding
  • Changed to default to "Add" mode instead of "Set" to better work with spin dials, or probably how most people are using this? This is an easy change/fix
  • Changed "Center" position control to an extents control widget

Known Bugs:

  • SpinRow value widget won't show fractional decimal values even when entered. I'm not sure where this is breaking or if it matters in the short-term.
  • Need to update UI generation to match new setup

To do?

  • Update JoystickButtons.py for similar functionality

Done:

  • Tested both hat and non-hat axes with evtest
  • Tested fractional-integer changes, even if UI isn't showing it
  • Tested clamping functionality
  • Tested in my dev environment using --devel and a local data folder. Currently using the AUR streamcontroller distribution and its python environment for my testing

@Core447
Copy link
Member

Core447 commented Jan 2, 2026

7714ad4 now allows for more granular control in the SpinRow.
Tbh, I'm not very familiar with everything Controller, so I'm not sure what step size makes sense, so you might want to change it to something else.

@Core447
Copy link
Member

Core447 commented Jan 2, 2026

Changed the design of the "Position Axis" row:
image
Unfortunately a change in StreamController will be necessary to move the row to the bottom.

Again, I'm not a user of the plugin myself, so I need your opinion: Would it make sense to actually also change the stored value when one of the "Position Axis" buttons is clicked?

@jeinstei
Copy link
Author

jeinstei commented Jan 2, 2026

Can we put the step size into global plugin settings? I can work on that later.

The plugin currently should be both setting and saving values in the event functions— i need to take a look

About the position row— by removing the config area widget, now we also lose the warning row that should be there. Is there a reason not to use the configuration area for that? I might be unaware of new features

@Core447
Copy link
Member

Core447 commented Jan 2, 2026

Can we put the step size into global plugin settings? I can work on that later.

If you want to add this, why not. Personally I don't think this is really necessary, as we can just set it to a very small number and let users type their values instead of using the +/- buttons.

About the position row— by removing the config area widget, now we also lose the warning row that should be there. Is there a reason not to use the configuration area for that? I might be unaware of new features

I kept the warning message in the config area. The reason I removed the row is that Adw Rows always look ugly, when they're not in a Adw.PreferencesGroup (maybe there are alternatives, not sure right now). If we want to have position row separated from the other rows, we need to put it inside a Adw.PreferencesGroup. Which we can then add to the custom config area.

@jeinstei
Copy link
Author

jeinstei commented Jan 2, 2026

So the resolution step should be 2 decimals (100/32767 =0,00305), so that’s 2-3 steps per resolution in value, but is there a way to still have the arrows on SpinRow do steps of 1.0, even if supporting two decimals of resolution?

i have nothing else to add on this. I might copy it to make a midi plugin though.

@jeinstei
Copy link
Author

jeinstei commented Jan 2, 2026

I see this is because of the _correct_step_amount call in the SpinRow class. The widget currently couples the functionality.

Well...I guess the 0.01 step makes sense for now. I have no other things that I want to change or add at this time. Might be worth adding an issue just to track this, I guess?

Thanks for the updates and review. All yours @Core447

@Core447
Copy link
Member

Core447 commented Jan 3, 2026

Because of 085dbe4, we need to wait with the release of this until the next app update. Also we still need to fix the localization.

@jeinstei
Copy link
Author

jeinstei commented Jan 3, 2026

Localization should be fixed up and I tossed in an attribution file with yourself in there, if that isn't a problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants