Search code examples
matlabkeypressmatlab-figurematlab-guide

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.


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