KbQueue working properly on Mac, but not on Windows

Hi community, I wrote a program in Matlab where I asked the user to enter a value between 0 and 100 followed by «Enter» and save the answer. I use KbQueue functions and the script works fine on my Mac, but somehow, it doesn’t work when I try to run in on a Windows computer.

Here’s the code for the concerned part:

 % User's response. Doesn't show on the screen, but answer's saved
        respArray = "";

        KbQueueCreate; % initialize the Queue
        EXIT_SIGNAL = 0;
        
        KbQueueStart;
        
        while ~EXIT_SIGNAL
            [pressed, firstPress, firstRelease, lastPress, lastRelease]=KbQueueCheck;
            if pressed
                if ~(strcmp(KbName(find(firstPress)), 'Return'))
                    respArray = respArray + regexp(KbName(find(firstPress)),'[0-9]','match');
                elseif any(strcmp(KbName(find(firstPress)), 'Return'))
                    EXIT_SIGNAL = 1;
                end
            end
        end
        KbQueueStop;
        KbQueueRelease;
    
        user_temp_response = respArray;

The script seems to be stuck on this line of code:

respArray = respArray + regexp(KbName(find(firstPress)),'[0-9]','match');

I receive the error message «Error using regexp. The ‘STRING’ input must be either a char row vector, a cell array of char row vector, or a string array.»

Thank you for your help,
Jimmy

Add following to the beginning of your script:

KbName('UnifyKeyNames');

You should be fine. That command forces the consistent key names across OS.

1 Like