5ca0712af207cc62b89684d4a4ee7e8d75ac0db5
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 Kitzml<6D>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<7A>ller. Yay for the power GPL gives to developers!
Description
Languages
C++
95.9%
CMake
2.7%
C
1.4%