If you have problems with using any of these configs, please reply and tell us what Method, OS, Controller, config and version of Citra you used. Please make absolutely clear if it DID or did NOT work.
Also if you have your own configuration files for other controllers, that’d be awesome.
How to Configure your controller
- If you have never ran Citra: Run Citra for the first time so it generates a configuration file
- If you have Citra running: Quit it now. Citra has to be closed for the next few steps
- Find out where your User-Directory is is
- Go to that the User-Directory folder (with a File Manager / Explorer) and open “qt-config.ini” with a text editor (just notepad or something)
[Controls]section as described by any of the methods below, leave the rest of the file as is (Don’t forget to save!)
You should be done now and your controller should work!
Recommended: Most controllers (Windows, Linux, Mac)
supplied by @JayFoxRox
- >>> Click here to go to my website <<<
- Select the correct Platform / OS on that website
- Optionally: Type a part of your controller name in the search field
- Search your controller in the list. Note:
- PS4 controllers are also known as “DualShock 4” controllers.
- Xbox controllers are also known as “XInput” controllers.
- Now copy that control config block (only the one for your controller!) to your config
- Save your config and start Citra - your controller should work now!
- If the first config you tried did not work:
- Verify that you copied the config correctly to your config file
- Try another config from the list with a similar name (some gamepads were released in different versions)
- Try a config for your gamepad for another platform (maybe there is an error in the database)
- If you have multiple gamepads or similar input devices connected to your PC: increment the joystick index and copy the updated config
- Remove lines which contain
Broken!from your config file
Some configurations will contain
Broken!. This usually happens because those controller don’t have enough buttons or they don’t closely resemble the 3DS buttons. In the future the script might be changed to automatically fall back to keyboard input for the missing buttons. However, currently I don’t know what will happen if you use such a config.
xinput (Xbox 360 / Xbox One gamepads and many others)
supplied by @wwylele
[Controls] button_a="engine:sdl,joystick:0,button:1" button_b="engine:sdl,joystick:0,button:0" button_x="engine:sdl,joystick:0,button:3" button_y="engine:sdl,joystick:0,button:2" button_up="engine:sdl,joystick:0,hat:0,direction:up" button_down="engine:sdl,joystick:0,hat:0,direction:down" button_left="engine:sdl,joystick:0,hat:0,direction:left" button_right="engine:sdl,joystick:0,hat:0,direction:right" button_l="engine:sdl,joystick:0,button:4" button_r="engine:sdl,joystick:0,button:5" button_start="engine:sdl,joystick:0,button:7" button_select="engine:sdl,joystick:0,button:6" button_zl="engine:keyboard,code:49" button_zr="engine:keyboard,code:50" button_home="engine:keyboard,code:66" circle_pad="axis_x:0,engine:sdl,joystick:0,axis_y:1" c_stick="axis_x:3,engine:sdl,joystick:0,axis_y:4"
PS4 Controllers (Windows only)
supplied by @GabrielXZLIVE
For PS4 controllers, there may be an easier solution than making a profile from scratch. There is a tool called DS4Windows. With that installed, you can apply a 360 [editors note: see “xinput” configuration by wwylele above] preset on your controller and also use the touchpad as a mouse. Use that and that 360 profile will work for you (and you’ll have the touch features as well).
I mean, that’s the idea, but I haven’t tested it yet. I’ll test it later and, if working good, update the guide.
This is largely based on existing posts by @wwylele and a tutorial by @GabrielXZLIVE - all credits to them
(I was originally going to create a wiki article about this, but then figured it would only be a temporary thing anyway)