Replying to @⁨recursive_recursion@piefed.ca⁩

They are talking about the firmware that runs on the device. The user front-end to easily configure it is another story. Hopefully it’s going to quickly get support for Linux as they are starting from well established Open-source projects for keyboard firmware (QMK and ZMK). If it works like for keyboards, you will be able to configure your mouse with something like VIA that runs on Chrome/Chromium (and maybe one day Firefox ?) using the WebUSB API.

I have 2 keychon keyboards, an old one and a newer one with QMK firmware. Both have worked perfectly well for Linux. The QMK one is easy to configure with VIA once the device permissions are sorted out.

Replying to an earlier post

You can configure Keychron peripherals via their website - Keychron Launcher.

It works on Linux, but there are two caveats:

  1. Requires Chromium web browser. I’ve tested it with Ungoogled Chromium and it worked fine.
  2. In some Linux distributions you will have to set up udev rules, to allow access to USB devices

I’ve tested it with my Keychain K3 keyboard and M4 mouse and it works.

I agree a compatibility with ex. Piper would be neat though

Replying to @⁨ElectroLisa@piefed.blahaj.zone⁩

Be careful with this. These udev rules usually grant uaccess to your entire keyboard. uaccess is explicitly disabled for keyboards by default because it presents the event device to all of userspace, which allows any unprivileged app to log all key presses. This includes any malicious scripts running in a browser. If you do want to set up these rules, use them only for the single session you’re setting up your device and don’t type any passwords with it active, or change them immediately after (you won’t be able to remove them without your sudo password).

For the same reason, stop using OpenRGB for devices that don’t have kernel drivers.

Replying to an earlier post

You’re right, one of the guides I’ve found explicitly mentioned that, and recommended toggling the rules on only when you need it.

If I’m not mistaken, you can make rules per device ID. Keychron devices show up as a keyboard/mouse and a “Link” device. You could make a passthrough rule just for the Link, thus not granting access to the actual input device.

Could you elaborate on the OpenRGB thing? I’ve used it a few times but never paid attention to the rules it asks for

Replying to @⁨ElectroLisa@piefed.blahaj.zone⁩

If I’m not mistaken, you can make rules per device ID. Keychron devices show up as a keyboard/mouse and a “Link” device. You could make a passthrough rule just for the Link, thus not granting access to the actual input device.

That’s great, just be sure your rules are specific enough for that device but didn’t rely on some randomness for detection. I.e. Matching on the current evdev or hidraw devnode is bad because it can shift with more devices being added, changing ports, or some randomness in enumeration speed. Instead, do an attribute walk on the devnode to find specific unique attributes for that node, such as VID + PID + subsystem + bInterfaceNunber should be unique. Things like names and phys patch aren’t guaranteed to be unique or consistent in different operating modes. You’ll also want to check the devnodes of the other interfaces to be sure they won’t match by doing a test.

The commands for those things are: udevadm info -a /path/to/devnode udevadm test /path/to/devnode

Could you elaborate on the OpenRGB thing? I’ve used it a few times but never paid attention to the rules it asks for

Sure. While not technically necessary for some devices, they have pretty open blanket udev rules. This is because most keyboard devices require the use of hid reports directly to the device to make changes.

From their page:

On Linux, OpenRGB needs permission to access the hardware interfaces used for RGB control. These include USB and I2C interfaces. To make accessing these interfaces easier, OpenRGB provides a udev rules file that tells your operating system to allow your user account control over these hardware interfaces, allowing OpenRGB to run without root access while still controlling the hardware.

Notice the complete lack of warning about any security issue from doing this.

If they wanted to be secure they could make a root level daemon that does all the hardware interfacing, and provide a dbus interface managed through polkit to allow making those changes from the userspace UI.

Replying to @⁨recursive_recursion@piefed.ca⁩

It’s a fucking USB HID mouse? OS agnostic. In an ideal world, the buttons should just be really big number scancodes that aren’t mapped to anything. You can then do something like this (says sway but runs on basically everything X and Wayland). Research before buying a mouse. Actually, no, just buy it from a local store, and if the buttons aren’t functioning as buttons without OEM bullshit, return as defective.

purisa.meRemapping Keys on Sway - purisa.meA simple way to remap keys on Sway WM.

Replying to @⁨_haha_oh_wow_@sh.itjust.works⁩

I got one of those crazy looking ones from gravastar, after owning one of those super expensive razer mice’s that came with a big ass acrylic show cases like you bought the queen’s crown. After that I owned one similar from Corsair and before those I owned a mad catz rat 9.

I actually really like the gravastar one, but I don’t game competitively.

Replying to @⁨inari@piefed.zip⁩

I checked the repo but there’s no code? Just some HTML etc.
It seems like they just plan for this thing to exist but it doesn’t actually exist yet?

EDIT: Their explanation:

This repository is currently in its early setup phase.

At the moment, the repository mainly contains project scaffolding, policy files, and the initial project direction. Firmware sources, board support, build instructions, and flashing guidance are still being prepared.

That means zgm is early, but it is intentionally early in public. The goal is not to wait until everything is finished before opening the door. The goal is to make the long-term direction visible and let the project grow into a useful open firmware platform in the open.

I’m not sure if that means that they still have to make it, or that they just have to finish it before publishing it?

Open source gaming mouse firmware built on Zephyr RTOS. Low latency, full customization, extensible driver model. - Keychron/zgmGitHubGitHub - Keychron/zgm: Open source gaming mouse firmware built on Zephyr RTOS. Low latency, full customization, extensible driver model.Open source gaming mouse firmware built on Zephyr RTOS. Low latency, full customization, extensible driver model. - Keychron/zgm