This post describes some features of the EyeX Engine that were designed to make life easier for developers. Use them to test your application, hunt down that difficult coordinate mapping problem, or to gain some insights into how the engine works!

Visualizing the gaze point

Sometimes it can be useful to know the eye tracker’s idea of where you are looking. Suppose the interaction is glitchy for some reason: is that because the interactor positions aren’t reported correctly, or is there some issue with the eye tracking?

Visualizing the gaze point will give you at least half of the answer. This function can be enabled and disabled by pressing the hard-to-trigger-by-accident key combination Ctrl-Alt-Shift-F12 while the EyeX Engine is running.

Emulating gaze point movements using the mouse

How do you test that your application responds to the user’s gaze the way it should? Testing an eye-gaze enabled application is a challenge. If you force your eyes to make precise movements, carefully triggering the interactions, then your eyes will experience strain, and it will be difficult to observe what is happening on other parts of the screen. (It’s like the “observer effect” in quantum mechanics where you change the experiment just by observing it!)

Enter the mouse emulation function in the EyeX Engine! When enabled, you will be able to control a virtual gaze point using your mouse cursor. And yes, it can be used together with the gaze point visualization function described above, so you can see how it works in real time. Combine those two functions with a script to move the mouse pointer and you’re prepared for some serious test automation.

But use this function with care, because it will never replace real gaze input: the human eye is a sensory organ and as such it isn’t predictable like a mouse pointer. And the gaze point and the mouse pointer have entirely different noise characteristics.

To enable this function:

  1. Stop the EyeX Engine: open the Task Manager as administrator and end the process called “Tobii.EyeX.Engine.exe”.
  2. Open a text editor, for example Notepad++ or Visual Studio, with administrator privileges. Avoid Notepad because it doesn’t handle XML files very well.
  3. Open the file %programfiles(x86)%\Tobii\Tobii EyeX\Tobii.EyeX.Engine.exe.config.
  4. Find the section called appSettings (see the figure below).
  5. Uncomment the line with the key EyeX_EmulateEyeTrackerUsingMouse. That is, remove the XML comment start and stop tags, <-- and -->. Don’t change anything else, because that could potentially break your EyeX Engine installation. Save the file.
  6. Restart the EyeX Engine by logging out and logging in again.

Visualizing interactors and queries

How do you know that the interactors that you declared are being picked up correctly by the EyeX Engine? That’s difficult – unless you enable the debug visualizer. The debug visualizer is a program called Tobii.EyeX.Diagnostics.Application.exe which is installed in the same folder as the EyeX Engine, typically %programfiles(x86)%\Tobii\Tobii EyeX.

The figure below shows an example of running the Debug visualizer with the Gobang sample from the EyeX SDK for C/C++. The blue rectangle represents the screen. The Gobang application window is in the top left corner of the screen, and you can see the (red) query rectangle inside it. The orange rectangles beneath the query rectangle are the interactors – one for each square on the board. The yellow dots and the blue circle are a visualization of the gaze point.


If no EyeX client applications are running, the only things you will see in the Debug visualizer are the screen rectangles, one for each screen on your desktop. As soon as a client application connects, the eye tracker will be enabled and the query-snapshot cycle starts running. At this point you will be able to see a representation of the query rectangle moving around on the screen, following the gaze point.

EyeX client applications – or rather, their top-level windows – are displayed as rectangles. Other windows nearby are also displayed as rectangles. Inside the window rectangles are the interactors. Due to the dynamic nature of the query-snapshot cycle, the interactors will only stay in view for a short while. So don’t be surprised if your interactor doesn’t show up at first, or if it disappears after a while. Just take another look at it and it should re-appear.

Calibrating for guest users

This isn’t really a developer tool, but it can still come handy on demo day.

Pressing Ctrl-Shift-F9 switches to a user profile called Guest and starts the eye tracker calibration sequence. You can use this at the start of every demo session and then, when you’re done, switch back to your own profile using the EyeX tray icon menu.

UPDATE Nov 24, 2014: Updated the instructions for enabling the debug visualizer.