How to assign actions to more than 16 buttons in QGC

Hello,

I have just built a controller which has 36 buttons and 8 axis.

QGC detects the 36 buttons and 4 axis but I can still only assign actions to 16 buttons.

Is there a way to assign actions to the other buttons instead of having to use a shift key?

Cheers,
E.

1 Like

Etienne, I’m sorry this is not possible at this time. The state of the buttons is communicated to the autopilot in a 16bit field. I want to rework the pilot input implementation to be much more flexible (keyboard input, multiple joysticks, as many buttons and axes as you want… This will take some time, however.

1 Like

Give Joy2Key a try. We use it (and similar apps) to remap keyboard strokes to joystick buttons in our simulators.

1 Like

Hi Paul,

I had a look ad the Joy2Key software but it doesn’t look like it can help in this case.

QGC does not support keyboard strokes in lieu of joystick buttons unless I am missing something.

Joy2Key can change the mapping of the buttons to be triggered by another but you can’t assign more than one trigger per button. (IE button 16 is my “shift” key and I want it triggered if buttons 17 or 18 or … 32 is pressed)

Did you figure out a way that escapes me somehow?

There are several apps out there you can try to remap your joystick button functions. Here’s one: UJR - Universal Joystick Remapper (Using vJoy) - Gaming Scripts - AutoHotkey Community

If you’re using a logitech controller they offer a remapping tool: Logitech Gaming Software – Logitech Support + Download

None of theses options allow to remap more than one trigger per button. I’ll just have to wait until BR releases a version of QGC that supports more buttons.

Here are two others to check out:

https://whitemagic.github.io/JoystickGremlin/

https://autohotkey.com/boards/viewtopic.php?t=12249

What you want to do seems simple enough, there’s got to be something out there that will work. I’d also post on the Auto HotKey forums. They might have some suggestions.

Hello Paul,

I appreciate your suggestions but I already looked at all those.

I guess what is needed is too specific to find off the shelf.

Cheers,
E.

Have you tried emailing Leo Bodnar?

This is the limitation as of now. It is an implementation detail in the autopilot software, no third party software will change this. It will require an update in our software.

Hello Jacob,

I can actually work with the 16 buttons for now, I am happy to wait for a revision.

Cheers,
E.

Is their any forward movement with assigning more buttons in QGC?

When would we expect to assign more buttons?

Our joystick is ready, QGC isnt.

1 Like

You can follow the issue here:
https://github.com/bluerobotics/ardusub/issues/158

We haven’t had the time for it. The code is open-source; if you would like to modify it or contribute, you are welcome to.

Hello!

Has there been any updates to this issue? Using the shift key is just making it harder then it has to be, right? @jwalser

William
Subsea Marintech

Is it currently possible to assign buttons 16 through to 32 in joystick setup? A device I am programming shows the buttons work fine in the windows “Game Controllers” and QGC but I am unable to assign the button, the selector menus don’t show on buttons after 15.

Hi @john6,

QGC can detect the extra buttons, but currently does not yet support them for vehicle functionalities, and they are also not yet supported in ArduSub. It’s possible they could work for the QGC-specific functionalities that aren’t reliant on MAVLink communication to the autopilot, like switching between video streams (for multi-camera vehicles), but I haven’t tried or checked.

1 Like

Hi @WilliamDomben,

For some context, this discussion thread was opened when Blue Robotics was maintaining separate ArduSub-focused forks of both QGroundControl and the ArduPilot firmware project. We have since merged those forks back into the upstream repositories, so the original GitHub Issues from our repositories were transferred over to the base repositories.

Yes:

  1. The MAVLink MANUAL_CONTROL protocol has been updated, to allow some extra motion axis inputs and 16 extra button functions (so 32 total, instead of the original 16)

  2. ArduSub has been updated to support that new protocol, as of version 4.1.2

  3. QGroundControl does not yet support the protocol extension, but there is an open issue about doing so, which is where relevant QGC-specific updates can be tracked

    • For controllers where QGC recognises additional buttons from your controller but can’t currently assign ArduSub-specific functions to them, it is at least possible to configure custom MAVLink commands for it to send instead
  4. Cockpit has been updated to fully support the extended protocol, as of v1.0.0-beta.7

By assigning one of your joystick buttons to act as a “shift” function you can almost double the effective number of buttons available, which can be very useful when you have more functions you want to support than buttons on your joystick.

That said, there are some joysticks with more than 16 buttons, so it’s useful when all of them can be assigned to directly as well.

1 Like