Thanks,
The way I handle the permissions is just to `chown root` and `chmod u+s`
the binary. I have a line that runs it in daemon mode at the top of my
~/.xinitrc file for convenience. The sysctl variable name and values it
can be set to are hard-coded. I could split the sysctl calls into a
separate binary to minimize attack surface area, making a guess at your
reference to a "suid helper". Any examples or literature on the topic
you might know about would be helpful, if there's more to it than just
that. I'm a programmer, but I generally don't write code that runs as
root or do much system administration, so my knowledge in the area is
rudimentary.
Yes, initially I had experimented with disabling the /dev/wsmouse device
using xinput, but that is buggy, unfortunately. When reenabling the
device, it causes audio playback to stutter for a moment and it causes
keyboard input issues, like the return key will start repeating
endlessly until I hit it again (at least on NetBSD 11 RC3 and RC4). You
have to `enable` the device 2 times to get things back to a normal
working state. Obviously, the daemon is going to be disabling/reenabling
the device constantly, so that's not really workable. I didn't find
anything in wsconsctl, wsconsio.h or manual pages related to wscons that
I could use to disable the trackpad. It was in the `pms` man page that I
found a sysctl variable that would do the trick. Since it is a the
trackpad level, it only disables trackpads, not mice, which is
convenient. If people thought this was useful enough to go into NetBSD
proper, it might be good to have a generic enable/disable switch
(whether a sysctl variable or something else) for trackpads rather than
relying on the finger_high trick.
-thezerobit
On 05/26/2026 12:55 am, Aryabhata wrote:
Hey,
Thanks for sharing this! Dealing with palm-press trackpad jumps on a
ThinkPad is incredibly annoying, so this is definitely a welcome for
anyone running NetBSD on a laptop.
The finger_high sysctl trick is a pretty clever workaround to bypass
the driver interpretation entirely. One quick question on how you're
handling it: since writing to sysctl knobs usually requires root, does
the daemon have to run with elevated privileges? Running an X-centric
tool as root can be a bit sketchy security-wise, so I'm curious if
you've looked into separating the X11 listener from the actual sysctl
call, or using a small suid helper.
Also, out of curiosity, did you run into issues trying to use
user-space tools like xinput or wsconsctl to toggle the device? I know
if you're using the generic wscons driver it tends to multiplex
everything into one stream, which makes isolating just the trackpad a
massive pain—assuming that's why you went the kernel route.
Either way, nice work getting this up.
Cheers,
Aryabhata
On Tue, 26 May, 2026, 3:43 am thezerobit, <[email protected]>
wrote:
Hi,
I hacked syndaemon to work on NetBSD. Codeberg page:
https://codeberg.org/thezerobit/syndaemon-netbsd [1] . Direct
download:
https://codeberg.org/thezerobit/syndaemon-netbsd/archive/main.tar.gz
[2]
If you don't know what syndaemon is, it's a little daemon that pays
attention to keyboard activity in X and disables the trackpad while
you
are typing. This is to prevent unintentional mouse movements and
clicks
on laptop trackpads located just below the keyboard. This is pretty
much
essential when working on my Thinkpad T580. There is a README.txt
in the
repo which explains how to compile and use the tool.
The reason this is a bit of a hack is that the only way to safely
disable the trackpad that I could find was to set the sysctl
variable
"hw.synaptics.finger_high" to a high enough value that the driver
no
longer registers interaction. Feel free to contact me directly with
feedback or suggestions on how to improve it or if you need help
getting
it working.
-thezerobit
Links:
------
[1] https://codeberg.org/thezerobit/syndaemon-netbsd
[2]
https://codeberg.org/thezerobit/syndaemon-netbsd/archive/main.tar.gz