# illusionac/illusion-inputactionsystem architecture

> Architecture diagram of the GitHub repository illusionac/illusion-inputactionsystem, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/illusionac/illusion-inputactionsystem
- Repository: https://github.com/illusionac/illusion-inputactionsystem

## Overview

IIAS is a client-side Roblox input and keybind library. A developer creates actions through the public module, configures their bindings and behavior, then observes activation and cooldown signals. The README also documents context groups, buffering, multi-tap activation, mobile GUI inputs, and ControlHints support. Source excerpts were unavailable, so internal feature nodes use the existing `src` directory rather than guessed module filenames; relationships shown here are limited to those documented in the README.

Main entry points: [`src`](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src) (Binding object), [`src/init.luau`](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/init.luau) (IIAS module), [`src/TypeDefinition.luau`](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/TypeDefinition.luau) (Action types), [`src/IllusionSignal.luau`](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/IllusionSignal.luau) (Lifecycle signals)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Public API"]
  node_iias["IIAS module<br/>[init.luau]"]
  node_binding["Binding object"]
  node_type_definitions["Action types"]
  node_bind_utils["Binding utilities<br/>[BindUtils.luau]"]
end

subgraph group_actions["Action Behavior"]
  node_activation_modes["Hold and toggle"]
  node_cooldowns["Cooldowns"]
  node_buffering["Input buffering"]
  node_tap_sequences["Tap sequences"]
  node_context_groups["Context groups"]
  node_lifecycle_signals["Lifecycle signals"]
end

subgraph group_integrations["Platform Integrations"]
  node_roblox_ias["Roblox IAS"]
  node_gui_buttons["GUI buttons"]
  node_control_hints["ControlHints UI"]
end

node_developer(("Game developer"))

node_developer -->|"requires and calls"| node_iias
node_iias -->|"creates actions"| node_binding
node_developer -->|"configures binds"| node_binding
node_iias -->|"supports action types"| node_type_definitions
node_binding -->|"sets mode"| node_activation_modes
node_binding -->|"sets cooldown"| node_cooldowns
node_binding -->|"enables buffering"| node_buffering
node_binding -->|"configures tap sequences"| node_tap_sequences
node_iias -->|"manages contexts"| node_context_groups
node_binding -->|"exposes signals"| node_lifecycle_signals
node_iias -->|"manages native instances"| node_roblox_ias
node_binding -->|"accepts GUI inputs"| node_gui_buttons
node_iias -->|"integrates helper"| node_control_hints

click node_iias "https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/init.luau"
click node_binding "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_type_definitions "https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/TypeDefinition.luau"
click node_activation_modes "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_cooldowns "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_buffering "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_tap_sequences "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_context_groups "https://github.com/illusionac/illusion-inputactionsystem/tree/main/src"
click node_lifecycle_signals "https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/IllusionSignal.luau"
click node_bind_utils "https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/BindUtils.luau"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_iias,node_binding,node_type_definitions,node_bind_utils toneBlue
class node_activation_modes,node_cooldowns,node_buffering,node_tap_sequences,node_context_groups,node_lifecycle_signals toneAmber
class node_roblox_ias,node_gui_buttons,node_control_hints toneMint
class node_developer toneIndigo
```

## Components

### Public API

- [IIAS module](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/init.luau): `src/init.luau`
- [Binding object](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Action types](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/TypeDefinition.luau): `src/TypeDefinition.luau`
- [Binding utilities](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/BindUtils.luau): `src/BindUtils.luau`

### Action Behavior

- [Hold and toggle](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Cooldowns](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Input buffering](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Tap sequences](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Context groups](https://github.com/illusionac/illusion-inputactionsystem/tree/main/src): `src`
- [Lifecycle signals](https://github.com/illusionac/illusion-inputactionsystem/blob/main/src/IllusionSignal.luau): `src/IllusionSignal.luau`

### Platform Integrations

- **Roblox IAS**
- **GUI buttons**
- **ControlHints UI**

### Other components

- **Game developer**

## Connections

- Game developer → IIAS module: requires and calls (evidence: `README.md`)
- IIAS module → Binding object: creates actions (evidence: `README.md`)
- Game developer → Binding object: configures binds (evidence: `README.md`)
- IIAS module → Action types: supports action types (evidence: `README.md`)
- Binding object → Hold and toggle: sets mode (evidence: `README.md`)
- Binding object → Cooldowns: sets cooldown (evidence: `README.md`)
- Binding object → Input buffering: enables buffering (evidence: `README.md`)
- Binding object → Tap sequences: configures tap sequences (evidence: `README.md`)
- IIAS module → Context groups: manages contexts (evidence: `README.md`)
- Binding object → Lifecycle signals: exposes signals (evidence: `README.md`)
- IIAS module → Roblox IAS: manages native instances (evidence: `README.md`)
- Binding object → GUI buttons: accepts GUI inputs (evidence: `README.md`)
- IIAS module → ControlHints UI: integrates helper (evidence: `README.md`)
