CH = getkey waits for a single keypress and returns the ASCII code. It
accepts all ascii characters, including backspace (8), space (32),
enter (13), etc, that can be typed on the keyboard.
Non-ascii keys (ctrl, alt, ..) return a NaN. CH is a double.
CH = getkey(N) waits for N keypresses and returns their ASCII codes.
getkey(1) is the same as getkey without arguments.
getkey('non-ascii') or getkey(N, 'non-ascii') uses non-documented
matlab features to return a string describing the key pressed.
In this way, keys like ctrl, alt, tab etc. can also distinguished.
The return is a string (when N = 1) or a cell array of strings.
[CH, T] = getkey(...) also returns the time between the start of the
function and each keypress. This is, however, not very accurate.
This function is kind of a workaround for "getch" in C. It uses a modal,
but non-visible window, which does show up in the taskbar.
C-language keywords: KBHIT, KEYPRESS, getkey, GETCH
Example 1 - get a single ascii key
fprintf('\nPress any key: ') ;
ch = getkey ;
Example 2 - wait for a specific key
fprintf('\nPress the Ctrl-key within 3 presses: ') ;
ch = getkey(3,'non-ascii')
if ismember('control', ch), fprintf('OK\n') ;
else fprintf(' ... wrong keys ...\n') ; end
Example 3 - Typing game
S = 'abcdefghjiklm' ;
fprintf('Type "%s" as fast as possible ...\n', S) ;
[C, T] = getkey(numel(S)) ;
C = char(C) ; T = T(end)-T(1) ;
if ~isequal(S, C), fprintf('OOPS!!! ') ; end
fprintf('You typed "%s" in %.2f seconds.\n', C, T) ;
See also input, uiwait
getkeywait (file Exchange)
Author's note: after 14 years still going strong ;-)
Jos (10584) (2021). getkey (https://www.mathworks.com/matlabcentral/fileexchange/7465-getkey), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!