How to make MATLAB detect keyboard stroke?

583 ビュー (過去 30 日間)
M Min
M Min 2017 年 4 月 16 日
回答済み: Amir Azadeh Ranjbar 2023 年 10 月 19 日
Hi,
I want to write a code which detect left and right arrow stroke in keyboard.
I tried to use below kind of code but it shows crosshair and also interrupts the working of other line. (Making crosshair invisible is somewhat important in this case)
[~,~,button]=ginput(1);
switch button
case 28 %left
case 29 %right
end
Is there any better way to do it? Thanks!

採用された回答

Nirav Sharda
Nirav Sharda 2017 年 4 月 18 日
There are a couple of ways to achieve this. You can use the KeyPressFcn callback on the figure window. Here is an example.
h_fig = figure;
set(h_fig,'KeyPressFcn',@myfun);
The myfun here could have something like this.
function myfun(src,event)
disp(event.Key);
end
The other way to achieve this is to use ' waitforbuttonpress ' function. Here is an example code.
k = waitforbuttonpress;
% 28 leftarrow
% 29 rightarrow
% 30 uparrow
% 31 downarrow
value = double(get(gcf,'CurrentCharacter'))
I hope this helps.
  6 件のコメント
Joseph Rucker
Joseph Rucker 2020 年 4 月 20 日
How do you find out what the numbers for the keys are?
Caden Scharpf
Caden Scharpf 2020 年 4 月 21 日
The numbers for the keys are their corresponding ASCII Charactershttps://www.petefreitag.com/cheatsheets/ascii-codes/

サインインしてコメントする。

その他の回答 (2 件)

balandong
balandong 2020 年 3 月 23 日
Maybe Im bit late to join the party. But you can consider this FEX submission KbTimer. It is MEX base thus quite fast

Amir Azadeh Ranjbar
Amir Azadeh Ranjbar 2023 年 10 月 19 日

カテゴリ

Help Center および File ExchangeGUIDE 앱 마이그레이션하기 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!