Skip to content

Add Joystick Gremlin profile import for Advanced Mapping - #51

Merged
Constantinos-T merged 1 commit into
mainfrom
feature/gremlin-import
Aug 8, 2026
Merged

Add Joystick Gremlin profile import for Advanced Mapping#51
Constantinos-T merged 1 commit into
mainfrom
feature/gremlin-import

Conversation

@mojouto3

@mojouto3 mojouto3 commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds "Import from Joystick Gremlin..." to the Advanced Mapping tab: pick a Gremlin profile .xml file, match each Gremlin device to a connected controller, pick which mode to import as the profile's normal behavior, and import.
  • Deliberately best-effort, not full Gremlin parity: MIM's Rules UI only exposes "Normally" plus one level of "While holding X" conditions by design (an earlier full modes/bindings UI was rejected as recreating Gremlin's own confusing complexity). Imports what has a real MIM equivalent:
    • remap (button/axis to vJoy) -> Single Press / positional axis
    • tempo containers -> Tempo (tap/hold)
    • macro (vjoy press/release/pause steps) -> Macro
    • temporary-mode-switch -> a Shift-style condition on every input the target mode overrides
  • Anything without a MIM equivalent is skipped and reported back in a warnings list after import, not silently dropped: custom bezier response curves (deadzone is still imported), axis-to-mouse output, keyboard steps inside a Macro, permanent mode cycling, text-to-speech, hat-to-vJoy-hat remapping.
  • New gremlin:pick-import-file IPC handler just reads the raw file; XML parsing happens in the renderer via the native DOMParser, no new dependency.

Test plan

  • Imported a real, in-use Gremlin profile (multiple devices, multiple modes, Tempo containers, a Macro with vJoy+keyboard steps) against real VKB hardware.
  • Confirmed imported button/axis remaps produce the correct vJoy output live (verified against Windows' Game Controllers properties panel).
  • Confirmed unsupported constructs show up in the post-import warning list instead of failing silently.

Best-effort import of a Gremlin XML profile's button/axis remaps,
Tempo containers, Macros, and temporary-mode-switch (Shift-style)
conditions into MIM's Rules model. Anything Gremlin supports that
MIM's model has no equivalent for (custom response curves, mouse
output, keyboard steps in a Macro, mode cycling) is skipped and
reported back to the user rather than silently dropped or guessed at,
by design, not an attempt at full Gremlin parity.
@mojouto3 mojouto3 added this to the Advanced Mapping milestone Aug 8, 2026
@mojouto3 mojouto3 added the mapping-engine Issues related to axis and button remapping, macros, and input mapping logic label Aug 8, 2026
@mojouto3 mojouto3 added the mapping-engine Issues related to axis and button remapping, macros, and input mapping logic label Aug 8, 2026
@Constantinos-T
Constantinos-T merged commit 9569e21 into main Aug 8, 2026
1 check passed
@mojouto3
mojouto3 deleted the feature/gremlin-import branch August 8, 2026 11:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mapping-engine Issues related to axis and button remapping, macros, and input mapping logic

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants