SMART Emulator

The SMART Table Emulator is provided by SMART Technologies Inc. Under the covers, it uses the technology developed by Edward Tse in his SDG Toolkit to use mice to emulate touch events. This allows tabletop systems to be developed on a standard computer (at least to some extent).

Table vs. Emulator touches. The SMART Table normally returns touches as contact events (Down, Move, and UP) along with a variety of properties (ID, Position, Intensity, Height, PCAAngle, PCAMajor, PCAMinor). The SMART Table Emulator is more limited:

  • it returns only the equivalent of the center point of a finger touch.
  • each touch has a corresponding ID unique to each mouse, and a point position (the equivalent of the center point of a finger touch).
  • other contact properties are set to 0 (Intensity, Height, PCA Angle/Major/Minor) .
  • button press state in not available; you only get events when the left button is pressed.


Download and Installation

WARNING: The installation does NOT work with a 64 bit operating system (even if you use a 32 bit virtual machine)

Follow these step by step instructions once to install the emulator. Note that we are working with an internal SDK, so its not yet as polished as it could be.

  1. Prerequisite 1: Install Visual Studio 2008 + SP1 if you have not already done so.
  2. Prerequisite 2: Install .NET 3.5 ServicePack 1 if you have not already done so.
    • To check, open Visual Studio, and select Help/About Microsoft Visual Studio. The top of the dialog box describes the versions of Visual Studio and the .NET framework you have, including the service packs (if any).
      • If you are missing it, go here, Download the service pack. If it doesn't seem to do anything, or if you also need the compact framework, scroll to the end of that page and download the full package (note that this takes a while).
  3. Prerequisite 3: (Recommended) Install Expression Blend 3.0 SDK.
    • If you have already install Microsoft Expression Blend, you should have it.
    • To check if its already installed, look for Start Menu / Microsoft Expression / Microsoft Expression Blend 3 SDK/.
    • If you don't have it, get it at Blend SDK. It will let you do a few of the advanced table object animations; it is not strictly required.
  4. Install the SMART Table SDK.
    • Just keep clicking next until it is installed
  5. Try the examples below. Don't forget to plug in a second mouse!

Examples supplied by SMART Technologies (some use deprecated APIs)

  • Go to the Start Menu, and select All Programs / SMART Technologies / SMART Table SDK / Examples / CSharp Demos
  • A folder should appear
  • Go up one level to SMART Table SDK
  • Copy the entire CSharp Demos folder and the bin folder into your own areas (to save space, SMART constructs their CSharp programs to reference the binaries in that folder)
  • Try them!

Our Examples

Download examples: Our SMART Table Examples.

  • The code here provides a good starting point for developing your applications.
  • These projects assume that the SMART libraries are located in the standard installation place (C:Program Files, etc.).
  • You should have at least two mice plugged in to see the desired behaviour.

The contents are described below.


  • an 'empty' template complete with event handlers, useful as a starting point
  • it includes an IDProperties class to associate state with an ID


  • (based on the template) that displays ellipses showing your ID and Position when you touch and drag.

InkPots Version 1 (by Ed Tse).

  • a canvas where each user can touch and draw in his / her own color
  • it includes multi-user touch buttons

InkPots Version 2(by Saul)

  • a modification of the above to show a few more things
  • it uses the IDProperties class to associate state with the touch ID
  • it shows how to add DraggableBoxes and capture touch events from them

Multi User Line

  • Adjusts a line via several touches
  • Illustrates hit-testing

Draggable Borders

  • displays several labeled draggable borders (rectangles) that have different abilities to be rotated, translated, and scaled.

Draggable Images

  • A minor variant of the above that show how Draggable borders can contain anything, including images that are automatically scaled

Draggable Borders That Interact

  • A variant of Draggable Borders that show a variety of them interacting with each other, where dragging one border atop the other causes it to acquire its color



Old Stuff (Ignore)

The following examples have not been translated to the new coding format.

  • Simpler Paint. Uses the same event handlers to draw circles, where each person's color is different. Illustrates a very basic paint program that recognizes mouse ID, and equivalents to mouse down, mouse move, and mouse up events.
  • Simple Paint Example. This program uses the same event handlers as the previous example, but uses the touch information to draw strokes on the canvas.
  • DraggableVideos