mcpField
I
input-handling

input-handling

github.com/josiahsiegel開発5959 回インストール19 週間前に更新
リポジトリ

input-handling について

ターミナルUIの入力処理を実装する開発者向けのスキルで、キーボード、マウス、貼り付け、フォーカスを扱います。rawモードの確実な復元、意図の明確なキー割り当て、貼り付け内容をコマンドではなくデータとして扱う方法を重視します。

主な機能

  1. 01対話・非対話入力のルール
  2. 02rawモード復元の要件
  3. 03キー割り当て設計の指針
  4. 04フォーカス管理の要件
  5. 05貼り付けとマウスイベントの安全な処理

活用シーン

  1. 01ターミナルUIで見つけやすいショートカットを設計
  2. 02アプリ終了時に端末状態を復元
  3. 03貼り付け文字列をキー入力ではなくデータとして扱う
  4. 04リサイズ後にマウス位置を検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill input-handling

インストール後、Claude Code で/input-handlingを入力して読み込まれたか確認します。

同梱ファイルreferences/input-protocols.mdreferences/keybinding-design.md

詳細

TUI の入力処理、Raw モード、キーボード、マウス、貼り付け、フォーカス

TUI がキー入力を読み取る、ショートカットを処理する、マウスに対応する、テキストを編集する、フォーカスを管理する、または安全な貼り付け動作を必要とする場合に、このスキルを使用します。

入力の契約

  • 対話型 TTY セッションでのみ、Raw モードまたは Cbreak モードに切り替えます。
  • スクリプト、パイプ、CI には、対話型でない代替手段を用意します。
  • 入力のデコードとアプリケーションのアクションを分離します。
  • すべてのアクションをキーボードから実行できるようにします。
  • マウスへの対応は、任意の段階的な機能強化として扱います。
  • ユーザーが再割り当てできる場合を除き、想定されるターミナルのショートカットを維持します。

Raw モードのルール

Raw モードでは行編集が無効になり、シグナルの動作が変わります。処理を一元化し、確実に元の状態へ戻すようにします。Ctrl-C、対応環境での Ctrl-Z/サスペンド、EOF、リサイズ、ターミナルの終了、致命的な例外が発生した場合の動作を確認します。パスワードやトークンはエコーバックしないでください。

キーバインドの設計

優れたキーバインドは、見つけやすく、一貫性があり、競合を考慮しています。

  • よく使うアクションのヘルプを常に表示します。
  • ワークフロー上のリスクに見合う場合に限り、終了/キャンセルに q、Esc、または Ctrl-C を使用します。
  • 破壊的なアクションには確認を求め、取り消せない操作にはより厳格な確認を求めます。
  • 設定で変更可能にしない限り、ターミナル、シェル、エディター、マルチプレクサでよく使われるショートカットを横取りしないでください。
  • 可能であれば、覚えやすいショートカットとナビゲーションキーの両方に対応します。
  • グローバルなショートカットと、フォーカス中のウィジェットで使うショートカットを区別します。

フォーカスモデル

すべての対話要素には、以下が必要です。

  • 安定した識別子。
  • フォーカス可能かどうかのルール。
  • 色だけに頼らない、目に見えるフォーカス表示。
  • 適切な場合の Tab/Shift-Tab または矢印キーによる移動。
  • 無効化、非表示、モーダル、ネストされたコントロールの明確な動作。
  • アクションを実行する前にフォーカスを更新する、マウスクリック時の動作。

貼り付けとマウスの安全性

シェル、エディター、コマンドパレット、複数行入力では、ブラケット付き貼り付けを有効にします。貼り付け開始/終了マーカーを解析し、貼り付けられたテキストをコマンド列ではなくデータとして扱います。マウス入力では、現在のレイアウトに対して座標を検証し、リサイズ後の古いイベントを無視します。

障害の症状

症状考えられる原因修正方法
Esc の反応が遅いパーサーが Alt のプレフィックスとの判別を待っているタイムアウトを調整するか、フレームワークのプロトコルサポートを使用します
Ctrl-C で終了しないRaw モードでシグナルが処理されなくなったCtrl-C を明示的に割り当て、ターミナルを元の状態に戻します
貼り付けでアクションが実行されるブラケット付き貼り付けが無効、または貼り付けをキー入力として扱っている貼り付けプロトコルを有効にし、テキストとして処理します
マウスクリックで違う行が選択されるリサイズやスクロール後にレイアウトが古くなっている現在のビューポートに対して座標を検証します
フォーカスが消えるウィジェットの削除後にフォーカス先が設定されていない次にフォーカス可能な対象を決定します

リファレンスファイル

  • references/input-protocols.md - キーボード、マウス、貼り付け、フォーカス、リサイズのイベントに関する詳細。
  • references/keybinding-design.md - ショートカットの設計、競合の回避、フォーム/エディターに関する詳細。

コメント