The Smart MICE. Oh, That's Smice!

This is a project for HackZurich 2020. This is a daemon that moves the cursor between monitors, depending on where the user is looking. This is achieved by processing the camera feed.

The more monitors you have, and the bigger their are, the more annoying it is to move your mouse around. We really believe that focus is key; the fewer the distractions, the better the outcome of any project. This includes small papercuts like having to locate your cursor, and performing the swipe-lift-swipe-lift-swipe mouse gesture to cover the distance between your monitors.

To ensure we would have a working prototype we decided to re-use as much off the shelf components as possible. Most of our time was spent looking for already built frameworks for eye-tracking, and trying them out. After a while we settled on Antoine Lame's GazeTracking. We developed a first prototype operating on a single monitor, split in the middle. Once that worked, we rushed home and brought in a second monitor.

The final result is not even 200 lines of Python code, and using it feels really magical. It's got rough edges, and we'd love to polish those, and extend the project to work across computers! Using a single mouse and keyboard for two, three computers; how cool is that?!


Enter the nix-shell or make sure you have the following system packages installed:

  • xorg (libSM, libXrender, libXext, libX11)
  • libstdc++
  • glib
  • cmake

Follow the installation instructions for GazeTracking Follow the installation instructions for pyautogui

You're all set! Run python See lines 11 and 15 of that file for runtime options.

Built With

Share this project: