| BUCKLE-LIBINPUT(1) | User Commands | BUCKLE-LIBINPUT(1) |
NAME¶
buckle-libinput - Nostalgia bucklespring keyboard sound, libinput flavour
SYNOPSIS¶
buckle-libinput [options]
DESCRIPTION¶
Buckle emulates the sound of an old IBM Model-M space saver bucklespring keyboard while typing.
It runs as a background process and plays back the sound of each key pressed and released on the keyboard, just as if using an IBM Model-M. The sound of each key has carefully been sampled, and is played back while simulating the proper distance and direction for a realistic 3D sound palette of pure nostalgic bliss.
This flavour reads key events straight from the raw input devices in /dev/input through libinput, rather than from X11, so that it also works under a Wayland compositor and on the console. Those devices are not readable for ordinary users out of the box, and running it as root is no answer, as it then no longer reaches the sound daemon of the user session. The udev rule installed with this flavour, 70-bucklespring-libinput.rules, grants that access to the user at the local seat, and is inert until armed; read the comments in it for how, and for what it costs you.
libinput discards the key repeat the kernel generates for a held key and leaves repeating to its caller, so this flavour keeps its own clock. Nothing can tell it when a repeat has actually happened: a Wayland compositor sends no event per repeat, it tells each client the delay and the rate once and every client then runs a timer of its own, so the repeats that put characters on the screen exist only inside whichever window has the focus. What can be had is the delay and the rate themselves, and buckle asks in turn the compositor, which is authoritative under Wayland, then the input device, which is authoritative on the console, falling back on the kernel default of 250 ms and then one click every 33 ms. Should it still disagree with what you see on the screen, set it with --repeat-delay and --repeat-rate. Modifier keys never repeat. Use -r for the older behaviour, a single click however long the key is held.
The mouse clicks too: the buttons, and the scroll wheel, one click per detent. Two fingers scrolling on a touchpad make no sound, having no detents to make one for. Use --no-click to silence it, or to silence only some of it. Reading the mouse needs access to the pointer devices as well as the keyboard ones, which the shipped udev rule grants together.
The X11 flavour is buckle-x11(1).
Where it was built with the system tray, and there is a tray to put it in, an icon appears there with a menu for pausing, the volume, the output device and quitting. The volume is a submenu of levels with + and - at the ends of it, and rolling the wheel over the icon changes it without opening the menu at all. --no-tray leaves it out. The icon is a StatusNotifierItem, which KDE Plasma shows as it is and GNOME Shell shows through an extension; where nothing is listening there is simply no icon and nothing else changes.
OPTIONS¶
- -d, --device=DEVICE
- use OpenAL audio device DEVICE
- -f, --fallback-sound
- use a fallback sound for unknown keys
- -g, --gain=GAIN
- set playback gain [0..100]
- -m, --mute-keycode=CODE
- use CODE as mute key (default 0x46 for scroll lock)
- -M, --mute
- start the program muted
- -c, --no-click[=LIST]
- don't play a sound on mouse click; LIST narrows it to some of left, middle, right, side, extra, wheel, hwheel, all, none
- -h, --help
- show help
- -l, --list-devices
- list available OpenAL audio devices
- -p, --audio-path=PATH
- load .wav files from directory PATH
- -r, --no-repeat
- stay silent while a held key auto repeats
- --repeat-delay=MS
- wait MS before the first repeat, overriding what the compositor or the kernel says
- --repeat-rate=HZ
- make HZ repeats per second, likewise
- -s, --stereo-width=WIDTH
- set stereo width [0..100]
- --no-tray
- do not put an icon in the system tray
- -v, --verbose
- increase verbosity / debugging
- -V, --version
- show version and exit
AUTHOR¶
Written by Ico Doornekamp.
COPYRIGHT¶
Copyright © 2016-2025 Ico Doornekamp License GPLv2+: GNU
GPL version 2 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
This manual page is generated from the output of buckle-libinput --help and --version by help2man(1), around wording written by Dominik George for the Debian project.
SEE ALSO¶
buckle-libinput.service(8), buckle-x11(1), update-alternatives(1)
| October 2026 | Bucklespring keyboard sound |