# Assign Mode & Controller Mapping (MIDI & Keyboard)

**Assign Mode** is Unilighter's universal hardware mapping architecture. It enables lighting operators to bind UI faders, dials, buttons, or color swatches to physical USB/Bluetooth MIDI controllers and computer keyboard shortcuts.

![Assign Mode Toggle Button in Navbar](https://unilighter.cc/info/docs/bindings/button_assign_mode_1d092979.png)

---

## 🎮 How to Map a Control

1. Enter Assign Mode with the controller icon in the top navigation bar. The button shows the active state.
2. Click the fader, knob, cue button, or color control that you want to map.
3. In the Assignment Modal, choose the **MIDI** or **Keyboard** tab, learn the physical event, choose its trigger behavior, add a label, and click **Add**.

![Assignment Modal with MIDI Learn](https://unilighter.cc/info/docs/bindings/modal_assignment_1ace25f1.png)

## 🎛️ MIDI Mapping & Auto-Learn

- Click **Learn**, then move a physical fader, turn an encoder, or press a trigger pad. Unilighter records the incoming channel and message pattern automatically.
- Trigger behavior is selected with one click:
  - **Absolute**: For standard faders and potentiometers.
  - **Toggle**: For buttons that alternate between two states. On controls that support it, enable **Custom values** and set the two values explicitly.
  - **Encoder**: For relative endless rotary controls, using accumulated steps to avoid value jumps.
- Add a descriptive label such as *Master Dimmer Fader #1* or *Intro Wash Trigger* before saving.

After a MIDI event is learned, the modal immediately checks global bindings and Dashboard widget bindings. If the same control is already assigned, an **Already assigned** panel shows the existing target and binding label so you can choose a different event or remove the old assignment before continuing.

> [!IMPORTANT]
> **Unidirectional Hardware Synchronization (Inbound Only)**
> MIDI control in Unilighter is strictly inbound: incoming signals from the physical controller are mapped into the console's virtual parameters.
> - Unilighter does not transmit signals to drive motorized faders.
> - It does not send outbound CC telemetry for LED rings or bidirectional parameter polling.
> - Standard physical faders take control when their physical position changes.

## ⌨️ Keyboard Shortcuts Mapping

1. Open the **Keyboard** tab and click **Press Key**.
2. Press a key or combination such as `Space`, `1`, `Shift + A`, or `Ctrl + F`.
3. Choose **Default** to use the control's normal behavior, or **Custom Value** and enter a value from `0` to `1`.
4. Click **Add**. Existing assignments are shown immediately under the **Already assigned** warning when the captured combination is already in use.

## 🗂️ Global Bindings Manager

Right-click the navbar controller button to open the **Global Bindings Manager**, where you can review, edit, search, or delete active show mappings.

![Global Bindings Manager Modal](https://unilighter.cc/info/docs/bindings/modal_bindings_manager_8bf43dbc.png)

- **Search & Filter**: Search by label, hardware message type, or target parameter.
- **Listen Mode**: Touch a physical control or press a keyboard shortcut to jump directly to its binding.
- **Scope Tabs**: View **Global** bindings separately from **Dashboard** widget-level bindings.
- **Project Portability**: Assignments are saved in the Unilighter project so the show can be moved with its control mappings intact.

