# 滑动板

滑动板是一个位于拇指可及范围内的悬浮圆钮，用于在没有硬件键盘时工作：轻扫它
即可触发按程序区分的宏 —— 或者，当编码智能体正在等待时，触发它真实的提示
选项 —— 轻点两下则开始听写。在 iPhone 上它是核心输入方式，默认开启；在 iPad
上则需手动启用，位于 **设置 → 实验性功能 → 滑动手势板**。

## 圆钮

- **默认角落** —— 圆钮在冷启动时所处的位置，直到你移动它为止；上次的位置会
  被记住，并在屏幕方向或屏幕尺寸变化时重新约束到可视范围内。
- **圆钮大小** —— 紧凑（44 pt）、标准（52 pt）或大（64 pt）。
- **长按** 会拿起圆钮；松手后它就留在你放下的地方（始终保持完全在屏幕内）。

在 iPhone 上，环形菜单会绘制成**角落扇形** —— 同样的花瓣排布在拇指可及的
四分之一弧线上 —— 并在横屏且键盘弹出时隐藏。大号圆钮仅限 iPad。

## 手势

三种明确的手势：

- **轻点、按住并拖移** —— 在圆钮周围打开环形菜单。朝某个方向松开即可触发
  该宏；在中心死区松开则取消。
- **轻点两下** —— 启动[听写](#听写)。
- **长按** —— 移动圆钮。

## 配置

环形菜单的花瓣来自**配置**，它们与活动窗格的前台进程进行匹配（通过 tmux 的
`pane_current_command`，或在纯 ssh 下通过 `ps` 快照）。配置自上而下逐条判断，
以首个匹配项为准。

内置配置：

| 配置 | 右 | 左 | 上 |
| --- | --- | --- | --- |
| **claude code** | `1↵` 批准 | `3↵` 拒绝 | `2↵` 始终 |
| **codex cli** | `y` | `esc` | `p` |
| **fallback**（始终启用） | — | — | — |

**fallback** 配置匹配一切但不绑定任何东西 —— 听写依然可用。

自定配置可以设置一个进程匹配器（字面文本或 `regex:` 模式），并声明
**智能体识别**规则 —— 阻塞/空闲提示符的正则表达式、菜单选项的正则表达式，
以及带 `{index}` / `{shortcut}` 占位符的响应模板 —— 这些同样会供
[智能体中心](https://bambouville.com/docs/zh-hans/agent-center/)使用。规则无效的配置会降级为「状态不可用」。

花瓣的标签遵循智能体提示中的角色 —— 右 = 批准，左 = 拒绝，上 = 始终，
下 = 下；未绑定的花瓣会被隐藏。

## 实时智能体选项

启用[智能体中心](https://bambouville.com/docs/zh-hans/agent-center/)并在主机上安装其状态钩子后，滑动板就不再
靠猜：当聚焦窗格中的 Claude Code 或 Codex 智能体处于**等待输入**状态时，
花瓣会呈现该提示的*真实*选项 —— 标签直接取自菜单，并按含义着色（绿色批准、
红色拒绝、琥珀色始终）—— 同时圆钮会以琥珀色脉动。当智能体处于**工作中**时，
滑动板会提供一片红色的中断花瓣（esc）和一片中性的切换模式花瓣（shift-tab）。

当一个提示的选项多于滑动板的方向数时，会出现一片**更多**花瓣，用于在智能体
中心里打开完整提示 —— 而你已经训练到某个方向上的选项会保留该方向，因此练熟
的盲滑动作始终保持原有含义。若没有钩子的证明，滑动板会回退到上面的静态配置。

## 宏语言

宏使用一套简单的定义写成：

- 字面字符按原样发送，
- `↵` 表示回车，
- `esc`、`\e` 或 `\x1b` 表示 Escape，
- `shift-tab` 表示 Shift-Tab，
- `\t`（或 `tab`）、`\r`、`\n`，
- `\xNN` 表示任意十六进制字节。

## 听写

轻点两下圆钮即可向终端听写。识别在**设备端**进行（SFSpeechRecognizer）——
音频不会离开设备。它使用你的设备语言，当设备端识别不支持该语言时回退到
en-US，并需要麦克风和语音识别权限。听写期间，圆钮会变成一枚带实时波形和
计时的麦克风药丸；轻点以提交，✕ 取消。

选项（设置 → 实验性功能）：

- **静默后提交** —— 静默 1.2 秒后自动发送，
- **追加回车** —— 结尾发送回车，
- **圆钮上的实时波形**。
