---
name: "joy2key"
section: "1"
platform: "linux"
package: "joy2key"
version: "1.6.3-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/joy2key"
---

# joy2key(1)

Emulate keyboard events using a Joystick

## NAME

joy2key - Emulate keyboard events using a Joystick

## SYNOPSIS

**joy2key** Usage: joy2key \["Window Name"\]\
        \[ -rawconsole \]\
        \[ -terminal \]\
        \[ -X \]\
        \[ -axis \[(axis0) low hi\] \[(axis1) low hi\]  ...\]\
        \[ -thresh \[(axis0) low hi\] \[(axis1) low hi\]  ...\]\
        \[ -buttons \[(button0)\] \[(button1)\] \[(button2)\] ...\]\
        \[ -dev {/dev/input/js0} \]\
        \[ -rcfile {.joy2keyrc} \]\
        \[ -config {no default} \]\
        \[ -autorepeat {(freq) 5} \]\
        \[ -deadzone {(percent) 50} \]

note: \[\] denotes \`optional' option or argument,\
       () hints at the wanted arguments for options\
       {} denotes default (compiled-in) parameters

(note: defaults may have been changed by editing joy2key.c)

## DESCRIPTION

*joy2key* monitors the joystick (normally /dev/input/js0) and sends keyboard events to an X window, terminal, or raw console.  In the case of X, [xwininfo(1)](/xwininfo/1.md) is used to retrieve the window ID, which should not be a problem as this is a standard utility in most X11 distributions.  To find the symbolic name of a particular key, see include/X11/keysymdef.h.  In terminal mode, joy2key sends the ascii character given on the command line (that is, "joy2key -buttons a" means send lowercase 'a' when the first joystick button is pushed).  In raw console mode, please consult  the document "rawscancodes" included in this distribution for the proper scancodes.

### Options

- **-X**

  Send X events.  May be compiled out of your copy of joy2key.

- **-rawconsole**

  For SVGALIB and similar programs that put the keyboard in raw mode. Sends scancodes.  May be compiled out of your copy of joy2key.

- **-terminal**

  Send ascii characters.  May be compiled out of your copy of joy2key.

- **-axis**

  Specifies actions to send when passing low/high values for each axis. Specified in pairs, from axis0 ... axisN, that is, the X axis is axis0, then the Y axis (axis1), then if you have a joystick hat that may be axis 2 and 3, etc.  To figure out which axis is which, use the  *jstest* program that comes with the joystick driver.

- **-buttons**

  Similar to -arrows, but for buttons.  Goes from button0 ... buttonN, specifying key to send for each button on joystick.  Use the  *jstest* program to determine the numbering for each button.

- **-thresh**

  Specifies low/high thresholds to use (i.e. at what point moving the stick  or pressing the gamepad triggers an event) in pairs, for each joystick  axis.

- **-dev**

  Specifies joystick device to use.  Defaults /dev/input/js0 (first joystick)

- **-autorepeat**

  Turns on and optionally specifies autorepeat frequency, i.e. the number of times per second a button which is held down will be repeated.

- **-deadzone**

  Controls sensitivity when manually calibrating.

- **-rcfile**

  Sets the rc file to look in.

- **-config**

  Reads in a config in an rc file.

## FILES

*/dev/js\[01\]* The joystick driver.  Must be installed for joy2key to work.  Joy2key only supports versions 1.0+ of the joystick driver.  Older versions of  joy2key use the 0.8.0 joystick driver.  If for some reason a 1.0+ joystick driver does not work for you, use joy2key 1.2.

The Linux joystick driver is available at

http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/

*~/.joy2keyrc* Rc file searched for commands in -config.

The joy2key homepage is located at:

http://interreality.org/~tetron/technology/joy2key/

## BUGS

I don't like writing man pages, so this man page may be buggy :)

## COPYING

This is free software under the GNU General Public License.  See COPYING in the archive to more information.
