# Pavé de gestes

Le pavé de gestes est une pastille flottante à portée du pouce, pour travailler
sans clavier physique : faites-la glisser pour déclencher des macros propres à
l'app — ou, quand un agent de code attend, ses véritables options d'invite — et
touchez deux fois pour dicter. Sur iPhone, c'est une saisie de base, active par
défaut ; sur iPad, elle est optionnelle, sous
**réglages → expérimental → pavé de gestes**.

## La pastille

- **coin par défaut** — l'endroit où la pastille se pose au démarrage à froid,
  jusqu'à ce que vous la déplaciez ; la dernière position est retenue, et
  recadrée quand l'orientation ou la taille de l'écran change.
- **taille de la pastille** — compact (44 pt), standard (52 pt) ou grand
  (64 pt).
- **appui long** saisit la pastille ; elle reste là où vous la relâchez (en
  restant entièrement à l'écran).

Sur iPhone, le menu radial se dessine en **éventail d'angle** — les mêmes
pétales sur un quart d'arc, à portée du pouce — et disparaît en paysage tant
que le clavier est affiché. La grande taille est réservée à l'iPad.

## Gestes

Trois gestes distincts :

- **toucher, maintenir et faire glisser** — ouvre le menu radial autour de la
  pastille. Relâchez dans une direction pour déclencher cette macro ; relâchez
  dans la zone morte pour annuler.
- **double touche** — démarre la [dictée](#dictée).
- **appui long** — déplace la pastille.

## Profils

Les pétales du menu radial viennent de **profils** comparés au processus au
premier plan du volet actif (via `pane_current_command` de tmux, ou des
instantanés `ps` en ssh simple). Les profils sont évalués de haut en bas ; la
première correspondance l'emporte.

Profils intégrés :

| profil | droite | gauche | haut |
| --- | --- | --- | --- |
| **claude code** | `1↵` approuver | `3↵` refuser | `2↵` toujours |
| **codex cli** | `y` | `esc` | `p` |
| **fallback** (toujours actif) | — | — | — |

Le profil **fallback** correspond à tout et n'assigne rien — la dictée
fonctionne quand même.

Les profils personnalisés reçoivent un comparateur de processus (texte littéral
ou motif `regex:`) et peuvent déclarer des règles de **détection des agents** —
regex des invites bloquantes et de l'invite au repos, une regex des options de
menu, et des modèles de réponse avec les emplacements `{index}` /
`{shortcut}` — qui alimentent aussi le [centre d'agents](https://bambouville.com/docs/fr/agent-center/). Un
profil dont les règles sont invalides retombe sur « état indisponible ».

Les libellés des pétales suivent les rôles des invites d'agent — droite =
approuver, gauche = refuser, haut = toujours, bas = bas ; les pétales non
assignés sont masqués.

## Options d'agent en direct

Avec le [centre d'agents](https://bambouville.com/docs/fr/agent-center/) activé et son hook d'état installé
sur l'hôte, le pavé cesse de deviner : tant qu'un agent Claude Code ou Codex
est **en attente d'une saisie** dans le volet actif, les pétales affichent les
*vraies* options de l'invite — les libellés viennent du menu lui-même, teintés
selon leur sens (vert approuver, rouge refuser, ambre toujours) — et la
pastille pulse en ambre. Tant que l'agent est **en cours**, le pavé propose un
pétale rouge d'interruption (esc) et un pétale neutre de changement de mode
(shift-tab).

Quand une invite compte plus d'options que le pavé n'a de directions, un pétale
**plus** ouvre l'invite complète dans le centre d'agents — et toute option que
vous avez habituée à une direction conserve cette direction, si bien que les
balayages appris à l'aveugle gardent le sens qu'ils ont toujours eu. Sans
preuve du hook, le pavé retombe sur les profils statiques ci-dessus.

## Le langage des macros

Les macros s'écrivent dans une petite spécification :

- les caractères littéraux sont envoyés tels quels,
- `↵` pour Entrée,
- `esc`, `\e` ou `\x1b` pour Échap,
- `shift-tab` pour Maj-Tab,
- `\t` (ou `tab`), `\r`, `\n`,
- `\xNN` pour un octet arbitraire en hexadécimal.

## Dictée

Touchez deux fois la pastille pour dicter dans le terminal. La reconnaissance a
lieu **sur l'appareil** (SFSpeechRecognizer) — aucun audio ne quitte l'appareil.
Elle utilise la langue de votre appareil, et retombe sur en-US quand la
reconnaissance sur l'appareil n'y est pas disponible ; elle exige les
autorisations micro et reconnaissance vocale.
Pendant la dictée, la pastille se transforme en pilule micro avec une forme
d'onde en direct et un chronomètre ; touchez pour valider, ✕ pour annuler.

Options (réglages → expérimental) :

- **valider après un silence** — envoi automatique après 1,2 s de silence,
- **ajouter un retour** — terminer par Entrée,
- **forme d'onde en direct sur la pastille**.
