Manual section: | 1 |
---|---|
Manual group: | Urchlay |
Date: | 2020-05-17 |
Version: | 0.2.0 |
jsmond [-i interval] [-k keycode | -b button] [-d dir] [-j name] [-D] [joydev [joydev ...]]
jsmond lets you play games with your joysticks/gamepads without the screen saver activating due to lack of keyboard/mouse input.
Multiple joystick devices can be monitored. By default, jsmond monitors up to 16 devices, named /dev/input/js0 through js15. These devices don't have to actually exist: they can come and go as joysticks are plugged in and unplugged.
Every interval milliseconds (250, or whatever -i is set to), jsmond checks to see if there's been any activity on any of the devices it's monitoring. If so, it sends a fake keystroke or mouse button click, which the screen saver will see as activity.
It's recommended to let jsmond find the joysticks itself. However, you can pass one or more device names (or just numbers) if the default doesn't do the right thing for you. In this case, only these devices will be monitored (no search is done).
jsmond should be started from your .xinitrc or whatever X startup script your windowmanager or desktop environment uses. By default, it will exit when the X server does. There's no PID file: use "pkill jsmond" if you need to kill the daemon.
--help | Print usage summary |
-i <millis> | Interval to check for activity, in milliseconds. Default: 250. |
-k <keycode> | Send this keycode when activity is detected. Default is to search the keymap for an unused code. If you set this manually, it should be a keycode that doesn't map to a keysym in your usual keymapping (use "xmodmap -pk" to find one). |
-b <button> | Send a click of this button when activity is detected, rather than a keystroke. Should be a button that applications don't normally respond to (6 or higher). |
These options are intended for developers and really shouldn't be needed for normal use:
-d <dir> | Path to the directory containing joystick device nodes. Default is "/dev/input". |
-j <name> | Name of joystick device nodes, without any numeric suffix. Default is "js". |
-D | Debug mode: run in foreground and print verbose messages. |
A space is required between an option and its argument, as shown above. Use e.g. -i 300, not -i300.
By default, jsmond searches for and monitors all the joysticks it can find, up to MAX_STICKS (normally 16; see the --help output to find the compiled-in default). You can override the search on the command line by providing one or more joydev arguments, in which case only those devices will be monitored.
joydev arguments can be either a path to a device node (e.g. /dev/input/js0 or similar), or a number, which will have the default device basename prepended to it. This is normally "/dev/input/js", but can be changed via the -d and -j options. Note that (currently) all the joystick devices have to be in the same directory for jsmond to detect hotplug events!
Note that it's not an error to give nonexistent joystick device names. jsmond will wait for devices to come into existence (e.g. as created by udev).
If the screensaver is configured to lock the screen, and it has already activated, pressing a joystick button/direction will just bring up the password dialog, same as pressing a key or mouse button would.
Without the -D option, the exit status is 0 (success) if jsmond successfully forked into the background.
A non-zero exit status means an error in the command line arguments, or else fork() failed. No daemon will be running in this case.
With the -D option, jsmond never exits until it's killed.
There's no way to distinguish between an invalid device name and a device name that doesn't happen to exist yet because its device hasn't been plugged in yet. Try to avoid typos, if you really have to use device names (better to autodetect).
jsmond isn't portable. It only works on Linux, at least for now, for three reasons:
jsmond is released under the WTFPL: Do WTF you want with this.
jsmond was written by B. Watson <yalhcru@gmail.com>.
jstest(1), jscal(1), sdl-jstest(1), sdl2-jstest(2)