How do I use a gamepad?
All gamepads/joysticks (5 or so) I have tried so far did work. For configuration install qjoypad
or jstest-gtk
. Qjoypad worked better if I remember correctly.
Even though turbo has already mentioned qjoypad
very briefly, it is worth providing a longer answer, as the very latest (and best) version needs compiling, as it is not in the repositories and there is currently no package available at the site either. Secondly, there are general older blog guides regarding qjoypad
, but it would be useful to have an up-to-date one for Ubuntu.
Introduction
What I do with Wine
and Dosbox
when there are problems with games and controller support (which is most of the time) is to use a program such as qjoypad. This utility
Incorporates your gaming devices into any XWindows program. qjoyPad takes input from a gamepad or joystick and translates it into key strokes or mouse actions, letting you control any XWindows program with your game controller.
so that it doesn't matter whether wine
or the actual game within wine
supports the joypad, you will generally be able to use it.
Compilation
Install the dependencies (and build-essential
if necessary) with:
sudo apt-get install libxtst6 libxtst-dev libx11-dev checkinstall build-essential
You will need the QT libraries to run the program, and the QT dev libraries to compile qjoypad
, as noted on the official site, so you must also install the entire QT development kit with
sudo apt-get install libqt4-dev
This is very important as you are using the QT libraries to build the gui.
Download the latest version (currently 4.10) from Sourceforge and then extract it with
tar xzvf qjoypad-4.1.0.tar.gz
Then cd
to that folder and then cd
to the src
folder and run
./configure
make
sudo checkinstall --pkgname=qjoypad --pkgversion=4.1.0 --provides=qjoypad
Setup
Now connect your joystick or gamepad and run from terminal qjoypad &
or select it from the launcher menu.
When you load up qjoypad
(screenshot one) you will see button numbers such as button 1, button 2, etc. If you wish to see what these correspond to on your joystick you could install evtest
and run evtest
and then select the device number of your gamepad to get the following information:
Input device ID: bus 0x3 vendor 0x45e product 0x7 version 0x100
Input device name: "Microsoft® Microsoft® SideWinder® Game Pad USB"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 304 (BTN_A)
Event code 305 (BTN_B)
Event code 306 (BTN_C)
Event code 307 (BTN_X)
Event code 308 (BTN_Y)
Event code 309 (BTN_Z)
Event code 310 (BTN_TL)
Event code 311 (BTN_TR)
Event code 312 (BTN_TL2)
Event code 313 (BTN_TR2)
The button order here reflects that in qjoypad
, so qjoypad's button 1 is BTN_A
on the controller, etc.
(Your joypad layouts are stored in ~/.qjoypad3
if you want to back them up.)
The readme in the download with the source code also has some useful information about setting up and running qjoypad
.
Click add to create a new profile and name it, and then you can assign all the buttons available, but you must click update to save your settings.
You can fully configure all the axis points, and both sidewinder type and dual analog devices seem to be configurable. More details on this are available in this article and on the useful readme included with the source code download.
Final Thoughts
Qjoypad
needs to be running (with your correct joypad game profile selected) when dosbox
or wine
is launched.
You need to define your keyboard bindings first in the game in which you want to use qjoypad
. Very often in your game itself the setting should be set to keyboard and not joystick. This is what I have found with Dosbox
games, and it is probably the same for Wine
games. Both for gaming and for controlling any program running in an X window, qjoypad
is a very useful utility.
Generally speaking, all USB gamepads that follow the HID spec work in Linux without a need for special drivers, which means pretty much all normal PC gamepads will work. Support might however be limited to basic features and things like rumble might not be supported.
Console gamepads like the Xbox360 gamepad, Wiimote or Dualshock will work in Linux as well, but require some additional work (i.e. drivers such as qtsixa, cwiid, xpad or xboxdrv).