• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
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

Guide: Advanced Controller Mappings

Scheduled Pinned Locked Moved Help and Support
joystickcontrollermappingxboxdrvscummvm
626 Posts 35 Posters 460.8k 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.
  • S
    spud11 @mediamogul
    last edited by 21 Mar 2017, 23:19

    @mediamogul Hi. I've now got it partially working:

    With advmame, configuring the buttons to keys in TAB, the following configuration does work in game:

    sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
    --silent \
    --detach-kernel-driver \
    --deadzone=4000 \
    --deadzone-trigger 15% \
    --force-feedback \
    --mimic-xpad \
    --trigger-as-button \
    --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
    --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
    --device-name "Player_3_-_4-Way_Joystick_xboxdrv" \
    --evdev-absmap ABS_X=x1,ABS_Y=y1 \
    --four-way-restrictor \
    --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start \
    --ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
    --ui-buttonmap a=KEY_A,b=KEY_B,x=KEY_X,y=KEY_Y,back=KEY_E,start=KEY_T \
    &
    

    However, I need to rotate the screen to a vertical/cocktail orientation and it looks like the individual game .cfg files I use to achieve that only work with lr-mame and not Advmame. I understand that with Advmame I'd need to change Advmame's .rc file to rotate each individual game ( https://retropie.org.uk/docs/MAME/ ). I'd like to try to avoid that by using lr-mame2003 with my already established individual rom configs. (As well, the screen resolution for some reason appears a lot better in lr-mame2003 than it does in Advmame despite Advmame being built for vertically-oriented screens).

    With lr-mame2003, I've tested the code above on the commandline. It states the controller should be working. Entering cat/proc/bus/input/devices on the commandline produces:

    I: Bus=0003 Vendor=045e Product=028e Version=0110
    N: Name="Player_3_-_4-Way_Joystick_xboxdrv"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input10
    U: Uniq=
    H: Handlers=kbd event10 
    B: PROP=0
    B: EV=20000b
    B: KEY=73c00000 0 0 0 0 0 1680 0 12000 40340000
    B: ABS=30018
    B: FF=1 3f870000 0 0
    

    It all appears fine. However, with those 2 extra lines of --ui code at the bottom, the joystick does not appear in Retroarch (even though I've already mapped the joystick to User 5 previously) and does not appear when I start lr-mame2003. Without those 2 lines of code, the joystick does appear in Retroarch. Really not sure why.

    RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

    M 1 Reply Last reply 22 Mar 2017, 00:35 Reply Quote 0
    • M
      mediamogul Global Moderator @spud11
      last edited by 22 Mar 2017, 00:35

      @spud11

      By adding those two extra lines, you've told xboxdrv to also create a virtual keyboard and every time you press one of your mapped buttons, the system will think that it's coming from that new keyboard. As long as the xboxdrv mapped buttons correspond to the keyboard settings in RetroArch, you won't need to worry about the controller showing up or not.

      RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

      S 1 Reply Last reply 22 Mar 2017, 01:29 Reply Quote 0
      • S
        spud11 @mediamogul
        last edited by 22 Mar 2017, 01:29

        @mediamogul Thanks. I think I'm getting there. Okay, so it's now a virtual keyboard and so Player_3_-_4-Way_Joystick_xboxdrv won't appear in Retroarch.

        I've actually mapped the keys in Retroarch on my "normal" keyboard, but do I need to do this now and, if so, to which controller (eg I'm assuming to the underlying DragonRise controller that corresponds to Player_3_-_4-Way_Joystick_xboxdrv?)

        Is the new virtual keyboard effectively the same as my normal keyboard? That is, if I designate keys "a", "b" etc on my "normal" keyboard in Retroarch to the joystick's buttons, is that the same as designating the keys on the virtual keyboard?

        Do I need to have anything in the amidar.zip.cfg? I'm just checking that I don't need to specify a particular joystick to Player 1 (for example). I wouldn't have thought so as the joystick is now effectively a virtual keyboard. So I'm assuming none of the lines below are necessary:

        input_player1_joypad_index = 2
        input_player1_a = "a"
        input_player1_b = "b"
        input_player1_y = "y"
        input_player1_x = "x"
        input_player1_start = "t"
        input_player1_select = "e"
        input_player1_left = "left"
        input_player1_right = "right"
        input_player1_up = "up"
        input_player1_down = "down"
        

        Do I need to do anything in the TAB menu in game eg assign the virtual (or "normal") keyboard's keys to particular actions (eg press left arrow on normal keyboard means player 1 moves left)?

        Sorry about the sheer number of questions. It's just that I've tested once again and there's no movement with the joystick. I know that I'm gradually getting there but there's obviously a combination of things that I've done, and I'd say one of those is probably interfering with achieving the end result.

        RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

        M 1 Reply Last reply 22 Mar 2017, 02:22 Reply Quote 0
        • M
          mediamogul Global Moderator @spud11
          last edited by mediamogul 22 Mar 2017, 02:22

          @spud11

          Is the new virtual keyboard effectively the same as my normal keyboard?

          Yes indeedy.

          Do I need to have anything in the amidar.zip.cfg?

          No, just the RetroArch settings.

          Do I need to do anything in the TAB menu

          Not if it's already set in RetroArch.

          Sorry about the sheer number of questions.

          Questions are like keys that unlock doors in our lives and work. The challenge is finding the right key to unlock the right door.

          Your lucky numbers are:
          12, 4, 7, 23, 17, 0

          RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

          S 2 Replies Last reply 22 Mar 2017, 03:36 Reply Quote 1
          • S
            spud11 @mediamogul
            last edited by spud11 22 Mar 2017, 03:36

            @mediamogul On ya, mediamogul! I laughed at that.

            After work, I'll give it a crack.

            Just checking too - with the RetroArch menu, we're talking about entering it via emulationstation (which is what I've been doing ie the global retroarch.cfg in the opt folder etc), not the specific one for mame-libretro or for lr-mame2003 (sorry not in front of the Pi at present) and not the RetroArch GUI which can be brought up "in game"?

            I reckon I should also rename the "default.cfg" to something else for lr-mame2003 - start with a clean slate or as clean as I can make it, so there's no joystick/key assignments in the TAB menu.

            RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

            1 Reply Last reply Reply Quote 0
            • S
              spud11 @mediamogul
              last edited by 22 Mar 2017, 10:43

              @mediamogul Hi. Okay, I'm officially stumped. I haven't been able to get it working in game with lr-mame2003. Just not sure what is going on. Would you have any suggestions please?

              RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

              M 1 Reply Last reply 22 Mar 2017, 13:50 Reply Quote 0
              • M
                mediamogul Global Moderator @spud11
                last edited by 22 Mar 2017, 13:50

                @spud11

                Did you create a udev rule for the virtual keyboard? If not, instructions are at the tail end of section 3A in the guide.

                RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                S 1 Reply Last reply 22 Mar 2017, 22:39 Reply Quote 0
                • S
                  spud11 @mediamogul
                  last edited by 22 Mar 2017, 22:39

                  @mediamogul I did, but I've now changed the name to mirror the name of the joystick based on comments in this thread. Would that be right? The terms of it are now:

                  SUBSYSTEM=="input", ATTRS{name}=="Player_3_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                  

                  RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                  M 1 Reply Last reply 22 Mar 2017, 22:40 Reply Quote 0
                  • M
                    mediamogul Global Moderator @spud11
                    last edited by 22 Mar 2017, 22:40

                    @spud11

                    Would that be right?

                    That depends. Is it working now?

                    RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                    S 1 Reply Last reply 22 Mar 2017, 23:40 Reply Quote 0
                    • S
                      spud11 @mediamogul
                      last edited by 22 Mar 2017, 23:40

                      @mediamogul Thanks for your patience, mediamogul. It does now work.

                      I've mapped your Player 2 keys to my third joystick in RetroArch (User 3), got the udev rule as above, went in game and needed to map the keyboard in TAB menu. The interesting thing is when you do that last bit eg Coin 1 and then press the "f" key for example, it will show "f RetroPad 3 Select". So it identifies the RetroPad correctly, and basically you know it is then working.

                      I had to change the up/down/left/right as my 3rd joystick is operating in portrait mode.

                      Final code - joystick to keys:

                      sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
                      --silent \
                      --detach-kernel-driver \
                      --deadzone=4000 \
                      --deadzone-trigger 15% \
                      --force-feedback \
                      --mimic-xpad \
                      --trigger-as-button \
                      --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                      --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                      --device-name "Player_3_-_4-Way_Joystick_xboxdrv" \
                      --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                      --four-way-restrictor \
                      --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start \
                      --ui-axismap X1=KEY_J:KEY_I,Y1=KEY_H:KEY_G \
                      --ui-buttonmap a=KEY_K,b=KEY_M,x=KEY_N,y=KEY_O,back=KEY_F,start=KEY_V \
                      &
                      

                      I've played a bit of Amidar. The only thing I'm unsure of is whether the --four-way-restrictor configuration actually works when the joystick is mapped to the keyboard (the main reason for trying xboxdrv). It doesn't feel like four way restrictor is working and, from the manual, it looks as though it only applies to analog configurations:

                      "--four-way-restrictor
                      The --four-way-restrictor option allows to limit the movement on both analogsticks to only four directions (up, down, left, right), the diagonals (up/left, up/right, down/left, down/right) are filtered out from the output. This option is useful for games such as Tetris, that don't need diagonals and where you don't want to accidently trigger the down-move while trying to do a left/right move."

                      Thanks for your assistance and patience.

                      RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                      M 1 Reply Last reply 22 Mar 2017, 23:52 Reply Quote 0
                      • M
                        mediamogul Global Moderator @spud11
                        last edited by mediamogul 22 Mar 2017, 23:52

                        @spud11

                        The only thing I'm unsure of is whether the --four-way-restrictor configuration actually works when the joystick is mapped to the keyboard... from the manual, it looks as though it only applies to analog configurations

                        I've tested it with keyboard, mouse, as well as normal controller input and the four-way restrictor has always worked for me. If the map is active and the restrictor is set, chances are that everything is performing as it should. The feel of some games are just more obvious than others. Try a game of 'Ms Pac-Man' with and without the restrictor and see if you get hung up on the corners without. If there is a problem, I'd guess it has to do with setting the controls in the TAB menu, as that shouldn't be necessary.

                        RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                        S 1 Reply Last reply 23 Mar 2017, 00:33 Reply Quote 0
                        • S
                          spud11 @mediamogul
                          last edited by 23 Mar 2017, 00:33

                          @mediamogul Hi. Thanks for that. I'll give Ms Pacman a go after work and see how that goes and let you know.

                          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                          M 1 Reply Last reply 23 Mar 2017, 00:47 Reply Quote 0
                          • M
                            mediamogul Global Moderator @spud11
                            last edited by 23 Mar 2017, 00:47

                            @spud11

                            I'll give Ms Pacman a go after work

                            Just remember that eating ghosts in a video game can be fun, but in real life it's disrespectful.

                            RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                            S 1 Reply Last reply 23 Mar 2017, 08:28 Reply Quote 1
                            • S
                              spud11 @mediamogul
                              last edited by 23 Mar 2017, 08:28

                              @mediamogul Hi. Thanks so much for helping me - I've eaten some ghosts! Four way restrictor mode definitely appears to work!

                              I looked at the code again and realised I was probably making a meal of things (pun definitely intended). I went into TAB in game, and into the Input (general) sub-menu, wrote down all of the keys and then just mapped those keys directly to the joystick buttons in xboxdrv. The code now looks like this:

                              sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
                              --silent \
                              --detach-kernel-driver \
                              --deadzone=4000 \
                              --deadzone-trigger 15% \
                              --force-feedback \
                              --mimic-xpad \
                              --trigger-as-button \
                              --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void \
                              --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                              --device-name "Player_3_-_4-Way_Joystick_xboxdrv" \
                              --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                              --four-way-restrictor \
                              --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start \
                              --ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \
                              --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,back=KEY_5,start=KEY_1 \
                              &
                              

                              The joystick buttons now correspond to Player 1's default keys in TAB. The ui-axismap settings reflect the fact that joystick 3 is on the side of the arcade table (ie in portrait mode, rather than landscape), so I needed to change the axes around after some trial and error.

                              My /etc/udev/rules.d/990xboxdrv file looks like this:

                              SUBSYSTEM=="input", ATTRS{name}=="Player_3_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                              

                              Now there are only 2 other things I need to do and that is to get Player 2 up and running properly and then to transcribe the new code into runcommand-onstart.sh and list all of the relevant 4-way joystick games.

                              With the first thing, I've tried to change the 99-xboxdrv.rules file so that it also gives me Player 2 but the second part of the code below does not work:

                              SUBSYSTEM=="input", ATTRS{name}=="Player_3_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                              SUBSYSTEM=="input", ATTRS{name}=="Player_4_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="2"
                              

                              Could you please assist me with this? Should there be an entirely different file for the second keyboard? I just guessed the "2" at the end. Or is it as simple as adding an "&" at the end of the line or something similar?

                              RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                              M 1 Reply Last reply 23 Mar 2017, 08:41 Reply Quote 0
                              • M
                                mediamogul Global Moderator @spud11
                                last edited by 23 Mar 2017, 08:41

                                @spud11

                                I believe keeping it as "1" should still work. If that doesn't work, try creating a second file.

                                RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                S 1 Reply Last reply 23 Mar 2017, 22:48 Reply Quote 0
                                • S
                                  spud11 @mediamogul
                                  last edited by 23 Mar 2017, 22:48

                                  @mediamogul Thanks. That definitely worked, and I've added a couple more lines to it:

                                  SUBSYSTEM=="input", ATTRS{name}=="Player_3_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                                  SUBSYSTEM=="input", ATTRS{name}=="Player_4_-_4-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                                  SUBSYSTEM=="input", ATTRS{name}=="Player_3_-_8-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                                  SUBSYSTEM=="input", ATTRS{name}=="Player_4_-_8-Way_Joystick_xboxdrv", GROUP="users", MODE="0666", ENV{ID_INPUT_KEYBOARD}="1"
                                  

                                  My runcommand.onstart.sh now looks like this:

                                  #!/bin/sh
                                  ## Uncomment one or all of the following if you need to find some information about the emulator or roms
                                  ## Name of the emulator
                                  #echo $1 >> /dev/shm/runcommand.log
                                  ## Name of the software used for running the emulation
                                  #echo $2 >> /dev/shm/runcommand.log
                                  ## Name of the rom
                                  #echo $3 >> /dev/shm/runcommand.log
                                  ##Executed command line
                                  #echo $4 >> /dev/shm/runcommand.log
                                  ### The FUN begins
                                  #Get ROM name striping full path
                                  rom="${3##*/}"
                                  ### Set variables for your joypad and emulator
                                  ### Basic Configurations - Standard controller mappings
                                  basic="sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
                                  --silent \
                                  --detach-kernel-driver \
                                  --deadzone=4000 \
                                  --deadzone-trigger 15% \
                                  --force-feedback \
                                  --mimic-xpad \
                                  --trigger-as-button \
                                  --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void,lt=void,rt=void"
                                  ### Extended Configurations
                                  ### Specific emulator configurations or any other parameters you will need only for some emulators
                                  ### Joystick settings for Amiga games
                                  amiga1="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                  --device-name "Amiga_Joystick_Player_1_xboxdrv" \
                                  --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                  --evdev-keymap BTN_TRIGGER=x,BTN_THUMB=y,BTN_THUMB2=a,BTN_PINKIE=b,BTN_BASE3=back,BTN_BASE6=start"
                                  amiga2="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \
                                  --device-name "Amiga_Joystick_Player_2_xboxdrv" \
                                  --evdev-absmap ABS_X=y1,ABS_Y=x1 \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  ### Settings for Arcade games that require 4-Way Restricted Joysticks
                                  joy1restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                  --device-name "Player_1_-_4-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --four-way-restrictor \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy2restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \
                                  --device-name "Player_2_-_4-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --four-way-restrictor \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy3restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                                  --device-name "Player_3_-_4-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --four-way-restrictor \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy4restricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \
                                  --device-name "Player_4_-_4-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --four-way-restrictor \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  ### Settings for Arcade games that use 8-Way Unrestricted Joysticks
                                  joy1unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
                                  --device-name "Player_1_-_8-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy2unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.1:1.0-event-joystick \
                                  --device-name "Player_2_-_8-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy3unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.2:1.0-event-joystick \
                                  --device-name "Player_3_-_8-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  joy4unrestricted="--evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-event-joystick \
                                  --device-name "Player_4_-_8-Way_Joystick_xboxdrv" \
                                  --evdev-absmap ABS_X=x1,ABS_Y=y1 \
                                  --evdev-keymap BTN_TRIGGER=y,BTN_THUMB=a,BTN_THUMB2=back,BTN_PINKIE=x,BTN_TOP=b,BTN_TOP2=start"
                                  ### Settings for mame-libretro Arcade games in landscape mode - joysticks emulating virtual keyboards
                                  joy1="--ui-axismap X1=KEY_LEFT:KEY_RIGHT,Y1=KEY_UP:KEY_DOWN \
                                  --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,back=KEY_5,start=KEY_1"
                                  joy2="--ui-axismap X1=KEY_D:KEY_G,Y1=KEY_R:KEY_F \
                                  --ui-buttonmap a=KEY_A,b=KEY_S,x=KEY_Q,y=KEY_W,back=KEY_6,start=KEY_2"
                                  ### Settings for mame-libretro Arcade games in folder 'Arcade-Vertical' in portrait/cocktail mode - joysticks emulating virtual keyboards
                                  joy3="--ui-axismap X1=KEY_DOWN:KEY_UP,Y1=KEY_RIGHT:KEY_LEFT \
                                  --ui-buttonmap a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_SPACE,y=KEY_LEFTSHIFT,back=KEY_5,start=KEY_1"
                                  joy4="--ui-axismap X1=KEY_F:KEY_R,Y1=KEY_G:KEY_D \
                                  --ui-buttonmap a=KEY_A,b=KEY_S,x=KEY_Q,y=KEY_W,back=KEY_6,start=KEY_2"
                                  ### Kill Command
                                  xboxkill="sudo killall xboxdrv"
                                  ### Execute the driver with the configuration you need
                                  # $1 is the name of the emulation, not the name of the software used
                                  # it is intellivision not jzintv
                                  case $1 in
                                  mame-libretro)
                                  case $rom in
                                  "amidar.zip"|"atetris.zip"|"anteater.zip"|"armorcar.zip"|"astrob.zip"|"astrof.zip"|"bagman.zip"|"ballbomb.zip"|"barrier.zip"|"blkhole.zip"|"btime.zip"|"carjmbre.zip"|"carnival.zip"|"cavelon.zip"|"checkman.zip"|"chinhero.zip"|"circusc.zip"|"ckong.zip"|"commando.zip"|"congo.zip"|"crush.zip"|"dazzler.zip"|"devilfsh.zip"|"digdug.zip"|"digdug2.zip"|"digger.zip"|"disco.zip"|"dkong.zip"|"dkong3.zip"|"dkongjr.zip"|"dommy.zip"|"dorodon.zip"|"mrdo.zip"|"puckman.zip"|"mspacman.zip")# Configuration used only for these ROMs
                                  $xboxkill
                                  joycommand="$basic $joy3restricted $joy3 & $basic $joy4restricted $joy4 &"
                                  eval $joycommand
                                  ;;
                                  *) # Configuration for every other ROM in respect of this emulator
                                  $xboxkill
                                  joycommand="$basic $joy3unrestricted $joy3 & $basic $joy4unrestricted $joy4 &"
                                  eval $joycommand
                                  ;;
                                  esac
                                  ;;
                                  amiga)
                                  $xboxkill
                                  joycommand="$basic $amiga1 & $basic $amiga2 &"
                                  eval $joycommand
                                  ;;
                                  esac

                                  The only thing I can't get to work is the code for the remaining joystick unrestricted games under the command *). When starting Mustache Boy (for example), the runcommand.log says that xboxdrv did not start for some reason. (I was generally hoping just to use the normal xpad driver for these games and so I initially just had sudo killall xboxdrv as the code, but that did not work, so I have set up xboxdrv 8 way joystick configurations instead which don't work either):

                                  xboxdrv: no process found
                                  Parameters:
                                  Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-mame2003/mame2003_libretro.so --config /opt/retropie/configs/mame-libretro/retroarch.cfg "/home/pi/RetroPie/roms/arcade-vertical/mustache.zip" --appendconfig /dev/shm/retroarch.cfg'|'"/home/pi/RetroPie/roms/arcade-vertical/mustache.zip.cfg"

                                  Have you encountered this problem? Thank you.

                                  RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                  M 1 Reply Last reply 23 Mar 2017, 22:52 Reply Quote 0
                                  • M
                                    mediamogul Global Moderator @spud11
                                    last edited by mediamogul 23 Mar 2017, 22:52

                                    @spud11

                                    the runcommand.log says that xboxdrv did not start for some reason.

                                    That output should point to the problem. Can you post the error here?

                                    RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                    S 1 Reply Last reply 24 Mar 2017, 00:14 Reply Quote 0
                                    • S
                                      spud11 @mediamogul
                                      last edited by 24 Mar 2017, 00:14

                                      @mediamogul Hi mediamogul. Could I ask where the output would have been saved please? The usual statements came up on screen briefly for both joysticks (ie the js/event number etc). Or would you prefer I just enter the code into the commandline? Thanks.

                                      RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                      M 1 Reply Last reply 24 Mar 2017, 00:17 Reply Quote 0
                                      • M
                                        mediamogul Global Moderator @spud11
                                        last edited by 24 Mar 2017, 00:17

                                        @spud11

                                        I would first look at /dev/shm/runcommand.log, but if there's nothing there, entering it into the command line should indeed show the error.

                                        RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

                                        S 1 Reply Last reply 24 Mar 2017, 13:48 Reply Quote 0
                                        • S
                                          spud11 @mediamogul
                                          last edited by 24 Mar 2017, 13:48

                                          @mediamogul Hi. I've now tested both with the script and the commandline. I think I removed a space before one of the # and that caused the problem. Everything seems to be working now (touch wood). I found the best way to test was to test both the restricted code and the unrestricted code in a shoot 'em up. It's clear as daylight that the code is working when you can't do diagonals in a shoot 'em up. Thanks for your advice on this.

                                          Lr-mame2003 doesn't seem to have a "native" key for exiting the emulator. It relies on Retroarch. In Retroarch, I've got the "exit from emulator" set up to operate when I hold down the space key and press escape on the keyboard. As I've only got 6 buttons on Joystick 3 and, so far, I've mapped buttons 5 and 6 to "coin" (key 5) and "start" (key 1), respectively, I was wondering if it were possible to map button 5 to both keys 5 and 1 and then map button 6 to space and escape, so I can exit without the keyboard. From reading through most of the thread again, I can't see anything that really resembles what I want to do.

                                          I've looked at your examples where you've mapped 2 buttons on the joystick (basically a modifier) to a key on the keyboard. But I want to do the opposite - press one button and it presses 2 keys.

                                          Looking at the manual for xboxdrv, there seems to be "cycle" and "sequence" commands. The sequence one looks most likely, but I'm not sure it can be used to press a key while holding down another key.

                                          Worst case, I suppose I could just remap the emulator keys via TAB so that if I press the 1 key it both gives me a coin and starts the game and then just map xboxdrv accordingly. I have done that before, but I don't think that's going to resolve the "exit from emulator" issue with lr-mame2003, and so I was hoping for a more elegant xboxdrv solution if there is one please.

                                          Or perhaps I'm missing something obvious. It is getting quite late here.... Thanks.

                                          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                          M 1 Reply Last reply 24 Mar 2017, 14:02 Reply Quote 0
                                          360 out of 626
                                          • First post
                                            360/626
                                            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.

                                            This community forum collects and processes your personal information.
                                            consent.not_received