Source code
Source file: example6.c
processInput()
The following single character commands are implemented here:
q: quit
o: open/close device
u: show/hide control window
x: toggle show gui on setup mode
X: toggle show gui on data mode
i: enter idle mode
s: enter setup mode
z: enter data mode
m: toggle show mode-change events
When you press i, s or z then eyevec_enter_idle_mode(),
eyevec_enter_setup_mode() resp. eyevec_enter_data_mode() will be called.
Doing so should result in onModeChange() function being called on each
mode-change.
See also processInput() in
example 5
about toggling the show-gui-on-setup-mode and show-gui-on-data-mode
flags.
Note, when the user-interface is shown and you go from the Camera page to any of the other pages or vice versa this will also yield a mode change.
static int processInput(EyeVec* eyevec, ClientData* clientdata, int ch)
{
.
.
.
else if (ch == 'i') {
err = eyevec_enter_idle_mode(eyevec); (1)
printError("eyevec_enter_idle_mode()", err);
}
else if (ch == 's') {
err = eyevec_enter_setup_mode(eyevec); (2)
printError("eyevec_enter_setup_mode()", err);
}
else if (ch == 'z') {
#if 0
err = eyevec_enter_data_mode(eyevec, true);
#else
err = eyevec_enter_data_mode(eyevec, false); (3)
#endif
printError("eyevec_enter_data_mode()", err);
}
.
.
.
}
| 1 | Enter idle mode. |
| 2 | Enter setup mode. |
| 3 | Enter data mode. |
See Eye-tracker modes for a description of the eye-tracker modes.
Running
After a succesful build run the program:
-
Press
oto calleyevec_open(). Eye-tracker should go from off mode to idle mode. -
Press
sto calleyevec_enter_setup_mode(). Eye-tracker should go from idle mode to setup mode. -
Press
ito calleyevec_enter_idle_mode(). Eye-tracker should go from setup mode to idle mode. -
Press
zto calleyevec_enter_data_mode(). Eye-tracker should go from idle mode to data mode. -
Press
oto calleyevec_close(). Eye-tracker should go from data mode to off mode (with brief intermediate idle mode). -
Press
sto calleyevec_enter_setup_mode(). This should fail due to being in the wrong mode. -
Press
qto quit.
Output might look like this (empty lines added for clarity):
eyevec_create_thread(): OK
eyevec_initialize(): OK
Type q to quit, ? for help.
[o]
onModeChange:
eventtime: 1750422884589148
oldmode: TRACKER_MODE_OFF
newmode: TRACKER_MODE_IDLE
eyevec_open(): OK
[s]
onModeChange:
eventtime: 1750422886480493
oldmode: TRACKER_MODE_IDLE
newmode: TRACKER_MODE_SETUP
eyevec_enter_setup_mode(): OK
[i]
onModeChange:
eventtime: 1750422888855638
oldmode: TRACKER_MODE_SETUP
newmode: TRACKER_MODE_IDLE
eyevec_enter_idle_mode(): OK
[z]
onModeChange:
eventtime: 1750422892650866
oldmode: TRACKER_MODE_IDLE
newmode: TRACKER_MODE_DATA
eyevec_enter_data_mode(): OK
[o]
onModeChange:
eventtime: 1750422894875565
oldmode: TRACKER_MODE_DATA
newmode: TRACKER_MODE_IDLE
onModeChange:
eventtime: 1750422894879127
oldmode: TRACKER_MODE_IDLE
newmode: TRACKER_MODE_OFF
eyevec_close(): OK
[s]
eyevec_enter_setup_mode(): Operation not possible in current mode (error -2023)
[q]
eyevec_cleanup(): OK
eyevec_destroy_thread(): OK
You can also switch the mode while the user-interface is shown. Or make the user-interface show automatically when the eye-tracker enters setup mode. Try it yourself.