RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    xbox wireless controller - xbox button not working

    Scheduled Pinned Locked Moved Help and Support
    xpadneo
    21 Posts 3 Posters 2.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • mituM
      mitu Global Moderator @fnpanic
      last edited by mitu

      @fnpanic said in xbox wireless controller - xbox button not working:

      Maybe /dev/input/event5 does not send the button press? Maybe a simple udev rule to use js0?

      To me it seems it's the same issue as in the topic you linked: the button is emitting a Keyboard key (F12) and not a button. From the xpadneo driver page:

      Xbox Series X|S Wireless Controller
      Full support for the Xbox Series X|S controller is present including the share button. This is currently statically mapped to keyboard event KEY_F12 to take screenshots with Steam. It will be configurable in the future. This controller uses emulated profile switching support (see below).

      Try adding this retroarch.cfg:

      input_enable_hotkey = "f12"
      input_osk_toggle = null
      

      and see if the Xbox button works in RetroArch as a hotkey. You should update the RetroPie-Setup and RetroArch (in this order) first.

      1 Reply Last reply Reply Quote 0
      • F
        fnpanic
        last edited by

        Thanks for the reply.

        I added

        input_enable_hotkey = "f12"
        input_osk_toggle = nul
        

        to the end /opt/retropie/emulators/retroarch/retroarch.cfg but it did not have any effect. I tested it with neo geo.

        Is this the right place?

        mituM 1 Reply Last reply Reply Quote 0
        • mituM
          mitu Global Moderator @fnpanic
          last edited by

          @fnpanic said in xbox wireless controller - xbox button not working:

          to the end /opt/retropie/emulators/retroarch/retroarch.cfg but it did not have any effect. I tested it with neo geo.

          Yes, that's the right place. If you already have a hotkey_enable_btn in the .cfg file, remove it. If that doesn't work, then I don't have anymore ideas.

          1 Reply Last reply Reply Quote 0
          • F
            fnpanic
            last edited by fnpanic

            i removed the hotkey_enable_btn from /opt/retropie/configs/all/retroarch/autoconfig/Xbox Wireless Controller.cfg but it did not help.

            i also greped for hotkey_enable_btn in /opt/retropie/emulators/retroarch

            Maybe it is mapped somewhere else?

            Could i do a double mapping of maybe select with a long press or something?

            I saw this in the config

            # Adds a delay in frames before the assigned hotkey blocks input.  Useful if the the
            # hotkey input is mapped to another action.
            # input_hotkey_block_delay = "5"
            

            Can i just map hotkey to select and press it longer?

            EDIT:

            When i do a grep -v "#" retroarch.cfg everything is default and the only two lines which are not commented out are the ones i added.

            I also upgraded the xbox controller to latest firmware.

            mituM 1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @fnpanic
              last edited by

              @fnpanic said in xbox wireless controller - xbox button not working:

              Maybe it is mapped somewhere else?

              No, these are the places where - by default - it would be.

              Could i do a double mapping of maybe select with a long press or something?

              Yes, you already did this, with Select.

              I saw this in the config

              # Adds a delay in frames before the assigned hotkey blocks input.  Useful if the the
              # hotkey input is mapped to another action.
              
              # input_hotkey_block_delay = "5"
              

              Can i just map hotkey to select and press it longer?

              Yes, in fact EmulationStation offers this option if you don't select any hotkey enable button. Lots of users without a dedicated button use it this way and it works fine.

              I'm confused as how ES detects the button, but the generated .cfg doesn't contain the proper hotkey_enable_btn. You're choosing the Xbox/Share button as 'Hokey Enable' in the mapping dialog and it's correctly read (i.e. Button 8) by EmulationStation ?

              1 Reply Last reply Reply Quote 0
              • F
                fnpanic
                last edited by fnpanic

                I think there is a misunderstanding from my side. The Xbox button is not the share button according to the docs.

                If you have the latest Xbox Wireless Controller, such as the one included with Xbox Series X|S, you’ll notice an additional button nested between the View button  and the Menu button . That’s the Share button .
                

                Source: https://support.xbox.com/en-US/help/hardware-network/accessories/controller-share-button#:~:text=If you have the latest,That's the Share button .

                Look at this picture:

                https://assets.mmsrg.com/isr/166325/c1/-/ASSET_MMS_77465278?x=480&y=334&format=jpg&quality=80&sp=yes&strip=yes&trim&ex=480&ey=334&align=center&resizesource&unsharp=1.5x1+0.7+0.02&cox=0&coy=0&cdx=480&cdy=334

                I mapped the Xbox button which is proper mapped by es to button 8 but does not work in retroarch for some reason. I did not test the share button set to f12. I will do this tomorrow.

                Mapping select to hotkey works so far pretty good.

                I will report back and if it works we should put this somewhere in the docs or make it default. I can submit a PR if needed.

                quick update:

                i tested with the share button but does not work. I now set the select button as hotkey and this works. For me the two buttons do not work in retroarch.

                mituM 1 Reply Last reply Reply Quote 0
                • mituM
                  mitu Global Moderator @fnpanic
                  last edited by

                  @fnpanic said in xbox wireless controller - xbox button not working:

                  i tested with the share button but does not work. I now set the select button as hotkey and this works. For me the two buttons do not work in retroarch.

                  Can you post the .cfg file produced by EmulationStation when you select the Xbox button ?

                  1 Reply Last reply Reply Quote 0
                  • F
                    fnpanic
                    last edited by

                    you mean this one?

                    /opt/retropie/configs/all/retroarch/autoconfig/Xbox\ Wireless\ Controller.cfg

                    mituM 1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator @fnpanic
                      last edited by mitu

                      @fnpanic Yes.
                      EDIT: in RetroArch's joypad config repository, the button (8) shows up, so I'm thinking it should be detected (see here). Is your controller a genuine MS XBox controller or a clone ?

                      1 Reply Last reply Reply Quote 0
                      • F
                        fnpanic
                        last edited by fnpanic

                        It is a genuine XBox wireless controller for xbox series X. I updated to the latest firmware.

                        Here is the config generated by es:

                        input_device = "Xbox Wireless Controller"
                        input_driver = "udev"
                        input_enable_hotkey_btn = "8"
                        input_r3_btn = "10"
                        input_r_y_minus_axis = "-4"
                        input_r_y_minus_axis_label = "Right Analog Y-"
                        input_l_btn = "4"
                        input_l_btn_label = "LB"
                        input_load_state_btn = "4"
                        input_r_y_plus_axis = "+4"
                        input_r_y_plus_axis_label = "Right Analog Y+"
                        input_up_btn = "h0up"
                        input_up_btn_label = "D-Pad Up"
                        input_left_btn = "h0left"
                        input_left_btn_label = "D-Pad Left"
                        input_state_slot_decrease_btn = "h0left"
                        input_select_btn = "7"
                        input_r2_axis = "+5"
                        input_r2_axis_label = "RT"
                        input_r_x_minus_axis = "-3"
                        input_r_x_minus_axis_label = "Right Analog X-"
                        input_l_y_plus_axis = "+1"
                        input_l_y_plus_axis_label = "Left Analog Y+"
                        input_l_x_plus_axis = "+0"
                        input_l_x_plus_axis_label = "Left Analog X+"
                        input_right_btn = "h0right"
                        input_right_btn_label = "D-Pad Right"
                        input_state_slot_increase_btn = "h0right"
                        input_l2_axis = "+2"
                        input_l2_axis_label = "LT"
                        input_l_x_minus_axis = "-0"
                        input_l_x_minus_axis_label = "Left Analog X-"
                        input_r_x_plus_axis = "+3"
                        input_r_x_plus_axis_label = "Right Analog X+"
                        input_l3_btn = "9"
                        input_r_btn = "5"
                        input_r_btn_label = "RB"
                        input_save_state_btn = "5"
                        input_l_y_minus_axis = "-1"
                        input_l_y_minus_axis_label = "Left Analog Y-"
                        input_y_btn = "2"
                        input_y_btn_label = "X"
                        input_x_btn = "3"
                        input_x_btn_label = "Y"
                        input_menu_toggle_btn = "3"
                        input_down_btn = "h0down"
                        input_down_btn_label = "D-Pad Down"
                        input_start_btn = "6"
                        input_exit_emulator_btn = "6"
                        input_b_btn = "0"
                        input_b_btn_label = "A"
                        input_reset_btn = "0"
                        input_a_btn = "1"
                        input_a_btn_label = "B"
                        
                        mituM 1 Reply Last reply Reply Quote 0
                        • mituM
                          mitu Global Moderator @fnpanic
                          last edited by mitu

                          ..
                          input_enable_hotkey_btn = "8"
                          ..

                          OK, so the hotkey enable button is saved correctly, just like in the profile that RetroArch has online. I don't understand why it doesn't work in-game, it's correctly configured in the .cfg file.

                          1 Reply Last reply Reply Quote 0
                          • F
                            fnpanic
                            last edited by

                            Me too. Is there a debug mode to see what is loaded and what is pressed?

                            mituM 1 Reply Last reply Reply Quote 0
                            • F
                              fnpanic
                              last edited by

                              I would guess that the vendor is and the product is do not match any udev rule so only the buttons which are common on all gamepads work.

                              1 Reply Last reply Reply Quote 0
                              • mituM
                                mitu Global Moderator @fnpanic
                                last edited by mitu

                                @fnpanic said in xbox wireless controller - xbox button not working:

                                Me too. Is there a debug mode to see what is loaded and what is pressed?

                                You can add libretro_log_level = 0 to retroarch.cfg and run with verbose logging, but I don't know if there's more debug info shown for the input system in RetroArch.

                                I would guess that the vendor is and the product is do not match any udev rule so only the buttons which are common on all gamepads work.

                                I don't think udev and Prod/Vendor ID have an influence here. RetroArch loads the .cfg profile based on device name and the Product/Vendor IDs are optional - though you're still running an older version of RetroPie because recent versions add the vend/prod IDs to the .cfg file.

                                1 Reply Last reply Reply Quote 0
                                • windgW
                                  windg
                                  last edited by

                                  Are you sure you have a genuine Xbox controller ?

                                  My English isn't at a good level.

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    fnpanic
                                    last edited by fnpanic

                                    100% sure. I bought it directly form Amazon (not marketplace) and the official firmware update tool worked also.

                                    The controller works perfectly with es and Linux. Only libretro seems to ignore the none standard button (xbox).

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                    Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.