Commit graph

54 commits

Author SHA1 Message Date
1ac689cd04 Add the initial rough skeleton for a config tool. 2025-08-11 21:44:05 -04: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
a18275f53b Remove obsolete comment. 2025-07-01 23:08:47 -04:00
970b3ded6e Implement rule matching for a couple of basic rule types. 2025-07-01 17:49:23 -04:00
5b3b70da14 Implement config file parsing for physical devices. 2025-07-01 13:23:21 -04:00
faa51bdda2 Implement basic config file parsing and create virtual devices from config file. 2025-07-01 11:27:14 -04:00
eeebb6d0b1 Small fixes for config parsing, and start plumbing it into our main program. 2025-06-28 22:30:59 -04:00