Releases: muchimi/JoystickGremlinEx
16 m32 lolo test
This is a test version to diagnose a specific hardware detection logic and output additional information to the log.
This is not for production use.
13.40.16ex m40 (pre-release)
Major new features in 13.40.16ex
-
New switch container (experimental): this container adds a slightly different way of mapping physical switches using the concept of switch positions and able to latch multiple buttons to the same container, attached to a primary button. The container makes it easier to setup two way, three-way and rotary buttons with multiple positions.
-
Axis curve can be applied to the input before any further processing and the curve is mode specific.
-
Conditions can be applied to the container or individual actions concurrently.
General feature set
- Designed for home cockpits with a high count of mixed input devices from different manufacturers and mixed controller types
- Support for network based studio and stage management control systems like Korg, TouchOSC, OpenStage, Stream Deck, Loupe Deck using OSC (and if needed MIDI) protocols to work as game input controllers for axes and buttons and hats. These non-typical control systems easily provide GameGlass type experiences and support phones and tablets and networked touch screens, as well as fader / knob / button based media studio systems. As of m36, supports OSC output from GremlinEx at the API level.
- Support for multiple concurrent networked GremlinEx instances for remote control
- Support for complex keyboard combinations, including unusual keys like F13 to F25 and sophisticated trigger based on the latching of multiple and uncommon keys
- Includes a wide range of mapping functionality, and for more complex/logic based scenarios, user plugins for full python based scripting
- Support for multiple voices using the Microsoft Text to speech API including playback rates
- Support for any audio file playback
- Support for hierarchical modes
- Support for VJOY and Virtual gamepad (via VIGEM) virtual outputs supporting games that only work with console controllers
- Sophisticated axis curving options including curving of input axis data and further filtering by individual mappings
- Internal sorting of devices to your preference (note, this does not change Windows devices but changes how you interact with them within GremlinEx)
- 64 bit / recent version of Python and Windows support
- New containers and actions applicable to the most common use cases related to mapping, simplifying the mapping of more difficult scenarios like gated axis and mapping of multi-way hardware switches that do no trigger in some positions
Pre-release and RC
I use pre-releases to issue test versions that may include some bugs or proposed fixes to reported bugs. Once a pre-release is stable and mature enough, it will move to RC status.
Thanks for your patience.
Discord server:
I created a discord server for discussion to make tracking various questions and suggestions easier. Please continue to use issues in Github to report bugs/issues.
Documentation
Please consult the documentation. Documentation is still a work in progress.
Patches
(m40)
- Fix: small update for mouse ex not releasing mouse button (thanks for reporting!)
(m39)
- Improved: OSC output can send to any IP address (set IP and port in options). The prior implementation was sending to the local server only.
(m38)
- Fix: removed redundant "force numlock off" check box in profile to process mapping as that option is superfluous. Each profile can set its own option in the profile config window, or it can be set globally in options. Those two methods are sufficient to achieve the desired behavior.
- Fix: Curves applied to input axes not always loaded post converting to the new curve editor.
- New: Conditions have their own verbose mode for log output for troubleshooting conditions in the log. When this is enabled, the execution plan and the outcome of tested conditions will be output to the log to help diagnose issues around conditions. Conditions and execution plans are very complicated (warning, when enabled, as with most verbose modes, this can generate a lot of log data and consequently slows GremlinEx down significantly).
- Fix: Docktab for mappings generating an internal Python exception because the C++ reference was garbage collected before the Python reference.
- Fix: older version 9 legacy profile throws an error on load.
(m37)
- Fix: mode change on profiles with input curves could cause an exception.
(m36)
- Improved: Added OSC send capability
- Improved: Added VJOY output events
- New: GremlinEx to OSC vjoy output script user plugin demo (with Touch/OSC demo chroma key output for OBS)
(m35)
- Improved: Condition processing for containers and actions is now cumulative, meaning that each container has a set of conditions for the whole container and another concurrent set for each action in the container to toggle each one individually. If a condition on a container fails, the whole container is disabled, regardless of the individual conditions on actions.
- Improved: Condition logic
- New: Global numlock off startup state option. This option, when set, overrides the per-profile numlock setting. In most cases, this option should be on to avoid problems with keyboard output using numlock.
- Fix: Keyboard input: Arrows keys no longer get translated to Numpad arrow keys
- API: reworked the container and actions conditions API.
(m34)
- condition rework
(m33)
- New: Map to vjoy, hat to button mode has a new sticky option and some convenience setup buttons. When enabled and the position mapping is in the hold mode, any pressed hat positions will "stick" until the hat is returned to center, and when disabled, only the current hat position is pressed. This mode is only relevant when in hold mode, it has no meaning in the pulse mode for obvious reasons.
- Fix: Tempo/TempoEx/Chain/Switch/Button did not support hats as input
- Fix: When in symmetry mode, the curve editor did not mirror the center point bezier handle
- Fix: Map to Vjoy in axis to button mode, change in triggering logic.
(m32)
- Improved: device data returned by Vjoy AP is cross-referenced with with data returned by DirectInput with VJoy data taking precedence. Added more detailed log data for device detection and how they were detected. This can help with troubleshooting.
- Fix: typo in tempo/tempoEx in variable name
- Fix: possible tray icon exception when the application exits and the tray icon has already been discarded.
(m31) - Improved: support for Simconnect for MSFS2024. This is a work in progress and does not include all planned features, such as, a facility to add custom simvars from add-on products. The barebones module is functional with MSFS 2024 released Tuesday, November 10th, 2024.
- Improved: Map to vjoy adds a new hat to button mode to map up to 8 hat positions directly to buttons. The buttons can be pulsed or held.
- Fix: Tempo and TempoEx now handle hat inputs (as usual using tempo with a hat is best done with a pulse option because of how Tempo works)
- Fix: Remap to Vjoy does not reload saved set target value
- Fix: conditions do not work with hat input or hat conditions
- Known issue: condition marker does not always update in all use cases (this does not impact functionality)
- Known issue: condition triggers, if also mapped for their own actions, may cause some conflicts because they fire at the same time.
(m30)
- Fix for condition tab error when adding a condition that applies to the container - related to the addition of the status flag in m27
(m29)
- Fix for m28 vjoy mapper ignoring curve data on load due to a tag change in m28
- Fix for missing panel in vjoy mapper for some other button modes (m28 fixed the axis to button but missed a few others that had the same issue when mapping to a button input)
(m28)
- Improved: GremlinEx can automatically convert legacy Remap and Response Curve to their GremlinEx version provided that options are enabled from the Profile page in the options. Converting is recommended and will occur when a profile is loaded. When the convert option is selected, the legacy mappers will no longer be visible from the action drop-down to encourage the use of the new actions.
- Improved: An option to toggle the display of button grids in the GremlinEx options panel was added. This is the same as holding the control key down when toggling the "show button grid" in the Map to Vjoy mapper.
- Fix: Missing button options panel when in Axis to Button mapping mode of Map to Vjoy
- Fix: Response curve Ex saving to profile as a legacy response curve action.
- Fix: Response curve text inputs not always updating the UI correctly
- Fix: Floating point and integer text input wheel events are no longer propagated (that could cause random unexpected scrolling of a parent container)
(m27)
- Fix: Input or output axis curves: setting deadzone via buttons not saving values.
- Improved: [experimental] Condition tab will show a marker when one or more conditions are defined (I've set it up to pickup any condition however I am not a heavy user of conditions so it's completely possible this will trip up somewhere)
- Fix: VJOY used button state now takes into account axis to button mappings.
- Fix: VJoy Remap typo in diagnostics code to handle invalid VJOY IDs
(m26)
- Improved: Complete input mappings for an input (all containers) can now be copied and pasted all at once from the clipboard as a set. This makes it easier to copy/paste multiple container mappings between inputs. Note: when pasting multiple containers, only valid containers in the clipboard will be pasted so if you are missing a container, it's because it wasn't valid for the input. This comes into play when copying containers for an axis and pasting it to a button input and vice versa. (new container toolbar butto...
16 m34 test conditions
Test version to validate condition processing
13.40.13ex (h)
13.40.13ex release.
NOTE
this version has been superseded by pre-releases for 13.40.14ex. All releases, including pre-releases can be found here:
https://github.com/muchimi/JoystickGremlinEx/releases
See changelog for more detailed list of changes.
- Adds version checking of dependent DLLs and drivers.
- improved handling of missing device or physical device changes at runtime
- reworked device information dialog
- improved Directinput event spamming at design time for noisy hardware (UI will ignore rapid-fire events)
- new verbose option to enable detailed log tracking around events received and processed by GremlinEx (use with caution - slows GremlinEx down considerably due to the trace outputs - use only for debug/diagnostics)
- improved icon file search algorithm in packaged (exe) format
- changed directinput dll interface to poll mode by default (as most HID game devices don't support buffered mode) - this eliminates a directinput error message when attempting to connect using buffered mode
- changed directinput dll debug output to dinput_debug.txt