This page documents every JSON option implemented by the current application. Runtime-only fields marked with JsonIgnore are not configuration options and are intentionally excluded.
Options marked Advanced/internal are implemented but are usually unnecessary for a basic setup. They are labeled so site maintainers can review or hide them later.
inject_virtual_mouse_dllLocation: top level
Type: boolean
Required: no
Default: true
Classification: Advanced/internal
When true, Multiboxer attempts to inject MouseVirtualizer32.dll into every spawned process using Injector32.exe. Missing helpers cause injection to be skipped; an individual injection failure does not stop the remaining attempts. This technique may trigger security software and depends on compatible target processes.
remove_registry_settings_at_startupLocation: top level
Type: boolean
Required: no
Default: false
Classification: Advanced/internal, World of Warcraft specific
When true, startup attempts to delete this current-user registry subtree:
Software\Blizzard Entertainment\World of Warcraft\Client
This avoids a World of Warcraft hardware-change prompt when switching client versions. Deletion failure is logged and startup continues. Leave false for unrelated games.
debugLocation: top level
Type: boolean
Required: no
Default: false
Enables detailed diagnostic logging across input, layout, swapping, capture, and injection code.
debug_log_pathLocation: top level
Type: string or null
Required: no
Default: %TEMP%\MultiBoxerLogs\multiboxer.log
Dependency: useful when debug is true
A relative path is resolved from the directory containing the active configuration file. An absolute path is used directly.
regionsType: array of region objects
Required: yes for a usable configuration
Default: empty array
Names the screen rectangles used by instances. See Region object.
main_regionType: string
Required: yes
Default: empty string, which fails validation
Must match an entry in regions. At least one instance must initially own this region.
instancesType: array of instance objects
Required: yes for a usable configuration
Default: empty array
Defines processes to launch. See Instance object.
keymapsType: array of keymap objects
Required: no
Default: empty array
Defines trigger-to-action mappings. See Keymap object.
capture_compositorType: capture compositor object
Required: no
Default: object with enabled false
Classification: Advanced/internal
Configures preview capture for non-main regions.
uiType: UI object
Required: no
Default: default window with no configured buttons
Configures the Multiboxer control window.
regions[].nameType: string
Required: yes
Default: empty string
Region identifier referenced by main_region, instances[].region, compositor streams, and swap actions. References are case-insensitive. Use unique non-empty names. The validator builds a name set but does not currently report duplicate region definitions directly; duplicates should still be avoided.
regions[].displayType: string or null
Required: no
Default: null
Example: "0"
Zero-based physical display index, stored as text. Coordinates are relative to this display. Missing, blank, invalid, or unavailable display values fall back to the first monitor in layout and capture resolution paths.
regions[].regionType: rectangle object
Required: no at deserialization, but needed for meaningful layout
Default: x 0, y 0, width 800, height 600
regions[].region.x and yType: integer
Required: no
Default: 0
Pixel offset from the selected display's top-left corner. Negative coordinates are representable and are not rejected for regions.
regions[].region.width and heightType: integer
Required: no
Default: 800 and 600
Pixel dimensions. The current configuration validator does not explicitly reject zero or negative region dimensions; use positive values.
instances[].nameType: string
Required: yes in practice
Default: empty string
Identifier used in targets, swaps, logs, and the default window title. Names should be unique and non-empty. References are case-insensitive. The current validator uses a set but does not explicitly report duplicate instance names, so avoid duplicates.
instances[].executableType: string
Required: yes in practice
Default: empty string
Program passed to process startup. Use a valid executable path. The config validator does not check that the file exists before launch.
instances[].working_directoryType: string or null
Required: no
Default: executable's directory
Working directory passed to the new process.
instances[].titleType: string or null
Required: no
Default: instance name
Window title assigned after Multiboxer finds and positions the process window.
instances[].regionType: string
Required: yes
Default: empty string, which fails validation
Initial region owned by this instance. It must name a configured region. No two instances may initially own the same region, and one instance must own main_region.
instances[].keymap_on_selectType: string or null
Required: no
Default: null
Classification: Advanced
Names a keymap to run when this managed instance becomes foreground, including region selection and taskbar or other foreground activation. The keymap must have a non-empty name. An instance using this property must also have a non-empty name.
instances[].modifierType: string or null
Required: no
Default: null
Modifier combo used by actions with add_instance_modifier. Every +-separated token must be a recognized modifier:
Ctrl LCtrl RCtrl Alt LAlt RAlt Shift LShift RShift
The model also contains HomeRegion, RegionConfig, HomeRegionConfig, CurrentRect, OriginalRect, HomeOriginalRect, Process, and Hwnd. They are marked JsonIgnore and cannot be configured.
keymaps[].nameType: string or null
Required: only for references and UI-owned buttons
Default: null
Names the keymap for UI execution, instance selection, and keymap state actions. Named keymaps must have unique names, compared case-insensitively.
keymaps[].enabledType: boolean
Required: no
Default: true
Initial state of a named keymap. Disabled keymaps do not react to triggers or named execution until enabled.
keymaps[].keysType: array of strings
Required: no for button/selection-only named execution; otherwise needed
Default: empty array
Trigger keys. any is the wildcard and matches ordinary key input. A combo contains modifiers followed by exactly one final non-modifier key, for example Ctrl+Shift+1. A combo cannot end in a modifier. Empty or unknown values fail validation. See keys and actions.
keymaps[].send_on_releaseType: boolean
Required: no
Default: false
Classification: Advanced lifecycle control
For forwarding behavior, defers dispatch until the trigger is released and sends a synthetic key-down/key-up tap. It cannot be combined with execute_on: "press".
keymaps[].execute_onType: string or null
Required: no
Default: legacy action-dependent lifecycle
Values: press, release, press_and_release
Controls which trigger edge executes the keymap. Values are trimmed, lowercased, and stored normalized.
press Execute on key down.
release Execute on key up as a tap.
press_and_release Execute a tap on both edges.
When omitted, legacy behavior applies: swap keymaps execute on release; other mappings follow the application's legacy press/release forwarding lifecycle. For predictable new configurations, set this explicitly when edge behavior matters.
keymaps[].actionsType: array of arrays of action objects
Required: yes
Default: empty array, which fails validation
The outer array contains rotating steps; each inner array contains actions for one step. At least one outer step is required. Empty inner steps are not explicitly rejected but do nothing.
"actions": [
[
{ "action": "forward", "send_key": "1" },
{ "action": "forward", "send_key": "2", "targets": ["game2"] }
],
[
{ "action": "do_nothing" }
]
]
keymaps[].reset_to_first_actionType: number or null
Required: no
Default: null
Unit: seconds
Classification: Advanced
After this idle interval, a multi-step keymap returns to its first action step. Decimal values are accepted. The model does not constrain the value during configuration validation; use a positive duration.
keymaps[].ui_buttonType: keymap UI button object or null
Required: no
Default: null
Creates an action button bound implicitly to this keymap. The keymap must have a non-empty name. Fields are id, text, x, y, width, height, image, show_enabled_state, and show_round_robin_next_target. It has no role or keymap property because those are implied.
actionType: string
Required: yes
Default: empty string, which fails validation
Supported values:
forward
forward_focused
round_robin
do_nothing
enable_keymaps
disable_keymaps
toggle_keymaps
enable_forwarding
disable_forwarding
toggle_forwarding
mouse_broadcast
swap_instance_to_region
Action matching is case-insensitive. Detailed behavior is in keys and actions.
mouse_broadcast_modeType: string or null
Required: only meaningful with mouse_broadcast
Default: toggle
Values: toggle, enable, disable, until_click, once
once and until_click both enable broadcasting until the next mouse button-down event. An unsupported value fails validation even if supplied on another action object.
send_keyType: string or null
Required: no
Default: original trigger key
Replaces the dispatched key. It must be a recognized single key or valid modifier combo. It is useful with forwarding actions; other action types may accept the property in validation without using it.
targetsType: array of strings
Required: no
Default: empty, meaning all active instances
Values: all, all_other, self, or configured instance names
Blank targets are removed and duplicate targets are removed case-insensitively. Unknown values fail validation. all_other and self are relative to the routing context.
source_instanceType: string or null
Required: for swap_instance_to_region
Default: null
Dependency: must name a configured instance
target_regionType: string or null
Required: for swap_instance_to_region
Default: null
Dependency: must name a configured region
keymapsType: array of strings
Required: for useful keymap-state actions
Default: empty array
Dependency: each entry must name a configured named keymap
Used by enable_keymaps, disable_keymaps, and toggle_keymaps. Unknown names fail validation. An empty list is accepted but changes nothing.
sync_mouseType: boolean
Required: no
Default: false
Synchronizes the current pointer position once before dispatching the action. It is accepted on any action.
add_instance_modifierType: boolean
Required: no
Default: false
Adds the routing-context instance's configured modifier to dispatched forwarding keys. It has no useful effect when that modifier is absent or on actions that do not dispatch a key.
All compositor options are Advanced/internal.
capture_compositor.enabledType: boolean
Required: no
Default: false
Starts capture previews for configured non-main stream regions. Startup fails if enabled configuration is invalid or compositor initialization fails. Enabling it also changes non-main window parking and enables main-region z-order management.
capture_compositor.backendType: string
Required: when enabled
Default: desktop_duplication_d3d11
Values: desktop_duplication_d3d11
The value is trimmed and normalized to lowercase.
capture_compositor.fpsType: integer
Required: no
Default: 60
Range: 1 through 240 when enabled
Target compositor update rate.
capture_compositor.stream_regionsType: array of strings
Required: non-empty when enabled
Default: empty array
Every non-blank entry must name an existing region and cannot equal main_region. Blank entries and case-insensitive duplicates are removed. At least one non-main entry must remain.
ui.windowType: UI window object
Required: no
Default: x 100, y 100, width 640, height 400
ui.window.x and ui.window.yType: integer
Required: no
Default: 100
Initial desktop coordinates of the Multiboxer control window. Negative values are permitted.
ui.window.width and ui.window.heightType: integer
Required: no
Default: 640 and 400
Rule: both must be greater than zero
ui.buttonsType: array of UI button objects
Required: no
Default: empty array
Buttons use absolute coordinates inside the control window. If none has role config, a default Config button is added at x 8, y 8 with size 40 x 40.
idType: string
Required: yes
Rule: non-empty and unique across all UI and keymap-owned buttons
IDs are compared case-insensitively.
roleType: string or null
Required: no
Values: config, action
Values are trimmed and normalized to lowercase. A config button opens the active JSON file in Notepad. Other buttons execute keymap when one is set. The role does not itself require a keymap.
textType: string or null
Required: no
Default: keymap name when bound, otherwise id
Caption shown on the button.
x and yType: integer
Required: no
Default: 0
Rule: zero or greater
Absolute position within the window content canvas.
width and heightType: integer
Required: no
Default: 40
Rule: greater than zero
keymapType: string or null
Required: no
Dependency: if non-empty, must name a configured keymap
Invokes the named keymap when clicked, even if that keymap has no trigger keys.
imageType: string or null
Required: no
Image file path. Relative paths are resolved from the active configuration directory. Missing files are silently omitted from the rendered button. The current validator effectively accepts any non-empty string.
show_enabled_stateType: boolean
Required: no
Default: false
When the button has a named keymap, colors the button green when enabled and red when disabled. Despite its name, current runtime behavior does not append Enabled or Disabled text.
show_round_robin_next_targetType: boolean
Required: no
Default: false
For a bound keymap containing round_robin, appends text such as Next:game3 to the button label.
keymaps[].ui_button has the same defaults and validation for id, text, coordinates, dimensions, image, and the two state-display booleans. Its role is always treated as action, and its keymap binding is the containing keymap's name.