enBoxer/docs/MACROS.md
en bb6d9e8566 Drop stale stub/follow-up/not-shipped markers in docs
After T10 shipped (commit 0ba3c59) several docs still claimed the
gbm_bo_map / ENBOXER_ENABLE_TOPLEVEL path was a stub, follow-up, or
"/dev/dri/renderD128 + new dep" work that never happened. Rewrite:

- README.md: ENABLE_TOPLEVEL row no longer says "unset = stub".
- docs/VIDEO.md: live toplevel-export is real (gbm_bo_map via
  runtime dlopen of libgbm.so.1, real RGBA8 PNG via the png crate).
- CHANGELOG.md: T10 follow-up entry rewritten as shipped.
- docs/MACROS.md: stale "Forever is not out yet / later helper
  (not shipped)" paragraph rewritten to point users at the
  per-character GUI rebind instead.
2026-09-16 12:43:33 +02:00

6.0 KiB
Raw Blame History

In-game macros (no addon, retail-shaped)

enBoxer only sends keystrokes. Bind these in WoW on every account. The example profile targets retail (The War Within era, 2026).

If Interact with Target is missing on a particular client (private servers, classic, custom UIs that hide it), open the per-character macro override in the GUI and rebind game_binds.interact + game_binds.ctm_on / ctm_off to whatever those clients accept. The daemon's routing logic is unchanged; only the per-client WoW-side keybind changes.

Match keys to game_binds in the profile.

Interact with Target (keybind, no macro needed)

In WoW: Key Bindings → Targeting → Interact with Target. Bind it on every account to the same key (the example uses Alt+J). enBoxer routes the keystroke to every captured slot — no macro needed.

Do not bind Interact Target to a mouse button; that is unreliable while enBoxer is routing mouse clicks.

Turn Auto Loot on in-game so the corpse is looted when the alts arrive.

Auto-Interact (the legacy "CTM")

"Click to Move" was removed in Warlords of Draenor (2014). What multibox guides still call CTM is the autoInteract CVar: when on, your character walks up to the target and interacts automatically instead of needing a separate walk + interact sequence. enBoxer turns it on for the duration of an interact/loot map and turns it off afterwards.

CVars are not keybindable, so these need to be macros.

CTM Ongame_binds.ctm_on (example Shift+F3):

/console autoInteract 1

CTM Offgame_binds.ctm_off (example Shift+F4):

/console autoInteract 0

If /console autoInteract is rejected (some protected profiles, a SecureCVar-protected client), the equivalent is:

/run C_CVar.SetCVar("autoInteract", "1")

and "0" for off.

Assist and Follow (per-character macros)

The example profile stores a default key under game_binds.assist and game_binds.follow, and overrides them per character under characters[].assist_key and characters[].follow_key. The override is what every account actually binds in-game (so swap-to-slot-N retargets the bind automatically).

Pick a different in-game macro per character that targets the leader's name. For a Main named Eisheth:

Assist — bind to whatever you set on the character:

/assist Eisheth

Follow — bind to whatever you set on the character:

/follow Eisheth

If you swap leaders, edit the assist / follow macros on each client to match the new main's name, or just swap which client is the leader.

Built-in keybinds Targets → Assist Target / Follow Target only assist or follow the current target, which is not what multiboxing wants when the alts need to name-target the main. That's why enBoxer ships the per-character macro override.

Optional, class-dependent (in-game keybinds, no macro)

  • Pet Attack — Key Bindings → Pet Actions → Attack. Useful for Hunter / Warlock / DK / Demon Hunter. Wire it through enBoxer with game_binds.pet_attack.
  • Target Last Target — Key Bindings → Targeting → Target Last Target. Useful as a "retry" if the first interact was on cooldown. Wire it with game_binds.target_last.

Both are pure in-game keybinds; enBoxer just routes the keystroke.

One loot press (the loot map)

  1. Target the corpse or NPC on the primary.
  2. Press the loot hotkey (example Alt+G). That key is consumed; the primary does not interact unless the map targets current.
  3. Alts assist, Auto-Interact on, Interact with Target once, walk walk_delay_ms, interact or loot, Auto-Interact off.
  4. enBoxer's interact.style controls how aggressively Auto-Interact stays on: standard (on, then off), auto (stays on after the press), hold (on while the hotkey is down, off on release).

Do not mash. A second interact while they are still pathing is how characters run circles.

If they stop short, raise walk_delay_ms (25004000), or use interact.style: auto (CTM stays on), or interact.style: hold.

Smart interact shortcut (bind: smart_interact)

The example profile's loot map (Alt+G) and interact map (Alt+I) both use a smart shortcut: a single user keypress fires the full chain (CTM on → Interact with Target → sleep walk_delay_ms → CTM off). It is what ISBoxer did with a "Mapped Key" — you press one key, the multibox software sends the whole chain.

In enBoxer the shortcut is bind: smart_interact in a step:

- name: loot
  hotkey: "Alt+G"
  steps:
    - bind: assist
      target: others
    - bind: smart_interact      # <-- smart shortcut
      target: others

The engine expands that one step at compile time. Driven by profile.interact:

interact.style What happens on the press CTM after the press
standard ctm_oninteract (game_binds.interact) → sleep walk_delay_msctm_off off
auto ctm_oninteract stays on (toggle off via ctm_off when you want)
hold ctm_oninteract (Down); put bind: ctm_off in release_steps to turn it off on release matches the hotkey down/up

Walk distance and follower latency are absorbed by walk_delay_ms (default 2500 ms). If your alts stop short, raise it (25005000 ms is typical for indoor encounters).

If you need per-step control (different keys, branches, conditional delays), use the manual form:

- name: loot_manual
  hotkey: "Ctrl+Alt+G"
  steps:
    - bind: assist
    - bind: ctm_on
    - bind: interact
    - delay_ms: 5000
    - bind: ctm_off

Both forms are tested in engine::tests; see interact_smart_shortcut_standard_emits_full_sequence, …_auto_emits_two_no_tail, …_hold_emits_press_only, and loot_manual (which exercises the explicit chain).