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 465.1k 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.
    • Capt_MorganCreekC
      Capt_MorganCreek @mediamogul
      last edited by Capt_MorganCreek

      @mediamogul

      Thanks for pointing me to a solution!

      I tried this calibration before, but the values were still too low. The x and y output needs to be in the 30000 range to be correctly registered. With this calibration they were around 18000 which is much better than the former ~200.
      Through trial and error I figured out if you use

      --calibration x1=-16384:0:16384,y1=-16384:0:16384 \
      

      you get really usable results in the 32000 range and everything works fine in the emulationstation controller-configuration GUI and retroarch.

      So my configuration for a real N64 controller using the HiuJia usb adapter looks like this (the deadzone probably still needs some tweaking) :

      sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
      	--evdev /dev/input/event2  \
      	--silent \
      	--detach-kernel-driver \
      	--force-feedback \
      	--deadzone-trigger 15% \
      	--deadzone 15% \
      	--device-name "N64 Player 1" \
      	--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
      	--evdev-keymap BTN_THUMB=a,BTN_THUMB2=b,BTN_BASE=lb,BTN_BASE2=rb,BTN_BASE3=tl,BTN_BASE4=start \
      	--ui-axismap lt=void,rt=void \
      	--ui-buttonmap tr=void,guide=void,back=void,x=void,y=void \
      	--calibration x1=-16384:0:16384,y1=-16384:0:16384 \
      

      Thanks again for the awesome controller guide!

      RetroPie64 - My Nintendo 64 conversion: https://retropie.org.uk/forum/post/55927

      mediamogulM 1 Reply Last reply Reply Quote 1
      • mediamogulM
        mediamogul Global Moderator @Capt_MorganCreek
        last edited by

        @Capt_MorganCreek

        Not a problem. Thank you for posting your findings. I'm glad it's working well now.

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

        1 Reply Last reply Reply Quote 0
        • mediamogulM
          mediamogul Global Moderator
          last edited by mediamogul

          I removed all references to altering emulator.cfg files for key-mapping a system/port in favor of an easily sustainable and much simpler approach using a basic if/else statement. Anyone having trouble with this in the past may wish to reexamine the process. @MadHorse's more advanced case statement technique remains the same.

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

          1 Reply Last reply Reply Quote 1
          • ExarKunIvE
            ExarKunIv
            last edited by ExarKunIv

            do you need to have the latest kernel installed.
            i have kernel 4.1.21-v7+. per Xbox360 wireless controllers - receiver connectivity issues

            im also have a 8bitdo. I know that Rion had problems with getting his to work.

            im just starting out some where

            RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
            RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
            Maintainer of RetroPie-Extra .

            mediamogulM 1 Reply Last reply Reply Quote 0
            • mediamogulM
              mediamogul Global Moderator @ExarKunIv
              last edited by

              @ExarKunIv

              I believe that's only necessary when using xboxdrv as a driver for an actual Xbox controller. I've never had to worry about a particular kernel version myself.

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

              1 Reply Last reply Reply Quote 1
              • ExarKunIvE
                ExarKunIv
                last edited by

                ok cool.

                one less thing for me to worry about.
                guess it is just in my coding.

                RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                Maintainer of RetroPie-Extra .

                1 Reply Last reply Reply Quote 0
                • ExarKunIvE
                  ExarKunIv
                  last edited by

                  So i have been messing around trying to get to work.
                  so far i have go a whole lot of nothing.

                  I have done what the advance guide said with a little tweeking for my controler

                  here is my controler info

                  I: Bus=0005 Vendor=3810 Product=0009 Version=0100
                  N: Name="8Bitdo FC30 Pro"
                  P: Phys=b8:27:eb:47:c7:78
                  S: Sysfs=/devices/platform/soc/3f201000.uart/tty/ttyAMA0/hci0/hci0:11/0005:3810:0009.0003/input/input8
                  U: Uniq=e4:17:d8:7a:6a:7d
                  H: Handlers=js0 event2
                  B: PROP=0
                  B: EV=1b
                  B: KEY=ffff0000 0 0 0 0 0 0 0 0 0
                  B: ABS=30627
                  B: MSC=10
                  
                  

                  and when i run

                  
                  ls /dev/input/by-id/
                  usb-1d57_ad02-event-kbd         usb-_Mini_Keyboard-event-kbd
                  usb-1d57_ad02-if01-event-mouse  usb-_Mini_Keyboard-if01-event-mouse
                  usb-1d57_ad02-if01-mouse        usb-_Mini_Keyboard-if01-mouse
                  
                  

                  no id for my controller so i have to use the event number

                  my script

                  #!/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 Configuraions - Standard controller mappings 
                  8BitDo ="/opt/retropie/supplementary/xboxdrv/bin/xboxdrv >/dev/null \
                          --evdev /dev/input/event2 \
                  	--silent \
                  	--detach-kernel-driver \
                  	--force-feedback \
                  	--mimic-xpad \
                          --dpad-as-button \
                          --trigger-as-button \
                  	--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
                  	--evdev-keymap KEY_#304=a,KEY_#305=b,KEY_#307=x,KEY_#308=y,KEY_#312=lt,KEY_#313=rt,KEY_#310=lb,KEY_#311=rb,KEY_#317=tl,KEY_#318=tr,KEY_#314=back,KEY_#315=start \
                  	--calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767"
                  
                  
                  ### Extended Configurations
                  ### Specific emulator configuration or any other parameters you will need only for some emulators
                  scummVM="--axismap -Y1=Y1,-Y2=Y2 \
                  	--ui-axismap x1=REL_X:10,y1=REL_Y:10 \
                  	--ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \
                  	--ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \
                  	--ui-axismap x2=void"
                  
                  amiga="--axismap -Y1=Y1,-Y2=Y2 \
                  	--ui-axismap x2=REL_X:1,y2=REL_Y:1 \
                  	--ui-axismap x1=KEY_LEFT:KEY_RIGHT,y1=KEY_DOWN:KEY_UP \
                  	--ui-buttonmap du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT \
                  	--ui-buttonmap lt=BTN_LEFT,rt=BTN_RIGHT,start=KEY_ESC,back=KEY_LEFTCTRL,y=KEY_SPACE,a=KEY_LEFTCTRL,b=KEY_LEFTALT,x=KEY_LEFTSHIFT \
                  	--ui-buttonmap guide=void,tl=void,lt=void,rt=void,back=void \
                  	--ui-axismap x2=void"
                  
                  fourway="--four-way-restrictor"
                  
                  invert="--ui-buttonmap du=KEY_DOWN,dd=KEY_UP"
                  
                  ### Kill Command
                  xboxkill="sudo killall >/dev/null 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)
                  	;;
                  
                  	fba)
                  		case $rom in
                  			"amidar.zip"|"atetris.zip"|"puckman.zip") # Configuration used only for these ROMs
                  				$xboxkill
                  				joycommand="$8BitDo $fourway &"
                  				eval $joycommand
                  			;;
                  			*) # Configuration for every other ROMs on this emulator
                  				$xboxkill
                  				joycommand="$8BitDo &"
                  				eval $joycommand
                  			;;
                  		esac
                  	;;
                  
                  	daphne)
                  	;;
                  
                  	scummvm)
                  		$xboxkill
                  		joycommand="$8BitDo $scummVM &"
                  		eval $joycommand
                  	;;
                  
                  	amiga)
                  		$xboxkill
                  		joycommand="$8BitDo $amiga &"
                  		eval $joycommand
                  	;;
                  
                  	intellivision)
                  	;;
                  esac
                  

                  My system is
                  Raspberry pi 3 running 4.1
                  im trying to get my 8Bitdo FC30 Pro to do anything, if i can get something i can build from there.

                  I have been only focused on scummVM. so i know that the other Emulators have things wrong

                  right now i have nothing.

                  RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                  RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                  Maintainer of RetroPie-Extra .

                  mediamogulM 1 Reply Last reply Reply Quote 0
                  • mediamogulM
                    mediamogul Global Moderator @ExarKunIv
                    last edited by mediamogul

                    @ExarKunIv

                    Since you're just focusing on ScummVM at the moment, try running the full command, minus >/dev/null from the command line and see if it launches cleanly. All together, that woud be:

                    /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
                    	--evdev /dev/input/event2 \
                    	--silent \
                    	--detach-kernel-driver \
                    	--force-feedback \
                    	--mimic-xpad \
                    	--dpad-as-button \
                    	--trigger-as-button \
                    	--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
                    	--evdev-keymap KEY_#304=a,KEY_#305=b,KEY_#307=x,KEY_#308=y,KEY_#312=lt,KEY_#313=rt,KEY_#310=lb,KEY_#311=rb,KEY_#317=tl,KEY_#318=tr,KEY_#314=back,KEY_#315=start \
                    	--calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 \
                    	--axismap -Y1=Y1,-Y2=Y2 \
                    	--ui-axismap x1=REL_X:10,y1=REL_Y:10 \
                    	--ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \
                    	--ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \
                    	--ui-axismap x2=void
                    

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

                    1 Reply Last reply Reply Quote 0
                    • ExarKunIvE
                      ExarKunIv
                      last edited by

                      @mediamogul
                      thanks for the input

                      at first i got nothing, but then i put sudo in the front and i got this

                      xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/
                      Copyright © 2008-2011 Ingo Ruhnke <grumbel@gmail.com>
                      Licensed under GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
                      This program comes with ABSOLUTELY NO WARRANTY.
                      This is free software, and you are welcome to redistribute it under certain
                      conditions; see the file COPYING for details.
                      
                      
                      Your Xbox/Xbox360 controller should now be available as:
                        /dev/input/js1
                        /dev/input/event3
                      
                      Press Ctrl-C to quit
                      

                      and it worked.
                      so it seems like i don't have the rights to have it run automatically.
                      or that is what it seems to me.

                      RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                      RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                      Maintainer of RetroPie-Extra .

                      mediamogulM 1 Reply Last reply Reply Quote 0
                      • mediamogulM
                        mediamogul Global Moderator @ExarKunIv
                        last edited by mediamogul

                        @ExarKunIv said in Guide: Advanced Controller Mappings:

                        so it seems like i don't have the rights to have it run automatically.

                        You are exactly right. When the guide was written, I had extra steps in there that allowed xboxdrv to run at a user level because it was necessary for a certain part. I have since revised the guide to simplify the approach and it can now be used without those extra steps and apparently I overlooked correcting the case statement to account for this. I'll amend the guide.

                        Edit: In short, just add sudo to your case statement as you did above and it should work.

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

                        1 Reply Last reply Reply Quote 2
                        • ExarKunIvE
                          ExarKunIv
                          last edited by

                          thank you so much.

                          glad that my problem will be able to help others also
                          :)

                          RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                          RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                          Maintainer of RetroPie-Extra .

                          1 Reply Last reply Reply Quote 1
                          • ExarKunIvE
                            ExarKunIv
                            last edited by

                            still no go.

                            have been messing around with my runcommand-onstart.sh
                            and still it will not launch

                            if [ "$1" = "scummvm" ]
                            then
                            sudo killall > /dev/null 2>&1 xboxdrv
                            sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                >/dev/null \
                                --evdev /dev/input/event2 \
                            	--silent \
                            	--detach-kernel-driver \
                            	--force-feedback \
                            	--mimic-xpad \
                            	--dpad-as-button \
                            	--trigger-as-button \
                            	--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
                            	--evdev-keymap KEY_#304=a,KEY_#305=b,KEY_#307=x,KEY_#308=y,KEY_#312=lt,KEY_#313=rt,KEY_#310=lb,KEY_#311=rb,KEY_#317=tl,KEY_#318=tr,KEY_#314=back,KEY_#315=start \
                            	--calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 \
                            	--axismap -Y1=Y1,-Y2=Y2 \
                            	--ui-axismap x1=REL_X:10,y1=REL_Y:10 \
                            	--ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \
                            	--ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \
                            	--ui-axismap x2=void
                            &
                            fi
                            

                            is what i have.
                            it seems like the runcommand it not starting.

                            do i need a

                            #!/bin/sh
                            

                            at the start?

                            RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                            RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                            Maintainer of RetroPie-Extra .

                            mediamogulM 1 Reply Last reply Reply Quote 0
                            • mediamogulM
                              mediamogul Global Moderator @ExarKunIv
                              last edited by

                              @ExarKunIv said in Guide: Advanced Controller Mappings:

                              do i need a

                              #!/bin/sh
                              

                              at the start?

                              I would definitely try it.

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

                              1 Reply Last reply Reply Quote 0
                              • ExarKunIvE
                                ExarKunIv
                                last edited by

                                still nothing

                                RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                                RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                                Maintainer of RetroPie-Extra .

                                mediamogulM 1 Reply Last reply Reply Quote 0
                                • mediamogulM
                                  mediamogul Global Moderator @ExarKunIv
                                  last edited by

                                  @ExarKunIv

                                  Try changing:

                                  	--ui-axismap x2=void
                                  

                                  to:

                                  	--ui-axismap x2=void \
                                  

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

                                  1 Reply Last reply Reply Quote 0
                                  • mediamogulM
                                    mediamogul Global Moderator
                                    last edited by

                                    Also, remove the fifth line in your command:

                                        >/dev/null \
                                    

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

                                    ExarKunIvE 1 Reply Last reply Reply Quote 0
                                    • ExarKunIvE
                                      ExarKunIv @mediamogul
                                      last edited by

                                      @mediamogul

                                      that did it.

                                      the controls work great.
                                      Thank you so much

                                      a quick thing. the mouse pointer slowly moves up.
                                      where in my config would control that.

                                      #!/bin/sh
                                      
                                      if [ "$1" = "scummvm" ]
                                      then
                                      sudo killall > /dev/null 2>&1 xboxdrv
                                      sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \
                                          --evdev /dev/input/event2 \
                                      	--silent \
                                      	--detach-kernel-driver \
                                      	--force-feedback \
                                      	--mimic-xpad \
                                      	--dpad-as-button \
                                      	--trigger-as-button \
                                      	--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_Z=x2,ABS_RZ=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
                                      	--evdev-keymap KEY_#304=a,KEY_#305=b,KEY_#307=x,KEY_#308=y,KEY_#312=lt,KEY_#313=rt,KEY_#310=lb,KEY_#311=rb,KEY_#317=tl,KEY_#318=tr,KEY_#314=back,KEY_#315=start \
                                      	--calibration x1=-32767:0:32767,y1=-32767:0:32767,x2=-32767:0:32767,y2=-32767:0:32767 \
                                      	--axismap -Y1=Y1,-Y2=Y2 \
                                      	--ui-axismap x1=REL_X:10,y1=REL_Y:10 \
                                      	--ui-buttonmap a=BTN_LEFT,b=BTN_RIGHT,start=KEY_F5,back=KEY_ESC \
                                      	--ui-buttonmap guide=void,x=void,y=void,lb=void,rb=void,tl=void,tr=void,lt=void,rt=void,back=void \
                                      	--ui-axismap x2=void \
                                      &
                                      fi
                                      

                                      RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                                      RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                                      Maintainer of RetroPie-Extra .

                                      mediamogulM 1 Reply Last reply Reply Quote 0
                                      • mediamogulM
                                        mediamogul Global Moderator @ExarKunIv
                                        last edited by

                                        @ExarKunIv

                                        You can change the cursor speed by altering:

                                        --ui-axismap x1=REL_X:10,y1=REL_Y:10 \
                                        

                                        Changing the number 10 anything higher will increase the speed. It can also be brought down as low as 01 to decrease the speed as well.

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

                                        ExarKunIvE 1 Reply Last reply Reply Quote 1
                                        • ExarKunIvE
                                          ExarKunIv @mediamogul
                                          last edited by

                                          @mediamogul

                                          again I thank you

                                          RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                                          RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                                          Maintainer of RetroPie-Extra .

                                          mediamogulM 1 Reply Last reply Reply Quote 1
                                          • mediamogulM
                                            mediamogul Global Moderator @ExarKunIv
                                            last edited by

                                            @ExarKunIv

                                            Not a problem. Thanks to you as well. Without this issue, the guide would have remained essentially broken.

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

                                            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.