Reading Arrow Key Input
40 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Matt Fig
2011-6-4
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));
2 个评论
Matt Fig
2011-6-5
sayyid khan comments,
Thanks for the quick response. But is there a way I can use that original 2 lines of code and just have it save to a variable.
For example
Press right arrow > a = 'right arrow'; Press left arrow > a = 'left arrow'.
If it could give me the variable in terms of the ascii code that would be perfect.
Thank you
Sayyid Khan
Matt Fig
2011-6-5
See my edit above.
Put comments on particular answers in the comments section, not as new 'answers'....
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!