Skip to content
v2.6.1

Why macros never fired on an Xbox controller

One wrong number was behind macros not firing, the hide check giving the wrong answer, and the Player 1 panel reporting the opposite of reality. Plus you can now type an exact value into any slider, pause macros from a hotkey, and select several at once.

Highlights

  • Type an exact value into any slider instead of dragging for it.
  • Pause or resume a macro, or all of them, from a global hotkey.
  • Select several macros at once to enable, disable or delete them together.
  • The overlay's keyboard follows your theme, and can show just the left half plus the mouse.

Fixes

  • Controller macros did not fire while an Xbox controller was connected.
  • Uninstalling could leave an Xbox controller unusable until you unplugged it.
  • The Player 1 panel could report that OmniControl was Player 1 when it was not.
  • Checking whether hiding worked could pass a controller that was still visible, or fail one that was hidden.
  • OmniControl's own virtual controller appeared in your controller list, and the hide switch could name it instead of your real pad.
  • A macro with no trigger set looked finished and silently never fired.
  • A key bound to Right Shift never reached games that read scancodes.
  • Controller-to-keyboard bindings were laggier than they needed to be while emulation was off.

The number that was wrong everywhere

Almost every strange Xbox report traced back to one value.

When OmniControl creates its virtual controller, it needs to know which player slot Windows gave it, so it can tell its own output apart from your real pad. It asked the driver, and the driver answered zero every single time, whichever slot the pad actually landed in.

With a real Xbox controller plugged in, your controller is usually the one in slot zero. So OmniControl spent its time carefully ignoring the wrong pad: yours.

That single mistake is why controller macros never fired on an Xbox controller. Your button presses were being filtered out as though they were OmniControl's own output. It is also why the Player 1 panel could tell you OmniControl was Player 1 when it plainly was not, and why the "check that it worked" button could pass a controller that games could still see, or fail one that was properly hidden.

It never went wrong on a PlayStation controller, because a DualSense or DualShock holds no XInput slot at all, which left slot zero genuinely free for OmniControl. The answer was accidentally correct there and wrong everywhere else, which is exactly the kind of bug that looks like it works fine for one person and not at all for another.

OmniControl now watches which slot its controller actually appears in rather than asking. If it cannot tell for certain, it says so instead of guessing.

Uninstalling could leave an Xbox controller stuck

2.6.0 fixed hiding leaving an Xbox pad unusable. The same problem was still present in the uninstaller, which does its own cleanup when OmniControl is removed, so uninstalling could leave the controller in exactly the state the fix was meant to prevent.

That step is gone entirely now. Un-hiding takes effect immediately without it, so there was nothing to lose. If you are on 2.6.0, updating replaces the uninstaller as well.

Your own virtual controller stopped pretending to be yours

The virtual controller OmniControl creates was being listed as one of your controllers. It looks like an ordinary Xbox pad to Windows, so with the right timing it sorted first and the app treated it as the controller in your hands. The Dashboard could animate from OmniControl's own output, and the hide switch could offer to hide OmniControl instead of your real pad.

It is no longer offered as an input device, and every part of the app that decides "what did the user press" now agrees on the answer, including the keyboard remapper, motion, the DSU server, touch gestures and the haptics readouts.

Type an exact value

Every slider in the app now accepts a typed value. Click the number, type what you want, press Enter.

A slider is good for finding a feel and poor for hitting a figure, and the two are different jobs. This is for the second one: a deadzone of exactly 12%, a sensitivity of exactly 1.35. Where a slider's number cannot be typed unambiguously, it stays read-only rather than accepting something that would quietly mean a different value.

Macros: hotkeys and bulk edits

A macro that suits one game gets in the way in the next, and the only way to stop it was to alt-tab out mid-match and untick a box.

Now a macro can be paused and resumed from a global hotkey, and there is a second hotkey that pauses all of them at once. The all-macros switch remembers exactly which macros it paused, so resuming does not switch on the ones you had deliberately turned off.

The Macros page also has a Select mode for working on several at a time: enable, disable or delete them together, with one confirmation for the whole set.

And a macro with no trigger bound now says so. It used to look completely finished while being incapable of firing, because the trigger row was simply left out when it was empty.

The overlay's keyboard

The keyboard device follows your theme now. Pressed keys, the mouse buttons and the movement arrow all take the theme's press colour and its release fade, instead of staying the same purple whatever theme you chose.

There is also a left-half-only mode for the keyboard. A full board spends most of its width on keys a game never touches, so the half that matters ends up small on stream. The new option keeps Escape through F6, the number row to 6, and everything down to Ctrl, Alt and Space, drops the arrow cluster, keeps the mouse, and spends the freed width on keys twice the size.

The keyboard in Overlay Studio is also live now. It used to show a fixed picture of a few pressed keys, which made it impossible to see a theme or a layout change react to anything.

Smaller things

Right Shift was being sent to games in a form that keyboards do not use, so anything reading scancodes, which is most shooters, never saw it. A binding on that key looked configured and did nothing.

Controller-to-keyboard bindings were sampling about twice as slowly as intended while emulation was switched off, which is the setup the app itself recommends for them.

Drive a Controller now tells you when "Mouse aims" is switched off, rather than leaving you to wonder why your mouse is not moving the camera.