Debian Patches

Status for bucklespring/1.5.1-3

Patch Description Author Forwarded Bugs Origin Last update
cross.patch Fix FTCBFS: hard codes build architecture build tools Helmut Grohne <helmut@subdivi.de> no debian 2026-08-31
libinput-mouse-click.patch libinput: click on mouse buttons and the scroll wheel
The X11 backend plays the ff-*.wav click sound on the left and right mouse
buttons; the libinput backend only ever looked at keyboard events. Handle
pointer buttons there too, so that the two backends behave the same.

Sound the scroll wheel as well, which neither backend did. A wheel reports
in the v120 units libinput took from Windows, 120 to a detent, and a high
resolution wheel sends fractions of that, so the remainder is carried to the
next event rather than rounded away. A detent has no press and release of
its own, so it makes a single click. Only a wheel is followed, not the
smooth two finger scrolling of a touchpad, which has no detents to click for.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-08-31
0003-add-Library.patch add Library Matin6725 <Matin6725@gmail.com> no 2025-03-21
0004-fix-stereo-width-option-not-working.patch fix --stereo-width option not working Danilo Rezende <50598421+returnDanilo@users.noreply.github.com> no 2024-02-03
usage-text-typos.patch fix a couple of typos in the usage text
The long option is spelled --audio-path, not --audi-path, and the library is
OpenAL. This matters more than it used to, as the manual pages are generated
from this text, so a wrong option name here becomes a wrong option name in
buckle-x11(1) and buckle-libinput(1).
tensorknower69 <latesight20@protonmail.com> no upstream, https://github.com/zevv/bucklespring/commit/3178013 2021-10-29
usage-text-help2man.patch capitalise Usage: and Options: in the usage text
The Debian packages generate buckle-x11(1) and buckle-libinput(1) from this
text with help2man(1), so that an option added to the program turns up in its
manual page without anyone having to write it down a second time. help2man
recognises the synopsis line and the start of the option list by matching
"Usage:" and "Options:", case sensitively, and puts everything it does not
recognise in one undifferentiated DESCRIPTION. Capitalising the two headings
is also what the GNU coding standards ask for.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-09-07
repeat.patch play a sound each time a held key auto repeats
Holding a key down made one click and then silence, however many characters
it went on to produce. Click for every repeat instead, and add --no-repeat
for those who preferred it the other way.

The two backends learn of a repeat differently. The X server marks the
KeyPress events it generates while a key is held, which the backend already
recognised and then deliberately threw away, and sends no KeyRelease in
between, so there it is a matter of no longer discarding them.

libinput drops the kernel's repeat events outright, "ignore kernel key
repeat" in evdev-fallback.c, and leaves repeating to its caller, so that
backend has to keep its own clock, and the question becomes how fast to run
it. Wayland is no help in the way X11 is: a compositor sends no event per
repeat at all. It tells each client the delay and the rate once, in
wl_keyboard.repeat_info, and every client then runs a timer of its own, so
the repeats that put characters on the screen exist only inside whichever
client holds the keyboard focus and there is nothing for a bystander to
follow. The two numbers can be had for the asking, though, and they are
worth asking for, because a compositor keeps its setting to itself: the
kernel's repeat, which is what EVIOCGREP on the device reports, stays at its
250 ms and 33 ms default however the desktop is configured. Here GNOME is
set to 500 ms and 30 ms, so timing the clicks off the device would start them
a quarter of a second before the first character appeared and leave them
running ahead for as long as the key was held.

So the libinput backend connects to the compositor for the sole purpose of
reading repeat_info, and keeps the connection polled, since the setting can
change while we run. Failing that it asks the device, which is the right
answer on a console, and failing that it falls back to the kernel defaults.
--repeat-delay and --repeat-rate override the lot.

The kernel repeats modifiers too, unlike XKB, so the libinput backend leaves
them out; hearing shift chatter while it is held would be odd, and it also
keeps a held key from drumming out the mute sequence of three taps on scroll
lock.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-09-07
mouse-event-selection.patch --mouse, to choose which mouse events click
Both backends now sound the scroll wheel as well as the buttons, and between
them they can see rather more of a mouse than the two buttons the X11 backend
started with. Not everybody wants all of it: a wheel that clicks is charming
until you scroll a long page, and the thumb buttons are not what anyone
remembers a Model M for.

Add --mouse, taking a comma separated list of left, middle, right, side,
extra, wheel and hwheel, with all, the default, and none at the ends of it.
The list is parsed once into a bit set that both backends consult through
mouse_enabled(), so the same name means the same thing whichever flavour is
running, even though X numbers the buttons from one and the kernel calls them
BTN_LEFT and friends.

This also fills in what the X11 backend had been ignoring. It played only
buttons 1 and 3; it now knows the middle button, the wheel as buttons 4 to 7,
and the thumb buttons as 8 and 9. A wheel detent reaches X as a press and a
release together, so only the press is sounded, one click per detent, which
is what the libinput backend does with the v120 units it gets instead.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-09-08
version-option.patch add --version
Every other program has one, and help2man wants one: without it the version
in the manual page footer has to be passed in on the side, from the packaging,
where it can quietly fall out of step with the program.

The output follows the GNU coding standards, so help2man makes the COPYRIGHT
and AUTHOR sections of the page out of it and neither can drift. It goes to
stdout, as the standards say.

The version and the package name are taken from PACKAGE_VERSION and
PACKAGE_NAME, the names autoconf uses, behind the customary

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

and #ifndef fallbacks to what the shipped Makefile passes in. Should the
build ever move to autoconf and automake, AC_CONFIG_HEADERS is then the whole
of the change: the fallbacks stop being reached and nothing here is touched.
The include sits above the system headers, which is where it has to be, as
config.h is where autoconf puts the feature test macros that decide what those
headers declare.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-09-08
usage-to-stdout.patch print the usage text on stdout when it was asked for
--help went to stderr, which makes it awkward to pipe into a pager or a grep
and is not where the GNU coding standards put it: output asked for belongs on
stdout, and only a complaint about the command line belongs on stderr.

Pass the exit status down to usage() and pick the stream from it, the usual
arrangement, so --help still reads as an answer while an unparseable option
still reads as an error. --version already went to stdout.

Programs that document themselves with help2man no longer need to be run with
--no-discard-stderr once both do.
"Barak A. Pearlmutter" <bap@debian.org> no 2026-09-08

All known versions for source package 'bucklespring'

Links