Mouse Controller Project

USB trackball mouse controller inspired by Caleb's

Similar projects worth following
For TheHackadayPrize entry: (This trackball is not the Open Hardware device)
The trackball that shares mouse and keyboard between computers on multiple platforms, without loading software or loosing any functions. This has split and moved to a separate project named "Driverless Mouse and Keyboard Sharing" (See side link.)

Phase 1: Complete! I built a 100% Hacked mouse.

Finally make the USB Trackball controller I always needed. Inspired by Caleb's A defective left hand prevents me from moving from mouse to keyboard quickly, or typing efficiently. If you ever held game controllers upside down, or crossed over left and right, you know some of the problems I have. The only mouse that works for me with minimal pain or frustration is the Logitech Trackball Marble Mouse.

Project goals:
1. Make several designs around accessibility issues.
2. Make some mistakes and learn from them.
3. Make the ultimate pointing device designed for my hand.
4. Long term goal is to build up a work area, experience and determination to contribute to

I am going to start hacking the Logitech Trackball Marble Mouse, and build around that first, then hopefully move up to more effective designs.

Wish List:
    Must be cross platform, Win/Linux, No Drivers
    Teensy USB Development Board
    Movable buttons for different finger positions
    Programmable buttons and keys
    Hand molded
    Soft surfaces

Logitech Trackball Marble Mouse:
        Smooth ball control and exact positioning.
        Mouse movement, left, and right buttons do not require drivers.
        Screen position stays intact when letting go and grabbing device.
        Shape does not fit my hand well
        Position of the third and fourth buttons
        No wheel
        No middle button
        No Linux software support

My Button Wish List:
    Left Side:
        Left click
        Left click Open in New Tab (=Ctrl+Left click)
        Left click Drag Lock
    Right Side:
        Right click
        Middle button
        Scroll wheel

  • 1 × Teensy 3.1 USB Development Board from
  • 1 × Logitech Trackball Marble Mouse Victim pictured on page
  • 100 × 40 Pin Single Row Female Headers Futurlec FHEADS40 – 40 Pin .100 $0.35ea
  • 10 × 40 Pin Single Row Male Headers Futurlec HEADS40 – 40 Pin .100 $0.19ea
  • 100 × 4 Pin Single Row Female Headers Futurlec FHEADS4 – 4 Pin .100 $0.08ea

View all 9 components

  • Mouse Update

    frankstripod06/04/2015 at 11:28 4 comments

    My mouse still works great and I use it often, but it has been stripped down for parts my in my Driverless Mouse Project. For now its just the trackball, left and right buttons. It looked really sad for a mad scientists mouse, so I want to cheer it up a bit.

    Taking the left cover off completely, I held it up to the light, and I had seen this before but ignored it. The holes in the headers make it semi transparent, like a screen:

    Then it hit me; Nothing makes a hacker more happy than sticking some LEDs on something. Some RGB LEDs mounted underneath would shine up through the top and cheer it up for sure.

    It will be like Frankenstein Mouse meets 70's Mood Ring. More on that when I get some more parts and LEDs from other projects.

  • Fork in the Road

    frankstripod08/26/2014 at 22:11 0 comments

    I use the trackball and the LED screen sharing feature everyday as my main input device with no problems. So finishing this project is important to me because I really want one of these now.

    This project will probably split into two or more projects:

    1. The New Device: Driverless Mouse and Keyboard Sharing.
    2. My trackball project (here)
    3. Other controllers.

    Details and further development for the Driverless Mouse and Keyboard Sharing:


    Side notes:

    The three computer system and my desk will be dismantled, and the project is going on the road with me. Project logs may be slow, please be patient.

  • A 100% Hacked mouse.

    frankstripod08/26/2014 at 08:25 0 comments

    Phase 1: Complete! I built a 100% Hacked mouse.

    Ingredients Hacked:

    1 Teensy 3.1 Microcontroller. Hack: Chopped together code from Arduino Examples.

    1 Logitech Trackball Marble Mouse. Hack: Gutted and reused inner working parts.

    100 Female Headers. Hack: Not intended for circuit board-less artsy super glue project.

    1 Belkin Four Port USB Switch. Hack: Amputated and rewired LED's and switch.

    1 Targus Four Port USB HUB. Hack: Tapping off common power supply.

    7 USB Wires. Hack: One cut for power, others in sets of 3 three piggybacked end to end.

    1 Cat-5 Wire. Hack: Non-data use for LED's and switch.

    2 CD cases. Hack: A temporary base.

    My Favorite Features:

    1. Its made for me! You probably hate it. I will hate it in two days because of the layout, but now I can't curse when I install the buttons in the wrong place, because I can move them in .100" (2.54mm) increments anywhere on the surface.

    2. No Drivers, No Drivers, No Drivers: Also, ALL features work on ALL platforms without even a hint of drivers.

    3. Capacitive Touch Mouse and Keyboard Sharing. An all hardware solution to Synergy* software. Shares the mouse across four computer screens on any platform. It also brings along the keyboard and USB hub for all four computers. Also helps passwords and private data from being transmitted over LAN or WiFi when compared to Synergy.

    4. An excuse to put LED's on a mouse.

    6. In-System Programmer: I always wanted an ISP, now there is one on my mouse, complete with a staging area ready for an ATtiny85, spare parts, and room to jumper to something larger like an ATmega328p.

    5. Instant change of hand positions on to duplicate button patterns to reduce fatigue.

    6. Four way capacitive touch sensor scroll pad.

    7. Breakout Sockets next to pins for quick connecting. Teensy pins, USB power and data.

    8. Programmable buttons, and application specific buttons.

    9. Left Click drag lock; Press once to hold, again to release.

    10. Ctrl Left Click; Open link in new tab.

    11. Select All, Cut, Copy, Paste, Enter and Backspace buttons.

    12. Ctrl Lock and Shift Lock.

    13. Middle button (Sounds boring, but I never had one because of the devices I was using.)

  • System Design

    frankstripod08/21/2014 at 03:29 0 comments

    There are two system diagrams. The first is the projects current working prototype:

    The second is the Open Hardware device I want to build.

    The device needs a new name that accurately describes it.

     Imaginary hypothetical image:

    More info coming soon.

  • Synergy Mouse and Keyboard Sharing

    frankstripod08/21/2014 at 03:26 0 comments

    Capacitive Touch Mouse and Keyboard Sharing:

    I put the description first, then pictures and how I hacked it later.

    The Teensy switches and manages a four port USB switch with four LED's and four touch sensor buttons

    Synergy: Please visit and donate to

    First I would like to explain my love and addiction for a program called Synergy. It shares a keyboard and mouse between multiple computers. One computer with a keyboard and mouse is set as a Synergy server, then other computers are added as clients and communicate over a local network. I love that its Open Source, multiplatform, and has a quick smooth transition from one screen to another.

    Synergy dislikes:

    1. Its network dependent so any computer or router with a hint of connection problems fails.
    2. All client keystrokes like passwords and account numbers go through the local network, although there is an option for encryption.
    3. Setup can be complicated with mixed platforms.
    4. It can not be used on screens where the client is disabled. For example; BIOS setup, Windows user account control, live CD's, some network passwords and user logins.

    How its hacked:

    I purchased this four port USB switch years ago to avoid the aggravation of swapping USB plugs every time Synergy disconnected.

    I hacked the USB switch into a hardware solution by having the Teensy Microcontroller do the switching for me.

    It originally worked by pressing the only switch, which increments the port number by one, and back lights the port number LED.


    If you cut the board in two, I would want the lower half behind the desk, out of sight with all the wires. The upper half looks like it needs a hacking onto the top of my trackball!

    Desoldered the LED's.

    I tested the circuit with a multimeter and the wiring was confusing at first because the left pair of LED's connect anodes to ground, and the right pair connect cathodes to the same ground. To keep it simple, and to utilize the built in resistors...

    ... I kept the circuit the same through the CAT-5 wires:

    Each pair of LED's gets three wires: LED#1+, LED#2+, common pair ground.

    Plus two to short the switch underneath.

    Homemade two pin female jumpers made from two pin headers.

    Common ground wires matched in pairs.

    Back in its shell. Cable runs through missing LED hole, strain relieved by a cable tie on the inside.

    A USB switches' worst nightmare...

    ... and kept alive to see its own working LED's amputated and transplanted on my track ball.

    The wire on the third LED is a hacked experiment for touch sensors on LED's.

    Desktop integration on three computers:

    Cable restrained to the base. The more flexible wire female jumper wires connect to the solid wire, then taped.

    Then plugged directly underneath the transplanted LED's

    The third jumpers connect under the touch sensor wires.

    Connecting the Teensy:

    I used an NTE R56S-5D.5-6 reed relay: (5v, 3.8v min), and a "flyback diode." The relay does not have a built in diode. (the "R56S-5D.5-6D does; that first "D" is tricky. NTE_R56_57specs.pdf

    Thanks to the PJRC forums for the information on the flyback diode saving the Teensy from sure death from the relays coil. Next time I will get the ones Paul recommended;

    The NTE116 (1N4004) diode and the relay were in stock at my small local electronics store.

    Jumpers made from two pin female headers and solid strand wire:

    The two header sockets have the wire insert 3mm pin fix. The two male pins are bent together into a two pin jumper, and then soldered to the wire. This connects the relay to the diode in parallel. See relay pins pictured above.

    Two pin jumpers relay to diode:

    Two pin jumpers on the Teensy side make for easy access breakout sockets on top.

    The code for the Teensy is simple:

    See which LED is being touched, figure out how many steps from the current port to the desired one with some simple math, then send that many long...

    Read more »

  • ISP and Retro Crystal

    frankstripod08/21/2014 at 03:15 0 comments

    A funny thing happened when I walked into my favorite local electronics store.

    I asked for the impossible 3mm pin connectors. They gave me the smallest socket inserts they could find in the store, They didn't work, but I took them anyway thinking I could crimp or modify them later. (That didn't work.)

    Then I asked for an ATmega328p and a 16MHz crystal for programing it. They didn't have the ATmega in stock, but came back with this:

    Its an old style crystal from an old amplifier (I think).  I wouldn't think of mixing old tube style components with newer 3.3v logic, but when I saw it, I knew it was going to give my trackball the retro feel it was needing to make it even more artsy. Then later I found out those pin inserts actually made a perfect socket for it.

    Deadbug Style!

    With headers of course.

    The alligator clip test lead is pointing to the two sockets to the crystal.

    I don't know if its even possible to use this. Any ideas? I will need to thoroughly test and research this before using it. I just think it looks cool.

    The platform on the end is almost ready for programing an ATtiny85; with room for spare parts!



    In-System Programmer: Finding this was like a dream come true

    My trackball was made for this!

    To be honest, I mounted the Teensy 3.1 on top of the mouse just because I thought it would look cool, but now realize having access to all the pins allows me to share it with other projects. A second solderless breadboard and a few jumper wires start an experiment in minutes, or I can skip the breadboard and test a component right on top of the mouse itself. Every pin on the Teensy will be connected underneath to its adjacent socket on the top of the mouse, so a male jumper wire connects in seconds. Uploading and rebooting sketches for other projects does not mean full loss of the mouse because the Logitech chip still handles the trackball and both the right and left backup buttons, so I can program an ATtiny85 and surf at the same time without switching cables. Also, the mouse and keyboard sharing feature has a mechanical USB switch fall back mode with a tactile switch, and still works with the keyboard or even a second mouse, when loading sketches.

  • Jumpers and Switches

    frankstripod08/21/2014 at 03:13 0 comments

    Connecting Teensy:

    It would have been typical for me just to plug a standard cable on top of the Teensy and say "there, I fixed it!" But I wanted this to be integrated into the design. The goal here is USB for Teensy, and breakout pins on top.

    I don't know why I did this this way but this is how it went. Five wire USB cable chopped.

    Two pin header pins bent and soldered. Each two pin jumper splits each wire; one for Teensy, one for a breakout connection on top of the trackball.


    Two pin header sized squares of electric tape between each.

    All five super glued together (held in position with two male header strips not shown.)

    A rectangle of super thin clear plastic cut from the recycling bin glued along the side for support. Homemade connector:

    Plugged in underneath.

    On top I chopped an old USB micro cable for its connector. I had to be careful not to bend the delicate wires barely held on with glue. Soldered to a five pin male header, plugged into place.

    Each pin is duplicated to its corresponding female socket.




    Secondary left and right buttons:

    There are the desoldered mouse switches. 20 gauge solid wire with black insulation was used as a lever.

    Then keyboard caps L and R were pried off of an old PS2 keyboard. The wire wrapped around the bottom, making a telegraph style button. Supper light touch and slightly flexible, but defiantly needs something like a 3D printed upgrade.




    Another possible layout.

    The split design conforms to my hand real well.

    Touch sensor scroll wheel is back (just left of the trackball).




    No PCB :(

    You probably think I hate circuit boards. I don't. This project just turned out to be more artsy then most people are comfortable with. Not having one kept the height down; this is even slightly shorter than the original Logitech Trackball. In the back of my mind i'm subconsciously building version 2.0 which has a more solid design:

    1. Circuit board holds female headers with extra long pins, soldered through the hole, then trimmed down to 7mm (6mm socket friendly + 1mm for solder).

  • Trackball Install

    frankstripod08/21/2014 at 02:06 0 comments

    This would not fit inside my trackball.

    Chopped it, soldered it, hacked it.

    Dead bug style. I soldered the wires long through the holes to keep air space underneath.

    The black 20 gauge wires soldered on top work with the female jumpers. These are for backup left and right mouse buttons if the Teensy is disabled.

    This was designed split in the middle for hand comfort, like a split ergonomic keyboard.

    The right half gets the trackball.

    The first jumpers!

    The first components on the board! The two mouse switches.

    Remember the "3mm pin in 6mm socket" problem from the "Adafruit vs Futurlec Header to Header Grudge Match"? I found a simple solution. I inserted 24 gauge wire into the socket, cut it off even, then wiggle the 3mm pin along side of it. More pictures later.

  • Glued

    frankstripod08/21/2014 at 01:56 0 comments

    I couldn't help myself and changed the shape once more, but its done now.

    had made six 38 pin female headers as crossbars for support.

    Pull the pins

    Chop it

    Sand it.

    I had 220 sand paper. I would have preferred higher like 300.

    I just eyeballed by hand it every few seconds to get it square.

    The ends won't be seen anyway. They will be glued inside.

    I really wanted to make a thin wooden base for this. Instead I had two thin plastic CD cases that just seemed to fit just right as a temporary base. Three headers on each make two 120 pin sockets (almost) to access the inside.


    Super glue worked well at first. The cheap stuff gives you a little wiggle time to position correctly. The top split apart a few times at weak spots. Most of the glue joints did well but several were stubborn, even after sanding, as if something spilled on those. I got a Loctite's "Plastics Bonding System Fuses hard-to-bond-plastics" super glue with separate primer/activator. It fixed the stubborn ones, but no wiggle time at all.

  • Never Stop Playing With Blocks!

    frankstripod06/10/2014 at 09:34 1 comment

    Never stop playing with blocks; you may lose your imagination, ingenuity, creativity, and grow up and die!

    One last dry run to fine tune the shape (its like OCD Legos for nerds!) I did a final adjustment to the shape of the ball and cup assembly. I also moved the ball up more to allow for more lower thumb buttons (hand picture). The final assembly will fill in behind the cup, lower side walls and bottom plate.

View all 20 project logs

Enjoy this project?



abby gujjar wrote 01/06/2021 at 06:41 point

wow so nice. do you want to feature it on

  Are you sure? yes | no

davedarko wrote 08/21/2014 at 10:03 point
Wow, you've got some nice improvements here! Cool idea to make it a multi computer controller :)

  Are you sure? yes | no

frankstripod wrote 08/21/2014 at 10:23 point
I knew you would be the first to see this. Thank you for the compliment! I'm glad to almost get caught up to date. I had so many problems making the video, I almost didn't make the deadline.

  Are you sure? yes | no

davedarko wrote 08/21/2014 at 11:03 point
Not sure why, but I try to look into every project here and I had a lot to read these days. But this popped up in my feed and after reading I had to write something.

It took me at least 20 takes to get to a single shot 2 minutes video and I was glad that I had not to cut anything, so I know what you mean. Let's see how this contest will go on, when I got them right, in the next 5 days they going to cut the projects down to fifty projects.

Good luck :)

  Are you sure? yes | no

RodolpheH wrote 05/15/2014 at 12:06 point
Hi, months ago I've started working on a trackball. This project is paused for the moment but I was thinking about using optical wheels with this kind of photo-transistors :
These are two photo-transistors in one package you can use to easily detect two interruptions and use a software quadrature decoder (using a little Attiny seems to be the more compact way). You can also use these photo-transistors with chips that make quadrature decoding like in a real mouse. I don't remember the models but you can easily find them by searching quadrature decoder for mouse on google.
I will keep an eye on your project, I'm already an owner of a trackball (Logitech M570) and I think this is one of the best pointing devices of these days.

  Are you sure? yes | no

frankstripod wrote 05/15/2014 at 20:33 point
Now following your GitHub project :) Thank you!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates