The macro that nothing could stop, and a Hold that never held
A macro could keep running after you deleted it, and turning emulation off did not help. Hold mode was a toggle wearing the wrong name, and the setting meant to cut a run short on release could not do anything at all. Plus a pull threshold for the analog triggers, and three changes that make a recoil pattern feel like a hand instead of a script.
Highlights
- Hold mode now runs while you hold the button, and stops when you let go.
- Choose whether letting go cuts the run off instantly or finishes the pass.
- Set how far L2 or R2 must be pulled before a macro fires.
- A new Stick strength slider, separate from speed, so one pattern covers guns that kick harder or softer.
Fixes
- A macro could keep running after you deleted it, with no way to stop it short of restarting the app.
- Turning emulation off and on again pushed a stuck stick straight back onto the pad.
- Hold mode behaved as a toggle: one press started it, another was needed to stop it.
- Stop when the trigger is released did nothing at all on any looping macro.
- The release setting was hidden in Hold mode, the one mode where it matters most.
- A recoil macro kept pulling for about a tenth of a second after you stopped firing.
- Recorded stick movement played back as a series of small steps rather than one smooth pull.
- Repeat modes were four bare words with no explanation of what any of them did.
The macro that nothing could stop
A macro recorded on the right stick could keep driving it after you deleted the macro. The view would pull downward on its own, deleting it made no difference, and turning emulation off and on again did not help either. Restarting OmniControl was the only way out.
Deleting it was not what caused this, but it is what made it permanent.
Inside the app there is a single slot that records which macro is playing. The problem was that the slot only remembered which macro, not which run of it. When a playback finished, it cleared that slot if the name matched, without checking the entry still belonged to it.
That is normally harmless, because there is only ever one run. But stopping an endlessly looping macro can take a moment, and the app deliberately does that waiting on a separate thread so your controller does not stutter while it happens. During that wait the slot already reads as empty. Press the trigger again in that window and the app sees nothing running, so it starts a second run instead of toggling the first one off. When the first run finally ends, it clears the slot belonging to the second.
That second run is still playing, still looping, and now invisible. The Stop button will not appear for it, because there is nothing registered to stop. Deleting the macro cannot reach it either, since that check looks at the same slot. And deleting it removes the macro from the trigger list, which destroys the last thing that could have ended it: pressing the button again.
Runs now carry an identity of their own, so a finished playback can only ever clear its own registration. A second, related fault is fixed alongside it, where two runs starting at almost the same moment could displace one another and leave the loser running with its stop signal thrown away.
If you ever saw this, nothing was wrong with your macro and nothing was saved incorrectly. It lived entirely in memory, which is why restarting cleared it.
Turning emulation off did not help
The same bug had a second half that made it look worse than it was.
Whatever a macro is doing to your sticks is held in a small overlay that is applied to the emulated controller. Stopping emulation tore down the virtual pad but never cleared that overlay, so the last position a stranded macro wrote just sat there. Switching emulation back on picked it straight back up and pushed it onto the pad again.
Stopping emulation now clears it. A macro that is genuinely running loses nothing, because it writes its next position within milliseconds.
Hold that never held
Hold mode ran until you pressed the button a second time. That is a toggle, and it is not what Hold means.
Underneath, Hold was not a mode of its own at all. It was the toggle mode with a flag set beside it, and the setting that should have made it track the button was hidden from that screen entirely. So the one mode where "what happens when I let go" matters most was the one mode where you could not answer the question.
Hold now runs while you hold the button and stops when you release it, and you choose what stopping means:
Cut off straight away stops wherever it has got to and releases anything it was holding. Your next press starts from the beginning. This is what you want for an aim or recoil pattern.
Finish the pass completes the run it is on before stopping. This is what you want for anything that toggles between two states, like a weapon swap or a stance, so it always lands back where it started.
That second behaviour is why this had to become a choice rather than a default. Finishing the pass is what keeps a two-state macro balanced, and cutting off instantly is what keeps an aim pattern honest. Only you know which one your macro is.
Stop when the trigger is released did nothing
This one is worth stating plainly, because you could tick the box and watch it change nothing.
On any macro that loops, every pause between steps was told to ignore the stop signal, and a run that ended on an odd number of loops played one more complete pass on top. The setting was real, saved and displayed, and structurally incapable of having an effect. It works now.
How far you have to pull
L2 and R2 report as plain buttons, and where that button flips is decided by your controller rather than by you. Xbox pads use one point, PlayStation pads use another. "Pressed" quietly meant two different things depending on what was in your hands.
There is now a Pull needed setting on any macro triggered by an analog trigger. Set it to 60 percent and a light touch does nothing while a firm pull fires. It disarms slightly lower than it arms, so a trigger resting right on the line cannot rattle the macro on and off.
Recoil control
Three changes, aimed at the same thing.
The pull now stops when you do. A held macro used to keep running for roughly a tenth of a second after you released the trigger, which on a recoil pattern reads as a small downward flick at the end of every burst. That delay existed for a good reason: controllers send occasional blank reports, and cancelling on one of those would kill your macro mid-fight. But a blank report is blank in every field at once, so a report that still carries your other stick, another button, or any trigger travel cannot be one. When the controller proves it is still reporting, the release is now confirmed in a single frame instead of eighty milliseconds. When it genuinely goes quiet, the full wait still applies, because a late stop is a nuisance and an early one is a broken macro.
Recorded stick movement is smooth. A recording captures your stick about sixty times a second, and playback used to hold each captured position until the next one arrived. The emulated controller updates a thousand times a second, so it was being handed a staircase. Playback now moves between captured points instead of stepping between them. Nothing is invented and nothing is delayed, because each point still lands at exactly the moment and position it was recorded. Gaps longer than a fraction of a second are left alone, so a macro built to snap to a position and hold it still snaps.
Strength is now separate from speed. Speed changes how fast a pattern plays. The new Stick strength slider changes how far it pushes. They move for different reasons: rate of fire is one thing, how hard a gun kicks is another. Previously a recorded pattern served exactly one weapon at exactly one sensitivity, and a second one meant recording again. Now one pattern covers a family of guns and you tune it with a single number.
A tidier macro screen
Every repeat mode now says what it does. They were four bare words with no explanation anywhere, which is a poor way to introduce the most important setting on the screen.
Settings also only appear in the modes they belong to. The release behaviour is meaningless when a macro plays once, and the pull threshold is meaningless on a button with no travel, so neither shows up there any more.
The recording options have moved behind a single line that summarises what is being captured. Five switches most people never change were taking up half the panel and pushing the settings you actually came for below the fold.