How to intercept key strokes in Matlab while GUI is running

learnvst picture learnvst · May 17, 2012 · Viewed 13.2k times · Source

Do you know how to read keyboard strokes into Matlab while a Matlab gui is running? (I.e., without using the "input" function which sends a prompt to the command window and needs you to press return).

We would like to avoid using a mex function if possible.

Answer

Keegan Keplinger picture Keegan Keplinger · May 22, 2012

You would first have to declare your figure by handle:

fig = figure;

then you can set properties (in quotes below) to activate functions that you've written to respond to user interactions (with the @ signs):

set(fig,'KeyPressFcn',@keyDownListener)
set(fig, 'KeyReleaseFcn', @keyUpListener);
set(fig,'WindowButtonDownFcn', @mouseDownListener);
set(fig,'WindowButtonUpFcn', @mouseUpListener);
set(fig,'WindowButtonMotionFcn', @mouseMoveListener);

The above example is from shooter03.m a MATLAB space shooter, an excellent source (from the matlab file exchange) for many aspects of user object interaction in MATLAB:

http://www.mathworks.com/matlabcentral/fileexchange/31330-daves-matlab-shooter/content/shooter03/shooter03.m