Skip to content

Add Config File Support for Advanced Multiplexing #6

@ruffsl

Description

@ruffsl

Summary:
Currently, CtrlAssist is configured via CLI arguments, which is simple but limits extensibility for more complex setups. Adding config file support would enable advanced scenarios, such as:

  • Using more than two hardware controllers per virtual device
  • Supporting multiple virtual devices, each with their own primary/assist pairings (e.g., for 2v2 player-vs-player with four controllers split into two pairs)
  • Expressive, persistent, and shareable configuration for per game setups

Expected Behavior:
Users can specify controller mappings, mux modes, and other settings in a config file (e.g., TOML, JSON with comments, or YAML), allowing for more flexible and complex configurations than the CLI alone.

Current Behavior:
All configuration is done via CLI arguments, which is limited to simple use cases (e.g., only two controllers per virtual device, one virtual device at a time).

Format Considerations:

  • TOML: Readable, widely used in Rust, but limited in expressiveness for advanced references.
  • JSON (with comments): Familiar, but lacks native comments and references.
  • YAML: Most expressive (anchors, references), but adds parsing complexity.
  • Preference is for a format that balances readability, ease of parsing, and future extensibility.

Suggested Solution:

  • Design a config schema for controller-to-virtual-device mapping, mux modes, and other options.
  • Implement config file parsing (preferably TOML or JSON with comments; YAML only if necessary for advanced features).
  • Allow CLI to override config file values for quick adjustments.

Notes:

  • This would enable advanced multiplayer and accessibility scenarios.
  • Consider documenting example configs for common setups.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions