user3510014
user3510014

Reputation: 53

How to check TWO key pressed in Matlab?

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.

Upvotes: 2

Views: 1915

Answers (1)

Dennis Jaheruddin
Dennis Jaheruddin

Reputation: 21561

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

Upvotes: 1

Related Questions