Saitek X52/X52pro userspace driver for Unix/Linux
 
 
 
 
 
Go to file
nirenjan 75f0125f54 feat: Add layout file parsing to x52d
This change is an initial step to adding support for profiles in x52d.
This will allow the user to create a keyboard layout in an easy to
read/write text based format, and have it compiled into a flat layout
that's easy for the daemon to parse and load into memory. This layout
can then be used to map a user's action key to the actual input usage
needed. This is necessary, because keyboards don't actually send the
character that is typed, but just the position on the keyboard. For
example, on a French AZERTY keyboard, the A key would actually send the
usage for `Keyboard_q_and_Q`. The OS would translate that into the
letter 'a' (or 'A' if Shift key is held) and pass that to the active
window.

This commit adds the full logic necessary for the layout loading,
validation and compiling, as well as tests for the compiler and loader.
2026-04-04 23:16:51 -07:00
.github cleanup: Remove autotools build infrastructure 2026-04-03 22:36:10 -07:00
bugreport refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
cli refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
daemon feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
data/layouts feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
docker build: Migrate CI to use distro containers 2026-03-26 12:23:38 -07:00
docs build: Migrate includes to use libx52/ prefix 2026-04-03 22:54:48 -07:00
evtest refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
joytest refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
kernel_module cleanup: Remove autotools build infrastructure 2026-04-03 22:36:10 -07:00
libusbx52 refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
libx52 refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
libx52io refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
libx52util refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
m4 Disable -Wpacked compiler flag 2021-08-05 07:54:53 -07:00
po feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
subprojects/pinelog fix: Handle test case with PINELOG_STRIP_FILE_PATH 2026-04-03 23:50:18 -07:00
sys cleanup: Remove autotools build infrastructure 2026-04-03 22:36:10 -07:00
tools feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
udev cleanup: Remove autotools build infrastructure 2026-04-03 22:36:10 -07:00
vkm refactor: Remove vkm_ prefix from VKM source files 2026-04-03 23:54:58 -07:00
.gitattributes doc: Update for version 0.3.3 2026-03-12 11:34:54 -07:00
.gitignore feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
AUTHORS Add license clarification and authors file 2016-12-27 13:13:37 -08:00
CONTRIBUTING.md Update bug template and contributing guidelines 2021-09-19 16:39:49 -07:00
ChangeLog.md feat: Improve virtual mouse speed calculations 2026-04-01 22:49:04 -07:00
Doxyfile.in refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
DoxygenLayout.xml Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
INSTALL.md cleanup: Remove autotools build infrastructure 2026-04-03 22:36:10 -07:00
LICENSE Move license text to LICENSE file 2018-04-18 12:16:48 -07:00
PRIVACY.md doc: Fix bullets in PRIVACY.md 2026-03-03 18:00:03 -08:00
README.md doc: Add badges for SonarQube and CodeCov 2026-03-16 23:22:23 -07:00
SECURITY.md doc: Add security policy and reporting guidelines 2026-03-06 15:29:31 -08:00
Version doc: Update for version 0.3.3 2026-03-12 11:34:54 -07:00
config.h.meson feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
install-doxygen-docs.sh fix: Scope the list of man pages installed 2026-03-22 15:59:35 -07:00
meson.build feat: Add layout file parsing to x52d 2026-04-04 23:16:51 -07:00
meson_options.txt feat: Add meson support for configuring udev rules dir 2026-03-12 14:45:08 -07:00
usb-ids.h Replace hard-coded values with #define's 2020-07-08 17:35:17 -07:00
version-info build: Migrate to meson build 2026-03-12 10:20:01 -07:00

README.md

Saitek X52Pro joystick driver for Linux

Build/Test Kernel Module CodeQL Quality Gate Status codecov

This project adds a new driver for the Saitek/MadCatz X52 Pro flight control system. The X52 pro is a HOTAS (hand on throttle and stick) with 7 axes, 39 buttons, 1 hat and 1 thumbstick and a multi-function display which is programmable.

Currently, only Windows drivers are available from Saitek PLC, which led me to develop a new Linux driver which can program the MFD and the individual LEDs on the joystick. The standard usbhid driver is capable of reading the joystick, but it cannot control the MFD or LEDs.

Most of the extra functionality can be handled from userspace. See the individual folders for README information.

For data handling and privacy (e.g. GDPR/CCPA), see PRIVACY.md.

Note: This repository currently only provides commandline interfaces to control the MFD and LEDs. If you are not comfortable working in the commandline, then the gx52 project might be a better fit for your needs as it provides a graphical interface to control the MFD and LEDs.

Installing released versions

Beginning from version v0.2.3, prebuilt packages are available on Ubuntu PPA and the Arch User Repository.

Ubuntu

This project has been released as a PPA on Ubuntu. To install the package, run the following commands in the terminal.

sudo apt-add-repository ppa:nirenjan/libx52
sudo apt update
sudo apt install libx52-1

Arch Linux

This is available on the AUR

Building and installing from source

See INSTALL.md