# yyevax/zmk-config-xavient architecture

> Architecture diagram of the GitHub repository yyevax/zmk-config-xavient, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yyevax/zmk-config-xavient
- Repository: https://github.com/yyevax/zmk-config-xavient

## Overview

XAVIEN is a ZMK configuration for a 36-key split keyboard. The main workflow maps physical key positions to a Colemak-DH base layer and auxiliary layers, then uses ZMK to turn key events into keyboard and mouse actions for the host. The README also documents gaming, shortcut, media, screen-control, and alternate-layout capabilities. Source excerpts only cover key-position mappings, so links among unsampled keymap behaviors are limited to the documented structure and capabilities.

Main entry points: [`config/west.yml`](https://github.com/yyevax/zmk-config-xavient/blob/main/config/west.yml) (ZMK firmware), [`config/xavien.keymap`](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap) (Layer keymap), [`config/includes/keymap.dtsi`](https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/keymap.dtsi) (Keymap includes), [`boards/shields/xavien/xavien.dtsi`](https://github.com/yyevax/zmk-config-xavient/blob/main/boards/shields/xavien/xavien.dtsi) (Key switches)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_hardware["Keyboard hardware"]
  node_switches["Key switches<br/>[xavien.dtsi]"]
  node_layouts["Key layouts"]
  node_split_config["Split variants"]
end

subgraph group_mapping["Keymap configuration"]
  node_position_map["Position maps"]
  node_keymap["Layer keymap<br/>[xavien.keymap]"]
  node_keymap_includes["Keymap includes<br/>[keymap.dtsi]"]
  node_combos["Combos<br/>[combos.dtsi]"]
  node_mouse_config["Mouse config<br/>[mouse.dtsi]"]
  node_base_layer["Colemak-DH<br/>[xavien.keymap]"]
  node_nav_layer["Navigation<br/>[xavien.keymap]"]
  node_symbols_numbers["Symbols and numbers<br/>[xavien.keymap]"]
  node_fun_media["Function and media<br/>[xavien.keymap]"]
  node_screen_sys["Screen and system<br/>[xavien.keymap]"]
  node_gaming_layer["Gaming layers<br/>[xavien.keymap]"]
  node_alternate_layers["Alternate layouts<br/>[xavien.keymap]"]
end

subgraph group_runtime["Input behavior"]
  node_zmk["ZMK firmware<br/>[west.yml]"]
  node_mouse_output["Mouse actions<br/>[mouse.dtsi]"]
  node_swap_behavior["Swapper behavior"]
end

node_user(("Keyboard user"))
node_host(("Host computer"))

node_user -->|"presses"| node_switches
node_switches -->|"key positions"| node_position_map
node_layouts -->|"defines layouts"| node_split_config
node_position_map -->|"maps positions"| node_keymap
node_keymap -->|"includes"| node_keymap_includes
node_keymap_includes -->|"includes"| node_combos
node_keymap_includes -->|"includes"| node_mouse_config
node_keymap -->|"defines"| node_base_layer
node_keymap -->|"defines"| node_nav_layer
node_keymap -->|"defines"| node_symbols_numbers
node_keymap -->|"defines"| node_fun_media
node_keymap -->|"defines"| node_screen_sys
node_keymap -->|"defines"| node_gaming_layer
node_keymap -->|"defines"| node_alternate_layers
node_base_layer -->|"key bindings"| node_zmk
node_nav_layer -->|"key bindings"| node_zmk
node_symbols_numbers -->|"key bindings"| node_zmk
node_fun_media -->|"key bindings"| node_zmk
node_screen_sys -->|"key bindings"| node_zmk
node_gaming_layer -->|"key bindings"| node_zmk
node_alternate_layers -->|"key bindings"| node_zmk
node_combos -->|"configures combos"| node_zmk
node_mouse_config -->|"configures"| node_mouse_output
node_zmk -->|"sends input"| node_host
node_zmk -.->|"dispatches"| node_mouse_output
node_zmk -.->|"uses behavior"| node_swap_behavior

click node_switches "https://github.com/yyevax/zmk-config-xavient/blob/main/boards/shields/xavien/xavien.dtsi"
click node_layouts "https://github.com/yyevax/zmk-config-xavient/tree/main/boards/shields/xavien/layouts"
click node_split_config "https://github.com/yyevax/zmk-config-xavient/tree/main/boards/shields/xavien"
click node_position_map "https://github.com/yyevax/zmk-config-xavient/tree/main/config/keypos_def"
click node_keymap "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_keymap_includes "https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/keymap.dtsi"
click node_combos "https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/combos.dtsi"
click node_mouse_config "https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/mouse.dtsi"
click node_base_layer "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_nav_layer "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_symbols_numbers "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_fun_media "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_screen_sys "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_gaming_layer "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_alternate_layers "https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap"
click node_zmk "https://github.com/yyevax/zmk-config-xavient/blob/main/config/west.yml"
click node_mouse_output "https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/mouse.dtsi"

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_switches,node_layouts,node_split_config,node_user toneBlue
class node_position_map,node_keymap,node_keymap_includes,node_combos,node_mouse_config,node_base_layer,node_nav_layer,node_symbols_numbers,node_fun_media,node_screen_sys,node_gaming_layer,node_alternate_layers toneAmber
class node_zmk,node_mouse_output,node_swap_behavior toneMint
class node_host toneIndigo
```

## Components

### Keyboard hardware

- [Key switches](https://github.com/yyevax/zmk-config-xavient/blob/main/boards/shields/xavien/xavien.dtsi): `boards/shields/xavien/xavien.dtsi`
- [Key layouts](https://github.com/yyevax/zmk-config-xavient/tree/main/boards/shields/xavien/layouts): `boards/shields/xavien/layouts`
- [Split variants](https://github.com/yyevax/zmk-config-xavient/tree/main/boards/shields/xavien): `boards/shields/xavien`

### Keymap configuration

- [Position maps](https://github.com/yyevax/zmk-config-xavient/tree/main/config/keypos_def): `config/keypos_def`
- [Layer keymap](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Keymap includes](https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/keymap.dtsi): `config/includes/keymap.dtsi`
- [Combos](https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/combos.dtsi): `config/includes/combos.dtsi`
- [Mouse config](https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/mouse.dtsi): `config/includes/mouse.dtsi`
- [Colemak-DH](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Navigation](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Symbols and numbers](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Function and media](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Screen and system](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Gaming layers](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`
- [Alternate layouts](https://github.com/yyevax/zmk-config-xavient/blob/main/config/xavien.keymap): `config/xavien.keymap`

### Input behavior

- [ZMK firmware](https://github.com/yyevax/zmk-config-xavient/blob/main/config/west.yml): `config/west.yml`
- [Mouse actions](https://github.com/yyevax/zmk-config-xavient/blob/main/config/includes/mouse.dtsi): `config/includes/mouse.dtsi`
- **Swapper behavior**

### Other components

- **Keyboard user**
- **Host computer**

## Connections

- Keyboard user → Key switches: presses
- Key switches → Position maps: key positions
- Key layouts → Split variants: defines layouts
- Position maps → Layer keymap: maps positions
- Layer keymap → Keymap includes: includes
- Keymap includes → Combos: includes
- Keymap includes → Mouse config: includes
- Layer keymap → Colemak-DH: defines
- Layer keymap → Navigation: defines
- Layer keymap → Symbols and numbers: defines
- Layer keymap → Function and media: defines
- Layer keymap → Screen and system: defines
- Layer keymap → Gaming layers: defines
- Layer keymap → Alternate layouts: defines
- Colemak-DH → ZMK firmware: key bindings
- Navigation → ZMK firmware: key bindings
- Symbols and numbers → ZMK firmware: key bindings
- Function and media → ZMK firmware: key bindings
- Screen and system → ZMK firmware: key bindings
- Gaming layers → ZMK firmware: key bindings
- Alternate layouts → ZMK firmware: key bindings
- Combos → ZMK firmware: configures combos
- Mouse config → Mouse actions: configures
- ZMK firmware → Host computer: sends input
- ZMK firmware → Mouse actions: dispatches
- ZMK firmware → Swapper behavior: uses behavior
