Detecting bilateral RTs from mouse clicks

I’m using the current standalone version of PsychoPy on Windows 11, .

I would like to record the reaction times (RT) from presses of both the right and left mouse buttons independently. According to this link, the time of last mouse click can be accessed as mouse.time[-1]. I am checking for button presses at each frame, and I would like to measure RT with accuracy.

I have 2 questions:
1- Are the times of button presses necessarily locked to the monitor refresh rate? (at 60Hz, that means ~16.6 ms latency)
2- In case of bimanual button presses (i.e., nearly simultaneous left-right, only a few ms difference), is there a way to determine which button was pressed first?
I understand that, if you draw buttons on screen that act as buttons (visual “clickable” objects), you can find the order in which visual object got clicked using mouse.clicked_name. But is there a way to know which mouse button (left, right) was used?

Thanks in advance.
Kind regards,

I connected a second screen, which has a refresh rate of 240Hz, but the times of mouse clicks continue to be registered at 60Hz, regardless of whether or not I select “Synch timing with refresh rate” in the mouse component.

Even though I configured the frame rate (on Windows) to be 240Hz, the actual rate in PschoPy (using ‘win.getActualFrameRate()’) is still 60Hz!

This is a serious issue for our experiments, as we cannot afford to have such a low time resolution for our reaction times (i.e., 60Hz or ~16 msec).

Is there a way to record mouse clicks at a higher time resolution?

Thank you.

Further update:
It appears that Windows 11 uses the lowest frame rates when it has 2 monitors with different rates… I can only get the correct frame rate of 240Hz when I set the “fast” display as the main one.

But it still doesn’t explain why registration of mouse clicks in PsychoPy is locked to the frame rate…


The answer might be that mouse clicks aren’t actively sent as clicks but instead the mouse state is polled, and the monitor refresh rate is an obvious frequency with which to poll the mouse state.

Have you unticked “sync timing with screen refresh” in your mouse component?