

Mouse pointer
Accessible mouse implemented with ZMK.
- Size
- 30.8 × 48.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 32
- Nets
- 22
- Pads
- 99
- Tracks, vias
- 254, 82
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 29 Apr 2026
- Updated
- 16 Jun 2026
Overview
Mouse pointer is an open-source printed circuit board by Mazzorella, from the Mazzorella/ClickTapToe repository on GitHub. It is a 2-layer board of 30.8 × 48.5 mm with 32 parts on 22 nets, routed with 254 tracks and 82 vias.
It is built around the TPD4E05U06DQAR, TLV74318PDBVR-TP and 54602-908LF. Its parts include 10 capacitors, 4 ICs, 3 resistors and 2 connectors.
Main components
3TPD4E05U06DQAR
USON-10-40℃~+125℃ 0.5pF 10nA 14V 2.5A@8/20us 40W@8/20us 5.5V 6.5V ESD Four channels IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 Unidirectional USON-10(1x2.5) ESD and Surge Protection (TVS/ESD) ROHSTexas InstrumentsESD Protection DevicesTLV74318PDBVR-TP
SOT23-5-40℃~+85℃ 1 1.2V~3.6V 110mV@(100mA) 350mA 70dB@(1kHz) 7V 800nA Adjustable Enable Positive SOT23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSTECH PUBLICUncategorised54602-908LF
插件-40℃~+70℃ 1 12.7mm 15.3mm 17.74mm Copper Alloy Gold Harpoon Contact (Plastic) Non-LED Non-PoE RJ45 Jack Right Angle Unshielded cat3 Plugin Ethernet Connectors / Modular Connectors (RJ45 RJ11) ROHSAmphenolEthernet Connectors / Modular Connectors (RJ45 RJ11)
README
README.mdClickTapToe
ClickTapToe is a custom foot-operated mouse for people who need to reduce repetitive hand and arm movement. The goal is to move common mouse actions away from the hands by using foot pedals for clicking, a large foot-driven scroll wheel, and a separate mouse pointer module.
This repository contains the firmware, hardware notes, and project documentation for ClickTapToe. The current firmware target is a Seeed Studio XIAO nRF52840 / XIAO BLE running as a USB HID mouse with ZMK. Bluetooth is disabled for the ClickTapToe firmware build.
Current Status
The current firmware supports USB mouse clicks from external pedals, USB vertical scrolling from the input hub scroll wheel, and pointer movement from the mouse pointer module:
- Left click on the first pedal input
- Right click on the second pedal input
- Vertical scroll from the AS5600 magnetic angle sensor connected to the input hub scroll wheel
- Pointer movement from the PMW3610 sensor in the mouse pointer module
D2andD3remain spare/test inputs and are not exposed as production pedal jacks on the current input hub PCB
PMW3610 pointing support is active for the current firmware target.
Hardware Overview
ClickTapToe is built from two custom electronics modules plus external pedals:
- The input hub contains the XIAO nRF52840 controller, USB connection, external pedal TS jacks, RJ45 pointer connection, and a large foot-operated scroll wheel coupled to an AS5600 magnetic angle sensor.
- The mouse pointer module is shaped like a slipper, houses a PMW3610 pointing sensor, and connects to the input hub over RJ45 with a short Ethernet cable.
- The pedals are premade external pedals connected to the input hub so higher-quality parts can be used and the project is easier to reproduce.
See HARDWARE.md for the current pin map and hardware notes. For a public-facing hardware overview with embedded board previews, open the ClickTapToe Hardware Viewer.
| Board | Source | KiCanvas preview |
|---|---|---|
| Input hub | hardware/input-hub/ | Open preview |
| Mouse pointer | hardware/mouse-pointer/ | Open preview |
Repository Layout
.github/workflows/build.ymlruns the upstream ZMK user-config build workflow.build.yamldefines the firmware build matrix.config/west.ymltracks upstream ZMK and imports ZMK's west manifest.zephyr/module.ymldeclares this repository as thezmk-keyboard-clicktaptoemodule and exposes its board, devicetree binding, Kconfig, and driver files.boards/shields/clicktaptoe/contains the ClickTapToe shield definition, overlay, metadata, and default keymap.Makefilewraps the localwest buildcommand for Docker/devcontainer use.hardware/contains the input hub and mouse pointer KiCad source files.docs/is reserved for assembly, usage, and release documentation.
Build Target
The active firmware target is:
board: xiao_ble//zmk
shield: clicktaptoe
artifact-name: clicktaptoe_xiao_usb_zmkFlashing
- Build the firmware with GitHub Actions or a local ZMK toolchain.
- Put the XIAO BLE into bootloader mode so it mounts as a UF2 drive.
- Copy the generated
clicktaptoe_xiao_usb_zmk.uf2file onto the mounted drive. - After the board reboots, connect it to the host over USB.
Hardware Test
Use a safe desktop target for click testing, such as an empty Finder window or browser page.
- Short physical
D0toGND; the host should receive a left click. - Short physical
D1toGND; the host should receive a right click. - Rotate the AS5600 scroll wheel; the host should receive vertical scroll events.
- Move the mouse pointer module over a surface; the host pointer should move smoothly in the same direction.
- Test the PMW3610 once through the RJ45 cable path; pointer response should match the direct breadboard wiring test.
- Leave the AS5600 magnet away from the sensor once as a negative test; the host should not scroll continuously.
- Verify
D2andD3only as spare/test GPIOs if they are wired for bring-up.
If macOS does not immediately recognize the updated HID device, unplug and reconnect the XIAO BLE.
If an old Bluetooth name appears after flashing, remove the cached Bluetooth entry from the host. This firmware build disables ZMK BLE.
If the PMW3610 does not move the pointer after flashing, power-cycle the XIAO once. The input hub physically routes PMW3610 nRESET on XIAO D6 / RJ45 pin 8, but the current firmware still relies on SPI/software reset and does not drive that reset line yet.
Local Build Notes
This repository is both a ZMK config repository and a ZMK module. Local builds should make the repository visible to ZMK as the config path and as an extra module so the custom clicktaptoe shield can be discovered.
The preferred local workflow is to build from a ZMK Docker/devcontainer environment and use this repository's Makefile.
One common local layout is to keep this repository next to a ZMK firmware checkout:
projects/
zmk/
zmk-pmw3610-driver/
ClickTapToe/Open the ZMK firmware checkout in VS Code:
code /path/to/projects/zmkThen use Dev Containers: Reopen in Container. If using a devcontainer, bind mount this repository into the container and run the build commands from the ClickTapToe repository directory.
On the first devcontainer launch, initialize the Zephyr workspace from the ZMK checkout:
west init -l app/
west updateRestart the devcontainer after west update completes.
Clone the PMW3610 driver module where the Makefile can find it. In the default devcontainer layout:
git clone https://github.com/badjeff/zmk-pmw3610-driver /workspaces/zmk-pmw3610-driverAfter that, run the build commands from this repository:
make buildTo build and copy the generated UF2 into this repository's firmware/ directory:
make uf2The copied firmware path is:
firmware/clicktaptoe_xiao_usb_zmk.uf2Build outputs are written under this repository's ignored build/ directory,
not under ZMK's app/ tree.
By default, the Makefile expects ZMK's app directory to be available at ../zmk/app, which matches the sibling directory layout shown above. Override ZMK_APP if your checkout path differs:
make uf2 ZMK_APP=/path/to/zmk/appThe wrapped west command has this shape:
west build -d "/path/to/this-repo/build/clicktaptoe" -b "xiao_ble//zmk" -- \
-DSHIELD=clicktaptoe \
-DZMK_CONFIG="/path/to/this-repo/config" \
-DZMK_EXTRA_MODULES="/path/to/this-repo;/path/to/zmk-pmw3610-driver"By default, the Makefile expects the PMW3610 driver module at ../zmk-pmw3610-driver. Override PMW3610_MODULE if your checkout path differs:
make uf2 PMW3610_MODULE=/path/to/zmk-pmw3610-driverParts
32| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | MountingHole | MountingHole:MountingHole_3.2mm_M3_ISO14580 | H1, H2, H3, H4, H5, H6 |
| 3 | 0R | Resistor_SMD:R_0603_1608Metric | JP1, JP2, JP3 |
| 3 | 100nF | Capacitor_SMD:C_0603_1608Metric | C2, C3, C4 |
| 3 | TestPoint | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP2, TP3 |
| 2 | 10nF | Capacitor_SMD:C_0603_1608Metric | C5, C7 |
| 2 | 1uF | Capacitor_SMD:C_0603_1608Metric | C8, C9 |
| 2 | TPD4E05U06DQAR | mouse_pointer:IC_TPD4E05U06DQAR | U3, U4 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric | C6 |
| 1 | 22nF | Capacitor_SMD:C_0603_1608Metric | C10 |
| 1 | 3.3uF/16V | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 54602-908LF | mouse_pointer:RJ45_Amphenol_54602-x08_Horizontal | J2 |
| 1 | Conn_PinHeader | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical | J1 |
| 1 | EMPOWER_Hand_Line_Silkscreen_7mm_MildSmooth | mouse_pointer:EMPOWER_Hand_Line_Silkscreen_7mm_MildSmooth | G*** |
| 1 | PMW3610 | mouse_pointer:PMW3610DM-SUDU 16Pin | U1 |
| 1 | TLV74318PDBVR | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U2 |
Questions
How big is the Mouse pointer PCB?
It measures 30.8 × 48.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Mouse pointer use?
32 parts, built around the TPD4E05U06DQAR, TLV74318PDBVR-TP and 54602-908LF. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Mouse pointer KiCad files?
From the Mazzorella/ClickTapToe repository on GitHub, at the commit this page was made from: the board is hardware/mouse-pointer/kicad/mouse_pointer.kicad_pcb and its schematic hardware/input-hub/kicad/input_hub.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Mouse pointer design in my own project?
Its repository states no licence, so its author keeps all rights: ask Mazzorella before reusing the design.
More from Mazzorella/ClickTapToe
1- 2 layers93.5 × 36 mm

Similar boards
- 2 layers27 × 22.5 mm

Pmw3360 pcb ffc
siderakb/pmw3360-pcb
PMW3360 optical mouse sensor breakout board, support both 3.3V and 1.8V logic
20 parts195CERN-OHL-P-2.0 - 2 layers23.5 × 31.5 mm

Pmw3610-pcb
siderakb/pmw3610-pcb
PMW3610 laser mouse sensor breakout board, support either 1.8V or 3.3V logic
24 parts123CERN-OHL-P-2.0 - 2 layers225.5 × 185.2 mm

Levels
Good-Great-Grand-Wonderful/levels54
Levels54 is for people who care about how things are made and how they feel. Every component—from ceramic trackball bearings to stainless switch plates—is chosen to deliver smooth, precise, durable performance.
243 parts67MIT - 4 layers14.7 × 31.5 mm

Sval pmw low asym
svalboard/svalboard-open-trackball
svalboard open trackball design
16 parts23CERN-OHL-P-2.0 - 2 layers26.6 × 24.4 mm

- 2 layers30 × 42 mm

Trackball sensor-3610
Good-Great-Grand-Wonderful/PMW3360DM-T2QU
Trackball sensor + models for Crosses/Bridges
16 parts6CC-BY-4.0 - 4 layers90 × 90 mm

Zenith 3 Flight Computer
BarrettT123/CanSat-Team-Cosmos
(The software I contributed to this project can be found in the CanSat-Team-Cosmos-Software repository)
118 parts - 2 layers344.7 × 123.6 mm

Frog 8k ergodox pcb
my-fi-25073/frog8k_ergodox
Frog 8K ergodox keyboard pcb & qmk firmware
217 partsGPL-2.0