Skip to content

Fix home row mod timing to prevent false positives - #2

Merged
rzlink merged 1 commit into
masterfrom
fix/home-row-mod-timing
Aug 1, 2025
Merged

Fix home row mod timing to prevent false positives#2
rzlink merged 1 commit into
masterfrom
fix/home-row-mod-timing

Conversation

@rzlink

@rzlink rzlink commented Aug 1, 2025

Copy link
Copy Markdown
Owner

Problem

Users experiencing issues where home row mods produce unintended character combinations (e.g., 'fi' instead of 'I' when using Shift+F with I).

Solution

This PR improves home row modifier timing to reduce false positives:

Changes Made

  • Increased standard tapping term: 200ms → 280ms for better hold detection
  • Added strict hold-tap behavior: New ht_strict behavior for problematic keys
  • Shift-specific tuning: Applied strict timing (300ms, tap-preferred) to shift keys
  • Updated prior-idle timing: 120ms → 150-200ms to prevent accidental holds
  • Documentation: Updated README with detailed behavior explanations

Technical Details

  • LSHIFT_F, RSHIFT_J, LSHIFT_T, RSHIFT_N now use ht_strict
  • Strict behavior uses tap-preferred flavor to prioritize taps over holds
  • Longer timing windows give more time for proper hold detection
  • Different timing for different modifier types optimizes typing experience

Benefits

  • Significantly reduces 'false positive' modifier activations
  • Maintains responsive typing feel for non-problematic keys
  • Provides better distinction between intentional holds and fast typing
  • Documented configuration makes it easier for others with similar issues

Testing

Please test this configuration and report if you still experience issues with:

  • Shift combinations producing unwanted characters
  • Other home row mod false positives
  • Any reduction in typing responsiveness

Closes #[issue-number-if-exists]

- Increase tapping term from 200ms to 280ms for better hold detection
- Add strict hold-tap behavior for shift keys with tap-preferred flavor
- Use 300ms tapping term and 200ms prior-idle for shift keys
- Apply strict timing to LSHIFT_F, RSHIFT_J, LSHIFT_T, RSHIFT_N
- Update README with detailed behavior documentation

This should significantly reduce issues like 'fi' appearing instead of 'I'
when using home row mods for shift operations.
@rzlink
rzlink requested a review from Copilot August 1, 2025 17:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR addresses false positive issues with home row modifiers by implementing differentiated timing configurations to reduce unintended character combinations while maintaining typing responsiveness.

  • Increased standard tapping terms and introduced strict timing behavior for problematic shift keys
  • Added comprehensive documentation explaining the two-tier hold-tap timing system
  • Applied stricter timing specifically to shift modifiers that were causing false positives

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
config/include/behaviors.dtsi Adds new strict hold-tap behavior and increases timing parameters
config/corne.keymap Updates shift key definitions to use strict timing behavior
README.md Documents the dual hold-tap timing system and behavior rationale

quick-tap-ms = <QUICK_TAP_TERM>;
require-prior-idle-ms = <120>;
require-prior-idle-ms = <150>;
global-quick-tap;

Copilot AI Aug 1, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The global-quick-tap; property is duplicated between both hold-tap behaviors. Consider if this duplication is intentional or if the strict behavior should have different quick-tap settings.

Copilot uses AI. Check for mistakes.
@rzlink
rzlink merged commit 457d2c5 into master Aug 1, 2025
14 checks passed
@rzlink
rzlink deleted the fix/home-row-mod-timing branch August 1, 2025 17:57
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.

2 participants