ported README to markdown and updated it
This commit is contained in:
785
README.md
Normal file
785
README.md
Normal file
@ -0,0 +1,785 @@
|
|||||||
|
QJoyPad 4
|
||||||
|
=========
|
||||||
|
|
||||||
|
This is a fork of [QJoyPad](http://qjoypad.sourceforge.net/) with some small additional
|
||||||
|
features and some bug/memory leak fixes. OJoyPad was developed by Nathan Gaylinn
|
||||||
|
<wren42@users.sourceforge.net> and John Toman <virtuoussin13@users.sourceforge.net>.
|
||||||
|
This fork is maintained by Mathias Panzenböck <grosser.meister.morti@gmx.net>.
|
||||||
|
|
||||||
|
Quick Installation
|
||||||
|
------------------
|
||||||
|
|
||||||
|
git clone https://github.com/panzi/qjoypad
|
||||||
|
mkdir qjoypad/build
|
||||||
|
cd qjoypad/build
|
||||||
|
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
|
||||||
|
make -j`nproc`
|
||||||
|
make install
|
||||||
|
|
||||||
|
For more details see [Installation](#installation).
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
### Introduction
|
||||||
|
|
||||||
|
#### What is QJoyPad
|
||||||
|
|
||||||
|
QJoyPad is a convenient little program with a Qt interface
|
||||||
|
that converts movement and button presses on a gamepad or
|
||||||
|
joystick into key presses, mouse clicks, and mouse movement in
|
||||||
|
XWindows. It should work on almost every Linux system and with
|
||||||
|
any Linux-supported gaming device.
|
||||||
|
|
||||||
|
#### What's it good for?
|
||||||
|
|
||||||
|
QJoyPad lets you play any XWindows game that uses input from
|
||||||
|
the keyboard and mouse with a joystick device, even if the
|
||||||
|
game doesn't normally have joystick support. In addition, it's
|
||||||
|
a convenient companion for emulation software as it prevents
|
||||||
|
the need for extra controller plugins and can remember
|
||||||
|
multiple saved layouts. Also, QJoyPad can quickly swap between
|
||||||
|
layouts whenever you change games, so you'll always have the
|
||||||
|
controls right where you want them instead of compromising for
|
||||||
|
the game's defaults or the settings you find most useful in
|
||||||
|
other games. Now with version 3, QJoyPad also supports
|
||||||
|
features like rapid fire and sticky buttons (see Section
|
||||||
|
3.5.2) that can improve your gaming experience.
|
||||||
|
|
||||||
|
Not a gamer? Then QJoyPad can still be pretty useful if you
|
||||||
|
would find it more comfortable or convenient to control your
|
||||||
|
computer with a joystick or game pad. It may be designed with
|
||||||
|
gaming in mind, but it's a useful program for virtually any
|
||||||
|
purpose.
|
||||||
|
|
||||||
|
|
||||||
|
#### Features
|
||||||
|
|
||||||
|
- Incorporates your gaming devices into any XWindows program
|
||||||
|
- Move and click the mouse with your joystick
|
||||||
|
- Auto-detects how many joysticks you have and how many
|
||||||
|
buttons and axes each supports
|
||||||
|
- Can detect joystick devices on the fly without restarting
|
||||||
|
- Support for devices with more than two axes
|
||||||
|
- Save as many layouts as you want and switch between them
|
||||||
|
quickly
|
||||||
|
- Swap layouts on the fly from the command line or from a
|
||||||
|
script
|
||||||
|
- Share layout files with your friends or even edit them by
|
||||||
|
hand for greater control
|
||||||
|
- Color cues quickly show you which buttons you're pressing
|
||||||
|
and which joystick you're using
|
||||||
|
- Set or reset all the keys at once in a flash
|
||||||
|
- Adjust the sensitivity of every axis independently
|
||||||
|
- Quietly hides in your system tray, running in the
|
||||||
|
background without taking up space
|
||||||
|
- For window managers without a system tray, QJoyPad can run
|
||||||
|
without the tray icon.
|
||||||
|
- Make an axis "Gradient" so that a light push does a little
|
||||||
|
and a harder push does more
|
||||||
|
- Support for throttle controls
|
||||||
|
- Make a button "Sticky" if you don't feel like holding it
|
||||||
|
down all the time
|
||||||
|
- Turn on Rapid Fire so you don't wear out your gamepad!
|
||||||
|
|
||||||
|
|
||||||
|
### Getting Started
|
||||||
|
|
||||||
|
#### Requirements
|
||||||
|
|
||||||
|
- A Linux computer and a Linux-compatible gaming device
|
||||||
|
- A Linux kernel with joystick support (see the [Linux
|
||||||
|
Kernel](https://www.kernel.org/) and the Linux joystick driver documentation
|
||||||
|
[joystick.txt](https://www.kernel.org/doc/Documentation/input/joystick.txt) and
|
||||||
|
[joystick-parport.txt](https://www.kernel.org/doc/Documentation/input/joystick-parport.txt))
|
||||||
|
- [XWindows](http://x.org/)
|
||||||
|
- [Qt 4](http://qt-project.org/)
|
||||||
|
|
||||||
|
|
||||||
|
#### Installation
|
||||||
|
|
||||||
|
Installing QJoyPad should be a quick and painless process. The
|
||||||
|
basic procedure is:
|
||||||
|
|
||||||
|
git clone https://github.com/panzi/qjoypad
|
||||||
|
mkdir qjoypad/build
|
||||||
|
cd qjoypad/build
|
||||||
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||||
|
make -j`nproc`
|
||||||
|
make install
|
||||||
|
|
||||||
|
However, there are some settings that might need to be
|
||||||
|
changed.
|
||||||
|
|
||||||
|
1. Device directory: By default, QJoyPad will look for
|
||||||
|
joystick devices in `/dev/input`, but if your system puts
|
||||||
|
them somewhere else, you'll need to run cmake like this:
|
||||||
|
|
||||||
|
cmake .. -DDEVICE_DIR=/dev
|
||||||
|
|
||||||
|
Do this if your joystick devices are `/dev/js0`, `/dev/js1`
|
||||||
|
etc.
|
||||||
|
|
||||||
|
2. Install prefix: The default install prefix is `/usr`. To
|
||||||
|
change this invoke cmake like this:
|
||||||
|
|
||||||
|
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
||||||
|
|
||||||
|
3. Use Plain Keys: Normally, QJoyPad doesn't use standard
|
||||||
|
XWindows key names to describe your keyboard, but instead
|
||||||
|
uses names that look nicer and are easier to recognize.
|
||||||
|
For instance, instead of "KP\_Begin", "Prior", and
|
||||||
|
"Shift\_L", QJoyPad uses "KP 5", "PageDown", and "L Shift".
|
||||||
|
If you would rather like the original X11 key names you can
|
||||||
|
invoke cmake like this:
|
||||||
|
|
||||||
|
cmake .. -DPLAIN_KEYS=ON
|
||||||
|
|
||||||
|
|
||||||
|
### Using QJoyPad
|
||||||
|
|
||||||
|
#### The Tray Icon
|
||||||
|
|
||||||
|
QJoyPad is centered around the idea of a "tray icon", a
|
||||||
|
little icon that usually sits on your taskbar, out of the way;
|
||||||
|
when you first run QJoyPad, this is how it will be, just an
|
||||||
|
icon. If your window manager doesn't support system tray
|
||||||
|
icons, then you'll see QJoyPad as a tiny 24x24 window floating
|
||||||
|
around like any other window (see [But my window manager
|
||||||
|
doesn't HAVE a system tray!](#but-my-window-manager-doesnt-have-a-system-tray)).
|
||||||
|
since this might be hard to work with, QJoyPad (starting with
|
||||||
|
version 3.3) gives you the option of having a larger icon to
|
||||||
|
work with; just run qjoypad --notray and QJoyPad will use a
|
||||||
|
larger floating icon instead of a system tray icon.
|
||||||
|
|
||||||
|
By right clicking on the QJoyPad icon (it should look like an
|
||||||
|
old gamepad), you will get a pop-up menu that lets you switch
|
||||||
|
layouts (when you first install QJoyPad, there will be no
|
||||||
|
layouts available) and see some important information. To add
|
||||||
|
or modify layouts, left click the icon to open the Setup
|
||||||
|
Dialog.
|
||||||
|
|
||||||
|
#### The Popup Menu
|
||||||
|
|
||||||
|
When you right click the QJoyPad icon, a menu should pop up.
|
||||||
|
The top of this menu shows you which joystick devices are
|
||||||
|
currently available (see [Joystick recognition](#joystick-recognition)
|
||||||
|
if not all your devices are listed). Below that are the options
|
||||||
|
to update the layout list or the joystick devices; use these if
|
||||||
|
you have just put a new layout in ~/.qjoypad3 by hand or if
|
||||||
|
you've plugged in a new joystick device. Below even farther is
|
||||||
|
a list of the available layouts and the option to quit.
|
||||||
|
|
||||||
|
#### The Setup Dialog
|
||||||
|
|
||||||
|
The following sections describe the parts of the Setup Dialog
|
||||||
|
going from the top down and from left to right.
|
||||||
|
|
||||||
|
##### The Layout Selection combo box
|
||||||
|
|
||||||
|
At the top of the Setup Dialog is a combo box that says [NO
|
||||||
|
LAYOUT] to begin with, but as you add new layouts it will
|
||||||
|
serve as a drop-down list of all the layouts available to you.
|
||||||
|
|
||||||
|
##### The Add button
|
||||||
|
|
||||||
|
The Add button adds a new layout to the list, asking you for a
|
||||||
|
meaningful name. Make the name short, simple, and easy to
|
||||||
|
remember, just in case you ever want to load the new layout
|
||||||
|
from the command line. You can use any name you like that
|
||||||
|
would be a legal filename on your computer (see [Layout
|
||||||
|
Files](#layout_files) for details).
|
||||||
|
|
||||||
|
#### The Remove button
|
||||||
|
|
||||||
|
The Remove button deletes the layout currently selected in the
|
||||||
|
combo box, losing it forever.
|
||||||
|
|
||||||
|
#### The Save button
|
||||||
|
|
||||||
|
The Save button saves how the keys are currently set to the
|
||||||
|
current layout. Use this to make changes to an already-defined
|
||||||
|
layout. Don't forget to use Save to save any changes you
|
||||||
|
make before quitting or switching to another layout, or all
|
||||||
|
the changes will be forgotten!
|
||||||
|
|
||||||
|
#### The Revert button
|
||||||
|
|
||||||
|
The Revert button does about the opposite of Save. If you've
|
||||||
|
gone and changed the keys around, pressing Revert will return
|
||||||
|
them to how they are saved in the current layout.
|
||||||
|
|
||||||
|
#### The Joystick buttons
|
||||||
|
|
||||||
|
Immediately below the Add, Remove, Save, and Revert buttons,
|
||||||
|
there are several buttons labeled like "Joystick 1 (Microsoft
|
||||||
|
X-Box 360 pad)", "Joystick 2 (Nintendo Wiimote)", etc. that
|
||||||
|
serve as tabs so you can switch between different controllers
|
||||||
|
to set keys. Whichever one of these buttons is pressed is the
|
||||||
|
controller you are currently editing. Pressing any button or
|
||||||
|
moving any axis on a given controller will make its associated
|
||||||
|
button flash to let you know which it is.
|
||||||
|
|
||||||
|
#### The Joystick Component buttons
|
||||||
|
|
||||||
|
Beneath the Joystick Buttons is a large pile of buttons
|
||||||
|
representing every axis and button on your controller.
|
||||||
|
Whenever you move the axis or push the button that one of
|
||||||
|
these buttons represents, it will flash blue so that you know
|
||||||
|
which it is. To setup any of these, just click on the
|
||||||
|
appropriate button and a dialog will pop up to let you choose
|
||||||
|
your settings.
|
||||||
|
|
||||||
|
#### The Clear button
|
||||||
|
|
||||||
|
The Clear button resets all the axes and buttons to nothing,
|
||||||
|
essentially rendering the joystick disabled. From here it's
|
||||||
|
easy enough to set the buttons you need, starting from a clean
|
||||||
|
slate.
|
||||||
|
|
||||||
|
#### Quick Set
|
||||||
|
|
||||||
|
The Quick Set button does exactly what you'd expect, it lets
|
||||||
|
you set all the buttons and axes quickly! When you click it,
|
||||||
|
it brings up a little window with a Done button, and until you
|
||||||
|
click Done it's watching the controller. Whenever you press a
|
||||||
|
button or move an axis, it will ask you which button you want
|
||||||
|
associated with that movement. You can't set all the extra
|
||||||
|
options this way, but it's much faster than going through all
|
||||||
|
the dialogs!
|
||||||
|
|
||||||
|
### Configuring axes
|
||||||
|
|
||||||
|
In QJoyPad 2, you were allowed one key to be assigned to each
|
||||||
|
of four directions, Up, Down, Left, and Right. In version 3,
|
||||||
|
there is support for many axes and each one can do fancier
|
||||||
|
things than just press a key. Unfortunately, since different
|
||||||
|
controllers do things differently, it's not as easy as Up,
|
||||||
|
Down, Left, and Right. Up-Down is an axis, Left-Right is an
|
||||||
|
axis, and if you have a nicer controller, you might have many
|
||||||
|
more axes on top of that.
|
||||||
|
|
||||||
|
The first step in configuring axes is to figure out which one
|
||||||
|
you want to set. If you have a joystick, try moving it around
|
||||||
|
and seeing which buttons flash blue on the QJoyPad Setup
|
||||||
|
Dialog. If you have a gamepad, try pressing different buttons
|
||||||
|
on the Directional-Pad or moving around any mini joystick
|
||||||
|
controls it might have. Once you know which axis you want to
|
||||||
|
set, click on its associated button to open the Set Axis
|
||||||
|
dialog.
|
||||||
|
|
||||||
|
#### The Axis Position Indicator
|
||||||
|
|
||||||
|
In the middle of this dialog, you will see a white bar,
|
||||||
|
divided in two, that represents the current position of the
|
||||||
|
axis you're editing. Try moving that axis to see how it works.
|
||||||
|
This is so you know which direction is considered "positive"
|
||||||
|
and which is "negative"; it might not be what you'd expect. If
|
||||||
|
this axis is a D-Pad, then it is either off or on, but most
|
||||||
|
other axes are sensitive to how far they are depressed and a
|
||||||
|
colored bar here will show you how far it is at the moment.
|
||||||
|
|
||||||
|
Along the white bar, you will also see small blue and red tabs
|
||||||
|
that you can drag. These adjust the "Dead Zone" and the
|
||||||
|
"Extreme Zone" of the axis. When the colored bar representing
|
||||||
|
the axis' position passes one of the blue markers, the bar
|
||||||
|
will turn blue meaning that when the axis is this far QJoyPad
|
||||||
|
will consider it moved, and when the bar passes one of the red
|
||||||
|
markers it will turn red and QJoyPad will consider that axis
|
||||||
|
fully depressed. When the bar is gray, that means that you
|
||||||
|
haven't moved the axis out of its Dead Zone and QJoyPad is
|
||||||
|
ignoring its movement. To adjust where the Dead and Extreme
|
||||||
|
Zones are, just slide the blue and red markers to where you
|
||||||
|
think they should be.
|
||||||
|
|
||||||
|
You probably won't need to adjust the sensitivity unless you
|
||||||
|
are having trouble getting QJoyPad to generate key presses
|
||||||
|
when you want it to (see [Joystick adjustment](#joystick-adjustment)).
|
||||||
|
|
||||||
|
#### Making an axis "Gradient"
|
||||||
|
|
||||||
|
On the upper half of this dialog, you will see a checkbox
|
||||||
|
marked Gradient. Checking this box means that instead of just
|
||||||
|
generating one key press when the axis is moved, QJoyPad will
|
||||||
|
start flickering that key on and off as soon as the axis is
|
||||||
|
out of the Dead Zone (when the colored bar turns blue). How
|
||||||
|
far the axis is pushed determines what percent of the time the
|
||||||
|
simulated key will be depressed. As soon as the axis enters
|
||||||
|
its Extreme Zone (when the colored bar turns red), the key
|
||||||
|
will be down 100% of the time. Making an axis Gradient is
|
||||||
|
useful if you want to use it as an accelerator in a game so
|
||||||
|
how fast you go is controlled by how far the axis is moved.
|
||||||
|
Also, it's nice to use this when the axis is set to move the
|
||||||
|
mouse because it can give you finer control of the mouse when
|
||||||
|
you push the axis just a little but still let you move quickly
|
||||||
|
when you push it all the way.
|
||||||
|
|
||||||
|
#### Switching between keyboard and mouse control
|
||||||
|
|
||||||
|
On the upper half of the dialog, there is a combo box that
|
||||||
|
lets you choose between keyboard control and mouse control.
|
||||||
|
There are four different mouse options that let you choose
|
||||||
|
whether the mouse will move vertically (Up-Down) when the axis
|
||||||
|
moves or horizontally (Left-Right). You can also reverse the
|
||||||
|
direction of the mouse if you want moving the axis up to move
|
||||||
|
the mouse down or visa versa.
|
||||||
|
|
||||||
|
**Tip**
|
||||||
|
|
||||||
|
Usually you want an axis to be Gradient if it's going to move
|
||||||
|
the mouse.
|
||||||
|
|
||||||
|
#### Adjusting mouse speed
|
||||||
|
|
||||||
|
When using one of the mouse modes, you can set the speed of
|
||||||
|
the mouse by adjusting the number in the upper right corner.
|
||||||
|
|
||||||
|
#### Setting keys
|
||||||
|
|
||||||
|
When using keyboard mode, you can set which key corresponds to
|
||||||
|
which direction of the axis by clicking the buttons
|
||||||
|
immediately below the Axis Position Indicator. The one on the
|
||||||
|
left will be pressed when the axis is moved in the negative
|
||||||
|
direction (when the colored bar is on the left side) and the
|
||||||
|
one on the right when it is in the positive direction (when
|
||||||
|
the colored bar is on the right side).
|
||||||
|
|
||||||
|
#### Throttle Settings
|
||||||
|
|
||||||
|
Between these two buttons is another combo box that changes
|
||||||
|
the throttle settings. This is meant for gamepads which have a
|
||||||
|
specific type of throttle control. What it does is instead of
|
||||||
|
having two keys for when the axis is positive or negative, it
|
||||||
|
has just one and treats the way the axis moves differently. In
|
||||||
|
one of the throttle modes, the axis will be considered
|
||||||
|
centered when it is all the way to one direction or the other.
|
||||||
|
|
||||||
|
### Configuring buttons
|
||||||
|
|
||||||
|
Similarly to the buttons corresponding to axes in the Setup
|
||||||
|
Dialog, the ones corresponding to the buttons on your
|
||||||
|
controller also light up to let you know which is which. To
|
||||||
|
figure out which button you want, press it on the game device
|
||||||
|
and then click on the button on screen that flashed. A small
|
||||||
|
settings dialog will pop up.
|
||||||
|
|
||||||
|
#### Choosing a key / mouse button
|
||||||
|
|
||||||
|
At the top of this dialog is a button that you can click to
|
||||||
|
set which key or mouse button you want to associate with this
|
||||||
|
button on your controller. Just click on it, and the rest
|
||||||
|
should be self-explanatory.
|
||||||
|
|
||||||
|
#### Making a button "Sticky"
|
||||||
|
|
||||||
|
Below this and to the left is a little checkbox marked Sticky.
|
||||||
|
When a button is set as Sticky, that means that pressing the
|
||||||
|
button once will make QJoyPad simulate a key press (or mouse
|
||||||
|
button press) and pressing that button again will make QJoyPad
|
||||||
|
release the simulated key. This is useful for racing games
|
||||||
|
where you're almost always pouring on the gas, or for RPGs
|
||||||
|
that have a button used for run, even though it's always
|
||||||
|
better to be running. This way, all you have to do is press
|
||||||
|
the button once and it's like you're holding it down. To let
|
||||||
|
the button back up, just press it a second time.
|
||||||
|
|
||||||
|
#### Using Rapid Fire
|
||||||
|
|
||||||
|
Just next to the Sticky checkbox is another one marked Rapid
|
||||||
|
Fire. When this is enabled for a button, holding that button
|
||||||
|
down means that QJoyPad will flicker the associated key very
|
||||||
|
fast. This is great for space shooters where you want to fire
|
||||||
|
quickly but you don't want to break your button (or your
|
||||||
|
thumb!) from pressing over and over again.
|
||||||
|
|
||||||
|
**Tip**
|
||||||
|
|
||||||
|
Keep in mind that any button can be set both Sticky AND Rapid
|
||||||
|
Fire. This is even better for space shooters because this way
|
||||||
|
all you need to do is press the button once and from then
|
||||||
|
until you press it again you will be shooting Rapid Fire.
|
||||||
|
|
||||||
|
### Command-line use and scripting
|
||||||
|
|
||||||
|
Although QJoyPad only works in XWindows, it supports changing
|
||||||
|
axes on the fly from the command line. If you want to load up
|
||||||
|
the layout named "Tetris", all you have to do is run:
|
||||||
|
|
||||||
|
qjoypad "Tetris"
|
||||||
|
|
||||||
|
and one of two things will happen. If QJoyPad isn't currently
|
||||||
|
open, it will start running and load the "Tetris" layout (this
|
||||||
|
is case sensitive! see [Layout Files](#layout-files)). If
|
||||||
|
QJoyPad is already running, it will just silently switch to the
|
||||||
|
requested layout.
|
||||||
|
|
||||||
|
What's so great about this is it lets you forget about QJoyPad
|
||||||
|
once you've made all your layouts, and just worry about your
|
||||||
|
games! It's very easy to write short little shell scripts to
|
||||||
|
automatically load the layout you need when you start up a
|
||||||
|
game. For instance, if you wanted to run the game xgalaga++,
|
||||||
|
using QJoyPad for joystick support, you could create a text
|
||||||
|
file called run-xgalaga with the following lines in it:
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
qjoypad "XGalaga" &
|
||||||
|
xgalaga++
|
||||||
|
|
||||||
|
Then with the command "chmod a+x run-xgalaga" you could make
|
||||||
|
that text file an executable shell script; once that's done,
|
||||||
|
all you need to to do is execute run-xgalaga and QJoyPad will
|
||||||
|
load the appropriate layout and your game will start. To use
|
||||||
|
this script for any other program, just change "XGalaga" to a
|
||||||
|
different layout name and "xgalaga++" to the name of some
|
||||||
|
other program and you're done.
|
||||||
|
|
||||||
|
## Layout Files
|
||||||
|
|
||||||
|
When QJoyPad saves a layout, it creates a file using that
|
||||||
|
layout's name. Because of this, layout names must also be
|
||||||
|
valid filenames. This shouldn't be very limiting, it just
|
||||||
|
means that names can't contain certain special characters such
|
||||||
|
as '/' and dependig on your file system '\*', etc. Remember
|
||||||
|
that most Linux file systems are case sensitive, so a layout
|
||||||
|
named "Layout" will be considered distinct from a layout named
|
||||||
|
"layout". On most modern file systems, spaces should be okay
|
||||||
|
and there should be no serious limits on name length.
|
||||||
|
|
||||||
|
Whenever you create a new layout, QJoyPad makes a new file
|
||||||
|
called Name.lyt in `~/.qjoypad3`, where Name is the name that
|
||||||
|
you provided. Whenever you update that layout, it overwrites
|
||||||
|
that file to reflect your changes, whenever you revert, it
|
||||||
|
rereads that file, and if you ever remove that layout, it will
|
||||||
|
erase that file from your hard drive.
|
||||||
|
|
||||||
|
The format of these files isn't difficult to figure out, so
|
||||||
|
you can edit them by hand if you like. The numbers used to
|
||||||
|
represent keys are standard X11 keycodes.
|
||||||
|
|
||||||
|
It's also easy to share QJoyPad layout files; just copy them
|
||||||
|
from one user's `~/.qjoypad3` directory to another and either
|
||||||
|
tell QJoyPad to update the layout list by right clicking on
|
||||||
|
the tray icon, or just restart QJoyPad. If you switch layouts
|
||||||
|
through the command line, you don't even need to do that.
|
||||||
|
|
||||||
|
## Problems
|
||||||
|
|
||||||
|
### I can't get my game controller to work in Linux; will QJoyPad help?
|
||||||
|
|
||||||
|
Well, that depends on why you can't get it to work. For the
|
||||||
|
most part, the answer is "No." QJoyPad can only use joysticks
|
||||||
|
and gamepads that are recognized by your kernel and that have
|
||||||
|
the proper drivers loaded. If you can't get your joysticks to
|
||||||
|
work at all in Linux, then, no, QJoyPad can't help. (you might
|
||||||
|
want to check out
|
||||||
|
[joystick.txt](https://www.kernel.org/doc/Documentation/input/joystick.txt)
|
||||||
|
or [joystick-parport.txt](https://www.kernel.org/doc/Documentation/input/joystick-parport.txt);
|
||||||
|
if you don't know anything about working with the kernel,
|
||||||
|
check out the [Linux Kernel HOWTO](http://www.linuxdocs.org/HOWTOs/Kernel-HOWTO.html),
|
||||||
|
although this document seems to be outdated)
|
||||||
|
|
||||||
|
If your joystick is detected and somewhat working, but you
|
||||||
|
can't get it to work in specific programs, then QJoyPad just
|
||||||
|
might be what you're looking for. One of the main reasons I
|
||||||
|
wrote QJoyPad was because my (Nathan Gaylinn's) gamepads simply
|
||||||
|
wouldn't work right with the input plugins for Linux Playstation
|
||||||
|
emulators, so I know for a fact that sometimes QJoyPad can work
|
||||||
|
around specific software issues.
|
||||||
|
|
||||||
|
Check out [Joystick recognition](#joystick-recognition) for
|
||||||
|
some tips for checking if your joystick is working.
|
||||||
|
|
||||||
|
### Joystick recognition
|
||||||
|
|
||||||
|
#### QJoyPad says it can't find any joysticks?
|
||||||
|
|
||||||
|
#### QJoyPad isn't showing all of my joysticks.
|
||||||
|
|
||||||
|
#### My joystick has more/fewer buttons/axes than that!
|
||||||
|
|
||||||
|
QJoyPad automatically recognizes your joysticks using the
|
||||||
|
Linux joystick driver, so all joysticks must be working
|
||||||
|
properly in Linux before they can be used in QJoyPad. If you
|
||||||
|
can't see all of your joysticks or if QJoyPad complains it
|
||||||
|
can't find any, chances are your joystick(s) are not plugged
|
||||||
|
in or are not properly detected by Linux. If that's not it,
|
||||||
|
QJoyPad could also be looking for your joysticks in the wrong
|
||||||
|
directory.
|
||||||
|
|
||||||
|
First, double check that your joysticks are plugged in. If
|
||||||
|
they aren't, plug them, load any modules you might need, and
|
||||||
|
tell QJoyPad to Update joystick devices with the popup menu
|
||||||
|
(remember, this menu is only accessible when the Setup Dialog
|
||||||
|
is closed).
|
||||||
|
|
||||||
|
If you're still having trouble, QJoyPad might have been
|
||||||
|
compiled with the devdir setting pointing to the wrong place.
|
||||||
|
That option had to be set at compile time, and to change it
|
||||||
|
you must recompile (see [Installation](#installation)); however,
|
||||||
|
if you don't want to bother with that, you can specify the
|
||||||
|
location of your devices as an argument. Using the command
|
||||||
|
`qjoypad --device /dev/input`, for example, will start QJoyPad
|
||||||
|
and tell it to look for joysticks in `/dev/input/js0`,
|
||||||
|
`/dev/input/js1`, etc.
|
||||||
|
|
||||||
|
If that doesn't work, then you might want to make sure your
|
||||||
|
joysticks are working properly. One way to test this is to do
|
||||||
|
a `cat /dev/input/js0` (or wherever your joystick device is)
|
||||||
|
and press a few buttons on the controller. If you get a bunch
|
||||||
|
of crazy characters, it's working. If not, you'll have to
|
||||||
|
fiddle around with kernel drivers, and should probably look
|
||||||
|
elsewhere for guidance. Or you can install the jstest command
|
||||||
|
line tool and use `jstest /dev/input/js0`, wich will give you
|
||||||
|
a much nicer output.
|
||||||
|
|
||||||
|
If for some reason QJoyPad is reporting the wrong number of
|
||||||
|
buttons or axes for your device, that means the Linux joystick
|
||||||
|
driver is also reporting the wrong number. Unless you can't
|
||||||
|
get to buttons or axes that you need, this shouldn't be a
|
||||||
|
problem, but if you want to get the number right, Try using a
|
||||||
|
different driver or check out the documentation for the one
|
||||||
|
you're using.
|
||||||
|
|
||||||
|
If your joysticks are working, plugged in, and QJoyPad is
|
||||||
|
looking in the right place, then I'm not sure what to tell
|
||||||
|
you. Unfortunately, I don't have a wealth of different devices
|
||||||
|
and software setups to test on. If you're really stuck and think
|
||||||
|
it's QJoyPad's fault please [write a bug
|
||||||
|
report](https://github.com/panzi/qjoypad/issues).
|
||||||
|
|
||||||
|
### Joystick adjustment
|
||||||
|
|
||||||
|
#### Why does it say I'm moving if I'm not?
|
||||||
|
|
||||||
|
#### I keep going in two directions at once instead of just one!
|
||||||
|
|
||||||
|
#### I'm pushing up, but nothing's happening!
|
||||||
|
|
||||||
|
Chances are, this means you're using an overly sensitive or
|
||||||
|
poorly calibrated joystick or your sensitivity settings are
|
||||||
|
all wrong. Try adjusting the Dead Zone of the axes that are
|
||||||
|
giving you trouble (move the blue tab in the Axis Edit
|
||||||
|
dialog), more away from the center if it thinks you're
|
||||||
|
pressing a button when you aren't, more toward the center if
|
||||||
|
it thinks you aren't pressing a button when you are. If that
|
||||||
|
doesn't work, try manually adjusting your joystick (if it has
|
||||||
|
adjustment knobs/sliders), or try calibrating it with jscal
|
||||||
|
or with the KDE system settings "Input Devices" module.
|
||||||
|
|
||||||
|
### QJoyPad won't start!
|
||||||
|
|
||||||
|
There are two reasons why QJoyPad won't start. For one,
|
||||||
|
QJoyPad won't start is if it's already running! To make sure
|
||||||
|
QJoyPad doesn't interfere with itself, only one version of
|
||||||
|
QJoyPad is allowed to run at a time. If you can't see an
|
||||||
|
already open version, look for the icon in the system tray. If
|
||||||
|
you really can't find it anywhere, try running `killall qjoypad`
|
||||||
|
and then `rm -f /tmp/qjoypad.pid` and then try starting
|
||||||
|
QJoyPad again. It should work this time.
|
||||||
|
|
||||||
|
Finally, QJoyPad won't actually run if one of its arguments is
|
||||||
|
`-h` or `--help`. When it sees one of those arguments, it outputs
|
||||||
|
usage information to the console and then quits. If you're
|
||||||
|
running QJoyPad away from a console or want it to run like
|
||||||
|
normal, don't give one of these arguments.
|
||||||
|
|
||||||
|
### I have two versions of QJoyPad open at once and they're getting in each other's way!
|
||||||
|
|
||||||
|
QJoyPad doesn't work well when there are two or more instances
|
||||||
|
open; for that reason, it uses a file to tell whether or not
|
||||||
|
it's already running. Every version of QJoyPad has done this,
|
||||||
|
but in version 3.4, where that file is kept was changed to
|
||||||
|
make the program more compatible with certain distributions.
|
||||||
|
|
||||||
|
If you're seeing two versions of QJoyPad open at once, that
|
||||||
|
means that either one of those is QJoyPad 3.4 or newer and the
|
||||||
|
other is an older version, or that you're running an older
|
||||||
|
version of QJoyPad on a system where you don't have write access
|
||||||
|
to `/tmp`. In either case, you should just make sure that you
|
||||||
|
are running the newest version of QJoyPad and that there are
|
||||||
|
no other versions installed on your system.
|
||||||
|
|
||||||
|
If you really want to keep earlier versions of QJoyPad, that's
|
||||||
|
fine! Just remember that if you do, it's possible to have two
|
||||||
|
instancesrunning at once and that that can cause problems.
|
||||||
|
|
||||||
|
### I'm getting strange errors when I change layouts; what's wrong?
|
||||||
|
|
||||||
|
Those errors show that there is something wrong with the
|
||||||
|
layout files themselves. This means the files were corrupted,
|
||||||
|
edited incorrectly, or for some reason QJoyPad didn't save
|
||||||
|
them right (shouldn't ever happen, never seen it happen, but
|
||||||
|
nothing's impossible). Unless the file QJoyPad is looking for
|
||||||
|
is completely missing or mangled, it's quite likely that the
|
||||||
|
file can be repaired by hand. If you need help with the save
|
||||||
|
format, just send me an email <grosser.meister.morti@gmx.net>
|
||||||
|
and I'll see if I can't help.
|
||||||
|
|
||||||
|
If worse comes to worst and you lose a layout file you
|
||||||
|
created, it shouldn't take you too long to rebuild it from
|
||||||
|
scratch.
|
||||||
|
|
||||||
|
### This program only works in XWindows?
|
||||||
|
|
||||||
|
Yep, I'm afraid so. For all of you out there with old Linux
|
||||||
|
console games that won't run in an xterm, you'll have to try
|
||||||
|
something else. If you really must find a way,
|
||||||
|
[joy2key](https://sourceforge.net/projects/joy2key/) is a
|
||||||
|
program that is similar to QJoyPad but without a graphical
|
||||||
|
interface or many of the fancier features, but which doesn't
|
||||||
|
have that limitation. Another alternative is
|
||||||
|
[Jojsticken](http://jojsticken.sourceforge.net/). See the
|
||||||
|
links section there to find even more alternatives.
|
||||||
|
|
||||||
|
### But my window manager doesn't HAVE a system tray!
|
||||||
|
|
||||||
|
I'm well aware that every Linux setup is different and that
|
||||||
|
there are a million different window managers that range from
|
||||||
|
beautiful, feature-full, and bloated to stark, minimalist, and
|
||||||
|
lightning-fast. Unfortunately, after a few people suggested
|
||||||
|
that I have a tray icon for the no-gui mode, I realized that
|
||||||
|
it was a very, very good idea. The new version of QJoyPad is
|
||||||
|
built up around the system tray conceptually, and to make a
|
||||||
|
version that doesn't use it would be a lot of work, so for now
|
||||||
|
I plan to keep things as they are.
|
||||||
|
|
||||||
|
However, to accommodate those of you who don't have a system
|
||||||
|
tray and can't stand that little icon, using the argument
|
||||||
|
`--notray` makes a floating icon that is much bigger instead of
|
||||||
|
the little tray icon. It still behaves exactly as the smaller
|
||||||
|
icon would, except it is larger and cannot be captured by the
|
||||||
|
system tray.
|
||||||
|
|
||||||
|
### I hate the QJoyPad icon. Is there any way to change it?
|
||||||
|
|
||||||
|
Absolutely! Starting with version 4.2 QJoyPad stores its
|
||||||
|
icons at these locations:
|
||||||
|
|
||||||
|
$INSTALL_PREFIX/share/icons/hicolor/24x24/apps/qjoypad.png
|
||||||
|
$INSTALL_PREFIX/share/icons/hicolor/64x64/apps/qjoypad.png
|
||||||
|
|
||||||
|
(Where `$INSTALL_PREFIX` is usually `/usr` or `/usr/local`.)
|
||||||
|
|
||||||
|
Just replace these files and restart QJoyPad.
|
||||||
|
|
||||||
|
### Why do I have to tell QJoyPad to "update joystick devices"? Why can't it do that on its own?
|
||||||
|
|
||||||
|
Supporting on the fly detection of new gamepads using
|
||||||
|
[libudev](http://www.signal11.us/oss/udev/) is on the TODO list.
|
||||||
|
However, this would mean yet another dependency and then QJoyPad
|
||||||
|
won't run on distributions without UDev anymore. I don't know
|
||||||
|
if such distributions even exist, though.
|
||||||
|
|
||||||
|
Currently you can let QJoyPad rescan your joypads using the menu
|
||||||
|
or by running `qjoypad --update`.
|
||||||
|
|
||||||
|
### When QJoyPad checks for new joysticks, it doesn't find mine!
|
||||||
|
|
||||||
|
When you plug in a joystick, there are certain things that
|
||||||
|
have to happen for the joystick to become available to
|
||||||
|
programs like QJoyPad. Mainly, the joystick has to be
|
||||||
|
recognized and drivers have to be loaded. Even if this process
|
||||||
|
is automatic on your computer it could take a few seconds, so
|
||||||
|
if QJoyPad can't find your device right away, try again a few
|
||||||
|
moments later. If driver modules aren't loaded automatically,
|
||||||
|
don't forget to load them before you ask QJoyPad to look for
|
||||||
|
new devices. If you use a X-Box 360 pad and teh LEDs keep
|
||||||
|
blinking try to re-plug it. If you keep having troubles, see
|
||||||
|
[Joystick recognition](#joystick-recognition).
|
||||||
|
|
||||||
|
### Why are both Up and Down treated as the same axis?
|
||||||
|
|
||||||
|
That's because they are the same axis. An "axis" on a joystick
|
||||||
|
(or gamepad; or in math for that matter) isn't actually a
|
||||||
|
direction, but a dimension. A standard simple joystick can
|
||||||
|
move along two axes, the X-axis (side to side) and the Y-axis
|
||||||
|
(up and down); when you move the stick to the left, you're
|
||||||
|
moving it along the X-axis in the negative direction, and when
|
||||||
|
you move it to the right you're moving it in the positive
|
||||||
|
direction along the same axis.
|
||||||
|
|
||||||
|
What really matters is that in QJoyPad, every axis represents
|
||||||
|
two opposing directions and can therefore have two different
|
||||||
|
keys. I only do it that way because thats how the device
|
||||||
|
itself works. I'd make the labels a little more intuitive, but
|
||||||
|
unfortunately what each axis corresponds to changes from
|
||||||
|
controller to controller and there's no way for me to know
|
||||||
|
which is which. If you don't know which axis to set for which
|
||||||
|
direction, move in the direction you want and see which button
|
||||||
|
lights up, or try using Quick Set instead.
|
||||||
|
|
||||||
|
### All of this is too complicated. Why isn't there a button for Up?
|
||||||
|
|
||||||
|
Unfortunately, adding new features means increasing complexity
|
||||||
|
and making things more confusing. That's just how things go.
|
||||||
|
If you just want to have one key pressed when you press a
|
||||||
|
button on your joystick, try using just the quick set feature
|
||||||
|
of QJoyPad 3 (and newer). There all you need to do is press what
|
||||||
|
you want to press on the joystick and then type the key you want
|
||||||
|
that button to trigger.
|
||||||
|
|
||||||
|
Also, if you preferred the simplicity of QJoyPad 2.1, it's
|
||||||
|
still available and quite functional, it just doesn't have
|
||||||
|
quite as many options and doesn't use a system tray icon. The
|
||||||
|
two versions of QJoyPad are compatible and can both be run on
|
||||||
|
the same computer without getting in each others' way (as long
|
||||||
|
as you rename one of them so they aren't both called "qjoypad"),
|
||||||
|
just not at the same time.
|
||||||
|
|
||||||
|
You can find old versions of QJoyPad [here](https://sourceforge.net/projects/qjoypad/files/qjoypad/).
|
||||||
|
However, they probably won't work on modern Linux distributions
|
||||||
|
because they use obsolete Qt versions.
|
||||||
|
|
||||||
|
### Features and suggestions
|
||||||
|
|
||||||
|
#### Why can't I click with an axis, or move the mouse with a
|
||||||
|
|
||||||
|
#### Why doesn't QJoyPad do `_____`?
|
||||||
|
|
||||||
|
For the sake of my sanity, I didn't program every possible
|
||||||
|
thing I could imagine someone wanting to do into QJoyPad. I
|
||||||
|
added in the features that people were asking for and which
|
||||||
|
made sense, and I set somewhat arbitrary limits on what the
|
||||||
|
user can and can't do. Why set limits? Because if I didn't the
|
||||||
|
program would get far too bulky and too time consuming to
|
||||||
|
write. I tried to draw the line at what I thought was
|
||||||
|
reasonable use. No, you can't make the mouse click whenever
|
||||||
|
you move an axis... but why would you want to?
|
||||||
|
|
||||||
|
If there's something that you feel QJoyPad should be able to
|
||||||
|
do that it can't you might want to [write a feature
|
||||||
|
request](https://github.com/panzi/qjoypad/issues) on github.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Thank you to
|
||||||
|
[Erich Kitzmüller](http://members.chello.at/erich.kitzmueller/ammoq/main.html),
|
||||||
|
author of xjoypad for theinspiration to write QJoyPad and
|
||||||
|
for the code that started Nathan Gaylinn off.
|
||||||
|
|
||||||
|
The development team for Psi, the Jabber client, also get a
|
||||||
|
lot of thanks for writing the tray icon code that I borrowed
|
||||||
|
and tweaked. (Note from Mathias Panzenböck: I guess this is
|
||||||
|
about the tray icon code before Qt 4. Qt 4 has nice support
|
||||||
|
for the tray.) Thank you for developing GPL and for helping
|
||||||
|
other developers! (Check out the [Psi Website](http://psi.affinix.com/))
|
||||||
|
|
||||||
|
Thank you also to everyone who has sent me an email about
|
||||||
|
QJoyPad. Knowing that my program is used and appreciated means
|
||||||
|
a lot, especially since that's about all I get out of my
|
||||||
|
programming. Open source is like teaching; it's very important
|
||||||
|
and means a lot for young and developing programmers, but it's
|
||||||
|
a time consuming and underpaid profession ;)
|
||||||
|
|
||||||
|
Finally, I need to offer a very warm thank you to Mark
|
||||||
|
Hannessen who graciously donated one Logitech Wingman
|
||||||
|
Rumblepad to the cause of QJoyPad. Without that, I simply
|
||||||
|
would not have been able to add support for multiple axes or
|
||||||
|
throttle controls, so version 3 might have never been made.
|
||||||
|
Thank you for your interest and for your support, Mark.
|
||||||
|
|
||||||
|
## Licensing
|
||||||
|
|
||||||
|
This software is licensed under the terms of the GNU GPLv2.
|
||||||
|
Please see LICENSE.txt for a full text of the license.
|
911
README.txt
911
README.txt
@ -1,911 +0,0 @@
|
|||||||
QJoyPad 4 Documentation
|
|
||||||
|
|
||||||
Distributed with QJoyPad 4.0; available online at
|
|
||||||
http://qjoypad.sourceforge.net/doc/doc_index.html
|
|
||||||
|
|
||||||
John Toman
|
|
||||||
|
|
||||||
virtuoussin13@users.sourceforge.net
|
|
||||||
http://qjoypad.sourceforge.net
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Table of Contents
|
|
||||||
1. Introduction
|
|
||||||
|
|
||||||
1.1. What is QJoyPad?
|
|
||||||
1.2. What's it good for?
|
|
||||||
1.3. Features
|
|
||||||
|
|
||||||
2. Getting Started
|
|
||||||
|
|
||||||
2.1. Requirements
|
|
||||||
2.2. Installation
|
|
||||||
|
|
||||||
3. Using QJoyPad
|
|
||||||
|
|
||||||
3.1. The Tray Icon
|
|
||||||
3.2. The Popup Menu
|
|
||||||
3.3. The Setup Dialog
|
|
||||||
|
|
||||||
3.3.1. The Layout Selection combo box
|
|
||||||
3.3.2. The Add button
|
|
||||||
3.3.3. The Remove button
|
|
||||||
3.3.4. The Update button
|
|
||||||
3.3.5. The Revert button
|
|
||||||
3.3.6. The Joystick buttons
|
|
||||||
3.3.7. The Joystick Component buttons
|
|
||||||
3.3.8. The Clear button
|
|
||||||
3.3.9. Quick Set
|
|
||||||
|
|
||||||
3.4. Configuring axes
|
|
||||||
|
|
||||||
3.4.1. The Axis Position Indicator
|
|
||||||
3.4.2. Making an axis "Gradient"
|
|
||||||
3.4.3. Switching between keyboard and mouse control
|
|
||||||
3.4.4. Adjusting mouse speed
|
|
||||||
3.4.5. Setting keys
|
|
||||||
3.4.6. Throttle Settings
|
|
||||||
|
|
||||||
3.5. Configuring buttons
|
|
||||||
|
|
||||||
3.5.1. Choosing a key / mouse button
|
|
||||||
3.5.2. Making a button "Sticky"
|
|
||||||
3.5.3. Using Rapid Fire
|
|
||||||
|
|
||||||
3.6. Command-line use and scripting
|
|
||||||
|
|
||||||
4. Layout Files
|
|
||||||
5. Problems
|
|
||||||
|
|
||||||
5.1. I can't get my game controller to work in Linux;
|
|
||||||
will QJoyPad help?
|
|
||||||
|
|
||||||
5.2. Joystick recognition
|
|
||||||
|
|
||||||
5.2.1. QJoyPad says it can't find any joysticks?
|
|
||||||
5.2.2. QJoyPad isn't showing all of my joysticks.
|
|
||||||
5.2.3. My joystick has more/fewer buttons/axes than
|
|
||||||
that!
|
|
||||||
|
|
||||||
5.3. Joystick adjustment
|
|
||||||
|
|
||||||
5.3.1. Why does it say I'm moving if I'm not?
|
|
||||||
5.3.2. I keep going in two directions at once
|
|
||||||
instead of just one!
|
|
||||||
|
|
||||||
5.3.3. I'm pushing up, but nothing's happening!
|
|
||||||
|
|
||||||
5.4. QJoyPad won't start!
|
|
||||||
5.5. I have two versions of QJoyPad open at once and
|
|
||||||
they're getting in each other's way!
|
|
||||||
|
|
||||||
5.6. I'm getting strange errors when I change layouts;
|
|
||||||
what's wrong?
|
|
||||||
|
|
||||||
5.7. This program only works in XWindows?
|
|
||||||
5.8. But my window manager doesn't HAVE a system tray!
|
|
||||||
5.9. I hate the QJoyPad icon. Is there any way to change
|
|
||||||
it?
|
|
||||||
|
|
||||||
5.10. Why do I have to tell QJoyPad to "update joystick
|
|
||||||
devices"? Why can't it do that on its own?
|
|
||||||
|
|
||||||
5.11. When QJoyPad checks for new joysticks, it doesn't
|
|
||||||
find mine!
|
|
||||||
|
|
||||||
5.12. Why are both Up and Down treated as the same axis?
|
|
||||||
5.13. All of this is too complicated. Why isn't there a
|
|
||||||
button for Up?
|
|
||||||
|
|
||||||
5.14. Features and suggestions
|
|
||||||
|
|
||||||
5.14.1. Why can't I click with an axis, or move the
|
|
||||||
mouse with a button?
|
|
||||||
|
|
||||||
5.14.2. Why doesn't QJoyPad do _____?
|
|
||||||
|
|
||||||
6. Credits
|
|
||||||
7. This software is GPL!
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 1. Introduction
|
|
||||||
|
|
||||||
1.1. What is QJoyPad?
|
|
||||||
|
|
||||||
QJoyPad is a convenient little program with a QT interface
|
|
||||||
that converts movement and button presses on a gamepad or
|
|
||||||
joystick into key presses, mouse clicks, and mouse movement in
|
|
||||||
XWindows. It should work on almost every Linux system and with
|
|
||||||
any Linux-supported gaming device.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
1.2. What's it good for?
|
|
||||||
|
|
||||||
QJoyPad lets you play any XWindows game that uses input from
|
|
||||||
the keyboard and mouse with a joystick device, even if the
|
|
||||||
game doesn't normally have joystick support. In addition, it's
|
|
||||||
a convenient companion for emulation software as it prevents
|
|
||||||
the need for extra controller plugins and can remember
|
|
||||||
multiple saved layouts. Also, QJoyPad can quickly swap between
|
|
||||||
layouts whenever you change games, so you'll always have the
|
|
||||||
controls right where you want them instead of compromising for
|
|
||||||
the game's defaults or the settings you find most useful in
|
|
||||||
other games. Now with version 3, QJoyPad also supports
|
|
||||||
features like rapid fire and sticky buttons (see Section
|
|
||||||
3.5.2) that can improve your gaming experience.
|
|
||||||
|
|
||||||
Not a gamer? Then QJoyPad can still be pretty useful if you
|
|
||||||
would find it more comfortable or convenient to control your
|
|
||||||
computer with a joystick or game pad. It may be designed with
|
|
||||||
gaming in mind, but it's a useful program for virtually any
|
|
||||||
purpose.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
1.3. Features
|
|
||||||
|
|
||||||
- Incorporates your gaming devices into any XWindows program
|
|
||||||
- Move and click the mouse with your joystick
|
|
||||||
- Auto-detects how many joysticks you have and how many
|
|
||||||
buttons and axes each supports
|
|
||||||
- Can detect joystick devices on the fly without restarting
|
|
||||||
- Support for devices with more than two axes
|
|
||||||
- Save as many layouts as you want and switch between them
|
|
||||||
quickly
|
|
||||||
- Swap layouts on the fly from the command line or from a
|
|
||||||
script
|
|
||||||
- Share layout files with your friends or even edit them by
|
|
||||||
hand for greater control
|
|
||||||
- Color cues quickly show you which buttons you're pressing
|
|
||||||
and which joystick you're using
|
|
||||||
- Set or reset all the keys at once in a flash
|
|
||||||
- Adjust the sensitivity of every axis independently
|
|
||||||
- Quietly hides in your system tray, running in the
|
|
||||||
background without taking up space
|
|
||||||
- For window managers without a system tray, QJoyPad can run
|
|
||||||
without the tray icon.
|
|
||||||
- Make an axis "Gradient" so that a light push does a little
|
|
||||||
and a harder push does more
|
|
||||||
- Support for throttle controls
|
|
||||||
- Make a button "Sticky" if you don't feel like holding it
|
|
||||||
down all the time
|
|
||||||
- Turn on Rapid Fire so you don't wear out your gamepad!
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 2. Getting Started
|
|
||||||
|
|
||||||
2.1. Requirements
|
|
||||||
|
|
||||||
- A Linux computer and a Linux-compatible gaming device
|
|
||||||
- A Linux kernel with joystick support (see the Linux Kernel
|
|
||||||
HOWTO [http://www.linuxdocs.org/HOWTOs/Kernel-HOWTO.html]
|
|
||||||
and the Linux joystick driver website
|
|
||||||
http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/)
|
|
||||||
- XWindows (see www.xfree86.org)
|
|
||||||
- Trolltech's QT (see www.trolltech.com)
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
2.2. Installation
|
|
||||||
|
|
||||||
Installing QJoyPad should be a quick and painless process. The
|
|
||||||
basic procedure is:
|
|
||||||
|
|
||||||
./config
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
however, there are some settings that might need to be
|
|
||||||
changed.
|
|
||||||
|
|
||||||
1. Device directory: By default, QJoyPad will look for
|
|
||||||
joystick devices in /dev/input, but if your system puts
|
|
||||||
them somewhere else, you'll need to run ./config with the
|
|
||||||
argument --devdir=DIR, where DIR is where your joystick
|
|
||||||
devices reside. For instance, if your joystick devices are
|
|
||||||
/dev/js0, /dev/js1, etc., instead of running ./config, run
|
|
||||||
./config --devdir="/dev"
|
|
||||||
2. Install directory: By default, QJoyPad will try to put a
|
|
||||||
copy of itself in /usr/local/bin, some icons in
|
|
||||||
/usr/local/share/pixmaps, and this readme in
|
|
||||||
/usr/local/doc/qjoypad3 so that they will be accessible to
|
|
||||||
all users. If you want these files to go somewhere other
|
|
||||||
than /usr/local (or if you don't have permission to write
|
|
||||||
to /usr/local), you'll need to pass the argument
|
|
||||||
--prefix=DIR to ./config. For example, if you wanted to
|
|
||||||
install QJoyPad just for yourself in your home directory,
|
|
||||||
you could run ./config --prefix="/home/user" instead of
|
|
||||||
./config.
|
|
||||||
3. Use Plain Keys: Normally, QJoyPad doesn't use standard
|
|
||||||
XWindows key names to describe your keyboard, but instead
|
|
||||||
uses names that look nicer and are easier to recognize.
|
|
||||||
For instance, instead of "KP_Begin", "Prior", and
|
|
||||||
"Shift_L", QJoyPad uses "KP 5", "PageDown", and "L Shift".
|
|
||||||
If you think generating these names is a waste of
|
|
||||||
processor power, or if you don't think you're getting the
|
|
||||||
right name for the key you're pressing, pass the argument
|
|
||||||
--plain_keys to ./config and QJoyPad will just use the
|
|
||||||
XWindows default names.
|
|
||||||
|
|
||||||
Of course, you can mix use as many of these options at once as
|
|
||||||
you like. For instance ./config --devdir="/dev"
|
|
||||||
--prefix="/home/user" is completely valid.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 3. Using QJoyPad
|
|
||||||
|
|
||||||
3.1. The Tray Icon
|
|
||||||
|
|
||||||
QJoyPad 3 is centered around the idea of a "tray icon", a
|
|
||||||
little icon that usually sits on your taskbar, out of the way;
|
|
||||||
when you first run QJoyPad, this is how it will be, just an
|
|
||||||
icon. If your window manager doesn't support system tray
|
|
||||||
icons, then you'll see QJoyPad as a tiny 24x24 window floating
|
|
||||||
around like any other window (see Section 5.8 ). since this
|
|
||||||
might be hard to work with, QJoyPad (starting with version
|
|
||||||
3.3) gives you the option of having a larger icon to work
|
|
||||||
with; just run qjoypad --notray and QJoyPad will use a larger
|
|
||||||
floating icon instead of a system tray icon.
|
|
||||||
|
|
||||||
By right clicking on the QJoyPad icon (it should look like an
|
|
||||||
old gamepad), you will get a pop-up menu that lets you switch
|
|
||||||
layouts (when you first install QJoyPad, there will be no
|
|
||||||
layouts available) and see some important information. To add
|
|
||||||
or modify layouts, left click the icon to open the Setup
|
|
||||||
Dialog.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.2. The Popup Menu
|
|
||||||
|
|
||||||
When you right click the QJoyPad icon, a menu should pop up.
|
|
||||||
The top of this menu shows you which joystick devices are
|
|
||||||
currently available (see Section 5.2 if not all your devices
|
|
||||||
are listed). Below that are the options to update the layout
|
|
||||||
list or the joystick devices; use these if you have just put a
|
|
||||||
new layout in ~/.qjoypad3 by hand or if you've plugged in a
|
|
||||||
new joystick device. Below even farther is a list of the
|
|
||||||
available layouts and the option to quit.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3. The Setup Dialog
|
|
||||||
|
|
||||||
The following sections describe the parts of the Setup Dialog
|
|
||||||
going from the top down and from left to right.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.1. The Layout Selection combo box
|
|
||||||
|
|
||||||
At the top of the Setup Dialog is a combo box that says [NO
|
|
||||||
LAYOUT] to begin with, but as you add new layouts it will
|
|
||||||
serve as a drop-down list of all the layouts available to you.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.2. The Add button
|
|
||||||
|
|
||||||
The Add button adds a new layout to the list, asking you for a
|
|
||||||
meaningful name. Make the name short, simple, and easy to
|
|
||||||
remember, just in case you ever want to load the new layout
|
|
||||||
from the command line. You can use any name you like that
|
|
||||||
would be a legal filename on your computer (see Chapter 4 for
|
|
||||||
details.).
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.3. The Remove button
|
|
||||||
|
|
||||||
The Remove button deletes the layout currently selected in the
|
|
||||||
combo box, losing it forever.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.4. The Update button
|
|
||||||
|
|
||||||
The Update button saves how the keys are currently set to the
|
|
||||||
current layout. Use this to make changes to an already-defined
|
|
||||||
layout. Don't forget to use Update to save any changes you
|
|
||||||
make before quitting or switching to another layout, or all
|
|
||||||
the changes will be forgotten!
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.5. The Revert button
|
|
||||||
|
|
||||||
The Revert button does about the opposite of Update. If you've
|
|
||||||
gone and changed the keys around, pressing Revert will return
|
|
||||||
them to how they are saved in the current layout.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.6. The Joystick buttons
|
|
||||||
|
|
||||||
Immediately below the Add, Remove, Update, and Revert buttons,
|
|
||||||
there are several buttons labeled Joystick 1, Joystick 2, etc.
|
|
||||||
that serve as tabs so you can switch between different
|
|
||||||
controllers to set keys. Whichever one of these buttons is
|
|
||||||
pressed is the controller you are currently editing. Pressing
|
|
||||||
any button or moving any axis on a given controller will make
|
|
||||||
its associated button flash blue to let you know which it is.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.7. The Joystick Component buttons
|
|
||||||
|
|
||||||
Beneath the Joystick Buttons is a large pile of buttons
|
|
||||||
representing every axis and button on your controller.
|
|
||||||
Whenever you move the axis or push the button that one of
|
|
||||||
these buttons represents, it will flash blue so that you know
|
|
||||||
which it is. To setup any of these, just click on the
|
|
||||||
appropriate button and a dialog will pop up to let you choose
|
|
||||||
your settings.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.8. The Clear button
|
|
||||||
|
|
||||||
The Clear button resets all the axes and buttons to nothing,
|
|
||||||
essentially rendering the joystick disabled. From here it's
|
|
||||||
easy enough to set the buttons you need, starting from a clean
|
|
||||||
slate.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.3.9. Quick Set
|
|
||||||
|
|
||||||
The Quick Set button does exactly what you'd expect, it lets
|
|
||||||
you set all the buttons and axes quickly! When you click it,
|
|
||||||
it brings up a little window with a Done button, and until you
|
|
||||||
click Done it's watching the controller. Whenever you press a
|
|
||||||
button or move an axis, it will ask you which button you want
|
|
||||||
associated with that movement. You can't set all the extra
|
|
||||||
options this way, but it's much faster than going through all
|
|
||||||
the dialogs!
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4. Configuring axes
|
|
||||||
|
|
||||||
In QJoyPad 2, you were allowed one key to be assigned to each
|
|
||||||
of four directions, Up, Down, Left, and Right. In version 3,
|
|
||||||
there is support for many axes and each one can do fancier
|
|
||||||
things than just press a key. Unfortunately, since different
|
|
||||||
controllers do things differently, it's not as easy as Up,
|
|
||||||
Down, Left, and Right. Up-Down is an axis, Left-Right is an
|
|
||||||
axis, and if you have a nicer controller, you might have many
|
|
||||||
more axes on top of that.
|
|
||||||
|
|
||||||
The first step in configuring axes is to figure out which one
|
|
||||||
you want to set. If you have a joystick, try moving it around
|
|
||||||
and seeing which buttons flash blue on the QJoyPad Setup
|
|
||||||
Dialog. If you have a gamepad, try pressing different buttons
|
|
||||||
on the Directional-Pad or moving around any mini joystick
|
|
||||||
controls it might have. Once you know which axis you want to
|
|
||||||
set, click on its associated button to open the Set Axis
|
|
||||||
dialog.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.1. The Axis Position Indicator
|
|
||||||
|
|
||||||
In the middle of this dialog, you will see a white bar,
|
|
||||||
divided in two, that represents the current position of the
|
|
||||||
axis you're editing. Try moving that axis to see how it works.
|
|
||||||
This is so you know which direction is considered "positive"
|
|
||||||
and which is "negative"; it might not be what you'd expect. If
|
|
||||||
this axis is a D-Pad, then it is either off or on, but most
|
|
||||||
other axes are sensitive to how far they are depressed and a
|
|
||||||
colored bar here will show you how far it is at the moment.
|
|
||||||
|
|
||||||
Along the white bar, you will also see small blue and red tabs
|
|
||||||
that you can drag. These adjust the "Dead Zone" and the
|
|
||||||
"Extreme Zone" of the axis. When the colored bar representing
|
|
||||||
the axis' position passes one of the blue markers, the bar
|
|
||||||
will turn blue meaning that when the axis is this far QJoyPad
|
|
||||||
will consider it moved, and when the bar passes one of the red
|
|
||||||
markers it will turn red and QJoyPad will consider that axis
|
|
||||||
fully depressed. When the bar is gray, that means that you
|
|
||||||
haven't moved the axis out of its Dead Zone and QJoyPad is
|
|
||||||
ignoring its movement. To adjust where the Dead and Extreme
|
|
||||||
Zones are, just slide the blue and red markers to where you
|
|
||||||
think they should be.
|
|
||||||
|
|
||||||
You probably won't need to adjust the sensitivity unless you
|
|
||||||
are having trouble getting QJoyPad to generate key presses
|
|
||||||
when you want it to (see Section 5.3).
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.2. Making an axis "Gradient"
|
|
||||||
|
|
||||||
On the upper half of this dialog, you will see a checkbox
|
|
||||||
marked Gradient. Checking this box means that instead of just
|
|
||||||
generating one key press when the axis is moved, QJoyPad will
|
|
||||||
start flickering that key on and off as soon as the axis is
|
|
||||||
out of the Dead Zone (when the colored bar turns blue). How
|
|
||||||
far the axis is pushed determines what percent of the time the
|
|
||||||
simulated key will be depressed. As soon as the axis enters
|
|
||||||
its Extreme Zone (when the colored bar turns red), the key
|
|
||||||
will be down 100% of the time. Making an axis Gradient is
|
|
||||||
useful if you want to use it as an accelerator in a game so
|
|
||||||
how fast you go is controlled by how far the axis is moved.
|
|
||||||
Also, it's nice to use this when the axis is set to move the
|
|
||||||
mouse because it can give you finer control of the mouse when
|
|
||||||
you push the axis just a little but still let you move quickly
|
|
||||||
when you push it all the way.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.3. Switching between keyboard and mouse control
|
|
||||||
|
|
||||||
On the upper half of the dialog, there is a combo box that
|
|
||||||
lets you choose between keyboard control and mouse control.
|
|
||||||
There are four different mouse options that let you choose
|
|
||||||
whether the mouse will move vertically (Up-Down) when the axis
|
|
||||||
moves or horizontally (Left-Right). You can also reverse the
|
|
||||||
direction of the mouse if you want moving the axis up to move
|
|
||||||
the mouse down or visa versa.
|
|
||||||
|
|
||||||
Tip
|
|
||||||
|
|
||||||
Usually you want an axis to be Gradient if it's going to move
|
|
||||||
the mouse.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.4. Adjusting mouse speed
|
|
||||||
|
|
||||||
When using one of the mouse modes, you can set the speed of
|
|
||||||
the mouse by adjusting the number in the upper right corner.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.5. Setting keys
|
|
||||||
|
|
||||||
When using keyboard mode, you can set which key corresponds to
|
|
||||||
which direction of the axis by clicking the buttons
|
|
||||||
immediately below the Axis Position Indicator. The one on the
|
|
||||||
left will be pressed when the axis is moved in the negative
|
|
||||||
direction (when the colored bar is on the left side) and the
|
|
||||||
one on the right when it is in the positive direction (when
|
|
||||||
the colored bar is on the right side).
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.4.6. Throttle Settings
|
|
||||||
|
|
||||||
Between these two buttons is another combo box that changes
|
|
||||||
the throttle settings. This is meant for gamepads which have a
|
|
||||||
specific type of throttle control. What it does is instead of
|
|
||||||
having two keys for when the axis is positive or negative, it
|
|
||||||
has just one and treats the way the axis moves differently. In
|
|
||||||
one of the throttle modes, the axis will be considered
|
|
||||||
centered when it is all the way to one direction or the other.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.5. Configuring buttons
|
|
||||||
|
|
||||||
Similarly to the buttons corresponding to axes in the Setup
|
|
||||||
Dialog, the ones corresponding to the buttons on your
|
|
||||||
controller also light up to let you know which is which. To
|
|
||||||
figure out which button you want, press it on the game device
|
|
||||||
and then click on the button on screen that flashed. A small
|
|
||||||
settings dialog will pop up.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.5.1. Choosing a key / mouse button
|
|
||||||
|
|
||||||
At the top of this dialog is a button that you can click to
|
|
||||||
set which key or mouse button you want to associate with this
|
|
||||||
button on your controller. Just click on it, and the rest
|
|
||||||
should be self-explanatory.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.5.2. Making a button "Sticky"
|
|
||||||
|
|
||||||
Below this and to the left is a little checkbox marked Sticky.
|
|
||||||
When a button is set as Sticky, that means that pressing the
|
|
||||||
button once will make QJoyPad simulate a key press (or mouse
|
|
||||||
button press) and pressing that button again will make QJoyPad
|
|
||||||
release the simulated key. This is useful for racing games
|
|
||||||
where you're almost always pouring on the gas, or for RPGs
|
|
||||||
that have a button used for run, even though it's always
|
|
||||||
better to be running. This way, all you have to do is press
|
|
||||||
the button once and it's like you're holding it down. To let
|
|
||||||
the button back up, just press it a second time.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.5.3. Using Rapid Fire
|
|
||||||
|
|
||||||
Just next to the Sticky checkbox is another one marked Rapid
|
|
||||||
Fire. When this is enabled for a button, holding that button
|
|
||||||
down means that QJoyPad will flicker the associated key very
|
|
||||||
fast. This is great for space shooters where you want to fire
|
|
||||||
quickly but you don't want to break your button (or your
|
|
||||||
thumb!) from pressing over and over again.
|
|
||||||
|
|
||||||
Tip
|
|
||||||
|
|
||||||
Keep in mind that any button can be set both Sticky AND Rapid
|
|
||||||
Fire. This is even better for space shooters because this way
|
|
||||||
all you need to do is press the button once and from then
|
|
||||||
until you press it again you will be shooting Rapid Fire.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
3.6. Command-line use and scripting
|
|
||||||
|
|
||||||
Although QJoyPad only works in XWindows, it supports changing
|
|
||||||
axes on the fly from the command line. If you want to load up
|
|
||||||
the layout named "Tetris", all you have to do is run:
|
|
||||||
|
|
||||||
qjoypad "Tetris"
|
|
||||||
|
|
||||||
and one of two things will happen. If QJoyPad isn't currently
|
|
||||||
open, it will start running and load the "Tetris" layout (this
|
|
||||||
is case sensitive! see Chapter 4). If QJoyPad is already
|
|
||||||
running, it will just silently switch to the requested layout.
|
|
||||||
|
|
||||||
What's so great about this is it lets you forget about QJoyPad
|
|
||||||
once you've made all your layouts, and just worry about your
|
|
||||||
games! It's very easy to write short little shell scripts to
|
|
||||||
automatically load the layout you need when you start up a
|
|
||||||
game. For instance, if you wanted to run the game xgalaga++,
|
|
||||||
using QJoyPad for joystick support, you could create a text
|
|
||||||
file called run-xgalaga with the following lines in it:
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
qjoypad "XGalaga" &
|
|
||||||
xgalaga++
|
|
||||||
|
|
||||||
Then with the command "chmod a+x run-xgalaga" you could make
|
|
||||||
that text file an executable shell script; once that's done,
|
|
||||||
all you need to to do is execute run-xgalaga and QJoyPad will
|
|
||||||
load the appropriate layout and your game will start. To use
|
|
||||||
this script for any other program, just change "XGalaga" to a
|
|
||||||
different layout name and "xgalaga++" to the name of some
|
|
||||||
other program and you're done.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 4. Layout Files
|
|
||||||
|
|
||||||
When QJoyPad saves a layout, it creates a file using that
|
|
||||||
layout's name. Because of this, layout names must also be
|
|
||||||
valid filenames. This shouldn't be very limiting, it just
|
|
||||||
means that names can't contain certain special characters such
|
|
||||||
as '/', '*', etc. Remember that most Linux file systems are
|
|
||||||
case sensitive, so a layout named "Layout" will be considered
|
|
||||||
distinct from a layout named "layout". On most modern file
|
|
||||||
systems, spaces should be okay and there should be no serious
|
|
||||||
limits on name length.
|
|
||||||
|
|
||||||
Whenever you create a new layout, QJoyPad makes a new file
|
|
||||||
called Name.lyt in ~/.qjoypad3, where Name is the name that
|
|
||||||
you provided. Whenever you update that layout, it overwrites
|
|
||||||
that file to reflect your changes, whenever you revert, it
|
|
||||||
rereads that file, and if you ever remove that layout, it will
|
|
||||||
erase that file from your hard drive.
|
|
||||||
|
|
||||||
The format of these files isn't difficult to figure out, so
|
|
||||||
you can edit them by hand if you like. The numbers used to
|
|
||||||
represent keys are standard X11 keycodes.
|
|
||||||
|
|
||||||
It's also easy to share QJoyPad layout files; just copy them
|
|
||||||
from one user's ~/.qjoypad3 directory to another and either
|
|
||||||
tell QJoyPad to update the layout list by right clicking on
|
|
||||||
the tray icon, or just restart QJoyPad. If you switch layouts
|
|
||||||
through the command line, you don't even need to do that.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 5. Problems
|
|
||||||
|
|
||||||
5.1. I can't get my game controller to work in Linux; will QJoyPad
|
|
||||||
help?
|
|
||||||
|
|
||||||
Well, that depends on why you can't get it to work. For the
|
|
||||||
most part, the answer is "No." QJoyPad can only use joysticks
|
|
||||||
and gamepads that are recognized by your kernel and that have
|
|
||||||
the proper drivers loaded. If you can't get your joysticks to
|
|
||||||
work at all in Linux, then, no, QJoyPad can't help. (you might
|
|
||||||
want to check out the joystick.txt file included with your
|
|
||||||
kernel source; if you don't know anything about working with
|
|
||||||
the kernel, check out the Linux Kernel HOWTO
|
|
||||||
[http://www.linuxdocs.org/HOWTOs/Kernel-HOWTO.html] )
|
|
||||||
|
|
||||||
If your joystick is detected and somewhat working, but you
|
|
||||||
can't get it to work in specific programs, then QJoyPad just
|
|
||||||
might be what you're looking for. One of the main reasons I
|
|
||||||
wrote QJoyPad was because my gamepads simply wouldn't work
|
|
||||||
right with the input plugins for Linux Playstation emulators,
|
|
||||||
so I know for a fact that sometimes QJoyPad can work around
|
|
||||||
specific software issues.
|
|
||||||
|
|
||||||
Check out Section 5.2 for some tips for checking if your
|
|
||||||
joystick is working.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.2. Joystick recognition
|
|
||||||
|
|
||||||
5.2.1. QJoyPad says it can't find any joysticks?
|
|
||||||
|
|
||||||
5.2.2. QJoyPad isn't showing all of my joysticks.
|
|
||||||
|
|
||||||
5.2.3. My joystick has more/fewer buttons/axes than that!
|
|
||||||
|
|
||||||
QJoyPad automatically recognizes your joysticks using the
|
|
||||||
Linux joystick driver, so all joysticks must be working
|
|
||||||
properly in Linux before they can be used in QJoyPad. If you
|
|
||||||
can't see all of your joysticks or if QJoyPad complains it
|
|
||||||
can't find any, chances are your joystick(s) are not plugged
|
|
||||||
in or are not properly detected by Linux. If that's not it,
|
|
||||||
QJoyPad could also be looking for your joysticks in the wrong
|
|
||||||
directory.
|
|
||||||
|
|
||||||
First, double check that your joysticks are plugged in. If
|
|
||||||
they aren't, plug them, load any modules you might need, and
|
|
||||||
tell QJoyPad to Update joystick devices with the popup menu
|
|
||||||
(remember, this menu is only accessible when the Setup Dialog
|
|
||||||
is closed).
|
|
||||||
|
|
||||||
If you're still having trouble, QJoyPad might have been
|
|
||||||
compiled with the devdir setting pointing to the wrong place.
|
|
||||||
That option had to be set at compile time, and to change it
|
|
||||||
you must recompile (see Section 2.2); however, if you don't
|
|
||||||
want to bother with that, you can specify the location of your
|
|
||||||
devices as an argument. Using the command "qjoypad --device
|
|
||||||
/dev/input", for example, will start QJoyPad and tell it to
|
|
||||||
look for joysticks in /dev/input/js0, /dev/input/js1, etc.
|
|
||||||
|
|
||||||
If that doesn't work, then you might want to make sure your
|
|
||||||
joysticks are working properly. One way to test this is to do
|
|
||||||
a "cat /dev/input/js0" (or wherever your joystick device is)
|
|
||||||
and press a few buttons on the controller. If you get a bunch
|
|
||||||
of crazy characters, it's working. If not, you'll have to
|
|
||||||
fiddle around with kernel drivers, and should probably look
|
|
||||||
elsewhere for guidance.
|
|
||||||
|
|
||||||
If for some reason QJoyPad is reporting the wrong number of
|
|
||||||
buttons or axes for your device, that means the Linux joystick
|
|
||||||
driver is also reporting the wrong number. Unless you can't
|
|
||||||
get to buttons or axes that you need, this shouldn't be a
|
|
||||||
problem, but if you want to get the number right, Try using a
|
|
||||||
different driver or check out the documentation for the one
|
|
||||||
you're using.
|
|
||||||
|
|
||||||
If your joysticks are working, plugged in, and my program is
|
|
||||||
looking in the right place, then I'm not sure what to tell
|
|
||||||
you. Unfortunately, I don't have a wealth of different devices
|
|
||||||
and software setups to test on. If you're really stuck, drop
|
|
||||||
me a line and I'll see what I can do.
|
|
||||||
<wren42@users.sourceforge.net>
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.3. Joystick adjustment
|
|
||||||
|
|
||||||
5.3.1. Why does it say I'm moving if I'm not?
|
|
||||||
|
|
||||||
5.3.2. I keep going in two directions at once instead of just one!
|
|
||||||
|
|
||||||
5.3.3. I'm pushing up, but nothing's happening!
|
|
||||||
|
|
||||||
Chances are, this means you're using an overly sensitive or
|
|
||||||
poorly calibrated joystick or your sensitivity settings are
|
|
||||||
all wrong. Try adjusting the Dead Zone of the axes that are
|
|
||||||
giving you trouble (move the blue tab in the Axis Edit
|
|
||||||
dialog), more away from the center if it thinks you're
|
|
||||||
pressing a button when you aren't, more toward the center if
|
|
||||||
it thinks you aren't pressing a button when you are. If that
|
|
||||||
doesn't work, try manually adjusting your joystick (if it has
|
|
||||||
adjustment knobs/sliders), or try calibrating it with jscal.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.4. QJoyPad won't start!
|
|
||||||
|
|
||||||
There are two reasons why QJoyPad won't start. For one,
|
|
||||||
QJoyPad won't start is if it's already running! To make sure
|
|
||||||
QJoyPad doesn't interfere with itself, only one version of
|
|
||||||
QJoyPad is allowed to run at a time. If you can't see an
|
|
||||||
already open version, look for the icon in the system tray. If
|
|
||||||
you really can't find it anywhere, try running "killall
|
|
||||||
qjoypad" and then "rm -f ~/lock.pid" and then try starting
|
|
||||||
QJoyPad again. It should work this time.
|
|
||||||
|
|
||||||
Finally, QJoyPad won't actually run if one of its arguments is
|
|
||||||
--h or --help. When it sees one of those arguments, it outputs
|
|
||||||
usage information to the console and then quits. If you're
|
|
||||||
running QJoyPad away from a console or want it to run like
|
|
||||||
normal, don't give one of these arguments.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.5. I have two versions of QJoyPad open at once and they're getting
|
|
||||||
in each other's way!
|
|
||||||
|
|
||||||
QJoyPad doesn't work well when there are two or more instances
|
|
||||||
open; for that reason, it uses a file to tell whether or not
|
|
||||||
it's already running. Every version of QJoyPad has done this,
|
|
||||||
but in version 3.4, where that file is kept was changed to
|
|
||||||
make the program more compatible with certain distributions.
|
|
||||||
|
|
||||||
If you're seeing two versions of QJoyPad open at once, that
|
|
||||||
means that either one of those is QJoyPad 3.4 and the other is
|
|
||||||
an older version, or that you're running an older version of
|
|
||||||
QJoyPad on a system where you don't have write access to
|
|
||||||
/var/run. In either case, you should just make sure that you
|
|
||||||
are running the newest version of QJoyPad and that there are
|
|
||||||
no other versions installed on your system.
|
|
||||||
|
|
||||||
If you really want to keep earlier versions of QJoyPad, that's
|
|
||||||
fine! Just remember that if you do, it's possible to have two
|
|
||||||
instancesrunning at once and that that can cause problems.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.6. I'm getting strange errors when I change layouts; what's wrong?
|
|
||||||
|
|
||||||
Those errors show that there is something wrong with the
|
|
||||||
layout files themselves. This means the files were corrupted,
|
|
||||||
edited incorrectly, or for some reason QJoyPad didn't save
|
|
||||||
them right (shouldn't ever happen, never seen it happen, but
|
|
||||||
nothing's impossible). Unless the file QJoyPad is looking for
|
|
||||||
is completely missing or mangled, it's quite likely that the
|
|
||||||
file can be repaired by hand. If you need help with the save
|
|
||||||
format, just send me an email <wren42@users.sourceforge.net>
|
|
||||||
and I'll see if I can't help.
|
|
||||||
|
|
||||||
If worse comes to worst and you lose a layout file you
|
|
||||||
created, it shouldn't take you too long to rebuild it from
|
|
||||||
scratch.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.7. This program only works in XWindows?
|
|
||||||
|
|
||||||
Yep, I'm afraid so. For all of you out there with old Linux
|
|
||||||
console games that won't run in an xterm, you'll have to try
|
|
||||||
something else. If you really must find a way, joy2key is a
|
|
||||||
program that is similar to QJoyPad but without a graphical
|
|
||||||
interface or many of the fancier features, but which doesn't
|
|
||||||
have that limitation. Check it out at:
|
|
||||||
http://interreality.org/~tetron/technology/joy2key.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.8. But my window manager doesn't HAVE a system tray!
|
|
||||||
|
|
||||||
I'm well aware that every Linux setup is different and that
|
|
||||||
there are a million different window managers that range from
|
|
||||||
beautiful, feature-full, and bloated to stark, minimalist, and
|
|
||||||
lightning-fast. Unfortunately, after a few people suggested
|
|
||||||
that I have a tray icon for the no-gui mode, I realized that
|
|
||||||
it was a very, very good idea. The new version of QJoyPad is
|
|
||||||
built up around the system tray conceptually, and to make a
|
|
||||||
version that doesn't use it would be a lot of work, so for now
|
|
||||||
I plan to keep things as they are.
|
|
||||||
|
|
||||||
However, to accommodate those of you who don't have a system
|
|
||||||
tray and can't stand that little icon, using the argument
|
|
||||||
--notray makes a floating icon that is much bigger instead of
|
|
||||||
the little tray icon. It still behaves exactly as the smaller
|
|
||||||
icon would, except it is larger and cannot be captured by the
|
|
||||||
system tray.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.9. I hate the QJoyPad icon. Is there any way to change it?
|
|
||||||
|
|
||||||
Absolutely! Starting with version 3.3, QJoyPad stores its
|
|
||||||
icons in $PATH/share/pixmaps/qjoypad (where $PATH is the
|
|
||||||
install path used by given at install time, /usr/local by
|
|
||||||
default) and actually comes with a few different icons to
|
|
||||||
choose from. In that directory, there are two files,
|
|
||||||
icon24.png and icon64.png which correspond to the small and
|
|
||||||
large icons that qjoypad will use. These files are just links,
|
|
||||||
and can be relinked to any png image of the appropriate size.
|
|
||||||
Feel free to switch between the provided icons, change them,
|
|
||||||
or make your own! QJoyPad should look how you want it to.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.10. Why do I have to tell QJoyPad to "update joystick devices"?
|
|
||||||
Why can't it do that on its own?
|
|
||||||
|
|
||||||
It can! With the hotplug options of the more recent Linux
|
|
||||||
kernels, not only is it easy to automatically load the right
|
|
||||||
modules for a joystick when it is plugged in, but also to
|
|
||||||
notify QJoyPad and have it update its list. Unfortunately,
|
|
||||||
this is a little complex, still not available on everyone's
|
|
||||||
computer, and still in development. If you'd like to get this
|
|
||||||
setup, I'd love to help you figure things out and perhaps I'll
|
|
||||||
make it a standard feature of QJoyPad once I have a better
|
|
||||||
idea of what needs to be done on various systems. Please,
|
|
||||||
either contact me for help getting started, or send me an
|
|
||||||
email after you get it working explaining how you did it ;) To
|
|
||||||
make QJoyPad search for new devices, use the command qjoypad
|
|
||||||
--update.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.11. When QJoyPad checks for new joysticks, it doesn't find mine!
|
|
||||||
|
|
||||||
When you plug in a joystick, there are certain things that
|
|
||||||
have to happen for the joystick to become available to
|
|
||||||
programs like QJoyPad. Mainly, the joystick has to be
|
|
||||||
recognized and drivers have to be loaded. Even if this process
|
|
||||||
is automatic on your computer it could take a few seconds, so
|
|
||||||
if QJoyPad can't find your device right away, try again a few
|
|
||||||
moments later. If driver modules aren't loaded automatically,
|
|
||||||
don't forget to load them before you ask QJoyPad to look for
|
|
||||||
new devices. If you keep having troubles, see Section 5.2.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.12. Why are both Up and Down treated as the same axis?
|
|
||||||
|
|
||||||
That's because they are the same axis. An "axis" on a joystick
|
|
||||||
(or gamepad) isn't actually a direction, but a dimension. A
|
|
||||||
standard simple joystick can move along two axes, the X-axis
|
|
||||||
(side to side) and the Y-axis (up and down); when you move the
|
|
||||||
stick to the left, you're moving it along the X-axis in the
|
|
||||||
negative direction, and when you move it to the right you're
|
|
||||||
moving it in the positive direction along the same axis.
|
|
||||||
|
|
||||||
What really matters is that in QJoyPad, every axis represents
|
|
||||||
two opposing directions and can therefore have two different
|
|
||||||
keys. I only do it that way because thats how the device
|
|
||||||
itself works. I'd make the labels a little more intuitive, but
|
|
||||||
unfortunately what each axis corresponds to changes from
|
|
||||||
controller to controller and there's no way for me to know
|
|
||||||
which is which. If you don't know which axis to set for which
|
|
||||||
direction, move in the direction you want and see which button
|
|
||||||
lights up, or try using Quick Set instead.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.13. All of this is too complicated. Why isn't there a button for
|
|
||||||
Up?
|
|
||||||
|
|
||||||
Unfortunately, adding new features means increasing complexity
|
|
||||||
and making things more confusing. That's just how things go.
|
|
||||||
If you just want to have one key pressed when you press a
|
|
||||||
button on your joystick, try using just the quick set feature
|
|
||||||
of QJoyPad 3. There all you need to do is press what you want
|
|
||||||
to press on the joystick and then type the key you want that
|
|
||||||
button to trigger.
|
|
||||||
|
|
||||||
Also, if you preferred the simplicity of QJoyPad 2.1, it's
|
|
||||||
still available and quite functional, it just doesn't have
|
|
||||||
quite as many options and doesn't use a system tray icon. The
|
|
||||||
two versions of QJoyPad are compatible and can both be run on
|
|
||||||
the same computer without getting in each others' way (as long
|
|
||||||
as you rename one of them so they aren't both called
|
|
||||||
"qjoypad"), just not at the same time.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.14. Features and suggestions
|
|
||||||
|
|
||||||
5.14.1. Why can't I click with an axis, or move the mouse with a
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
5.14.2. Why doesn't QJoyPad do _____?
|
|
||||||
|
|
||||||
For the sake of my sanity, I didn't program every possible
|
|
||||||
thing I could imagine someone wanting to do into QJoyPad. I
|
|
||||||
added in the features that people were asking for and which
|
|
||||||
made sense, and I set somewhat arbitrary limits on what the
|
|
||||||
user can and can't do. Why set limits? Because if I didn't the
|
|
||||||
program would get far too bulky and too time consuming to
|
|
||||||
write. I tried to draw the line at what I thought was
|
|
||||||
reasonable use. No, you can't make the mouse click whenever
|
|
||||||
you move an axis... but why would you want to?
|
|
||||||
|
|
||||||
If there's something that you feel QJoyPad should be able to
|
|
||||||
do that it can't, let me know and I'll considering adding that
|
|
||||||
in future versions.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 6. Credits
|
|
||||||
|
|
||||||
Thank you to Erich Kitzmüller, author of xjoypad for the
|
|
||||||
inspiration to write QJoyPad and for the code that started me
|
|
||||||
off.
|
|
||||||
|
|
||||||
The development team for Psi, the Jabber client, also get a
|
|
||||||
lot of thanks for writing the tray icon code that I borrowed
|
|
||||||
and tweaked. Thank you for developing GPL and for helping
|
|
||||||
other developers! (Check out the Psi Website
|
|
||||||
[http://psi.affinix.com/])
|
|
||||||
|
|
||||||
Thank you also to everyone who has sent me an email about
|
|
||||||
QJoyPad. Knowing that my program is used and appreciated means
|
|
||||||
a lot, especially since that's about all I get out of my
|
|
||||||
programming. Open source is like teaching; it's very important
|
|
||||||
and means a lot for young and developing programmers, but it's
|
|
||||||
a time consuming and underpaid profession ;)
|
|
||||||
|
|
||||||
Finally, I need to offer a very warm thank you to Mark
|
|
||||||
Hannessen who graciously donated one Logitech Wingman
|
|
||||||
Rumblepad to the cause of QJoyPad. Without that, I simply
|
|
||||||
would not have been able to add support for multiple axes or
|
|
||||||
throttle controls, so version 3 might have never been made.
|
|
||||||
Thank you for your interest and for your support, Mark.
|
|
||||||
_________________________________________________________
|
|
||||||
|
|
||||||
Chapter 7. Licensing
|
|
||||||
|
|
||||||
This software is licensed under the terms of the GNU GPLv2.
|
|
||||||
Please see LICENSE.txt for a full text of the license.
|
|
||||||
|
|
Reference in New Issue
Block a user