% Logs each key press using a figure call-back. The key name and press time
% are both recorded, with the most recent data being displayed on the
% logFileName = string = save file name (optional)
% A .mat file with a data structure: KEY_PRESS_DATA
% KEY_PRESS_DATA.time = vector of the times when keys were pressed, in
% units of seconds, with 0.0 corresponding to the time when this function
% was called.
% KEY_PRESS_DATA.keyName = cell array of the names of the keys that were
% pressed, matching one to one with the time data.
% Calling this function will start a timer (with tic) and then write the
% name of each key that is pressed, along with the time to a data
% The most recent data is copied to the figure, for user feedback
% Data logging is stopped by pressing the excape key or by
% closing the figure window. Once this occurs, a dialogue box will pop up
% to confirm the file save operation (to prevent accidentally overwriting
% old data), and change the save name if desired.
% The figure is set to be in "modal" style which forces it to the top of
% all other windows. This is done to prevent missing keystrokes. This
% behavior can be changed by simply finding and removing the line:
% >> KEY_LOG_FIG.WindowStyle = 'modal';
Fixed a memory leak.