enBoxer/examples/profile.yaml
en 20271264cf Item 5+6 (Grok round 4): default profile name -> team, drop passthrough feature
Item 5: examples/profile.yaml default profile name renamed from
"esdf-team" to "team". The default shipped profile should be
called what it is.

Item 6: drop the passthrough feature entirely. Removed:
  - Profile.passthrough field + Profile::passthrough_set
  - Engine.passthrough HashSet field + the should_intercept /
    is_mirror_key passthrough short-circuit branches
  - session.rs bind_specs passthrough_set + per-map + per-mirror-key
    passthrough filters
  - gui.rs passthrough label + text-edit widget
  - main.rs profile log line that referenced p.passthrough
  - hotkey.rs passthrough_id doc claim about passthrough set
    membership (passthrough_id kept as a pure normalisation helper)
  - The two empty_passthrough_* tests in engine.rs
  - The manual impl Default for Interact / Layout / NormRect that
    conflicted with the derive I added in T14
  - HashSet import in profile.rs that was only used by passthrough_set
  - Hotkey + InteractStyle now derive Default so Profile::default()
    still works end-to-end after passthrough removal

Kept (NOT removed): vfx::FeedHit.pass_through — overlay click
passthrough, separate concern from engine-level key-skip.

Also silenced the stale #[allow(dead_code)] on
GbmDevice.sym.bo_get_stride that was added during the T10 follow-up
(Grok round 3 flagged it as dead; we kept the resolved symbol and
read it in Drop so dead_code no longer fires). No more spinning red
circle from that warning.

cargo test 97/97; clippy clean.
2026-09-17 05:38:59 +02:00

176 lines
4.8 KiB
YAML

# Copy to ~/.config/enboxer/profile.yaml and edit.
# Keys use Mod+Key (Alt+G, Shift+F3). Letters are case-insensitive.
name: team
client: wow-retail
slots: 2
# Hyprland window match (regex). Wine/WoW class is often wow.exe or the wine prefix name.
window_match:
class: "(?i)wow|warcraft"
title: null
# Keys that are NEVER intercepted. Empty = no skip list.
# ESDF movement stays on the primary even if you later add a map for those letters.
passthrough: ["e", "s", "d", "f"]
# maps = only keys listed under `maps` (rest stay on the front window)
# mirror = clone keys to the other clients (passthrough still skipped)
# off = no intercept; the front window gets everything
mode_default: maps
# Optional: limit which keys mirror-mode clones. Empty = letters, digits, F-keys, etc.
repeater:
enabled: false
keys: []
game_binds:
# Interact with Target is a built-in WoW keybind (Key Bindings > Targeting >
# Interact Target). Bind it on every account to the same key; enBoxer just
# routes the keystroke. Alt+J was requested explicitly.
interact: "Alt+J"
# /console is not keybindable; CTM on / off must be macros.
ctm_on: "Shift+F3"
ctm_off: "Shift+F4"
# Per-character macro: the slot's character name is filled in by
# Character.assist_key / Character.follow_key, so swap-to-slot-N retargets
# the bind without re-editing YAML.
assist: "Shift+F2"
follow: "Shift+F1"
# Optional, class-dependent (Hunter / Warlock / DK / Demon Hunter).
# Built-in keybind Targets > Pet Actions > Attack.
# pet_attack: "F"
# Optional "try again" after a missed interact. Targets > Target Last Target.
# target_last: "Ctrl+L"
interact:
# standard: CTM on → IWT → wait → CTM off
# auto: CTM on → IWT (CTM stays on)
# hold: CTM on → IWT on press; CTM off on release
style: standard
walk_delay_ms: 2500
session_hotkeys:
mode_cycle: "Shift+Alt+M"
swap_next: "Ctrl+grave"
swap_prev: "Ctrl+Shift+grave"
focus_next: "Ctrl+Shift+N"
focus_prev: "Ctrl+Shift+P"
focus_main: "Ctrl+F1"
reset_all: "Ctrl+Shift+R"
stay_on_top: "Ctrl+Shift+T"
mouse_follow: "Ctrl+Shift+F"
mouse_broadcast: "Ctrl+Shift+B"
characters:
- slot: 1
name: Main
assist_key: "Shift+F2"
follow_key: "Shift+F1"
- slot: 2
name: Alt
assist_key: "F9"
follow_key: "F10"
groups:
alts:
slots: [2]
maps:
- name: bar_1
hotkey: "1"
steps:
- bind: assist
target: others
- key: "1"
target: all
- name: bar_2
hotkey: "2"
steps:
- bind: assist
target: others
- key: "2"
target: all
- name: follow_me
hotkey: "Alt+F"
steps:
- bind: follow
target: others
- name: assist_me
hotkey: "Alt+A"
steps:
- bind: assist
target: others
- name: loot
# ISBoxer Mapped Key analog: one user keypress fires the entire interact
# chain (CTM on -> Interact with Target -> wait walk_delay_ms -> CTM off),
# driven by profile.interact (style + walk_delay_ms). The follower has
# walk_delay_ms to actually walk to the target before CTM turns off.
hotkey: "Alt+G"
steps:
- bind: assist
target: others
- bind: smart_interact # full chain (use "interact" for a single Alt+J send)
target: others
- name: loot_manual
# Same idea as `loot` but composed by hand. Pick this form if you want to
# do anything fancy between the CTM toggle and the interact (e.g. a delay
# specific to a slow class, or a different key for each step).
hotkey: "Ctrl+Alt+G"
hold: false
steps:
- bind: assist
target: others
- bind: ctm_on
target: others
- bind: interact # single Alt+J send (NOT the smart shortcut)
target: others
- delay_ms: 5000
- bind: ctm_off
target: others
- name: interact_hold
hotkey: "Alt+H"
hold: true
steps:
- bind: ctm_on
target: others
- bind: interact # single Alt+J send (NOT the smart shortcut)
target: others
release_steps:
- bind: ctm_off
target: others
- name: rez_cycle
# Each press picks the next slot in order (1..=N, then wraps). State
# lives on the engine, keyed by this map name, so a second `rr`
# map keeps its own cursor.
hotkey: "Alt+R"
steps:
- key: "F8"
target: round_robin
# Window layout (pixels). Generate from the Layout page, then Save and Apply.
layout:
preset: main_strip
one_row: true
main_at_bottom: false
auto_apply: false
monitor: ""
slots: []
# Viewer sits on the current primary. Hover + pass_through sends keys/clicks to source_slot only.
video_fx:
- name: alt_party
enabled: false
source_slot: 2
source: { x: 0.0, y: 0.0, w: 0.40, h: 0.40 }
viewer: { x: 0.02, y: 0.02, w: 0.28, h: 0.28 }
pass_through: true
fps: 12