Skip to content

fix(input): 高負荷時の入力漏れを防ぐ - #343

Merged
ensan-hcl merged 3 commits into
mainfrom
fix/restore-local-input-handling
Aug 1, 2026
Merged

fix(input): 高負荷時の入力漏れを防ぐ#343
ensan-hcl merged 3 commits into
mainfrom
fix/restore-local-input-handling

Conversation

@ensan-hcl

@ensan-hcl ensan-hcl commented Aug 1, 2026

Copy link
Copy Markdown
Member

概要

通常のキー入力、marked text、候補操作を SegmentsManager のローカル同期処理へ戻します。入力処理は 7ab7821 より前と同等の経路になり、ConverterServer は設定画面用途として残します。

背景・原因

7ab7821 でキー入力処理が同期 XPC 経由になったことで、PC が高負荷のときや ConverterServer の起動・接続が遅延したときに応答が得られず、IMKInputController.handlefalse を返す経路が生じていました。

この場合、IME が処理すべきキーイベントがホストアプリへフォールスルーし、入力した英字が marked text の先頭へ混入することがありました。タイムアウトを撤廃するだけでは、XPC の一時切断や再接続失敗時の経路が残るため解消できませんでした。

変更内容

  • 通常キー入力と composition 更新をローカルの InputState.event / handleClientAction で処理
  • marked text、候補選択、予測候補、置換候補の状態管理をローカルの SegmentsManager へ復帰
  • App Group の保存先と右側コンテキスト取得は現行仕様を維持
  • 入力中の XPC 起動・接続・応答待ちへの依存を除去
  • InputStateSegmentsManagerClientAction の同期処理を CoreInputSession へ切り出し
  • macOS 側を NSEvent / IMKTextInput / ウィンドウ操作へ結果を反映するアダプターに整理
  • 連続した日本語入力が常に consume され、各打鍵直後に marked text が更新される回帰テストを追加

影響

高負荷時にもキーイベントがアプリへ意図せず漏れず、7ab7821 より前と同様の入力挙動になります。実機で問題が解消したことを確認済みです。

確認

  • xcodebuild -project azooKeyMac.xcodeproj -scheme azooKeyMac -configuration Debug -destination 'platform=macOS' build CODE_SIGNING_ALLOWED=NO
  • swift test --package-path Core(58 tests passed)
  • swiftlint lint --strict --no-cache Core/Sources/Core/InputUtils/InputSession.swift Core/Tests/CoreTests/InputUtilsTests/InputSessionTests.swift azooKeyMac/InputController/azooKeyMacInputController.swift azooKeyMac/InputController/ConverterServerClient.swift
  • git diff --check

@ensan-hcl
ensan-hcl marked this pull request as ready for review August 1, 2026 09:42
@ensan-hcl
ensan-hcl merged commit 3566149 into main Aug 1, 2026
8 checks passed
@ensan-hcl
ensan-hcl deleted the fix/restore-local-input-handling branch August 1, 2026 10:15
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