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

    Automatic cursor movement in runcommand

    Scheduled Pinned Locked Moved Help and Support
    runcommand
    25 Posts 2 Posters 2.4k 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
      last edited by mitu

      If you're able to compile sdl2-jstest and run it with just the C64 joystick connected, that would help understand what events are received and processed by joy2key. You can run it with

      sdl2-jstest -e 0
      

      and just paste the output (without using the joystick or pressing the button on it).

      To install it, just run

      git clone --recursive https://github.com/Grumbel/sdl-jstest
      cd sdl-jstest
      cmake .
      make
      
      M 1 Reply Last reply Reply Quote 0
      • M
        MiK @mitu
        last edited by

        @mitu said in Automatic cursor movement in runcommand:

        Is this joystick actually configured in EmulationStation ? Looking at the detected configuration, it wouldn't be mapped in EmulationStation's input dialog.

        I thought, it was configured in emulationstation. But it wasn't any more. So I configured it again. The result is some short up/left movement in emulationstation after connecting the adapter. But then it stops an everything behaves normal. When it is connected on startup, I don't register anything strange in emulationstation.

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

          I remember a similar issue - joystick starts with NW pressed (see here or here). That's why they drift when you're connecting them in ES. You don't get any spurious movements if they're already connected because any input is discarded during start-up, while the splash screen is shown.

          I'd be interested in the sdl2-jstest output, we may be able to implement a solution or workaround, though to be honest we might as well disable any gamepad that doesn't have 2 buttons, since you'd not be able to use it in the Runcommand menu.

          M 1 Reply Last reply Reply Quote 0
          • M
            MiK @mitu
            last edited by

            @mitu said in Automatic cursor movement in runcommand:

            sdl2-jstest -e 0

            and just paste the output (without using the joystick or pressing the button on it).

            pi@retropie:~/sdl-jstest $ ./sdl2-jstest -e 0
            Joystick Name:     'hexagons.de Joystick'
            Joystick GUID:     03000000c0160000dc27000001010000
            Joystick Number:    0
            Number of Axes:     2
            Number of Buttons:  2
            Number of Hats:     0
            Number of Balls:    0
            GameControllerConfig:
              missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
            
            Entering joystick test loop, press Ctrl-c to exit
            SDL_JOYDEVICEADDED which:0
            SDL_JOYAXISMOTION: joystick: 0 axis: 0 value: 0
            SDL_JOYAXISMOTION: joystick: 0 axis: 0 value: -32768
            SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: 0
            SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: -32768
            
            mituM 1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @MiK
              last edited by

              Thank you for the test, this confirms what we've been seeing so far. It looks like the joystick has 2 movements added during initialisation (up/left) that don't get reset.

               SDL_JOYAXISMOTION: joystick: 0 axis: 0 value: 0
               SDL_JOYAXISMOTION: joystick: 0 axis: 0 value: -32768
               SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: 0
               SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: -32768
              

              If you press down, does the 1 axis go to 0 or 32768 ?

              M 1 Reply Last reply Reply Quote 0
              • M
                MiK @mitu
                last edited by

                @mitu Additional info:
                There is no real joystick connected to the adapter at the moment.
                If I connect the adapter to my windows system, I don't see any movement.
                Perhaps this NW-"drift" is only present in init phase of the adapter.

                Disabling this controller for joy2key would be fine.

                mituM 1 Reply Last reply Reply Quote 0
                • M
                  MiK @mitu
                  last edited by

                  @mitu said in Automatic cursor movement in runcommand:

                  If you press down, does the 1 axis go to 0 or 32768 ?

                  If I press down direct after init I get:

                  SDL_JOYAXISMOTION: joystick: 0 axis: 0 value: 0
                  SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: 32767
                  

                  After releasing I get:

                  SDL_JOYAXISMOTION: joystick: 0 axis: 1 value: 0
                  
                  1 Reply Last reply Reply Quote 0
                  • mituM
                    mitu Global Moderator @MiK
                    last edited by

                    @mik said in Automatic cursor movement in runcommand:

                    Disabling this controller for joy2key would be fine.

                    If it actually has 2 buttons, then it would be able to fully operate the runcommand menus (1 button is enough for most actions anyway). I'll think of something and may have an updated version you could test in a day.

                    M 2 Replies Last reply Reply Quote 0
                    • M
                      MiK @mitu
                      last edited by

                      @mitu said in Automatic cursor movement in runcommand:

                      If it actually has 2 buttons, then it would be able to fully operate the runcommand menus (1 button is enough for most actions anyway). I'll think of something and may have an updated version you could test in a day.

                      The adapter supports two joysticks. Each joystick has one button.

                      But the driver in RetroPie doesn't support the button of the second joystick at all. sdl2-jstest shows that the axis of the second joystick results in the same values as the first joystick. In both cases it says "joystick: 0".

                      1 Reply Last reply Reply Quote 0
                      • M
                        MiK @mitu
                        last edited by

                        @mitu said in Automatic cursor movement in runcommand:

                        I'll think of something and may have an updated version you could test in a day.

                        One more information, I forgot: This problem wasn't there in older versions. It appeared in one of the last updates. Unfortunately I can't say which update, because I used only Kodi in the last months an didn't try to start a game.

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

                          @mik said in Automatic cursor movement in runcommand:

                          This problem wasn't there in older versions.

                          Probably because joy2key was updated at the end of June and the new version uses now SDL2 under the hood.
                          I have a tentative fix for this class of problems. Can you repeat the test from yesterday, but with [this version] of joy2key:

                          wget https://raw.githubusercontent.com/cmitu/RetroPie-Setup/99fb97f5aef306f522850c6ebeea0117c2c6dd48/scriptmodules/admin/joy2key/joy2key_sdl.py
                          
                          python3 joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d
                          
                          

                          You should see the connected devices and any inputs from your gamepad(s). You can try with both controllers connected and see if the inputs are correctly registered.

                          M 2 Replies Last reply Reply Quote 0
                          • M
                            MiK @mitu
                            last edited by

                            @mitu I will try later in the evening.
                            I'm not very familiar with python, but shouldn't there be the file name in the second line?

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

                              @mik said in Automatic cursor movement in runcommand:

                              but shouldn't there be the file name in the second line?

                              Yes, I forgot to add it. Should be fine now, thanks for noticing.

                              1 Reply Last reply Reply Quote 0
                              • M
                                MiK @mitu
                                last edited by

                                @mitu said in Automatic cursor movement in runcommand:

                                I have a tentative fix for this class of problems. Can you repeat the test from yesterday, but with [this version] of joy2key:

                                The fix seems to work. After starting the script, I only get:

                                pi@retropie:~/joy2key-test $ python3 joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d
                                pi@retropie:~/joy2key-test $ 2021-11-01 23:18:54,466 DEBUG  Using SDL Version 2.0.10, PySDL2 version 0.9.3.
                                2021-11-01 23:18:54,467 DEBUG  Joystick #0 Microsoft X-Box 360 pad added
                                2021-11-01 23:18:54,467 DEBUG  Added configuration for known device Microsoft X-Box 360 pad, hats: {0: [(1, 'up'), (8, 'left'), (2, 'right'), (4, 'down')]}, buttons: {4: 'pageup', 5: 'pagedown', 2: 'y', 3: 'x', 0: 'b', 1: 'a'}, axis: {3: [(-1, 'up'), (1, 'down')], 2: [(-1, 'left'), (1, 'right')], 1: [(1, 'down'), (-1, 'up')], 0: [(1, 'right'), (-1, 'left')]}
                                2021-11-01 23:18:54,468 DEBUG  Joystick #1 hexagons.de Joystick added
                                2021-11-01 23:18:54,468 DEBUG  Added configuration for known device hexagons.de Joystick, hats: {}, buttons: {0: 'a'}, axis: {1: [(-1, 'up'), (1, 'down')], 0: [(-1, 'left'), (1, 'right')]}
                                

                                Moving the joystick and pressing the buttons on the gamepad results in the corresponding outputs.

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

                                  Thank you for testing and reporting the problem.
                                  We'll add the fixes to the the RetroPie version, so one of the next updates will have the new joy2key version.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    MiK @mitu
                                    last edited by

                                    @mitu said in Automatic cursor movement in runcommand:

                                    Thank you for testing and reporting the problem.
                                    We'll add the fixes to the the RetroPie version, so one of the next updates will have the new joy2key version.

                                    Thanks for your quick response and for your work on the fix.

                                    How could I try the fixed version in the real environment (runcommand, RetroPie-Setup)?

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

                                      @mik Just copy the .py file to /opt/retropie/admin/joy2key, overwriting the existing file, and it should be used instead for all menus.

                                      EDIT: actually, just update your RetroPie-Setup script, the fixed version should be now included.

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        MiK @mitu
                                        last edited by

                                        @mitu Sorry for the late reply: Everything works fine in runcommand and RetroPie-Setup with your new version.

                                        1 Reply Last reply Reply Quote 0
                                        • mituM mitu referenced this topic on
                                        • sirhenrythe5thS sirhenrythe5th referenced this topic on
                                        • 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.