QJoyPad 3 Documentation

Distributed with QJoyPad 3.4; available online at
http://qjoypad.sourceforge.net/doc/doc_index.html

Nathan Gaylinn

   wren42@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  Kitzmlü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. This software is GPL!

   Check  out  LICENSE.txt or http://www.gnu.org/licenses/gpl.txt
   for  details!  The  bare  bones  of  it  is,  this  program is
   distributed  in  open-source  form so that others may share it
   freely,  learn from it, or modify it as they see fit. However,
   under no circumstances can it be sold!

   This  code  was  written entirely by Nathan Gaylinn (excepting
   the  code used for displaying a tray icon that is adapted from
   the  Psi source [http://psi.affinix.com/]) but is based on the
   idea of xjoypad by Erich Kitzmüller.

   Yay for the power GPL gives to developers!
