Skip to content

バーコードのキー入力を常に消費して画面へ漏れないようにする - #55

Merged
Atsumi3 merged 2 commits into
mainfrom
fix/barcode-consume-all-keys
Aug 23, 2026
Merged

バーコードのキー入力を常に消費して画面へ漏れないようにする#55
Atsumi3 merged 2 commits into
mainfrom
fix/barcode-consume-all-keys

Conversation

@Atsumi3

@Atsumi3 Atsumi3 commented Aug 23, 2026

Copy link
Copy Markdown
Member

背景

前回の修正では、キー入力の間隔が 200ms 以内かどうかでバーコードリーダーからの入力かを判定していた。この方式には次の穴が残っていた。

  • スキャン開始の 1 文字目は直前のキーがないため判定できず、そのまま画面に渡っていた
  • 10 文字揃わずに読み取りが失敗した場合、Enter が画面に渡り、フォーカス中のボタン(サイドバーのメニューボタン)を起動していた

タブレットでバーコードを読むとサイドバーが開くのはこれが原因。

変更内容

  • BarcodeKeyEventDecoder から時間差判定を撤去し、英数字と Enter は常にデコーダが消費するようにした
  • 修飾キー(Shift / Alt / Ctrl)と、文字を持たないキー(戻る、削除など)は従来どおり画面へ渡す
  • 設定画面のサーバアドレス欄を読み取り専用にした。サーバアドレスは QR スキャンからのみ設定する運用に合わせている
  • versionCode 12 / versionName 1.0.11

QR スキャンはカメラ経由でスキャン結果を直接反映しているため、入力欄の読み取り専用化の影響を受けず従来どおり動作する。

テスト

BarcodeKeyEventDecoderTest を新しい挙動に合わせて書き直した(21 ケース)。

  • 数字 10 桁形式と英数字 10 文字形式の両方で、商品・スタッフ・売上・未定義の種別が正しく判定されること
  • 小文字が大文字に正規化されること
  • 文字の間に Shift が挟まっても読み取りが壊れないこと
  • 10 文字に満たない状態の Enter は何も発行せず、バッファがクリアされること
  • 11 文字目は新しい読み取りの開始として扱われること
  • 1 文字目を含めてすべての文字が消費されること
  • 読み取り失敗時も Enter が消費されること
  • Enter の key up ではバーコードを発行しないこと
  • 修飾キー・文字を持たないキー・対象外の文字は画面へ渡されること

Generated by Claude Code

時間差判定をやめ、英数字と Enter は常にデコーダが消費する。
先頭1文字の漏れと、読み取り失敗時の Enter でボタンが起動する問題を解消。
サーバアドレスは QR からのみ設定する運用に合わせて入力欄を読み取り専用にした。
@github-actions

Copy link
Copy Markdown
Contributor

UI差分

settings_screen

settings_screen

settings_screen_install_not_permitted

settings_screen_install_not_permitted

settings_screen_up_to_date

settings_screen_up_to_date

settings_screen_update_available

settings_screen_update_available

settings_screen_update_check_failed

settings_screen_update_check_failed

全画面スクリーンショット

main_screen

main_screen

main_screen_account_result

main_screen_account_result

main_screen_calculator

main_screen_calculator

main_screen_calculator_shortage

main_screen_calculator_shortage

main_screen_drawer

main_screen_drawer

main_screen_empty

main_screen_empty

main_screen_error

main_screen_error

main_screen_item_selection

main_screen_item_selection

main_screen_item_selection_failed

main_screen_item_selection_failed

main_screen_item_selection_loading

main_screen_item_selection_loading

main_screen_store_selection

main_screen_store_selection

main_screen_store_selection_failed

main_screen_store_selection_failed

main_screen_store_selection_loading

main_screen_store_selection_loading

settings_screen

settings_screen

settings_screen_install_not_permitted

settings_screen_install_not_permitted

settings_screen_up_to_date

settings_screen_up_to_date

settings_screen_update_available

settings_screen_update_available

settings_screen_update_check_failed

settings_screen_update_check_failed

github-actions Bot added a commit that referenced this pull request Aug 23, 2026
@Atsumi3
Atsumi3 merged commit a496c2d into main Aug 23, 2026
2 checks passed
@Atsumi3
Atsumi3 deleted the fix/barcode-consume-all-keys branch August 23, 2026 08:50
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