Commit Graph

24 Commits (16fe2c25c2821bd33cd539eedd48239846f0c593)

Author SHA1 Message Date
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
nirenjan de465fbf6a refactor: Rename daemon sources to remove x52d_ prefix 2026-04-03 23:50:18 -07:00
nirenjan 836206d93f build: Rename source files to remove prefixes
This change makes it simpler to add new sources in the future, they are
already grouped by functionality, so the prefix does nothing.
2026-04-03 23:02:43 -07:00
nirenjan 9c1eaaa4b2 build: Migrate includes to use libx52/ prefix
As part of the refactor, have the sources include the public headers via
the libx52 prefix, instead of relying on the include directories
approach in meson.build
2026-04-03 22:54:48 -07:00
nirenjan 18c0c72c74 Add client communication library
This change adds a library to connect to the X52 daemon and send
commands and receive responses. The library is a thin wrapper around the
POSIX sockets API. While a client could implement the functions
themselves, the library makes it a little bit easier, as well as
allowing for third-party clients to connect to and communicate with the
daemon.
2021-11-04 10:48:59 -07:00
nirenjan e7d91fd3a4 Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
nirenjan 5fcac86999 Fix gitignore to ignore generated files
[skip ci]
2021-09-03 12:25:41 -07:00
nirenjan ab946b4a1a Add device manager implementation 2021-07-16 00:30:27 -07:00
nirenjan cbe7f00a5a Add daemon framework
This change adds the daemon configuration parser and command line
argument parser. This also adds the associated strings to the
translation files, and integrates the daemon into the existing autotools
build framework.
2021-07-15 15:53:56 -07:00
nirenjan fc8e7b6b95 Add new generated files to .gitignore 2021-07-15 15:47:39 -07:00
nirenjan d3c55da89d Create HID driver for Saitek X52 and X52 Pro
This change replaces the old USB driver with a more modern HID driver.
This uses the HID framework, which means that we don't have to deal with
the USB transport, and only have to parse and report input events.

[skip ci]
2020-08-12 01:11:15 -07:00
nirenjan 1188bea444 Use TAP for tests
Prior to this change, the tests were using the automake simple test
harness. The limitation was that for each set of test cases (e.g.
timezone tests), even if one test failed, it would report every test in
that set as failed. Migrating to TAP allows fine-grained reporting on
every single test case, and allows better investigation into checking
which individual tests failed.

This change also updates the timezone tests to explicitly mark the ones
that check when the timezone is Pacific Daylight Time as expected to
fail. It also updates the clock tests to improve the formatting of the
test case identifier.
2020-06-06 08:33:30 -07:00
nirenjan 758d1d05d2 Update gitignore with Doxygen man output directory 2020-06-06 08:16:52 -07:00
nirenjan 374fd94fcd Update gitignore list with additional generated files [skip ci] 2020-05-26 16:33:58 -07:00
nirenjan 93f1091b95 Ignore additional generated files
[skip ci]
2020-05-22 23:32:17 -07:00
nirenjan 132b72f562 Ignore generated .mo files
This change cleans up a few of the dummy translations in xx_PL using the
open source [Poedit](https://www.poedit.net) editor. Since the editor
also generates the corresponding .mo file, it makes sense to add .mo as
an ignored extension.

[skip ci]
2020-05-22 13:36:53 -07:00
nirenjan db8629a6a9 Add automatically generated objects to gitignore 2020-05-20 13:15:04 -07:00
nirenjan 665dba187d Add build directory to gitignore 2020-05-18 14:23:08 -07:00
nirenjan b776101cb6 Add test-driver to .gitignore 2017-08-01 22:05:03 -07:00
nirenjan ea14d1132d Add implementation of stub libusb library
This commit adds the implementation of the stub libusb library in order
to use it in an LD_PRELOAD environment. This also adds the utility
programs to create a device list and sample output to compare against.
2017-07-27 16:43:01 -07:00
nirenjan f0b2e6fecc Add generated objects to .gitignore 2015-12-10 21:56:03 -08:00
nirenjan c87e785a18 Restructure code layout
Copy files to individual folders. This makes it cleaner to add new
functionality in the future.
2015-12-08 21:46:42 -08:00
Nirenjan Krishnan f1fdbe9c6a Move USB control messages to their own file
With this change, the X52 USB control API is moved to it's own
file in order to better separate the code and make it cleaner.

This change also renames the kernel module to saitek_x52.
2012-10-05 23:21:56 -07:00
Nirenjan Krishnan 42642d5905 Add initial version of X52pro joystick driver
This is pretty much bare bones code to get a basic sysfs filesystem
in place. It has only code to create sysfs files for the 3 MFD lines.

Right now, this needs to be enabled by unplugging the joystick,
insmod'ing the x52joy.ko module, rmmod'ing the usbhid module and
replugging the joystick. We don't yet have a /dev/input/ interface
and there's no interrupt message handling yet.
2012-09-30 12:38:29 -07:00