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
o
to calleyevec_open()
. Eye-tracker should go from off mode to idle mode. -
Press
s
to calleyevec_enter_setup_mode()
. Eye-tracker should go from idle mode to setup mode. -
Press
i
to calleyevec_enter_idle_mode()
. Eye-tracker should go from setup mode to idle mode. -
Press
z
to calleyevec_enter_data_mode()
. Eye-tracker should go from idle mode to data mode. -
Press
o
to calleyevec_close()
. Eye-tracker should go from data mode to off mode (with brief intermediate idle mode). -
Press
s
to calleyevec_enter_setup_mode()
. This should fail due to being in the wrong mode. -
Press
q
to 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.