HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
tuxedocomputers
tuxedo-keyboard
C2019–2023
tuxedocomputers / tuxedo-keyboard · Archived

tuxedo-keyboard

This repository will no longer get any updates as the code here is now part of tuxedo-drivers https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers.

2Distinct people
2Mentions
0Explicit recommenders
301GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

This repository will no longer get any updates as the code here is now part of tuxedo-drivers https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year2 dated mentions

Observed mentions: 2019-11-18 06:34:06 UTC to 2023-11-13 08:59:18 UTC.

012019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

What Hacker News says

2 sources
I can't really confirm if it's the place to look at, but the tuxedo control center works in pair with their kernel module https://github.com/tuxedocomputers/tuxedo-keyboard As the name wrongly imply, it is not just about controlling the keyboard. At least on my laptop (an aura15 gen 2), a whole chunk of the control center is not available when the module is not loaded. Not sure if it will help but you might want to look into this module as well for your investigation.
In Tuxedo Pulse Gen 3
I recently wrote a user space driver for my Clevo laptop's backlit keyboard. I'm currently trying to convert it into a Linux kernel driver. I'll describe my approach. First of all, I had to realize that the keyboard was in fact controlled via USB. It seems obvious but other Clevo laptops did it via ACPI: https://github.com/tuxedocomputers/tuxedo-keyboard/blob/mast... https://bitbucket.org/tuxedocomputers/clevo-xsm-wmi/src/mast... I assumed my laptop worked the same way and wasted a lot of time dumping my laptop's ACPI tables and trying to figure them out. I even installed some Windows tools to decompile the WMI buffers. Didn't find anything. I was about to give up when someone on IRC set me on the right path and I was able to make progress. Even though I saw my keyboard on lsusb output, I never thought to look for a USB protocol. Learned
Read the rest
this one the hard way. Before I started, I emailed Clevo and asked for technical documentation on the keyboard. Their marketing department replied: "Ubuntu was not supported". I emailed Tuxedo Computers (mentioned above) and they were much more helpful: their developers shared a fan control application they wrote with me! It was great but the keyboard drivers were missing. So I decided to reverse engineer it. While not as complex as the VGA-to-USB device, the process of reverse engineering the keyboard was similar: 1. Boot Windows 10 with the proprietary driver 2. Start Wireshark 3. Capture USB traffic 4. Use the manufacturer's keyboard control program 5. Correlate the data sent to the keyboard with what I did 6. Document the structure of the messages For example, to set the color of a specific RGB LED on my keyboard, the following bytes must be sent to the device through a USB control transfer: 0xcc01kkrrggbb7f 01 = some kind of operation code kk = target LED rr = red gg = green bb = blue cc, 7f always surround all bytes (part of USB protocol?) I used hidapi-libusb to create a small program that sends those bytes to the keyboard: https://github.com/matheusmoreira/ite-829x/blob/master/ite-8... This user space driver gave me access to most of my keyboard's functionality on Linux. I used to have to boot into Windows in order to configure the keyboard lights -- not anymore! The keyboard also generates some custom key codes that are used by the proprietary Windows driver to implement some Fn hotkeys. I know this because the kernel logs these unknown key events. To implement this, I'll have to make a real kernel module that maps them into something user space can make use of. To this end, I've been studying the Linux kernel's documentation: https://www.kernel.org/doc/html/latest/driver-api/usb/ https://www.kernel.org/doc/html/latest/driver-api/usb/writin... https://elixir.bootlin.com/linux/latest/source/include/linux... The input_mapping, input_mapped, event and raw_event hooks seem especially relevant to my case: the custom driver just needs to process the custom key codes and let the generic Linux keyboard driver handle the rest. Might as well add sysfs entries for the LEDs but I don't know how to do that yet. I expect to end up with something like the open razer driver: https://github.com/openrazer/openrazer/blob/master/driver/ra... I used this site to gain a better understanding of USB itself: https://www.beyondlogic.org/usbnutshell/usb4.shtml
In Writing userspace USB drivers for abandoned devices

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.