NOTICE: The Processors Wiki will End-of-Life in December of 2020. It is recommended to download any files or other content you may need that are hosted on The site is now set to read only.

Chronos Flying Mouse

From Texas Instruments Wiki
Jump to: navigation, search
Chronos flying mouse main.png

Chronos flying mouse icon.png
The Chronos Flying Mouse

{{#evp:youtube|TDL3JRG_zrs|Video Demonstration!|right}}

You've never seen a mouse like this before!

This innovative interface is designed to be a highly accurate, intuitive computer-input device. It can act as a high-precision mouse with unique snap-to-click technology, a fully functioning, accurate joystick, a gaming wheel, or a mouse-based joystick for applications that do not support true joystick input. With a wide variety of customization options, the Chronos Flying Mouse offers the abilities of several computer input devices without the position constraints of mounted hardware.

The primary mouse mode of the Chronos Flying Mouse enables the user to fluently control a cursor from anywhere in the room, and to click by snapping. This is ideal for presentations featuring interactive content, such as program demonstrations or interactive PowerPoint presentations with links. This also provides unique opportunities for computer-television interconnection, allowing you to watch many online video sites, such as Hulu and YouTube from the comfort of your living room couch.

The several joystick modes of the Chronos also allow for comfortable gaming using a wide variety of household objects. Imagine picking up a plate and using it as a steering wheel - with the Chronos Flying Mouse, you can do it! This mode allows existing video games to interact with the Chronos without special programming, and allows the Chronos to interact with a wide variety of applications.

Chronos Flying Mouse Features

Chronos flying mouse mode.png

4 Modes

  • An accurate, intuitive, mouse mode, which allows quick direction of the cursor to any position on a computer screen
  • Angle based accelerometer input allows for intuitive control at any orientation
  • A joystick mode, which allows users to play video games by using any household item as an input device while wearing the watch
  • A game-wheel mode, for racing games
  • A mouse-based joystick mode, for games that have controller-resembling input but do not support external joysticks
  • Different control modes specified based on whether the cursor is visible or not. This allows for seamless transitions from web browsing to video game control, all without changing a setting.
  • Independent mode control between axes and cursor visibility. Playing a game that has position based camera tilt but camera velocity based turning? No problem, just set x to mouse-joystick mode and y to mouse mode.


  • Snap-to-click technology, which registers user snaps (or other sharp motions) as mouse clicks at the desired screen location
  • You can navigate entirely with a single hand!
  • Chronos buttons support right clicking and mouse-wheel scrolling

Professional User Interface

  • A stylish, clean user interface which sits in the background of a user's desktop and allows full customization of the Chronos Flying Mouse modes and settings.
  • See the pictures below!
Chronos flying mouse settings.png

Fully customizable settings

  • Axis independent sensitivity control and inversion. This allows the watch to be worn on either the right or left hand (or even upside down, if you so desire)
  • Calibration to whatever angle the user wants
  • Dead zone size control
  • Watch calibration - if your watch's accelerometer is biased, that is easily fixed!
  • All settings stored in an editable INI file, with no registry modifications. Settings are saved and loaded each run, and the Chronos Flying Mouse can be safely deleted, or moved to another computer without a complicated installation/uninstallation process.

Ready to Use

  • Pre-built installation - you don't have to have any development tools installed to run the Chronos Flying Mouse, you can just download it, already built!
  • Open source - if you'd like to build it, full instructions are included below.

Functional Description

The accelerometer data is passed through an exponential smoothing filter to remove unwanted high frequency components from causing jitter in the cursor position due to noise or other high frequency data. A Chebyshev high-pass filter is used to identify snaps, or other sharp movements, in order to click. We then calculate the Euclidean angles from the acceleration from free-fall vector returned, and apply the various settings to produce the appropriate mouse movement or joystick position. Meanwhile, we constantly calculate the last stable mouse position, so that when a click from the high frequency data registers, we rewind the mouse to its stable position for the click. This allows for usable mouse clicks despite the movement interference.

Design Team

Special Thanks to Sam McCaskill for the idea to use snapping rather than quick wrist movements as a source of high frequency data.


We were inspired to create this application while experiencing difficulty watching Hulu without micromanaging the computer. A large amount of computer technology requires the user to be tied to their mouse and keyboard, which in many instances is a very restrictive requirement. We were inspired to make a joystick mode when thinking about the success of the Wii, and the possibilities for the Chronos if it could have accelerometer gaming input without even requiring a user to hold a controller.

Download and Setup

  • These instructions are for downloading and using the built application. For source code, see below.

Chronos Flying Mouse Setup

  1. If you don't have the Visual Studio 2010 C++ Runtime, download it from Microsoft first
  2. Download the Chronos Flying Mouse Installer
  3. Run the self extracting archive, and extract the contents to a directory created for the Chronos Flying Mouse
    • Note:the installer will not create its own folder inside this directory.
    • Note:If you use a system location, such as the Program Files folder, make sure to enable full user control of the folder you are installing to, or the installer will abort, and the application will not be able to read settings. A non system location, such as My Documents\ChronosMouse or C:\Programs\ChronosMouse will work fine.
  4. Run flyingmouse.exe, put your Chronos in ACC mode, calibrate your watch, and you're ready to go!

PPJoy Joystick Driver Setup

  • In order to use the joystick mode of the application, you must first install PPJoy:
  1. Download PPJoy from (find the latest release post)
  2. If you are running a 64-bit version of Windows, you'll need to turn test driver signing mode on. You can do this by running an administrative command prompt: type cmd.exe into the Start Menu search bar, then right click the result and choose "Run as Administrator". From the command prompt, run 'bcdedit -set testsigning on'
  3. Install PPJoy
  4. Run Configure Joysticks from the PPJoy Joystick Driver folder in the Start Menu
  5. Create a new virtual joystick, and add a mapping to it for 2 analog axes [0,1], 1 digital button [0], and no POV hats.

Usage Applications

The team is formed by three TI Co-ops located in Houston. The Chronos Flying Mouse project is initially designed to compete in the TI Co-op contest during summer 2010 but also has a wide appeal for many computer users. Possible uses include wireless presentation control, video gaming, and other daily wireless computing.

Have you ever dreamed about playing joy stick games wirelessly like a Wii? Operating your desktop from a distance? Or simply controlling your presentation without a remote? Our Flying Mouse project could help! Many applications already work with the Chronos Flying Mouse through its mouse or DirectX Joystick interface. If these don't suit your application's needs, feel free to contact the project design team for possible integration!

Source Code

  • Our source code requires Visual C++ 2010 to compile. You can get the Express version free from Microsoft. If you use the express version, you will have to delete the resource files (msp.rc and resource.h)
  • Our source code also makes use of the Boost C++ library (program options). You can either install and set up Boost and update the project's include and library directories before compiling, or download just the program options library:
    1. Download Boost program options
    2. Extract it.
    3. Copy the resulting boost_1_43_0 folder into your Visual C++ install directory, which will be something like C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
  • Feel welcome to download our source code