Skip to content

feat(tui): 没入でも Ctrl-O Ctrl-O で切替へズームアウトし IME 中でも届くように#424

Merged
kkyosuke merged 1 commit into
mainfrom
usagi/switch
Jun 27, 2026
Merged

feat(tui): 没入でも Ctrl-O Ctrl-O で切替へズームアウトし IME 中でも届くように#424
kkyosuke merged 1 commit into
mainfrom
usagi/switch

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

没入(Attached)モードで日本語 IME を ON にしたまま「切替」へ抜けられるようにする。

Ctrl-O o のリーダー文法は、2 段目の o がただの英字のため、IME 変換モードでは IME がローマ字変換(「お」)に横取りしてしまい usagi に届かない。結果として IME ON のまま Ctrl-O o を押しても切替に行けなかった

変更内容

  • 没入の classify() で、二重リーダー Ctrl-O Ctrl-OCtrl-O o と同じ 切替へのズームアウトReserved::Detach)に割り当て。Ctrl-O0x0f)は制御文字なので IME を素通しし、2 打とも制御文字 → IME 安全な経路になる。
  • 在席(Focus)は feat(tui): 在席でも没入と同じ Ctrl-O リーダー文法を効かせる #421 で既にこの挙動だったため、没入もそれに揃えて統一。
  • 没入チートシートの行を「Send a literal Ctrl-O to the shell」→「Zoom out to Switch (IME-safe second key)」に更新。
  • 関連ドキュメント(document/design/05-home.md / 00-tutorial.md / 03-commands/02-tui.md)を実態に合わせて更新。

トレードオフ

従来 Ctrl-O Ctrl-O が担っていた「リテラル Ctrl-O をシェルへ送る」機能(readline の operate-and-get-next 用。ほぼ未使用)は prefix 方式では使えなくなる。bare な Ctrl-O をシェルへ送りたい場合は alt 方式(bare Ctrl-O がそのままシェルへ流れる)を使う旨を、コメントとドキュメントに明記した。

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test をパス(カバレッジ 100% 維持)。
  • pane_input.rs の単体テストを更新(prefix_double_leader_zooms_to_switch_and_unknown_second_key_is_swallowed):Ctrl-O Ctrl-O の両報告形式('o'+CONTROL / 生 0x0f)が Reserved::Detach になることを検証。
  • 在席側の focus_ctrl_o_double_leader_also_opens_switch は従来どおりパス。

🤖 Generated with Claude Code

`Ctrl-O o` の 2 段目の `o` は IME 変換モードではローマ字変換に横取りされ
usagi に届かないため、日本語 IME を ON にしたまま没入から切替へ抜けられな
かった。`Ctrl-O`(0x0f)は制御文字で IME を素通しするので、二重リーダー
`Ctrl-O Ctrl-O` を `Ctrl-O o` と同じ切替へのズームアウトに割り当て、IME 安
全な経路を用意する。在席は #421 で既にこの挙動なので没入もそれに揃える。

従来 `Ctrl-O Ctrl-O` が担っていたリテラル `Ctrl-O` のシェル送出(readline の
operate-and-get-next 用、ほぼ未使用)は prefix 方式では使えなくなる。必要な
場合は `alt` 方式(bare Ctrl-O がシェルへ流れる)を使う旨をコメント・ドキュ
メントに明記した。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

🚀 いまのカバレッジ (Lines): 100.00% — この調子でいこう!

🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰

@kkyosuke kkyosuke merged commit 69e3156 into main Jun 27, 2026
4 checks passed
@kkyosuke kkyosuke deleted the usagi/switch branch June 27, 2026 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant