Unify combo_key_suppress for GAME+MIC, FPS+MIC, VOL+/VOL-, and FPS+GAME factory reset. Arm on combo detect or factory-reset start; poll until all involved keys release so staggered release does not fire short presses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map feature bar 0-12 to CMD_LMT_THRESHOLD (-35..0) and CMD_EXPAND_GAIN (0..20). Panel VOL+/- saves to Flash, syncs tile1 via 0xFA/0xFD, and reports 0xB1 GET to host. HID SET from eq.c also persists and applies.
Co-authored-by: Cursor <cursoragent@cursor.com>
After COMBO_FPS_MIC fires, ignore FPS and MIC edge handling until both keys are fully released, preventing stray feature-mode or mic-mute short presses on staggered key release.
Co-authored-by: Cursor <cursoragent@cursor.com>
Short-press FPS and MIC together toggles g_3d_enable (default on), syncs to tile1 via cc_mic_level 0xFB, and calls audio_ex3d_set_onoff on tile1. D8 green LED shows EX3D on; off when disabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remember last active feature on timeout or combo exit. FPS short press from NONE restores that mode; cycling stays on SYSTEM..MIC only so MIC no longer steps through NONE (double-press issue).
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace factory-reset elapsed-time comparison with 20ms scan-tick counting. The previous code used 32-bit elapsed against 6s/10s/10.6s 64-bit constants, so trigger thresholds were unreachable and countdown got cancelled instead of firing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reset feature_timeout_ticks to 0 whenever VOL+ or VOL- causes an effective step in feature mode (short press and repeat), so active adjustments do not timeout and exit feature mode unexpectedly.
Co-authored-by: Cursor <cursoragent@cursor.com>