This is one of the areas where implementing Win32 on top of X11 is really hard.
(Note, it used to work in the past for this game specifically, but by fixing other games we broke Quake)
Windows reports relative mouse movements. If the mouse cursor moves from (100,100) to (110,115) the application can read a (10,15) movement via DirectInput. X11 does not do that. So we subtract the old position from the new position. This works fine, except if the cursor hits the screen corner. If the cursor is in (0,0), and moves (-10,-10) pixels, it is still at (0,0) afterwards. Thus we cannot read any movement, but windows can.
Our workaround is to warp the cursor back to the center after each read. This obviously breaks apps that read the absolute position. So we have some logic to enable/disable the warping.
Now unfortunately some apps depend on both relative movement and absolute position.
The fix hopefully comes with the in-development XInput 2 extension for Linux. On MacOS, we are now finally working on a native Quartz backend that will hopefully allow us to get rid of the X server.