Commit graph

59 commits

Author SHA1 Message Date
eviLu
7e4d4f3c20 Add support for setting vendor/device IDs (#10)
Sets vendor and product IDs, defaults to the prior default values.
This is needed for some games to be able to correctly identify the virtual devices since not all games support device indexes.

Reviewed-on: https://codeberg.org/annabunches/joyful/pulls/10
2026-09-12 16:22:43 +02:00
77ee020b2a Add hold option to axis-to-button (#13)
Reviewed-on: https://codeberg.org/annabunches/joyful/pulls/13
2026-09-12 16:09:10 +02:00
5e005478f1 Basic hat support. (#20)
Reviewed-on: #20
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-09-15 17:55:55 +00:00
62befa045a Remove debug statements. 2025-09-14 20:37:49 -04:00
2650159a81 Better deadzones (#19)
Reviewed-on: #19
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-09-14 23:11:56 +00:00
8a903e0703 Make enum values typed strings (#18)
This also moves validation into the parsing process and refactors a bunch of code related to the config.

Reviewed-on: #18
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-09-05 21:17:55 +00:00
8d2b15a7c8 Move initialization code closer to the appropriate structs. (#17)
Reviewed-on: #17
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-08-12 00:57:11 +00:00
d9babf5dc0 Improve config yaml schema (#16)
Leverages custom unmarshaling to be more declarative for our config specification.

Reviewed-on: #16
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-08-09 16:33:46 +00:00
329058b4b5 Support specifying physical devices via device file instead of device name. (#15)
Fixes https://codeberg.org/annabunches/joyful/issues/2

Reviewed-on: #15
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-08-05 20:02:45 +00:00
838449000c Support keyboard buttons and add presets. (#14)
Reviewed-on: #14
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-08-04 19:55:56 +00:00
9652df9366 Add device locking with a flag to disable for testing. 2025-08-01 13:49:03 -04:00
9d262977f9 Add text-to-speech support. (#13)
Reviewed-on: #13
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-29 19:59:54 +00:00
3196d4ea22 Add support for combining 2 axes into one virtual axis. (#11)
Reviewed-on: #11
2025-07-28 17:45:16 +00:00
35bedfa58c Remove debug statements. 2025-07-18 19:12:19 -04:00
97a1acd228 Add more deadzone specification options. (#9)
Reviewed-on: #9
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-18 23:10:12 +00:00
238faa9082 Fix button indexing. 2025-07-18 12:52:08 -04:00
46a28fda7a Add tests for EventBuffer (#7)
Reviewed-on: #7
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-18 16:42:22 +00:00
3ffccf4c08 Add tests for parseCode (#6)
Reviewed-on: #6
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-17 23:06:28 +00:00
6ef0cbd07c Allow all buttons and axes on virtual devices to be specified by either number or an explicit list. (#5)
Reviewed-on: #5
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-17 20:04:21 +00:00
712dcdbc07 Add more tests (#4)
This also refactors some of the code parsing logic.

Reviewed-on: #4
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-17 17:02:30 +00:00
a05dc9126d Add support for multiple keycode formats. (#3)
Additionally:

- Increases maximum supported buttons per output device to 74.
- Updates documentation.

Reviewed-on: #3
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-16 23:27:29 +00:00
e1940006d8 Support live re-loading of rules. (#2)
Reviewed-on: #2
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-15 23:38:53 +00:00
e617a6eda6 Implement axis targets, axis -> button and axis -> relative axis mappings. (#1)
Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-15 19:55:19 +00:00
ff38db6596 Big Refactor (#2)
Refactor Everything.

Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
2025-07-08 03:26:24 +00:00
a0949e719f Start rulemapping refactor to be more explicit about typing intentions. 2025-07-06 17:22:05 -04:00
08fc828b46 Refactor mapping rules. 2025-07-06 15:46:48 -04:00
b9d02e6482 More refactoring, start implementing proportional axis... 2025-07-05 18:18:25 -04:00
cefd6a22b8 Improve rule generation error logging. 2025-07-05 12:01:02 -04:00
be0a1cf24c Refactor rule generating code and check modes more thoroughly. 2025-07-05 11:56:48 -04:00
7ef62cbdc7 Rename mapping rules for consistent prefix. 2025-07-04 23:47:25 -04:00
3b75fd30e4 Use testify, write a couple more tests, and start a major refactor. 2025-07-04 23:40:34 -04:00
649fb5e377 An single test. 2025-07-04 20:28:38 -04:00
1f6c2517c0 Fix inverted buttons. 2025-07-04 19:11:39 -04:00
288a07eb73 Make modeless operation work more cleanly / remove implicit "main" mode. 2025-07-04 12:57:01 -04:00
2e501db084 Documentation updates. 2025-07-04 12:50:46 -04:00
db848db810 Fix up refactored rule targets. 2025-07-04 12:34:39 -04:00
c14ec074d1 WIP converting some functions into methods. 2025-07-04 10:14:04 -04:00
f773897509 Bugfixes. 2025-07-04 01:17:05 -04:00
4c76ad4f49 Start implementing timer logic for proportional axis checking. 2025-07-04 00:30:05 -04:00
bf1bb868e5 Start implementing a channel for timer-based events. 2025-07-03 18:11:37 -04:00
f12d119116 Formatting. 2025-07-03 17:10:56 -04:00
034d2a8718 Add ability to change modes via rules. 2025-07-03 17:10:46 -04:00
8fafe3d27c Debugging rule processing. 2025-07-03 13:47:54 -04:00
cc37904fad Initial implementation of modes, though they're not quite working. 2025-07-03 12:19:57 -04:00
15b9fa6ac0 Refactor and add some documentation (it'll be true soon enough) 2025-07-03 11:03:57 -04:00
f5283f33ca Add latched rules. 2025-07-02 20:05:36 -04:00
a078dcb193 Read events from multiple devices. 2025-07-02 17:01:17 -04:00
a5b59bf39e Fix combo rules and add some example config. 2025-07-02 14:53:52 -04:00
428749a519 Build rules from config. 2025-07-02 13:54:41 -04:00
50474f9fb2 Add an 'evlist' command to help get the exact strings for device names. 2025-07-01 23:30:24 -04:00