# Panel de gestos

El panel de gestos es un disco flotante al alcance del pulgar para trabajar
sin teclado físico: deslízalo para lanzar macros por app — o, cuando un
agente de código está esperando, las opciones reales de su pregunta — y toca
dos veces para dictar. En el iPhone es entrada principal y está activado por
omisión; en el iPad hay que activarlo, en
**ajustes → experimental → panel de gestos**.

## El disco

- **esquina por omisión** — dónde se sitúa el disco al arrancar en frío,
  hasta que lo muevas; se recuerda la última posición y se reajusta cuando
  cambian la orientación o el tamaño de la pantalla.
- **tamaño del disco** — compacto (44 pt), estándar (52 pt) o grande (64 pt).
- **pulsación larga** levanta el disco; se queda donde lo sueltes (siempre
  completamente en pantalla).

En el iPhone el radial se dibuja como un **abanico en la esquina** — los
mismos pétalos en un arco de un cuarto, dentro del alcance del pulgar — y se
oculta en horizontal mientras el teclado está visible. El tamaño de disco
grande es solo para iPad.

## Gestos

Tres gestos diferenciados:

- **tocar, mantener y arrastrar** — abre el menú radial alrededor del disco.
  Suelta en una dirección para lanzar esa macro; suelta en la zona muerta para
  cancelar.
- **doble toque** — inicia el [dictado](#dictado).
- **pulsación larga** — mueve el disco.

## Perfiles

Los pétalos del radial salen de los **perfiles**, que se comparan con el
proceso en primer plano del panel activo (mediante `pane_current_command` de
tmux, o instantáneas de `ps` en ssh simple). Los perfiles se evalúan de arriba
abajo; gana la primera coincidencia.

Perfiles integrados:

| perfil | derecha | izquierda | arriba |
| --- | --- | --- | --- |
| **claude code** | `1↵` aprobar | `3↵` denegar | `2↵` siempre |
| **codex cli** | `y` | `esc` | `p` |
| **fallback** (siempre activo) | — | — | — |

El perfil **fallback** coincide con todo y no asigna nada — el dictado sigue
funcionando.

Los perfiles personalizados llevan un comparador de proceso (texto literal o
un patrón `regex:`) y pueden declarar reglas de **detección de agentes**
— regexes de prompts bloqueantes o inactivos, una regex de las opciones de
menú y plantillas de respuesta con los marcadores `{index}` / `{shortcut}` —
que también alimentan el [centro de agentes](https://bambouville.com/docs/es/agent-center/). Un perfil con
reglas no válidas se degrada a «estado no disponible».

Las etiquetas de los pétalos siguen los roles de la pregunta del agente:
derecha = aprobar, izquierda = denegar, arriba = siempre, abajo = abajo; los
pétalos sin asignar se ocultan.

## Opciones de agente en vivo

Con el [centro de agentes](https://bambouville.com/docs/es/agent-center/) activado y su hook de estado
instalado en el host, el panel deja de adivinar: mientras un agente de Claude
Code o Codex está **esperando entrada** en el panel enfocado, los pétalos
muestran las opciones *reales* de la pregunta — etiquetas tomadas del propio
menú, teñidas según su significado (verde aprobar, rojo denegar, ámbar
siempre) — y el disco palpita en ámbar. Mientras el agente está
**trabajando**, el panel ofrece un pétalo rojo de interrupción (esc) y un
pétalo neutro de cambio de modo (shift-tab).

Cuando una pregunta tiene más opciones que direcciones tiene el panel, un
pétalo **más** abre la pregunta completa en el centro de agentes — y cualquier
opción que hayas entrenado en una dirección conserva esa dirección, así que
los deslizamientos a ciegas que ya dominas siguen significando lo mismo de
siempre. Sin la prueba del hook, el panel vuelve a los perfiles estáticos de
arriba.

## El lenguaje de las macros

Las macros se escriben con una pequeña definición:

- los caracteres literales se envían tal cual,
- `↵` para Intro,
- `esc`, `\e` o `\x1b` para Escape,
- `shift-tab` para Mayúsculas-Tabulador,
- `\t` (o `tab`), `\r`, `\n`,
- `\xNN` para un byte arbitrario en hexadecimal.

## Dictado

Toca dos veces el disco para dictar en el terminal. El reconocimiento ocurre
**en el dispositivo** (SFSpeechRecognizer) — ningún audio sale del
dispositivo. Usa el idioma de tu dispositivo y recurre a en-US cuando el
reconocimiento en el dispositivo no está disponible para él, y requiere los
permisos de micrófono y de reconocimiento de voz. Mientras dictas, el disco se
transforma en una píldora de micrófono con una onda en vivo y un contador de
tiempo; toca para confirmar, ✕ para cancelar.

Opciones (ajustes → experimental):

- **confirmar tras el silencio** — envío automático tras 1,2 s de silencio,
- **añadir un retorno** — terminar con Intro,
- **onda en directo en el disco**.
