commit 956a87604c635551ca55fa8ffcd1ce973178906f
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Mon Nov 2 08:34:41 2026 +0000
dutch debconf translation (closes: #1152615)
From Frans Spiesschaert
commit b8a261afcdc3624d36114aeecd217ddf412ecc82
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Fri Oct 30 00:25:07 2026 +0000
address DFSG NEW queue review of 2.0.0-1
debian/copyright: add stanzas for man/*, debian/po/*, and various
clips/*/.
Swizzle upstream pointers.
Edit and update buckle-libinput and buckle-x11 README.Debian files.
commit 242ba269cc65e8defaa45dbf7ea65bdd67b24d91
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:47:14 2026 +0000
swizzle debian/watch
commit 94d09d9e254de8b24c8994ba8128974a846444cd
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:41:06 2026 +0000
update the packaging for 2.0.1
The libinput flavour now asks logind which session it belongs to, so
build-depend on libsystemd-dev; shlibdeps picks up libsystemd0 from
there, which an elogind system has as well.
README.Debian said the input group was the only option without
systemd-logind or elogind, and for this flavour it no longer gets you
anywhere: it stops when logind has no answer about its session, whatever
the permissions on the devices say. Say in the uaccess section why the
program bothers with the session at all, a revoked ACL not reaching a
program that already has the devices open, and replace the note about
the per-device "Permission denied" message, which has not been printed
without -v since 2.0.0.
debian/copyright: a stanza for tests/, which came from David Csiki's
fork along with the session handling it tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit 4635e988388fc7d3677139c4025fb415b5b98e79
Merge: 69f1a87 f12c259
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:37:46 2026 +0000
Merge branch 'master' into debian/sid
Upstream 2.0.1.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit f12c259dcf2aa26f68502478976426fef54201c1
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:28:59 2026 +0000
2.0.1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit bfa27f346cc68d0d4b8c9aedf1ac3b8b236d0d6e
Merge: de9d716 1078c54
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:30:15 2026 +0000
Merge branch 'csdivad-master'
Restrict the libinput flavour to the input devices of its own login
session's seat, and to the times when that session is active, from David
Csiki's fork. A udev grant is looked at when a device is opened and not
after, so a buckle-libinput started at the console went on reading the
keyboard after the seat had passed to someone else; it now closes the
devices while its session is inactive and drops what it had buffered
along with any key it was repeating. The seat is asked of logind rather
than being hardcoded to seat0.
Also from there: the X11 flavour asked XRecord for the event types from
KeyPress to ButtonReleaseMask, a mask where a type was meant, which also
took in MotionNotify, EnterNotify and LeaveNotify, so every pointer
motion on the display was shipped through the RECORD connection to be
thrown away; and a key held while the repeat rate went to zero kept
repeating, the rate being looked at only when the key went down.
The three audio commits on that branch are reverted on it rather than
merged here: they are written against the alure and
one-source-per-keycode main.c of e41a021, which this branch has left
behind. The revert messages say what became of each.
The warning about no input device being opened is kept, and now asks for
the session state first: with the session inactive every device is
refused by design, which is the arrangement working rather than
something to complain about.
configure.ac gains libsystemd, Makefile.am a make check target, and the
tests the fork wrote for the session handling come with it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit 1078c54d4aac4d53f2f7636d1867dc453bb4a4e9
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:29:52 2026 +0000
build: enable subdir-objects for the test in tests/
The first source file outside the top directory draws a warning from
automake and a paragraph of advice: the object is put in the top
directory for now, a future major version will put it beside its source,
and the option says which is meant. -Wall is on, and a build of this
should be quiet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit a1ac63014647bcbf32eabb34b82be5b3308caabf
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:25:57 2026 +0000
libinput: ask the login monitor, not the session file, per event
sd_session_is_active() opens and parses the session's file under /run,
and it was called once per keystroke, once per mouse click and once per
key repeat. The login monitor is already polled alongside it, becomes
readable when anything about any session changes, and nothing else makes
it so, which makes the poll alone enough to tell whether what the main
loop last learned still holds: the file is then read once per change
rather than once per event. session_ready() becomes
session_unchanged(), and neither it nor its callers need the session id.
The main loop is where the answer is acted on, and it already reads the
session only when the monitor has fired, so nothing moves there.
Count the polls rather than the session reads in the test that an event
making no sound is dropped without either, and silence the warning the
stub for poll() draws: glibc declares it write_only in that argument, so
reading the descriptor back looks to the compiler like reading
uninitialized memory.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit bb9583af087d39be60bd3d008fe749e22a4dc9bf
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:24:05 2026 +0000
libinput: fall back to the graphical session when ours has no seat
A seated session is what the session restriction needs, that being where
the input devices are, and the fallback to the owner's graphical session
was reached only when there was no session of our own to find. A
session on no seat was accepted and then failed on the seat, so running
buckle-libinput from an ssh login, where logind gives a session and no
seat, stopped with "Failed to monitor login session: No data
available" where before it had read seat0 and worked. Ask for the
graphical session in that case too.
The units shipped here are user units, and a process of a systemd user
instance is in no session at all, so they went down the fallback already
and are unaffected.
Say in the README and the manual page what the restriction actually
does, and why a revoked ACL is not enough on its own, rather than
leaving the reader to infer it from a list of behaviours.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit 60a5be3dacdea8be7c19214c7b863d5131935466
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:22:17 2026 +0000
Revert "Preload audio buffers before capturing input"
This reverts commit 6a57e0ae2255f78aae041100a539832ebb8e41a3.
Prepared for a merge into barak/master, which loads clips through
libsndfile rather than alure, keeps several recordings per key, and
switches between clip sets while running, so there is no longer a flat
array of buffers to fill at startup.
Note that preloading would not have cured the crash it looks like it
might: a source was still taken per keycode and kept, so the 256 OpenAL
Soft allows ran out just the same. Master plays through a pool of
voices instead.
tests/test-audio.c goes with it, having nothing left to test.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit ddb9165d8c8594f716f05e15408f820c9e1a857b
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:22:08 2026 +0000
Revert "Apply playback volume through OpenAL listener gain"
This reverts commit b508de959c09e7f38021b83e7befe5c4f8b4fc66.
Prepared for a merge into barak/master, where the sources this walks are
gone: clips are played through a pool of voices, each given its gain
along with its buffer. Setting the gain on the listener once is still
the tidier answer, and is left for master to do in terms of its own
code rather than carried in as a patch to code that is no longer there.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit 05c9d7813540bd4403b9f90defa75664ecc538ea
Author: Barak A. Pearlmutter <barak+git@pearlmutter.net>
Date: Thu Oct 29 22:22:00 2026 +0000
Revert "Skip audio work for muted key events"
This reverts commit c3ecb01eb755266762e95ba5e16e91d1760c0ba8.
Prepared for a merge into barak/master, where play() already wraps the
whole of the binding and the playing in "if (!muted)". The only
difference left is that this returns before the clip is loaded, where
master goes on filling its cache while muted, which is the behaviour to
keep: the first key after unmuting then sounds like any other.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ga4Wwe789FVWUByYUqUkkh
commit c3ecb01eb755266762e95ba5e16e91d1760c0ba8
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 12:14:04 2026 +0100
Skip audio work for muted key events
commit b508de959c09e7f38021b83e7befe5c4f8b4fc66
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 12:13:23 2026 +0100
Apply playback volume through OpenAL listener gain
commit 61729f5f5d4e7ff707342c2021ca79b7b4d9ccea
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 12:12:56 2026 +0100
Cancel active key repeats when repetition is disabled
commit 6a57e0ae2255f78aae041100a539832ebb8e41a3
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 12:12:38 2026 +0100
Preload audio buffers before capturing input
commit 2e186fceaed1bd66fc4ede7fc8d39b0aae803f4b
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 12:11:32 2026 +0100
Avoid session checks for irrelevant input events
commit c5dd2461c01d405e6851ba5fc17f30a370ab16dd
Author: David Csiki <csdivad@gmail.com>
Date: Sun Oct 25 11:46:26 2026 +0100
Restrict libinput events and repeats to the active login session
Among the 1 debian patch available in version 1.5.1+git.1.e41a021-2 of the package, we noticed the following issues:
Automatic checks made by the Debian l10n team found some issues with the translations contained in this package. You should check the l10n status report for more information.
Issues can be things such as missing translations, problematic translated strings, outdated PO files, unknown languages, etc.