Skip to content
Repository for Open Source Mouse Firmware and Hardware
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Hardware Repaired parts library paths Oct 24, 2018
Mousey Fixed varialble instance bug Oct 19, 2018
LICENSE Initial commit Aug 6, 2018 minor edits Oct 7, 2018 typos, edits, added STL for wheel parts Oct 1, 2018



Repository for Open Source Mouse Firmware and Hardware

This repository holds the Arduino library, KiCAD PCB design files, gerber production files, BOM, and assembly instructions for the open-source computer mouse goodie bag item from the 2018 OSHWA Summit. The circuit design, PCB layout, and code were produced by Joel Murphy (aka biomurph | @SafeForRobots) in the Summer of 2018. The mouse wheel and wheel holder were designed in collaboration with Eugene Chang, and manufactured by Tangible Creative. The production PCB boards were fabricated and stuffed by Worthington Assembly. Thanks to Kelly Saxton for help in kitting and assembly instructions and the killer mouse morph gif! The microcontroller on board is a ATmega32u4 with Arduino Leonardo bootloader. This open-source mouse is a soldering kit, and comes pre-programmed with the example sketch from the Mousey Arduino library.

Assembly Instructions Here

Library Functionality Here

Anatomy of Mouse


ADNS2026 !? That Went EOL Years Ago!

Yes, yes it did. Years ago, I tried to make a go of it in open-source hardware design, production and sales. I made something like this before SparkFun did, but it never got off the ground. I've been sitting on a small pile of components from those days, and this summer I decided that I have to chip away at that pile. So here you go. A fully functional computer mouse for you to hack and modify to your hearts delight. You're welcome!

If you are interested in modifying the design files to bring this project up to date, the one place that I have found that still sells these kinds of optical mouse sensors is a company called PixArt that has a variety of sensors to choose from. One of my goals is to do just that, so watch this repo if you want to be among the first to know when I have a working prototype.

Installing The Firmware

Either download the ZIP of this repo or clone it. Then move or copy the file named Mousey into your Documents > Arduino > libraries folder. Open or restart Arduino, Then goto File > Examples > Mousey > OpenMouse to find the sketch that runs on OpenMouse.

Use Your Mouse

This open-source computer mouse is built around an ATmega32u4 with the Arduino Leonardo bootloader. It has already been programmed with the example sketch from the Mousey library. There are two modes of operation HID and Not-HID. Modes are selected using the slide switch on the left side of the mouse.

HID Mode

When the slide switch is on the side closest to the pad per hole prototyping area (aka DOWN), the mouse is in HID mode. When plugged into a micro USB cable, the mouse will read the sensors (wheel, buttons, optical sensor), and function just like a mouse attached to your computer!

Not-HID Mode

When the slide switch is on the side closest to the 7 pin female header (aka UP), the mouse is in the Not-HID mode. When plugged into a micro USB cable, the mouse will read the sensors (wheel, buttons, optical sensor) and send the data it gets over serial at 115200 baud. You can open any serial terminal to view the data from the mouse.


The mice were packaged with the HID select switch in the HID position. If you plug your mouse in to a computer and it doesn't work like a mouse should, then check to make sure that the HID switch is in HID mode. The small tact switch labeled SW1 is the reset button for the Leonardo. You can switch modes on the fly, and press this reset button to change modes without unplugging your mouse. If all else fails, re-program the mouse with the OpenMouse.ino code from the example in the Mousey Library.

You can’t perform that action at this time.