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