Skip to content

c-ewing/Scroller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scroller: High Resolution Wireless Scroll Wheel

NRF52840 and AMS AS5600 based wireless scroll wheel currently in the MVP state.

As of 2025-05-29 the code portion of this project is on hold while I design the PCBs.

Features

  • USB HID High resolution scrolling at 1/120th the typical scroll distance
  • Internal scroll accumulation: In regular scrolling mode 120 steps are required per scroll event, In high resolution scrolling mode SCROLLER_STEPS_HI_RES steps are required (default: 1 step)

Planned Features

  • Bluetooth HID
  • Low power mode for idle state (Device suspend is working, does not support NRF52 periodic waking)

Requirements

This project currently depends on the AS5600 driver being upstreamed in zephyr-drivers/tree/as5600-driver-improvement

Additionally building against a NRF SDK version newer than 3.0.0 is required.

Testing

Information about the device can be viewed (on linux) by running:

# Get the bus and device address
lsusb | grep Scroller

# View the HID descriptor advertised by the device with
usbhid-dump -a [bus]:[address]

This report can be parsed with Frank Zhao's USB Descriptor and Request Parser

# View the stream of reports sent by the device
usbhid-dump -a [bus]:[address] -e stream

# View the kernel level events resulting from the device using evtest and selecting the device
evtest

If the device is registering correctly, evtest should register two different event types. REL_WHEEL is a standard scroll event while REL_WHEEL_HI_RES is 1/120th of the scroll distance of REL_WHEEL. In the kernel lo_res events are emitted only once 120 hi_res events have accumulated. This lets legacy applications still receive lo_res events, while enabling newer applications to scroll in finer steps.

References

About

High Resolution Wireless Scroll Wheel

Resources

Stars

Watchers

Forks