retrospy / RetroSpy

Live controller viewer for Nintendo consoles as well as many other retro consoles and computers. Includes viewer application for Windows, and Arduino sketch for hardware interface.
https://retro-spy.com
GNU General Public License v3.0
145 stars 22 forks source link

PC Generic Gamepad needs a button 16 #166

Closed Watherum closed 2 years ago

Watherum commented 4 years ago

I was building a generic skin for a 3rd party xbox one style controller and I was unable to map the xbox button itself. This is because it is button 16. The generic skin helper also only maps out until button 15 causing the button to not be displayed.

I did try just adding the line anyways, <button name="b16" image="xbox_button.png" x="216" y="136" /> however that did not change anything.

Support for additional buttons, like 16 or even 16+ would be a great addition to map out controllers completely

zoggins commented 4 years ago

I will take a look


From: Watherum notifications@github.com Sent: Sunday, October 11, 2020 17:33 To: retrospy/RetroSpy Cc: Subscribed Subject: [retrospy/RetroSpy] PC Generic Gamepad needs a button 16 (#166)

I was building a generic skin for a 3rd party xbox one style controller and I was unable to map the xbox button itself. This is because it is button 16. The generic skin helper also only maps out until button 15 causing the button to not be displayed.

I did try just adding the line anyways,

zoggins commented 4 years ago

The PC pad reader actually queries the controller driver for the number of buttons it has.

        for (int i = 0; i < _joystick.Capabilities.ButtonCount; ++i)
        {
            outState.SetButton("b" + i.ToString(CultureInfo.CurrentCulture), state.Buttons[i]);
        }

My Xbox One controller only reports 0-15, not 0-16. My guess is the XInput driver doesn't pick up that button.

Watherum commented 4 years ago

Well what's weird about this, is that if I use a different program like Open Joystick display it picks up the button as button 16. And it agrees with retrospy on the number of every other button too. Like A being button 0 for example. Perhaps there are some buttons that don't appear in this method of grabbing the buttons?

On Fri, Oct 30, 2020 at 4:03 PM Christopher J Mallery < notifications@github.com> wrote:

The PC pad reader actually queries the controller driver for the number of buttons it has.

    for (int i = 0; i < _joystick.Capabilities.ButtonCount; ++i)
    {
        outState.SetButton("b" + i.ToString(CultureInfo.CurrentCulture), state.Buttons[i]);
    }

My Xbox One controller only reports 0-15, not 0-16. My guess is the XInput driver doesn't pick up that button.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/retrospy/RetroSpy/issues/166#issuecomment-719769857, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF2ABOGQSFM2XMVSVFYZ5ELSNML2HANCNFSM4SMEEIKA .

zoggins commented 4 years ago

Yeah, something definitely seems odd. I will keep investigating.

From: Watherum notifications@github.com Sent: Saturday, October 31, 2020 09:16 To: retrospy/RetroSpy RetroSpy@noreply.github.com Cc: Christopher Mallery zoggins@retro-spy.com; Comment comment@noreply.github.com Subject: Re: [retrospy/RetroSpy] PC Generic Gamepad needs a button 16 (#166)

Well what's weird about this, is that if I use a different program like Open Joystick display it picks up the button as button 16. And it agrees with retrospy on the number of every other button too. Like A being button 0 for example. Perhaps there are some buttons that don't appear in this method of grabbing the buttons?

On Fri, Oct 30, 2020 at 4:03 PM Christopher J Mallery < notifications@github.commailto:notifications@github.com> wrote:

The PC pad reader actually queries the controller driver for the number of buttons it has.

for (int i = 0; i < _joystick.Capabilities.ButtonCount; ++i) { outState.SetButton("b" + i.ToString(CultureInfo.CurrentCulture), state.Buttons[i]); }

My Xbox One controller only reports 0-15, not 0-16. My guess is the XInput driver doesn't pick up that button.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/retrospy/RetroSpy/issues/166#issuecomment-719769857, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF2ABOGQSFM2XMVSVFYZ5ELSNML2HANCNFSM4SMEEIKA .

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/retrospy/RetroSpy/issues/166#issuecomment-719954870, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AE2CEVSRPPDAXL5O74FADU3SNQZ4VANCNFSM4SMEEIKA.

zoggins commented 2 years ago

If this is still an issue what controller was causing this?

zoggins commented 2 years ago

closing from inactivity. Feel free to repopen if necessary.