To create a shortcut for push button in MATLB figures, the ‘KeyPressFcn’ and ‘KeyReleaseFcn’ callbacks of the figure object can be used.
Here are the steps I followed to program shortcut keys to a push button:
- Setup the GUI figure and button.
f = figure;
button = uicontrol(f,'Style','pushbutton','String','Push','Callback',@buttonPressed);
- Initialize a ‘ctrlPressed’ variable in the figure’s ‘UserData’ to store a value based on whether the Ctrl button is pressed or not.
f.UserData = struct('ctrlPressed',false);
- Add the ‘KeyPressFcn’ and ‘KeyReleaseFcn’ callbacks to the figure.
f.KeyPressFcn = {@keyPressed, f, button};
f.KeyReleaseFcn = {@keyReleased, f};
- Define the ‘KeyPressFcn’ callback to handle key press events.
function keyPressed (src, event, figureHandle, buttonHandle)
- If Ctrl key is pressed, set ‘ctrlPressed’ to true.
switch event.Key
case 'control'
figureHandle.UserData.ctrlPressed = true;
- If the desired shortcut key is pressed, call the callback function of the push button (Additional cases can be made for more shortcuts).
case 'd'
if(figureHandle.UserData.ctrlPressed == true)
buttonHandle.Callback();
end
end
end
- Define the ‘KeyReleaseFcn’ to set ‘ctrlPressed’ to false if Ctrl button is released.
function keyReleased(src, event, figureHandle)
if(event.Key == 'control')
figureHandle.UserData.ctrlPressed = false;
end
end
- Define button callback.
function buttonPressed(src,event)
disp('Button pressed');
end
For more information about the properties of the figure object used in the code, here are some documentations: