Guide: Advanced Controller Mappings
-
well i have done testing on my end and my config works, and so do the others even with the change for the
99-xboxdrv.rules
here is my config for 8BitDo to work with videopac/Odyssey2
if [ "$1" = "videopac" ] then sudo killall > /dev/null 2>&1 xboxdrv sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \ --evdev /dev/input/event0 \ --silent \ --detach-kernel-driver \ --force-feedback \ --mimic-xpad \ --deadzone 15% \ --evdev-no-grab \ --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 \ --axismap -Y1=Y1,-Y2=Y2 \ --ui-buttonmap a=KEY_UNKNOWN,b=KEY_UNKNOWN,start=KEY_UNKNOWN,back=KEY_UNKNOWN,x=KEY_UNKNOWN,y=KEY_UNKNOWN,lt=KEY_UNKNOWN,rt=KEY_UNKNOWN,lb=KEY_UNKNOWN,rb=KEY_UNKNOWN,tl=KEY_UNKNOWN,tr=KEY_UNKNOWN \ --ui-axismap x2=KEY_1:KEY_2,Y2=KEY_3:KEY_4 \ & fi
just remember to do part of section 3A of the guide as @mediamogul says
-
quick question
how do i use this for ports, i mean what do i put in the nameif [ "$1" = "videopac" ]
example if i want to set a mapping for rise of the triad, do i use rott for that is the folder name, or does the word port need to be in there due to it being in the port folder?
hope this is clear
-
-
sweet
thanks again -
so have been playing round with getting ESC mapped for Solarus. so that way i can exit it easyly.
my mapping works greatif [ "$1" = "zelda_roth_se,zsdx,zsxd" ] then sudo killall > /dev/null 2>&1 xboxdrv sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv > /dev/null 2>&1 \ --evdev /dev/input/event1 \ --silent \ --detach-kernel-driver \ --force-feedback \ --mimic-xpad \ --deadzone 15% \ --evdev-no-grab \ --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 \ --axismap -Y1=Y1,-Y2=Y2 \ --ui-buttonmap a=KEY_UNKNOWN,b=KEY_UNKNOWN,start=KEY_UNKNOWN,back=KEY_UNKNOWN,x=KEY_UNKNOWN,y=KEY_UNKNOWN,lt=KEY_UNKNOWN,rt=KEY_UNKNOWN,lb=KEY_UNKNOWN,rb=KEY_UNKNOWN,tl=KEY_UNKNOWN,tr=KEY_ESC \ --ui-axismap x2=void,Y2=void \ & fi
but only if i put it in manually. if will not auto start.
im sure that i have something wrong with the port name
if [ "$1" = "zelda_roth_se,zsdx,zsxd" ]
i have tryed just useing Solarus but no go. any ideas?
-
-
thanks for getting back to me, but sadly nothing happens
i ran
cat /proc/bus/input/devices
and all it pulls up is my 8BitDo.this is beginning to bug me
-
-
tired that too, still nothing
-
Try putting the following at the top of your runcommand-onstart:
## 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
Then, after you launch solarus, look at your
/dev/shm/runcommand.log
file and list what's on the first four lines. -
zelda_roth_se solarus LD_LIBRARY_PATH=/opt/retropie/ports/solarus/lib /opt/retropie/ports/solarus/bin/solarus_run /opt/retropie/ports/solarus/share/solarus/zelda_roth_se/ /opt/retropie/configs/all/runcommand-onstart.sh: line 109: syntax error near unexpected token `&' /opt/retropie/configs/all/runcommand-onstart.sh: line 109: `&' Parameters: Executing: LD_LIBRARY_PATH=/opt/retropie/ports/solarus/lib /opt/retropie/ports/solarus/bin/solarus_run /opt/retropie/ports/solarus/share/solarus/zelda_roth_se/ Solarus 1.4.5 Opening quest '/opt/retropie/ports/solarus/share/solarus/zelda_roth_se/' AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse" 2D acceleration: yes
ask and you will receive
-
Based on "solarus" being the second line,
if [ "$2" = "solarus" ]
should be doing the trick. After you launch solarus with that setting, check to see if xboxdrv is at least launching alongside it from another terminal.
-
how do i check if xboxdrv is running.
and should i worry about
/opt/retropie/configs/all/runcommand-onstart.sh: line 109: syntax error near unexpected token
&'
/opt/retropie/configs/all/runcommand-onstart.sh: line 109:&'
-
how do i check if xboxdrv is running.
You can run
top
via ssh.and should i worry about... line 109
It might be the issue here. If nothing else, it's likely to be some other issue that needs looking at. Take a look at line 109 of the
runcommand-onstart.sh
closely to see if anything stands out. -
again thank you for the help.
i ran
top
and xboxdrv is running.
so i took a better look at the code. i did not see anything so i deleted& fi
and copyed it from a code above and it worked. i think i had a enter before
& fi
would not of thought that would of done it, and
if [ "$2" = "solarus" ]
works great
-
-
Been linked to this thread whilst trying to sort Daphne / Dragonrise issues.
Looks like this could work.
Just need to get my head around how it all works and generate a config file (only 210 posts to read through!)
Thanks for the work that has gone into this.
-
@mediamogul ,
This guide is a jem, thank you for creating it and monitoring this thread for the past seven months.
Quick question please.
I just switched from a wired SNES style pad to a wireless XBox360 controller, and following the instructions on the GutHub RetroPie Setup Wiki for XBox360 controllers, I was lead to believe that XPad is the way to go, due to kernel issues plaguing XBoxdrv. But I see that this thread still has people using XBoxdrv, and clearly XBoxdrv is vastly more configurable than XPad. So my question, before fully diving into this guide and applying it, is, are the warnings against using XBoxdrv unfounded? Let me put it another way, is there a single specific pitfall to avoid which would render XBoxdrv problematic? If it's about the kernel, any hints on how to determine what version of the kernel I am currently on, and how to avoid updating it in the future would be a big help. If the answer to these questions is available in the pages of this thread, please let me know that and I'll search it out.
Thanks!
-Dave -
To save me a lot of reading can someone give me a set of simplified steps to implement this for daphne and my dragonrise zero delay encoder, or even the most relevant posts to read
There is a lot of stuff in here that i'm not too sure of and dont want to mess my system up (Have taken a backup just in case!)
-
are the warnings against using XBoxdrv unfounded?
xboxdrv has two different modes of operation. The first acts as a tailored driver for an XBox 360 controller. It's here where there are kernel issues and if the goal is to simply get an XBox 360 controller up and running, then XPad is recommended. However, xboxdrv can also act as a mapping soltion for any controller that reports itself as a joystick event to the system, which also happens to apply to an XBox 360 controller. Using it in this way presents no kernel conflicts to my knowledge.
To save me a lot of reading can someone give me a set of simplified steps to implement this for daphne and my dragonrise zero delay encoder
While the information is currently unfamiliar to you and seems like a lot to digest, don't let it put you off too badly. Most of the length of the guide is dedicated to detailing the minor steps that are sometimes taken for granted. Make no mistake, this is more of an advanced technique than just normally configuring your controller, but by documenting every button press and keystroke along the way, you might be surprised at how quickly it moves from top to bottom once begun.
When I replied to you earlier, I took a brief look at the dragonrise zero delay encoder and what I found seemed to indicate that it identifies itself as a joystick event, which would allow it to work here. However, some encoders identify as a keyboard and cannot be mapped by xboxdrv. Fortunately, if you decide to move forward with this, you'll know in the earliest steps of the guide whether this will ultimately be possible when running
evtest
. If your button presses come back asBTN_
you can continue on. If they come backKEY_
then unfortunately it's not going to work, but at least you won't have wasted much time on anything.
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.