2

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.

  • What code do you use to check for one button pressed? I don't know much about this but wouldn't simply the && operator work here? – dreamer Jul 30 '14 at 14:39

1 Answers1

1

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
Community
  • 1
  • 1
Dennis Jaheruddin
  • 21,208
  • 8
  • 66
  • 122