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

    DosBox; Mapping mouse to PS3 Analog Stick

    Scheduled Pinned Locked Moved Help and Support
    32 Posts 6 Posters 22.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.
    • C
      Concat
      last edited by

      @dudleydes
      It works!!!! Haha, you have no idea how stoked I am. I literally ran from my pi to my pc to type this :) I'm not getting any double inputs registering, I can navigate in the ppsspp menu AND I can control the game. Your instructions and code were spot on.

      I have spent HOURS googling this issue and trying everything... the Linux Joystick Mapper was my last kick at it.

      1 Reply Last reply Reply Quote 0
      • C
        Concat
        last edited by Concat

        @dudleydes
        I may have spoke too soon... PPSSPP uses key commands for the analog, so I tried mapping the axes to those keys:

        axis vendor=0x054c product=0x0268 src=0 target=kbd plus="k" minus="i"
        axis vendor=0x054c product=0x0268 src=1 target=kbd plus="l" minus="j"
        

        But it doesn't work well. I found this suggestion on the Linux Joystick Mapper wiki. It seems the lack of a deadzone built into the mapper causes havoc. It just keeps scrolling up in the menu no matter where the analog stick is pointed.

        M 1 Reply Last reply Reply Quote 0
        • M
          Mayki @Concat
          last edited by

          Please advice, it fails to map the mouse to left analog PS3 gamepad, mouse cursor is still in the upper left corner. The mouse buttons work well.

          # Map Mouse
          axis vendor=0x054c product=0x0268 src=0 target=mouse axis=0
          axis vendor=0x054c product=0x0268 src=1 target=mouse axis=1
          button vendor=0x054c product=0x0268 src=14 target=mouse button=0
          button vendor=0x054c product=0x0268 src=15 target=mouse button=1
          
          C 1 Reply Last reply Reply Quote 0
          • C
            Concat @Mayki
            last edited by

            @Mayki
            Are you mapping the mouse for dosbox, or PPSSPP? During my own troubleshooting, I tested for PPSSPP and the mouse didn't work either.

            1 Reply Last reply Reply Quote 0
            • M
              Mayki
              last edited by

              Mapping mouse for DosBox. Tested in the game Albion, Abuse and directly in DOSBox, the mouse cursor will automatically move into the upper left corner and not move him.

              D C 2 Replies Last reply Reply Quote 0
              • C
                Concat
                last edited by

                @Mayki
                That might be due to a poor deadzone on the analog stick. I think this is my issue as well. I know you can write additional scripts in the mapper, and the developer made reference to creating one for a deadzone of sorts on his wiki. I'm not sure I know how to do it properly... was hoping @dudleydes would help troublehsoot :)

                1 Reply Last reply Reply Quote 0
                • D
                  dudleydes @Mayki
                  last edited by

                  @Mayki To use the mouse, DOSBox needs to capture it. This can be done by pressing CTRL+F10 or left-clicking, which, if using the mapping above, you can do by pressing X on your PS3 controller.

                  @Concat I've not had any luck mapping keys to the analogue stick. All I would suggest is leave a message for the developer at the sourceforge page, which you have already done.

                  C 1 Reply Last reply Reply Quote 1
                  • M
                    Mayki
                    last edited by

                    Not problem with capture, problem is analog axis. The left analog stick in the middle : constantly sends the cursor to the upper left corner, analog stick in the right down position : the cursor stops at the zero position.

                    1 Reply Last reply Reply Quote 0
                    • C
                      Concat @dudleydes
                      last edited by

                      @dudleydes
                      Just thought I'd ask what version of joymap you are using...

                      D 1 Reply Last reply Reply Quote 0
                      • D
                        dudleydes @Concat
                        last edited by

                        @Concat I'm using version 0.3.1.

                        1 Reply Last reply Reply Quote 1
                        • C
                          Concat
                          last edited by

                          @dudleydes

                          Hmmm... well I'm at a loss. I can't get the mouse to map properly in Dosbox either. Cursor just sits in the top left corner like Mayki.

                          Do you launch Albion from the command line? I suppose I could try that. Right now I have it set up to load the map in the .emulators.cfg file, much the same way you suggested I do it for PPSSPP. Perhaps there is some confliction with emulationstation(?)

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            dudleydes @Concat
                            last edited by

                            @Concat The script that I use to launch Albion is in my first post above. As you can see, I launch loadmap with each game to allow for game-specific mappings.

                            Maybe you can try my binary. You can download it from here.

                            1 Reply Last reply Reply Quote 1
                            • dishinsD
                              dishins @dudleydes
                              last edited by dishins

                              @dudleydes

                              hi, i'm trying to do this config with sorr (Streets of rage remake) but i'm struggling to make this work, can you help me on this?

                              nvm, sorted it out :)

                              1 Reply Last reply Reply Quote 0
                              • C
                                Concat @Mayki
                                last edited by

                                @Mayki said in DosBox; Mapping mouse to PS3 Analog Stick:

                                Mapping mouse for DosBox. Tested in the game Albion, Abuse and directly in DOSBox, the mouse cursor will automatically move into the upper left corner and not move him.

                                The linuxjoystickmapper dev released a new version which fixed this issue for me. Give it a try.

                                Unfortunately, I still have issue mapping keys to axes. It doesn't release the key press when the axis returns to neutral no matter what I try. Oh well. At least the mouse is working.

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Mayki
                                  last edited by

                                  Yes, I noticed it. We're currently investigating a problem with the PC, then I try it likes. Thank you for the warning.

                                  1 Reply Last reply Reply Quote 0
                                  • GetKeyOpenDoorG
                                    GetKeyOpenDoor
                                    last edited by GetKeyOpenDoor

                                    I've successfully created all the necessary files etc. (and it somewhat works in dosbox) but how do you figure out which button id comes from which button?
                                    I've used Kodi's logging before to get id's etc but the dpad returns a hat value and I can't find anything in the joymap docs about hat values.
                                    Also the buttons id's from Kodi's log aren't the same as what joymap recognizes.
                                    i.e button id 10 is my startbutton in kodi, but when I map
                                    button vendor=0x045e product=0x028e src=10 target=kbd button="enter"
                                    it doesn't work

                                    D 1 Reply Last reply Reply Quote 0
                                    • D
                                      dudleydes @GetKeyOpenDoor
                                      last edited by

                                      @GetKeyOpenDoor You can use jstest. From the command line, run:

                                      jstest /dev/input/js0
                                      
                                      1 Reply Last reply Reply Quote 1
                                      • GetKeyOpenDoorG
                                        GetKeyOpenDoor
                                        last edited by GetKeyOpenDoor

                                        That works, thank you.

                                        so dpad left is -32767 and dpad right is 32767 on axis 4
                                        same for dpad up/down. up = -32767 and down is 32767 on axis 5
                                        and the same for the thumbs. but on axes 0-3
                                        No idea how to map this in joymap, I don't understand how
                                        src=0 target=mouse axis=0 interprets the axes values

                                        because how does this work when dpad up and down is both on axis 5
                                        axis vendor=0x045e product=0x028e src=5 target=kbd button="up"
                                        axis vendor=0x045e product=0x028e src=5 target=kbd button="down"

                                        EDIT: read something in the docs about plus and minus but no explanation on how to use it.
                                        I've tried axis vendor=0x045e product=0x028e src=5 minus target=kbd button="up"
                                        but that doesn't seem to do anything :EDIT

                                        Also did you guys already figure out how to use the extra values like deadzone and speed?
                                        Do you just paste that on the same line as the button config?

                                        1 Reply Last reply Reply Quote 0
                                        • GetKeyOpenDoorG
                                          GetKeyOpenDoor
                                          last edited by

                                          Ok, so I just tested this with the game Abuse after getting all the values from jstest

                                          button vendor=0x045e product=0x028e src=2 target=mouse button=0
                                          button vendor=0x045e product=0x028e src=0 target=mouse button=1
                                          Using a 360wired, I've mapped X to mousebutton 0 (left?) and a to button 1 (right?)
                                          nothing happens in game when pressed

                                          I'm about to give up lol, i've been at it for 2 days already and it's proven to be way to difficult.

                                          1 Reply Last reply Reply Quote 0
                                          • C
                                            Concat
                                            last edited by

                                            You're asking so many specific questions it's hard to understand what you're even trying to do. lol. You should start there. And post your entire mapping file in something like pastebin for us to look at. If you have one error in the file, it will fail to load any of it.

                                            As for plus and minus, look at this mapping:

                                            axis vendor=0x054c product=0x0268 src=0 target=kbd plus="k" minus="i"
                                            axis vendor=0x054c product=0x0268 src=1 target=kbd plus="l" minus="j"
                                            

                                            First line is axis, because I'm targeting an axes on my controller.
                                            Vendor and product define which controller.
                                            src defines what input on my controller I'm targetting. In this case, 0 is the X-axis on the left joystick, and 1 is the Y-axis on the left joystick. I've already told the script it's an axis, so it won't look for button 0 and button 1.
                                            On the left joystick, when I push right, the input delivers a positive value, so it's mapped to k. Left is negative, so i.
                                            Y axis is reverse on the ps3 controller. Up is negative and down is positive.

                                            That's how plus and minus work. It's used to map joystick axes to buttons (either keyboard, or a different controller button). I had a hell of a time making this work until the developer released a new version with a "trinary" flag. I dont really understand what it does, but there is documentation on it. so my mapping becomes:

                                            axis vendor=0x054c product=0x0268 src=0 target=kbd plus="k" minus="i" flags="trinary"
                                            axis vendor=0x054c product=0x0268 src=1 target=kbd plus="l" minus="j" flags="trinary"
                                            

                                            I have not mapped a button to a mouse click, but this looks fine (at least the format does):

                                            button vendor=0x045e product=0x028e src=2 target=mouse button=0
                                            button vendor=0x045e product=0x028e src=0 target=mouse button=1
                                            

                                            I just don't know what the numbers are for a wired 360 controller. I googled PS3 and found one that works.

                                            This is gibberish:

                                            axis vendor=0x045e product=0x028e src=5 target=kbd button="up"
                                            axis vendor=0x045e product=0x028e src=5 target=kbd button="down"
                                            

                                            You are trying to map axis 5 to both up and down without specifying + is up/down, and what - is. I find it strange that your dpad is registering as an axis in general. The ps3 dpad acts as buttons.

                                            Deadzone is a new feature. I put in 1000 and the file failed to load. 100 loads, but I swear it doesn't do anything. I gave up on that because it wasn't needed in my case. At any rate, you would just put Deadzone=100 at the end of an axis target. I never looked into speed.

                                            Overall it is a difficult tool to use. You have to cobble together information from the wiki, the documentation and topics like this. If you think 2 days is bad... look at when I posted first posted this topic. I had to harass the developer because I could not get joystick to keyboard mappings to work without chaos. He listened, found a bug or two, and introduced new features. With the trinary flag , it finally works for me and now I can play shadow warrior with dual joysticks.

                                            The developer himself said he made the tool for himself some time ago, so don't expect some polished product with great instructions. Just keep trying and eliminate all sources of error. Try some easy first, like mapping a single button to a keyboard press, then loading dosbox and see if the button returns the key in the command line. If it doesn't, you are doing something fundamentally wrong. Wrong product number, wrong button number, wrong script to load the map file when the game runs, etc.

                                            GetKeyOpenDoorG 1 Reply Last reply Reply Quote 1
                                            • 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.