Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support split keyboards #15

Merged
merged 9 commits into from
Sep 2, 2024
Merged

Support split keyboards #15

merged 9 commits into from
Sep 2, 2024

Conversation

daystram
Copy link
Owner

@daystram daystram commented Sep 1, 2024

This PR adds support for split keyboards. For transport, only a basic implementation of UART is implemented.

Configuration for Quadax Rift is also added.

Changes summary:

  • Add split scanner (based on BasicVerticalSwitchMatrix)
  • Add remote server executor and client invoker
    • Simple flow control implemented
    • No retries or circuit breaker, thus not reliable with higher baud rates
    • Memory allocator increased to 16 KB (from 2 KB)
  • Add UART remote transport
  • Add split side and mode detection
    • Side detection uses a dedicated pull-down pin
    • Mode detection is based on USB host detection, not VBUS as femto does not have a VBUS detection pin
  • Breakdown initialization to two steps
    • Required to detect host for split mode detection
    • Moved some peripherals away from RTIC's local resources to parameter passed to spawned tasks
  • Refactor keyboard configuration module
  • Add debugging module
  • Add run script for both probe and U2F runners for RP2040
  • Add keyboard configuration for Quadax Rift

Known issues:

  • RGB matrix and rotary encoder does not have remote invocation implemented yet
  • High client latency due to high packet serialization overhead
    • Scan result serialization implementation is naive and not performant
    • Achieving 1 kHz polling rate (1 ms main loop period) is difficult with the current configuration
      • At 115200 Baud rate, input scan latency is about 7 ms
      • At 230400 Baud rate, input scan latency is about 4.2 ms, but transmission is sometimes not reliable

@daystram daystram self-assigned this Sep 1, 2024
@daystram daystram merged commit 7939bea into main Sep 2, 2024
8 checks passed
@daystram daystram deleted the feat/split branch September 2, 2024 13:43
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