MATLAB: Reading Arrow Key Input

arrow keysinputkeyboardkeypressfcn

What I'm basically trying to do is control a robot by using the arrow keys on the keyboard. I'm already familiar with outputting commands via MATLAB my main problem is how to read what arrow keys I'm pressing. Ultimately I would like to press an arrow button and have it displayed on the command window.
I came across this bit of code online. It works great but I need the keystrokes to be store in a variable (possibly as a number instead of a string) so I can output it. There may be a simple solution but since I don't really understand the code my attempt to edit it didn't work.
h_fig = figure;
set(h_fig,'KeyPressFcn',@(h_obj,evt) disp(evt.Key));
Thank You
Sayyid Khan

Best Answer

Here is an example of how to use the arrow keys in the keypressfcn.
function [] = move_fig()
% move figure with arrow keys.
S.fh = figure('units','pixels',...
'position',[500 500 200 260],...
'menubar','none',...
'name','move_fig',...
'numbertitle','off',...
'resize','off',...
'keypressfcn',@fh_kpfcn);
S.tx = uicontrol('style','text',...
'units','pixels',...
'position',[60 120 80 20],...
'fontweight','bold');
guidata(S.fh,S)
function [] = fh_kpfcn(H,E)
% Figure keypressfcn
S = guidata(H);
P = get(S.fh,'position');
set(S.tx,'string',E.Key)
switch E.Key
case 'rightarrow'
set(S.fh,'pos',P+[5 0 0 0])
case 'leftarrow'
set(S.fh,'pos',P+[-5 0 0 0])
case 'uparrow'
set(S.fh,'pos',P+[0 5 0 0])
case 'downarrow'
set(S.fh,'pos',P+[0 -5 0 0])
otherwise
end
%
%
%
%
EDIT
% This assigns the string value of the key to a in the base workspace.
set(h_fig,'KeyPressFcn',@(H,E) assignin('base','a',E.Key));
Related Question