System Design Considerations

A project log for Driverless Mouse and Keyboard Sharing

Instantly share mouse and keyboard across computers on any platform.

frankstripodfrankstripod 08/26/2014 at 21:470 Comments

*Synergy: Please visit and donate to

First I would like to explain my love and addiction for a favorite 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 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 not working yet, or disabled. For example; BIOS setup, Windows user account control, live CD's, some network passwords and user logins.

I still like, use and highly recomend Synergy. This projects device is an all hardware solution that eliminates Synergy and the network.

HID Mouse:
This device is also focused on adding mouse features on the device hardware itself (touch sensors, sliders, key switches, optical encoders,) in place of features provided by drivers.

The USB input marked HID Mouse makes any mouse a driverless HID device (USB Host to serial), giving control to the microcontroller as a HID.

Drag along Keyboard:
When the screens switch, the microcontroller switches a USB switch, which connects the keyboard to the right computer. The delay for connecting to the host computer should be short considering it is just the keyboard.

Desktop Integration:

This is a mixed mind map flow diagram showing how screen switching is done by detecting the mouse pointer hovering at a screens edge.

These are the chips I would like to use to make a board for production:

(1) ATmega32U4 Microcontroller
(4) AT43301 Low-cost USB Hub Controllers
(4) MAX3421E USB peripheral/host controllers

But I am going to make an advanced prototype out of other circuits for now, because this one is for me.

This is what I would like it to look like: