<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/etc/udev/rules.d/50-zsa.rules, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/etc/udev/rules.d/50-zsa.rules?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/etc/udev/rules.d/50-zsa.rules?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-05-13T12:43:39Z</updated>
<entry>
<title>refactor(udev): drop hand-rolled ZSA rule, install qmk package instead</title>
<updated>2026-05-13T12:43:39Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=2d70af4ae06e1a528cf3b49e0249ea27fe9c8df2'/>
<id>urn:sha1:2d70af4ae06e1a528cf3b49e0249ea27fe9c8df2</id>
<content type='text'>
The qmk Arch package ships /usr/lib/udev/rules.d/50-qmk.rules covering
all major mech-keyboard vendors including ZSA's VID 3297, with the
same TAG+=uaccess semantics. Prefer that over maintaining our own
rules file.

- meta/base.txt: + qmk
- etc/udev/rules.d/50-zsa.rules: removed
- etc deploy script: drop the udevadm reload (only existed to support
  our custom rule; pacman handles reloads for package-shipped rules).
</content>
</entry>
<entry>
<title>feat(udev,flatpak): allow ungoogled-chromium to talk to ZSA keyboards</title>
<updated>2026-05-13T12:43:39Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=6ab4b0faef22b4fda4b6a3b45dca4c3858eb8802'/>
<id>urn:sha1:6ab4b0faef22b4fda4b6a3b45dca4c3858eb8802</id>
<content type='text'>
usevia.app uses WebHID to talk to /dev/hidraw* directly. Two layers
were blocking it:

1. Host: no udev rule existed for ZSA boards, so /dev/hidraw nodes
   were root-only. Add etc/udev/rules.d/50-zsa.rules covering the ZSA
   VID 3297 (ErgoDox EZ / Moonlander / Voyager) with TAG+=uaccess so
   logind grants the active session user access. Also include the two
   bootloader VIDs used during firmware flashing for completeness.

2. Sandbox: the chromium flatpak only sees /dev/dri by default. Add a
   --device=all override (flatpak has no finer-grained device knob).
   The host udev rule still gates which hidraw nodes the user can
   actually open, so this isn't a meaningful escalation.

Also wire `udevadm control --reload &amp;&amp; udevadm trigger` into the etc
deploy script so rule changes apply without a reboot or replug.
</content>
</entry>
</feed>
