1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
function c = glmGetChar( action )
% glmGetChar Get a keypress character
%
% usage: c = glmGetChar( 'open' | 'clear' | 'wait' | 'nowait' | 'close' )
% 06-Dec-2006 -- created (RFM)
% ---protected---
if nargin<1,
action='wait';
end
fignum=65535;
c='';
% open figure to catch keypresses
if strcmp(action,'open'),
global GETCHAR
GETHCAR='';
figure(fignum);
set(fignum,'KeyPressFcn','global GETCHAR; GETCHAR=get(gcf,''CurrentCharacter''); if GETCHAR==''!'', glmClose; end');
drawnow;
return
end
% check that figure has been opened
if isempty(find(get(0,'Children')==fignum)),
error('must initialize with ''open''');
end
global GETCHAR
% clear recorded keypress
if strcmp(action,'clear'),
GETCHAR='';
% wait for a keypress
elseif strcmp(action,'wait'),
while isempty(GETCHAR),
pause(0.001);
end
c=GETCHAR;
GETCHAR='';
% report last keypress, if any
elseif strcmp(action,'nowait'),
c=GETCHAR;
GETCHAR='';
% close figure
elseif strcmp(action,'close');
clear global GETCHAR
close(fignum);
drawnow;
% unknown action
else
error(sprintf('unknown action ''%s''',action));
end
return
|