Giter Club home page Giter Club logo

retroarch-joypad-autoconfig's Introduction

Joypad Autoconfig Files

This repository stores joypad autoconfig files for RetroArch, the reference frontend for the libretro API.

The autoconfig files included in this repository are used to recognize input devices and automatically setup default mappings between the physical device and the RetroPad virtual controller.

How to create an autoconfig file

If your input device is not recognized by RetroArch even after updating the controller profiles, then you can generate a new profile for it from RetroArch itself.

You can find detailed instructions to do this in the official website.

Please always run Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile in order to generate correct autoconfig file name, and file content (including input_device). Also, only modify existing autoconfig files with data from Save Controller Profile generated autoconfig files, with other words, do not autoconfig files for controllers that you don't own.

Uploading your own autoconfig file

If you want to share an autoconfig file that is missing in RetroArch, then you can upload it to this repository.

Please remember that the goal of sharing your autoconfig file is to create a bigger database of default input device mappings that can be used by other people.

If your mapping is custom-made for your own needs, then it will not be really useful for others. It is better if you share more generic and reusable mappings that can act as a "default".

To upload your autoconfig file follow these steps

1. Checking for duplicates

RetroArch uses three attributes of the input device to identify which autoconfig file to use: Vendor ID, Product ID and Device Name. Before uploading your file, please verify that there is no other autoconfig file matching those same three attributes already.

To verify, compare the values for input_vendor_id, input_product_id and input_device attributes respectively.

⚠️ Warning: If another autoconfig file exists including the same Vendor ID, Product ID and input Device Name, then your autoconfig file will cause conflicts.

2. Adding input descriptors

Input descriptors are the labels that RetroArch will display in the user interface (UI) to describe buttons and axes of your device. It is recommended to add descriptors so RetroArch can display useful labels in the UI.

Input descriptor attributes are not added by default, you need to manually add the attributes inside the autoconfig file that was generated by RetroArch. For example:

input_b_btn_label = "Cross"
input_y_btn_label = "Square"
input_a_btn_label = "Circle"
input_x_btn_label = "Triangle"

You will find more details about the attribute name syntax in the Input Descriptors section below.

3. Testing your autoconfig file

Before uploading your autoconfig file please verify that RetroArch is correctly detecting the file and also displaying all the labels for the input device. You can verify this in the Settings > Input > Port 1 Controls menu.

The best way to confirm that everything is working is:

  1. Reset controller bindings to the defaults: Settings > Input > Port 1 Controls > Reset to Default Controls
  2. Disconnect and reconnect the input device
  3. Check the bindings in Settings > Input > Port 1 Controls to confirm that they are correct
  4. If applicable, then also check the menu button binding in Settings > Input > Hotkeys > Menu (Toggle)

4. Creating a Pull Request

To upload your autoconfig file to this repository you must create a Pull Request.

You can learn how to create a Pull Request in Github in the official documentation.

⚠️ Warning: Verify that you are creating the autoconfig file in the correct folder. It must be the folder with the same name used in the input_driver attribute in the autoconfig file.

File Format

Autoconfig files consist of a list of attributes and their corresponding values using the following syntax:

attribute_name = value

All attribute names in the file use the snake_case naming scheme.

Attribute Types

There are three types of attributes for describing an input device.

1. Device Descriptors

These are attributes that identify the physical input device itself. The available attributes are:

Attribute Description
input_driver Driver in-use when the input device was detected
input_device Device Name reported by the device
input_vendor_id Vendor ID reported by the device
input_product_id Product ID reported by the device
input_device_display_name Friendly display name to show in the user inteface (optional)

2. Button/axes Mappings

These are attributes that describe the mappings between physical buttons/axes and the RetroPad virtual controller.

Button/axes attributes are named following the pattern: input_ + button/axis name + input_type. The input_type suffix can be either _axis for axes or _btn for buttons. For example:

input_b_btn = "0"
input_y_btn = "1"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"

The RetroPad virtual controller layout is shown below:

RetroPad Layout

The available attributes for input device mapping are:

Attribute Description
input_b_btn Device button mapped to RetroPad's B button
input_y_btn Device button mapped to RetroPad's Y button
input_select_btn Device button mapped to RetroPad's Select button
input_start_btn Device button mapped to RetroPad's Start button
input_up_btn Device button mapped to RetroPad's D-Pad Up button
input_down_btn Device button mapped to RetroPad's D-Pad Down button
input_left_btn Device button mapped to RetroPad's D-Pad Left button
input_right_btn Device button mapped to RetroPad's D-Pad Right button
input_a_btn Device button mapped to RetroPad's A button
input_x_btn Device button mapped to RetroPad's X button
input_l_btn Device button mapped to RetroPad's Left Shoulder button
input_r_btn Device button mapped to RetroPad's Right Shoulder button
input_l2_btn Device button mapped to RetroPad's Left Trigger button
input_r2_btn Device button mapped to RetroPad's Right Trigger button
input_l3_btn Device button mapped to RetroPad's Left Thumb button
input_r3_btn Device button mapped to RetroPad's Right Thumb button
input_l_x_plus_axis Device axis mapped to RetroPad's Left Analog axis (right)
input_l_x_minus_axis Device axis mapped to RetroPad's Left Analog axis (left)
input_l_y_plus_axis Device axis mapped to RetroPad's Left Analog axis (down)
input_l_y_minus_axis Device axis mapped to RetroPad's Left Analog axis (up)
input_r_x_plus_axis Device axis mapped to RetroPad's Right Analog axis (right)
input_r_x_minus_axis Device axis mapped to RetroPad's Right Analog axis (left)
input_r_y_plus_axis Device axis mapped to RetroPad's Right Analog axis (down)
input_r_y_minus_axis Device axis mapped to RetroPad's Right Analog axis (up)
input_menu_toggle_btn Device button mapped to RetroPad's Menu button

3. Input Descriptors

These are attributes that describe the labels that RetroArch will display in the user interface to describe buttons and axes of the input device. They should match the labels printed on the physical controller itself.

Input descriptor attributes are named following the pattern: input name + _label. The input name part is exactly the same as defined in the button/axes mappings section, including the input_ prefix and the _axis or _btn suffix. For example:

input_l2_btn = "5"          <-- Input mapping attribute
input_l2_btn_label = "L2"   <-- Input descriptor attribute

⚠️ Warning: It is important that input name matches exactly the input name defined in the autoconfig file. If the input you are describing is an axis, then the input descriptor must be for an axis as well. For example:

input_l2_axis = "+3"         <-- Input mapping attribute

input_l2_btn_label = "L2"    <-- WRONG descriptor attribute
input_l2_axis_label = "L2"   <-- CORRECT descriptor attribute

retroarch-joypad-autoconfig's People

Contributors

andres-asm avatar andrewkendall avatar andshrew avatar barbudreadmon avatar bslenul avatar davi92 avatar davidhedlund avatar duganchen avatar evenent avatar fr500 avatar gizmo98 avatar gouchi avatar hizzlekizzle avatar hunterk avatar inactive123 avatar jaffacakelover avatar kivutar avatar libretroadmin avatar ltrvs avatar matiasfernandez avatar mechevarria avatar mizterb avatar oibaf66 avatar paalfe avatar robloach avatar sanaki avatar sergiobenrocha2 avatar stevenjamescox avatar tony971 avatar zackxu233 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retroarch-joypad-autoconfig's Issues

PS3 controller mapping

The PS3 controller has X, the confirm/jump/accept/yes button (equivalent in every aspect to the conventional "A" button) on the bottom of the ABXY pad. This has caused it to be incorrectly mapped to B on the RetroPad.

Likewise, Circle, which is red, and functions as the no/back/cancel button, has been mapped to the RetroPad's A button due to being on the right side of the ABXY pad.

I don't play enough PS3 games to confirm this, but I highly suspect that Sony has the Square and Triangle buttons, too, in mirrored positions from their XBox controller counterparts (X and Y).

The tl;dr is: Shouldn't the PS3 controller be mapped by default based on what the buttons do instead of on their position? Having, for example, the universally acknowledged Cancel/Back button mapped to A doesn't make a lot of sense.

Question regarding handling of vendor/product ids

Hello

I've sent the pull request regarding the different modes of my 8Bitdo SF30 Pro controllers. There is two files in my autoconfig directory:

  • 8Bitdo_Pro_SF30_BT.cfg configured for DInput (shipped with this repository)
  • 8Bitdo_Pro_SF30_BT_X.cfg configured for XInput (in my pull request, current only in my directory)

When connecting via XInput, the product/vendors ids look different as you can see from /proc/bus/input/devices

I: Bus=0005 Vendor=045e Product=02e0 Version=0903
N: Name="8Bitdo SF30 Pro"
P: Phys=b8:8a:60:db:b4:78
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/bluetooth/hci0/hci0:256/0005:045E:02E0.0004/input/input18
U: Uniq=e4:17:d8:3e:fd:83
H: Handlers=kbd event16 js0 
B: PROP=0
B: EV=1b
B: KEY=3ff000000000000 0 800 0 0
B: ABS=3003f
B: MSC=10

So in my config file I've added the following to match only in XInput mode:

input_vendor_id = "1118"
input_product_id = "736"

But for some reason, when running RetroArch in verbose mode, it still picks the DInput one and I can't get it to work since codes are incompatibles:

[INFO] [udev]: Plugged pad: 8Bitdo SF30 Pro (32903:2603) on port #0.
[INFO] [udev]: Pad #0 (/dev/input/event16) supports 0 force feedback effects.
[INFO] [Autoconf]: 206 profiles found.
[INFO] [Autoconf]: selected configuration: /usr/share/libretro/autoconfig/udev/8Bitdo_Pro_SF30_BT.cfg
[INFO] [Joypad]: Found joypad driver: "udev".

Are product/vendor ids ignored? Why does it pick the wrong one?

Add support for Microsoft SideWinder Joystick

This device is not supported:
Microsoft SideWinder Joystick

It has an analogue joystick, a trigger button, a thumb button, 2 more buttons on top of the joystick, and a cluster of 4 buttons on the left. (The slider probably has little to no use for RetroArch.)

It shows up with the device name of Microsoft SideWinder Joystick:
screenshot - 06242015 - 12 33 34 pm

RetroUSB.com SNES RetroPort config

input_driver = "udev"
input_device = "RetroUSB.com SNES RetroPort"
input_vendor_id = "61440"
input_product_id = "241"
input_b_btn = "1"
input_y_btn = "0"
input_select_btn = "2"
input_start_btn = "3"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "5"
input_x_btn = "4"
input_l_btn = "6"
input_r_btn = "7"

8Bitdo Controllers autoconfig using wrong VID & PID

I had a problem with the 8Bitdo N64 and SNES30 controllers being detected as the NES30 Pro when using bluetooth, usb worked correctly. after digging into it i found the PID and VID in the autoconfig files do not appear to be correct

the N64 controller using bluetooth shows the following device info
RetroArch [INFO] :: Device #0 PID: {3830} VID:{2DC8}

hex 3830 = dec 14384 and hex 2DC8 = dec 11720

the config file for this controller shows
input_vendor_id = 14384
input_product_id = 9

the input vendor id matches what i'm seeing as the PID, when i switch them with what i have as the correct decimal values all controllers are detected as they should be. i also looked at the usb config files, and even though they were working, they were showing the wrong id's as well. I'm uploading a log file with the output from each controller i have when connected with Bluetooth and USB, as well as the updated autoconfig files that seem to be working. i also have a feeling the other config files for 8Bitdo aren't correct but i don't have all their controllers to test

The controllers i do have are on the latest firmware as of today
N64 v2.0
SNES30 v4.0
NES30 Pro v4.0

8Bitdo_RetroArch_Logs.txt
xinput.zip

Microsoft X-Box pad v1 (US)

I whipped out my Xbox duke controller (with USB adapter) to make this.
'Microsoft X-Box pad v1 (US).cfg'

input_device = "Microsoft X-Box pad v1 (US)"
input_driver = "udev"
input_vendor_id = "1118"
input_product_id = "514"

input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"

input_a_btn = "1"
input_b_btn = "0"
input_x_btn = "4"
input_y_btn = "3"

input_l_btn = "5"
input_r_btn = "2"
input_l2_axis = "+2"
input_r2_axis = "+5"
input_l3_btn = "8"
input_r3_btn = "9"

input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+3"
input_r_x_minus_axis = "-3"
input_r_y_plus_axis = "+4"
input_r_y_minus_axis = "-4"

input_select_btn = "6"
input_start_btn = "7"

input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"

input_a_btn_label = "B"
input_b_btn_label = "A"
input_x_btn_label = "Y"
input_y_btn_label = "X"

input_l_btn_label = "White"
input_r_btn_label = "Black"
input_l2_axis_label = "LT"
input_r2_axis_label = "RT"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"

input_l_x_plus_axis_label = "Left Analog Right"
input_l_x_minus_axis_label = "Left Analog Left"
input_l_y_plus_axis_label = "Left Analog Down"
input_l_y_minus_axis_label = "Left Analog Up"
input_r_x_plus_axis_label = "Right Analog Right"
input_r_x_minus_axis_label = "Right Analog Left"
input_r_y_plus_axis_label = "Right Analog Down"
input_r_y_minus_axis_label = "Right Analog Up"

input_select_btn_label = "Back"
input_start_btn_label = "Start"

This controller have two triggers and no shoulder buttons (https://en.wikipedia.org/wiki/Xbox_Controller) so I mapped white and black buttons as shoulder buttons. It is not comfortable this way and can make you terrible at many games.

It's up to you if you want to use trigger buttons as shoulder buttons too. This configuration is not for me, is optional, and is for RetroArch community.

Dual Shock 3 inputs not functioning in Linux

Using Arch Linux, if I upgrade the kernel to anything newer than 4.9.78-lts my Dual Shock 3 PS3 controller doesn't work. I cannot navigate the XMB and even the keyboard stops working except for the Ctrl+Alt+Backspace or Esc shortcuts.

So is this simply a kernel problem? I'm not sure. The controller gives apparently normal responses in the KDE System Settings joystick page, joytest-gtk, and functions normally under the Steam Big Picture Mode and Half Life 2 demo.

Joypad not loading the config file properly

Hi,

I have a joypad with the configuration bellow:

Bus 002 Device 003: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad

There is a DragonRise Inc. PC TWIN SHOCK Gamepad config file but when I turn lakka on it loads the file for Retrolink_N64_USB_controller.

Neither of them have the vendor_id above (79), so I created a Retrolink_N64_USB_controller.cfg with the contents of _DragonRise_Inc.PC_TWIN_SHOCK_Gamepad.cfg.

Do you guys have a better way, maybe adding a new cfg file with the vendor_id 79 and product_id 6?

Suggestion for file naming scheme and style guidelines

Hi!

The current situation is that we have different naming schemes like

  • Some Example Gamepad 1.cfg
  • Some-Example-Gamepad-2.cfg
  • Some_Example_Gamepad_3.cfg

inside this repository. For getting consistency my suggestion would be to specify one naming scheme and rename all files. Using space as word delimiter would lead to best legibility. What do you think?

Next we should look at the file content itself. paalfe rearranged the layout of some config files (thank you for your commitment), where he split the blocks for button mapping and labelling into smaller blocks which now look like

  • idenfication (driver, vid, pid, name, ...)
  • mapping (a = 96, b = 97, ...)
  • labels (a = "A", b = "B", ...)
  • mapping (up = 19, down = 20, ...)
  • labels (up = "D-Pad Up", down = "D-Pad Down", ...)

In my opinion this is quiet not as comfortable when watching or updating the file as the previous layout which was

  • idenfication (driver, vid, pid, name, ...)
  • mapping (a = 96, b = 97, ... up = 19, down = 20, ...)
  • labels (a = "A", b = "B", ... up = "D-Pad Up", down = "D-Pad Down", ...)

Separating each block by a blank line would increase legibility.

So what's your opinion? Please let's discuss. :-)

Add menu controls to autoconfig profiles

I would like the ability to configure settings like menu_ok_btn and menu_cancel_btn on a per-controller basis. Controllers designed for nintendo systems use one standard. Xbox/playstation controllers use another. The ability to use both simultaneously isn't currently possible.

Conflicting configs DragonRise and Retrolink_N64

On both dinput and xinput

  1. DragonRise_Inc._Generic___USB__Joystick
  2. Retrolink_N64_USB

Have the same name VID and PID:

input_device = "Generic   USB  Joystick  "
input_vendor_id = "121"
input_product_id = "6"

The config files are very different, which means the gamepads are not the same.

Since RetroArch applies the last file name (in this case Retrolink_N64.cfg) as a workaround for DragonRise i have renamed the file as Z.cfg

RA is not properly detecting the joypad

RA has a problem to properly detect the right joypad, take a look:

RetroArch [INFO] :: [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (0079:0006) on port #0.
RetroArch [INFO] :: Autodetect: 100 profiles found
RetroArch [INFO] :: Autodetect: selected configuration: /home/sergio/.config/retroarch/autoconf/udev/DragonRise_Inc._PC_TWIN_SHOCK_Gamepad.cfg
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event14) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event14) supports 16 force feedback effects.
RetroArch [INFO] :: Found joypad driver: "udev".

I have the "DragonRise Inc. Generic USB Joystick", but it's using the DragonRise_Inc._PC_TWIN_SHOCK_Gamepad.cfg file. They have the same product ID, but RA should not be capable to handle this in the right way, using the joypad names?

It's funny that if I use the autoconfig files at the root, it does work right:

RetroArch [INFO] :: [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (0079:0006) on port #0.
RetroArch [INFO] :: Autodetect: 100 profiles found
RetroArch [INFO] :: Autodetect: selected configuration: /usr/share/libretro/autoconfig/DragonRise_Inc.___Generic___USB__Joystick__.cfg
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event14) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event14) supports 16 force feedback effects.
RetroArch [INFO] :: Found joypad driver: "udev".

User 0 Save Autoconfig -- Writing back differently.

This feature does not always save back to the same file it snagged the joypad config from... in because of different input_device name than the file it resides in.

Retroarch auto-loads 'Microsoft_X-Box_360_pad.cfg'.

input_device = "Microsoft X-Box 360 pad"
input_driver = "udev"
input_vendor_id = 1118
input_product_id = 654

input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "6"
input_start_btn = "7"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_axis = "+2"
input_r2_axis = "+5"
input_l3_btn = "9"
input_r3_btn = "10"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+3"
input_r_x_minus_axis = "-3"
input_r_y_plus_axis = "+4"
input_r_y_minus_axis = "-4"
input_menu_toggle_btn = "8"

input_b_btn_label = "A"
input_y_btn_label = "X"
input_select_btn_label = "Back"
input_start_btn_label = "Start"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "B"
input_x_btn_label = "Y"
input_l_btn_label = "LB"
input_r_btn_label = "RB"
input_l2_axis_label = "LT"
input_r2_axis_label = "RT"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"
input_l_x_plus_axis_label = "Left Analog Right"
input_l_x_minus_axis_label = "Left Analog Left"
input_l_y_plus_axis_label = "Left Analog Down"
input_l_y_minus_axis_label = "Left Analog Up"
input_r_x_plus_axis_label = "Right Analog Right"
input_r_x_minus_axis_label = "Right Analog Left"
input_r_y_plus_axis_label = "Right Analog Down"
input_r_y_minus_axis_label = "Right Analog Up"
input_menu_toggle_btn_label = "Guide"

I swapped two buttons and applied "User 1 Save Autoconfig" only to get 'Microsoft X-Box 360 pad.cfg' (without underlines).

The new save autoconfig will contain something like this.

input_driver = "udev"
input_device = "Microsoft X-Box 360 pad"
input_vendor_id = "1118"
input_product_id = "654"
input_up_btn = "h0down"
input_down_btn = "h0up"

Next time I run RetroArch, I only can use two buttons on the controller as everything else not configured won't be in the new save autoconfig. This can be bad for Lakka and others.

Mocute_Bluetooth_Remote 2 joysticks same player

I'm a bit losted, I tried so many configurations and tutorials and could not get my retropie to work properly.

I have 2 Mocute Bluetooth joysticks. (http://eud.dx.com/product/wireless-bluetooth-game-controller-joystick-for-smartphone-black-844428477)

I configured both in one single dongle via bluetooth.
Configura everything properly.

But joystick 1 and 2 controls only player 2, I could not make player 2 to work.

Here are my config:

/opt/retropie/configs/all/retroarch.cfg

input_player1_joypad_index = 0
input_player1_a = 1
input_player1_b = 2
input_player1_y = 4
input_player1_x = 3
input_player1_start = 0
input_player1_select = 5

input_player1_l = "q"

input_player1_r = "w"

input_player1_left = "left"
input_player1_right = "right"
input_player1_up = "up"
input_player1_down = "down"

input_player2_joypad_index = 1
input_player2_a = 1
input_player2_b = 2
input_player2_y = 4
input_player2_x = 3
input_player2_start = 0
input_player2_select = 5
input_player2_left = "left"
input_player2_right = "right"
input_player2_up = "up"
input_player2_down = "down"`

/etc/udev/rules.d/10-local.rules AND /etc/udev/rules.d/99-bluetooth.rules (same config)
SUBSYSTEM=="input", ATTRS{name}=="MOCUTE-036_B50-AC10", MODE="0666", ENV{ID_INPUT_JOYSTICK}="0" SUBSYSTEM=="input", ATTRS{name}=="MOCUTE-036_B50-BB62", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"

Also tried the configuration below but nothing.

https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/Mocute_Bluetooth_Remote.cfg

Standarization

I'm planning to rewrite the save and load autoconf functions to be smarter so I'd like people who have contributed to chime in into this.

I want to use the following standard:

VID#####_PID#####_NAME.cfg

Name would always be sanitized (no spaces, no symbols, only numbers and letters).
Right now some controllers have really stupid names (leading and trailing spaces, slashes, trademark and registered symbols) and each time one of these is commited something breaks (the android build system doesn't like such characters when building the APK)

It could also speed up loading somewhat, it could look directly for VID#####_PID#####_NAME.cfg

Archos Gamepad and Ouya Controller

In Archos Gamepad the autoconfig function it doesn't works with the analogs as well if you try to bind manually the analogs sticks, both sticks are in the autoconfig file and when you try to bind manually RA doesn't recognize them (The Analogs Sticks works fine with other emulators like Nes.Emu, Snes9x EX+, PPSSPP, ePSXe)

With OUYA fails the back button, it works but is random (maybe works or not) in RA 1.0.0.2 from Play Store the back button works fine.

Please improve the Hardware detection. Thanks!

Turn ON the ANALOG light to get the right config

Just a note, must be somewhere in the wiki: users need to turn the ANALOG light ON in these generic PS2/PS3 joypads to get the right config, otherwise they will get the same value to D-pad and left analog axis, for example, which is not valid (at least for RA).

So each button in the joypad MUST have different values.

generic ps3 joypad

Take a look at @f995bd1

Problem with joypad autoconfig

Hello to everyone. I installed retroarch on my androidtvbox, the problem is that when I open it I leave a message "not configured, using fallback" In the list of config files I found the .cfg file compatible with my gamepad. Now the question is? do I copy this text in retroarch.cfg? because when I go to search input_device, input_driver, input_vendor_id in retroarch.cfg does not find them, so I can not set the values. suggestions? only d-pad work

Retroarch Bind All... seems to not register all the possible analog axes

I compared retroarch bind all functionality with the controller diagnostic debug function in Mupen 64 AE.

By default, without a special .kl file, Android seems to map quite a few analog axes from the USB controller to android standard axes names, prefixed with an Axis_ (not shown here):
X,Y,Z,Rx,Ry,Rz,Throttle,Rudder,Wheel,Gas,Brake, Hat_X, Hat_Y (see the bottom of generic.kl here: https://android.googlesource.com/platform/frameworks/base/+/cd92588/data/keyboards/Generic.kl)

I could see all the above axes in Mupen64 AE, but some of them do not register in Retroarch Bind All.

I suspect retroarch is only "listening" for a subset of the available analog axes, and might need to be fixed to look for all of them. I suspect the subset is X,Y,Z,Rz,LTrigger,RTrigger, and maybe a few others. But it looks like Rx,Ry and maybe more do not register.

Sidenote: Sadly, the LTrigger and RTrigger analog L/R controls are NOT mapped by Android in the generic.kl file, which is annoying to say the least. Instead, "Gas" and "Brake" are mapped. To get analog LTrigger and RTrigger functionality, it looks like one has to resort to Gas and Brake which probably no game supports, or make a custom .kl keylayout file to remap those.

OK and cancel are swapped when a remote controller is detected

I have already opend this issue in the Retroarch project.

When a remote control is detected as first controller, the OK and cancel are swapped for all the other controllers inserted after the remote controller. When the remote controller is inserted as second controller the OK and cancel are not swapped for the remote controller as it should be.
This behaviour is very clear from the code:

task_autodetect.c

if (string_is_equal_fast(device_type, "remote", 6))
{
static bool remote_is_bound = false;
snprintf(msg, sizeof(msg), "%s configured.",
(string_is_empty(display_name) &&
!string_is_empty(params->name)) ? params->name : (!string_is_empty(display_name) ? display_name : "N/A"));

if (!remote_is_bound)
{
task_free_title(task);
task_set_title(task, strdup(msg));
}
remote_is_bound = true;
if (params->idx == 0)
input_autoconfigure_swap_override = true;
}

menu_event.c

bool input_swap_override = input_autoconfigure_get_swap_override();
unsigned menu_ok_btn = (!input_swap_override &&
settings->bools.input_menu_swap_ok_cancel_buttons) ?
RETRO_DEVICE_ID_JOYPAD_B : RETRO_DEVICE_ID_JOYPAD_A;

unsigned menu_cancel_btn = (!input_swap_override &&
settings->bools.input_menu_swap_ok_cancel_buttons) ?
RETRO_DEVICE_ID_JOYPAD_A : RETRO_DEVICE_ID_JOYPAD_B;

Retrolink SNES conflict

I got the Retrolink SNES gamepad on amazon and was adding the autoconfig profile when I noticed the input_product_id is identical to Retrolink-Sega-Saturn-USB-GamePad.cfg. I think this will cause a problem because the button mappings are different.

Sega
input_b_btn = "1"
input_y_btn = "0"
input_start_btn = "8"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "2"
input_x_btn = "3"
input_l_btn = "6"
input_r_btn = "7"
input_l2_btn = "4"
input_r2_btn = "5"

SNES
input_b_btn = "2"
input_y_btn = "3"
input_select_btn = "8"
input_start_btn = "9"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "1"
input_x_btn = "0"
input_l_btn = "4"
input_r_btn = "5"

I noticed this because even after getting the autoconf generated. Whenever I plugged in the controller the button mappings would be wrong. Is this behavior due to the different button mappings?

"Duplicate" config files causing weird issues

Having 2 files containing the same config for your controller seems to cause issues :

https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/Sony-PlayStation3-DualShock3-Controller-Bluetooth.cfg and https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/Sony-PlayStation3-DualShock3-Controller-USB.cfg contains the same config, having both at the same time in the autoconfig directory caused my dualshock3 to stop working properly. I noticed it after upgrading retroarch to 1.5 and my linux kernel to 4.9 (i think the device was renamed from "Sony Computer Entertainment Wireless Controller" to "PLAYSTATION(R)3 Controller" with this kernel, which is why i didn't have this issue before). I'm using native kernel+bluez support, no sixad daemon.

Steam Controller issues - B button crashes games/menu items with RetroArch.

My Steam controller is just using a default gamepad profile that mimics the Xbox 360 controller. I can confirm everything works fine with a keyboard doing the same actions. I can use my Xbox 360 controller without problems. Has to be the Steam Controller.

  1. Input config menu with B
  2. Starting game with B

Possible workaround:

For what it's worth, Retroarch works great with the steam controller aside from the B button causing it to crash for some reason (it's a known bug from what I've seen). In the steam controller settings I've mapped the B button to a keyboard button and haven't had the crashing problem since.

Notes

It seems there are conflicting raw input assignments of button id 0:

input_b_btn = "0"
input_l3_btn = "0"

I haven't had time to test the IDs with evtest yet. @RobLoach , mind taking a look at your commited udev and raw input files? There seems to be duplicate assignments for b_btn, y_btn, 13_btn, and r3_btn. If I get time today i'll check (edit: I see now, for the triggers).

Maybe it's due to how the device is identified? One starting RetroArch, the Steam Controller is identified as an Xbox 360 pad.

some sort of semi autoconfig

The problem is retrolink and maybe other sell different controllers with the same product ids. It is not possible to distinguish them by software.

I propose for these cases after an autoconfig is matched by vendor and product id to ask the user to press for instance A and then switch between config sets by returned scancode accordingly.

Or maybe a popup menu saying 'x brand controller detected'' and select between N64, GameCube, etc type.

Xbox 360 Receiver (1118/1817) not Conifgured

I am getting this error when running a ROM.

"Xbox 360 Receiver (1118/1817) not Conifgured"

I installed using SteamOS-Tools and no controllers seem to work.

This is the command being used to execute the retroarch

"/usr/bin/retroarch" -f -L "/usr/lib/libretro/fceumm_libretro.so" "/home/steam/ROMs/NES/Bubble Bobble (U).nes"

I can see the "Xbox_360_Wireless_Receiver.cfg" in "/usr/share/libretro/autoconfig" and the

input_device = "Xbox 360 Wireless Receiver"
input_driver = "udev"
input_vendor_id = 1118
input_product_id = 1817
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "6"
input_start_btn = "7"
input_up_btn = "13"
input_down_btn = "14"
input_left_btn = "11"
input_right_btn = "12"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_axis = "+2"
input_r2_axis = "+5"
input_l3_btn = "9"
input_r3_btn = "10"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+3"
input_r_x_minus_axis = "-3"
input_r_y_plus_axis = "+4"
input_r_y_minus_axis = "-4"
input_menu_toggle_btn = "8"
...

defender game master gamepad

input_device = "ShanWan USB WirelessGamepad "
input_driver = "udev"
input_b_btn = "2"
input_y_btn = "3"
input_select_btn = "8"
input_start_btn = "9"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "1"
input_x_btn = "0"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_l3_btn = "10"
input_r3_btn = "11"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_btn = "1"
input_r_x_minus_btn = "3"
input_r_y_plus_btn = "2"
input_r_y_minus_btn = "0"
input_vedor_id = 9571
input_device = "ShanWan USB WirelessGamepad "
input_driver = "udev"
input_b_btn = "2"
input_y_btn = "3"
input_select_btn = "8"
input_start_btn = "9"
input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"
input_a_btn = "1"
input_x_btn = "0"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_l3_btn = "10"
input_r3_btn = "11"
input_l_x_plus_axis = "+0"
input_product_id = 1351

fix the dragon rise zero delay encoder across platforms for auto config

dragonrise zero delay

all other buttons are mapped the same accept across these two configs accept

xinput
input_l_btn = "6"
input_r_btn = "7"
input_l2_btn = "4"
input_r2_btn = "5"

udev
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"

I used the udev config defaults they are shown in green in the picture the numbers are the physical joystick numbers in the picture as you can see these different button settings will change layouts on a arcade panel with these defaults not being the same. This encoder only supports a left analog stick as well and this is the mode it defaults to you have to press the mode button to change between digital and analog. Hope this clears up some confusion on this controller and how to set the config up.

input_device_display_name = "DragonRise zero delay encoder"

input_x_btn = "0"
input_a_btn = "1"
input_b_btn = "2"
input_y_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_select_btn = "8"
input_start_btn = "9"
input_l3_btn = "10"
input_r3_btn = "11"

input_left_btn = "h0left"
input_right_btn = "h0right"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"

#########

input_x_btn_label = "X"
input_a_btn_label = "A"
input_b_btn_label = "B"
input_y_btn_label = "Y"
input_l_btn_label = "L"
input_r_btn_label = "R"
input_l2_btn_label = "L2"
input_r2_btn_label = "R2"
input_select_btn_label = "Select"
input_start_btn_label = "Start"
input_l3_btn_label = "L3"
input_r3_btn_label = "R3"

input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"

Xbox One Controller with latest driver and Wireless Adapter on Win10 being detected as generic "Xinput Controller" + Guide Button not working

As indicated in the title, the latest driver available for the Xbox One controller on Windows 10 seem to make Retroarch not detect it properly when it's connected through the Wireless adapter. Instead, it is seen as a generic "Xinput controller".
I still have to confirm whether the input bindings automatically assigned by Retroarch work in their entirety anyway, regardless of the name of the autoconfig that Retroarch calls, but I can confirm that with the old drivers on Windows 7 Retroarch detected it properly as an "Xbox One controller on Windows".

Moreover, there is an issue with the Guide Button on Retroarch not working at all on Windows 10 once again with the latest drivers, printing a "Null" OSD message with every button press.
This probably happens because of the Windows 10 driver "locking" that button for their OS-level GameDVR features, but even by deactivating that and uninstalling the Xbox app entirely the issue persists in RA.

8bitdo NES30 PRO only works arrows with firmware 1.69

Can anyone update cfg for 8bitdo nes30 PRO with the newer firmware?
I am trying to connect by bluetooth, it conects and recognize the device as NES 30 PRO Joystick but only works arrows, joystick and start button, A B X and Y dont works.

How can i update this?

NYKO Core Controller

I whipped out my Nyko Core controller to make this.
' USB Controller.cfg'

input_device = "  USB Controller"
input_driver = "udev"
input_vendor_id = "1356"
input_product_id = "616"

input_up_btn = "4"
input_down_btn = "6"
input_left_btn = "7"
input_right_btn = "5"

input_a_btn = "13"
input_b_btn = "14"
input_x_btn = "12"
input_y_btn = "15"

input_l_btn = "10"
input_r_btn = "11"
input_l2_btn = "8"
input_l3_btn = "1"
input_r2_btn = "9"
input_r3_btn = "2"

input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"

input_select_btn = "0"
input_start_btn = "3"
input_menu_toggle_btn = "16"

input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"

input_a_btn_label = "Circle"
input_b_btn_label = "Cross"
input_x_btn_label = "Triangle"
input_y_btn_label = "Square"

input_l_btn_label = "L1"
input_r_btn_label = "R1"
input_l2_btn_label = "L2"
input_r2_btn_label = "R2"
input_l3_btn_label = "L3"
input_r3_btn_label = "R3"

input_l_x_plus_axis_label = "Left Analog Right"
input_l_x_minus_axis_label = "Left Analog Left"
input_l_y_plus_axis_label = "Left Analog Down"
input_l_y_minus_axis_label = "Left Analog Up"
input_r_x_plus_axis_label = "Right Analog Right"
input_r_x_minus_axis_label = "Right Analog Left"
input_r_y_plus_axis_label = "Right Analog Down"
input_r_y_minus_axis_label = "Right Analog Up"

input_select_btn_label = "Select"
input_start_btn_label = "Start"
input_menu_toggle_btn_label = "Home"

This controller have everything (http://nyko.com/products/playstation-3-core-controller) so I mapped everything without any problem. If given an option, I would opt for this over official Playstation 3 controller. It is very comfortable, sturdy, and comes with a 9 foot USB cord.

Setting up this controller can be problematic sometimes as it was made for PS3 system (See the FAQ on link above). Try all USB ports first before giving up.

This configuration is not for me, is optional, and is for RetroArch community.

DragonRise and Dialog GP-A11 clash

There's a clash between these 3 joypads (same vendor & product ID):

https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/DragonRise_Inc.___Generic___USB__Joystick__.cfg

https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/DIALOG_GP-A11.cfg

https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/DragonRise_Inc._PC_TWIN_SHOCK_Gamepad.cfg

Mine was supposed to get the config from the first one, it's getting from DIALOG_GP-A11 instead. Weirdly, now it's showing this in lsusb:

Bus 003 Device 002: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad

Is this string a kernel thing? I think it was showing "DragonRise generic DualShock gamepad" when I create the first file

Edit: weird, I get "DragonRise Inc. Generic USB Joystick " inside RetroArch... wut

My joypad is probably that "DragonRise Inc. PC TWIN SHOCK Gamepad", and I was messing around the other file all this time o.O

8bitdo / SF30 PRO / Firmware v1.25 / mapping broken

I've received a new controller last week that had already the latest firmware installed. If you start Retroarch while the controller is connected it constantly sends control commands and breaks usage for me. Also my keyboard wasn't responsive anymore so I guess the mapping changed.

Downgrading to v1.23 fixed the problem for me but I think it's suitable to update the config files for autoconfig.

http://download.8bitdo.com/Firmware/Controller/SN30pro+SF30pro/SN30pro+SF30pro_Firmware_V1.25.zip

Bliss-Box 4 Play autoconfiguration not detecting type of controller (RA sees it as generic port 1-4).

Log:
[INFO] [udev]: Plugged pad: BLISS-BOX 4-PLAY PORT.2 (5840:3333) on port #0.
[INFO] [Autoconf]: Bliss-Box detected. Getting pad type...
[ERROR] [Autoconf]: Could not find or open libusb device 5840:3333.
[INFO] [udev]: Pad #0 (/dev/input/event11) supports 0 force feedback effects.
[INFO] [Autoconf]: 255 profiles found.
[INFO] [Autoconf]: no profiles found for BLISS-BOX 4-PLAY PORT.2 (5840/3333).
[INFO] [udev]: Plugged pad: BLISS-BOX 4-PLAY PORT.4 (5840:3335) on port #1.
[INFO] [Autoconf]: Bliss-Box detected. Getting pad type...
[ERROR] [Autoconf]: Could not find or open libusb device 5840:3335.
[INFO] [udev]: Pad #1 (/dev/input/event5) supports 0 force feedback effects.
[INFO] [Autoconf]: 255 profiles found.
[INFO] [Autoconf]: no profiles found for BLISS-BOX 4-PLAY PORT.4 (5840/3335).
[INFO] [udev]: Plugged pad: BLISS-BOX 4-PLAY PORT.1 (5840:3332) on port #2.
[INFO] [Autoconf]: Bliss-Box detected. Getting pad type...
[ERROR] [Autoconf]: Could not find or open libusb device 5840:3332.
[INFO] [udev]: Pad #2 (/dev/input/event7) supports 0 force feedback effects.
[INFO] [Autoconf]: 255 profiles found.
[INFO] [Autoconf]: no profiles found for BLISS-BOX 4-PLAY PORT.1 (5840/3332).
[INFO] [udev]: Plugged pad: BLISS-BOX 4-PLAY PORT.3 (5840:3334) on port #3.
[INFO] [Autoconf]: Bliss-Box detected. Getting pad type...
[ERROR] [Autoconf]: Could not find or open libusb device 5840:3334.
[INFO] [udev]: Pad #3 (/dev/input/event9) supports 0 force feedback effects.
[INFO] [Autoconf]: 255 profiles found.
[INFO] [Autoconf]: no profiles found for BLISS-BOX 4-PLAY PORT.3 (5840/3334).
[INFO] [Joypad]: Found joypad driver: "udev".

Steps to reproduce:

  1. In Linux, set joypad driver to udev and start. Logfile should then match above.

Note that I have a Super Famicom controller plugged into what appears as port 4 (actually port 1 on the hardware).

Mojo Retro Adapter Mod: Right analog and POV hat DPAD not working during bind all

The Mojo Retro Adapter Mod is a generic USB controller adapter. It submits right analog stick values as rx and ry axes, and the DPAD as POV Hat values under windows.

During bind all, the right analog stick and the dpad do not register. They do not register in the old "Key Test" program, either. It might be a driver issue with the "android" driver, but I am not sure how to force bind all to use HID driver to test this.

PS4 Legacy Controller Support Not Fully Functional

So, about last month, my uncle got me this kit for making my own arcade stick. After completing the project, I went to go test it. The stick is fully functional on PC, but unfortunately it doesn't fully support the PS4. All of the buttons work fine on PS4, but the joystick itself doesn't function. If anybody can please figure out as to what's going on with it, that would be lovely. Thank you for taking your time to read this.

  • Jonathan Ali

How Do I Work These?

Where Do I Put It And Stuff Like That?
I've Been Stuck On This For 3 HOURS!
Please Help!
I'm Using A Mayflash Gamecube Adapter If You're Wondering

Tomee Nes to USB config

Hey Internet,

I am a big noob. I am trying to get this thing I ordered from amazon to work with retroarch, but when the core loads in launchbox, it says that there is no controller config. I have tried to load a few different autoconfig files from the udev folder, but nothing seems to work. Please Help me!
-Eric

xbox one pad firmware 2015

its not added, cant be arsed to fork and send pr.

input_driver = "udev"
input_device = "Microsoft X-Box One pad (Firmware 2015)"
input_vendor_id = "1118"
input_product_id = "733"
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "6"
input_start_btn = "7"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "0"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_axis = "+2"
input_r2_axis = "+5"
input_l3_btn = "9"
input_r3_btn = "10"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+3"
input_r_x_minus_axis = "-3"
input_r_y_plus_axis = "+4"
input_r_y_minus_axis = "-4"

Android controllers not working with hat dpad controls

Looks like autodetect is working OK, except I've found on Android that the dpad hat controls don't work.

I've tested only an OUYA controller so far and found once I remapped:

input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"

to

input_up_btn = "19"
input_down_btn = "20"
input_left_btn = "21"
input_right_btn = "22"

everything works great.

I haven't tested anything else yet, but I do have an old orig XBox controller + USB adapters and a few other random controllers lying around if you're looking for more comprehensive testing.

Thanks

Xbox 360 wireless receiver issue in udev

There is some issues with this wireless receiver config (Xbox_360_Wireless_Receiver.cfg):

1 - Product ID seems to be wrong, 654 is probably the ID from the joystick itself, when you plug the recharger

2 - L and R buttons (LB and RB respect.) are digital buttons, so why you have input_l_axis and input_r_axis in the config file?

I have one wireless receiver here:

Bus 003 Device 039: ID 045e:0719 Microsoft Corp. Xbox 360 Wireless Adapter

But I can't keep other configuration file together with the file above. I tried to rename my file to Xbox_360_Wireless_Receiver_1817.cfg, but RA understand that the right file is the Xbox_360_Wireless_Receiver.cfg, which has a different ID product from mine.

My config file:

input_device = "Xbox 360 Wireless Receiver"
input_driver = "udev"
input_vendor_id = 1118
input_product_id = 1817
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "8"
input_start_btn = "9"
input_up_btn = "15"
input_down_btn = "16"
input_left_btn = "13"
input_right_btn = "14"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_l3_btn = "11"
input_r3_btn = "12"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
input_menu_toggle_btn = "10"

input_b_btn_label = "A"
input_y_btn_label = "X"
input_select_btn_label = "Back"
input_start_btn_label = "Start"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "B"
input_x_btn_label = "Y"
input_l_btn_label = "LB"
input_r_btn_label = "RB"
input_l2_btn_label = "LT"
input_r2_btn_label = "RT"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"
input_r_x_plus_axis_label = "Right Analog X+"
input_r_x_minus_axis_label = "Right Analog X-"
input_r_y_plus_axis_label = "Right Analog Y+"
input_r_y_minus_axis_label = "Right Analog Y-"
input_menu_toggle_btn_label = "Guide"

And I got btn instead axis from LT and RT, it's like digital buttons.

When I plug the recharger in my laptop, I get this:

Bus 003 Device 041: ID 045e:028f Microsoft Corp. Xbox360 Wireless Controller

i.e., product ID 655, which is close to the ID from Xbox_360_Wireless_Receiver.cfg (654), which I think is wrong.

Buttons are not correct in SMW

I have a DS4v2 wired and when I play Super Mario World with bsnes-mercury the button to run is the triangle, when it should be the square.

fix dragon rise settings between windows and linux

both controllers physical button numbers are identical under linux and windows layout wise

everything work as expected with auto mapping and all the auto binds match up they are all the same (xinput) in windows

linux the l and and r buttons are swapped.

when looking at the configs the only changes that are in the buttons is

(the physical is button l=6 r=7 )

xinput (the one that works as expected)
input_l_btn = "6"
input_r_btn = "7"
input_l2_btn = "4"
input_r2_btn = "5"

udev
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"

^^^^^^^^^
only works this way id you set it like this
input_l2_btn = "7"
input_r2_btn = "6"

if i change the xinput to the udev the behavior is identical the buttons swap

now im going under the assumption the number is the physical joystick button number i could be wrong.

Shouldn't this just auto bind as l as l2 and r as r2 and have the same behavior because the button hasnt physically moved.

I know the easy fix is just to change the udev to the xinput mapping. I just dont understand why the buttons are physically swapping when doing this can someone explain that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.