App designer key press function

99 views (last 30 days)
Benedict Low
Benedict Low on 4 Nov 2020
Answered: Aniket on 21 Nov 2024 at 4:58
Hi,
I am using App Designer, and I would like to use the key press function, such that pressing the left arrow and right arrow on the keyboard, performs the same functions as clicking the buttons "previous" and "next" respectively. My code, which doesn't work, is as follows:
function UIFigureKeyPress(app, event)
key = event.Key;
switch key
case 'rightarrow'
NextframeButtonPushed(app, event);
case 'leftarrow'
PreviousframeButtonPushed(app, event);
end
end
Was wondering if anybody knows where the problem lies. Thanks in advance for your time.
  2 Comments
Benedict Low
Benedict Low on 9 Nov 2020
Edited: Benedict Low on 9 Nov 2020
Thank you Ramya for responding.
I realised that the code didn't work because of the focus. The key press function only worked when the figure had focus, but not the children. Which means I had to always ensure that the focus was not on any child object, before pressing the keys.
A better solution was therefore the window key press function, because the code executes as long as the figure or any child object has focus.
function UIFigureWindowKeyPress(app, event)
key = event.Key;
switch key
case 'rightarrow'
NextframeButtonPushed(app, event);
case 'leftarrow'
PreviousframeButtonPushed(app, event);
end
end

Sign in to comment.

Answers (1)

Aniket
Aniket on 21 Nov 2024 at 4:58
Hi,
This issue can happen when the current focus is set on a child component in UI figure.
The "KeyPressFcn" Callback executes when the user presses a key while the UI figure itself has focus. It does not trigger if the focus is on a child component like an edit field, unless that component is disabled. This callback is suitable when you want key events to be recognized only when the figure is in focus and that the interactions with child components do not interfere.
On the other hand, the "WindowKeyPressFcn" Callback activates when a key is pressed while either the UI figure or any of its child components has focus. This makes it ideal for scenarios where you want the callback to respond regardless of where the focus is within the figure. It eliminates the need to manually adjust focus away from child components.
To know more about callbacks in UI Figure, kindly follow the documentation below:
I hope this resolves the issue.

Categories

Find more on Data Exploration in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!