Hide mouse cursor in builder?

I have not been able to find a way to hide the mouse cursor in an experiment that includes a movie component. The mouse cursor can be hidden at the start of the experiment, but it reappears as soon as the movie loads. When the movie component’s ‘movie file’ drop-down is set to ‘set every repeat’, the movie does not load until the movie component starts (this is another unresolved bug and it causes a delay in the onset of the movie: Loading times for routines with videos are slow) and the mouse cursor reappears when the movie component starts (first as a blue circle and then, when the movie has loaded, as a white arrow). When the ‘movie file’ drop-down is instead set to ‘constant’, the movie loads at the start of the experiment and the cursor is therefore visible throughout the experiment.

I have, however, found a workaround that involves setting the position of the mouse cursor so that it is off-screen and therefore not visible. See: Resetting mouse position to center after rating. In each routine after the movie was loaded, and in which you want the cursor to be hidden, it is necessary to create a Mouse component and then add a code component after it that sets the position of the Mouse component using the setPos() method. The position of the Mouse component should be set to coordinates that are off-screen. The coordinates to use depend on the units that have been chosen for the window (I think in Properties → Screen), and I think in all cases (0,0) is the centre of the screen (psychopy.event - for keypresses and mouse clicks — PsychoPy v2021.2). For example, if you are using ‘norm’ units, then the top right corner of the screen has coordinates of (1,1) and the following line of code will cause the mouse cursor to be positioned in this corner (in the code, ‘myMouse’ should be replaced with the name of your Mouse component):

myMouse.setPos(newPos=(1,1))

The tip of the white arrow cursor will be located at the top right corner of the screen and the body of the arrow will not be visible because of its shape (the body of the arrow is below and to the right of its tip). The bottom left or bottom right corners of the screen would work just as well. If you specify coordinates that are outside the screen area (e.g. (2,2) or (100,100)), I think the cursor ends up in the same corner (e.g. at (1,1)).

I added this code to the Begin Routine tab and the Each Frame tab of the code component. Adding it to the Each Frame tab ensures that the mouse cursor is returned to the required position whenever the user attempts to move it. The cursor will briefly appear on the screen when the user moves the mouse to bring it on-screen, but will quickly move back off-screen. I added a Mouse component and a code component to each routine in which I wanted to hide the mouse cursor.

Note that the Mouse component also has a setVisible() method, but this doesn’t work in conjunction with a Movie component. In other words, neither win.mouseVisible = False nor myMouse.setVisible(False) works, and as far as I know the cursor cannot be hidden, only moved off-screen.