Question

I have a Matlab GUI with many buttons. Now I want to set some shotcuts to the button. Actually I can check for one button and it works fine. My questin is how I can check if two buttons will be press?

Something like CTRL + KEY. It mustn´t the CTRL key =) It could be any key combination.

Thanks for help. Sorry for my english.

To check for one key I use this code:

key1 = get(gcf,'CurrentKey');

if(strcmp (key1 ,'k'))
%CODE HERE
end

I have try something like this (for the keys k and q):

key2 = get(gcf,'CurrentKey');

keystr = [key1 + key2];

if(strcmp(keystr, 'kq'))
%CODE HERE
end

The value of key1 change, if you press another button on the keyboard. So the && operator is never fullfilled.

Was it helpful?

Solution

It is not fully generic, but I think this should do the trick:

First determine whether control is pressed as shown by @Pursuit (probably works for several keys)

modifiers = get(gcf,'currentModifier');        
ctrlIsPressed = ismember('control',modifiers);

Then just check the current key, as you already did and combine the result. In the end it could look something like this:

modifiers = get(gcf,'currentModifier');        
key1 = get(gcf,'CurrentKey');

if(strcmp (key1 ,'k')) && ismember('control',modifiers)
    %CODE HERE
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top