Skip to content

feat: add button-only rapid fire mode (v1.1.0) - #5

Merged
mayaqf merged 5 commits into
mainfrom
feat/button-rapid-fire
Aug 30, 2026
Merged

feat: add button-only rapid fire mode (v1.1.0)#5
mayaqf merged 5 commits into
mainfrom
feat/button-rapid-fire

Conversation

@mayaqf

@mayaqf mayaqf commented Aug 30, 2026

Copy link
Copy Markdown
Owner

概要

ボタン単体での連射設定(ボタンのみモード)を追加しました。実際に使用して問題がないことを確認済みです。

変更内容

  • feat: ボタンのみを対象とした連射モード(v1.1.0)を追加 — src/proxy/XFireEngine.cpp / Config.cpp にモード判定と設定項目を追加
  • test: src/test/xfire_unit.cpp にユニットテストを追加(376 行)
  • build: clean-all ターゲットを追加し /build/ を ignore 対象に変更
  • docs: README にボタンのみモード(v1.1.0)の説明とボタンマッピング/ビルド手順の明確化を追記、プロジェクト用 CLAUDE.md を新規追加

検証

  • ctest (Release): x64 / x86 とも 1/1 passed (xfire_unit)
  • 実機でのしばらくの使用で問題なし(連射動作・ini 読み込み)

🤖 Generated with Claude Code

mayaqf and others added 5 commits August 25, 2026 23:02
Add a second rapid-fire mode ([RapidFire] ini section) that fires
configured buttons on hold without requiring the trigger, alongside
the existing trigger-gated rapid fire. Each mode runs an independent
phase clock with separate FirstOnMs/OnMs/OffMs/TargetButtons config.

Overlap resolution ("trigger priority, others independent"): a button
in both lists is driven by the trigger clock when the trigger is held
and by the button-only clock when released; trigger-list-only buttons
fire only while the trigger is held; button-only-list buttons fire
regardless of trigger state. Both modes share the master enable.

- Config: add buttonFirstOnMs/buttonOnMs/buttonOffMs/buttonTargetButtons
  fields; refactor ini readers to take a section param; read [RapidFire]
- XFireEngine: add 2nd phase clock to ControllerState; compute
  triggerOwned/buttonOwned ownership in Apply(); unify phase clock via
  a runClock lambda; reset both modes' phase on master toggle OFF
- Tests: add T33-T41 (button-only cycle, overlap resolution, config
  load) and T42 (phase reset on master toggle OFF/ON); isolate existing
  trigger-mode tests with buttonTargetButtons=0
- Bump version 1.0.1 -> 1.1.0 (CMake + ini header)

Co-Authored-By: Claude <noreply@anthropic.com>
Add a portable `clean-all` custom target that removes CMake-tracked
outputs plus POST_BUILD staging copies (XInput9_1_0_*.dll, xinput1_3.dll,
XInputXFire.ini) via `cmake -E rm -rf`, avoiding shell `rm`. Forward
`--config $<CONFIG>` to the inner clean so the VS multi-config generator
actually removes the current config's outputs. Ignore the top-level
`/build/` directory.

Co-Authored-By: Claude <noreply@anthropic.com>
Capture non-README operational notes so future sessions avoid common
pitfalls: resolved VS Build Tools cmake path, clean-all target (needs
--config for VS multi-config), staging ini overwritten every build,
ini read from exe-dir not DLL-dir, and VS generator string-macro
quoting collapse (numeric macro + stringification workaround).

Co-Authored-By: Claude <noreply@anthropic.com>
Add the [RapidFire] button-only rapid fire mode to the README: overview
of the two modes, a feature subsection covering trigger-priority overlap
resolution and phase reset on master OFF, the [RapidFire] ini section
example (FirstOnMs=500/OnMs=50/OffMs=50/TargetButtons=A), bump the ini
header to v1.1.0, and extend the unit-test coverage list.

Co-Authored-By: Claude <noreply@anthropic.com>
@mayaqf
mayaqf merged commit 2130784 into main Aug 30, 2026
1 check passed
@mayaqf
mayaqf deleted the feat/button-rapid-fire branch August 30, 2026 09:41
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