# スワイプパッド

スワイプパッドは、ハードウェアキーボードなしで作業するための、親指の届く
位置に浮かぶパックです。フリックするとアプリごとのマクロが — コーディング
エージェントが待っているときは、その実際のプロンプトの選択肢が — 発火し、
ダブルタップで音声入力できます。iPhone では中心的な入力手段で初期状態から
オン、iPad では **設定 → 実験的機能 → スワイプパッド** で任意に有効に
できます。

## パック

- **デフォルトの隅** — コールド起動時、動かすまでパックが置かれる場所。最後の
  位置は記憶され、向きや画面サイズが変わると画面内に収まるよう調整されます。
- **パックのサイズ** — コンパクト（44 pt）、標準（52 pt）、大（64 pt）。
- **長押し** でパックをつかみます。離した場所にとどまります（常に画面内に
  収まります）。

iPhone では、放射状メニューは **隅の扇形** として描かれます — 同じ花びらが
親指の届く四分円の弧に並びます — また、キーボードが出ている横向きでは
隠れます。大きいパックサイズは iPad 専用です。

## ジェスチャ

明確な 3 つのジェスチャがあります:

- **タップ、長押ししてドラッグ** — パックの周りに放射状メニューを開きます。
  方向の上で離すとそのマクロが発火し、デッドゾーンで離すとキャンセルされます。
- **ダブルタップ** — [音声入力](#音声入力)を開始します。
- **長押し** — パックを移動します。

## プロファイル

放射状の花びらは、アクティブなペインのフォアグラウンドプロセス（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/ja/agent-center/)にも供給されます。ルールが不正な
プロファイルは「ステータスを取得できません」に降格します。

花びらのラベルはエージェントのプロンプトの役割に従います — 右 = 承認、
左 = 拒否、上 = 常に、下 = 下。割り当てのない花びらは表示されません。

## エージェントのライブ選択肢

[エージェントセンター](https://bambouville.com/docs/ja/agent-center/)を有効にし、そのステータスフックを
ホストに設置していると、パッドは推測をやめます。フォーカス中のペインで
Claude Code または Codex のエージェントが **入力待ち** の間、花びらには
プロンプトの*実際の*選択肢が描かれ — ラベルはメニュー自体から取られ、意味に
応じて色が付きます（承認は緑、拒否は赤、常にはアンバー）— パックはアンバーに
脈打ちます。エージェントが **実行中** の間は、赤い「中断」の花びら（esc）と、
中立色の「モードを切り替え」の花びら（shift-tab）が用意されます。

プロンプトの選択肢がパッドの方向より多いときは、**その他** の花びらが
エージェントセンターでプロンプト全体を開きます。ある方向に覚え込ませた
選択肢はその方向を保つので、練習した見ないままのスワイプは、いつもどおりの
意味を持ち続けます。フックによる裏付けがない場合、パッドは上記の静的な
プロファイルにフォールバックします。

## マクロの記述

マクロは小さな仕様で書きます:

- 文字はそのまま送られます、
- Enter は `↵`、
- Escape は `esc`、`\e`、`\x1b`、
- Shift-Tab は `shift-tab`、
- `\t`（または `tab`）、`\r`、`\n`、
- 任意のバイトは 16 進で `\xNN`。

## 音声入力

パックをダブルタップすると、ターミナルへ音声入力できます。認識は
**デバイス上**（SFSpeechRecognizer）で行われ、音声がデバイスの外に出ることは
ありません。デバイスの言語を使い、その言語でオンデバイス認識が利用できない
場合は en-US にフォールバックします。マイクと音声認識の権限が必要です。音声
入力中、パックはリアルタイムの波形と経過時間を備えたマイクのピルに変化
します。タップで確定、✕ でキャンセルします。

オプション（設定 → 実験的機能）:

- **無音で確定** — 1.2 秒の静けさで自動送信、
- **改行を付加** — Enter で終える、
- **パック上のリアルタイム波形**。
