Literally yesterday I was working on a Windows 3.x driver for VirtualBox's mouse integration (which is a PCI device).
https://git.javispedro.com/cgit/vbmouse.git/tree/
A good bunch of this driver is in C (unlike the other drivers I know -- including vmwmouse above -- which are in assembler) so it may be easier to start with if you want to implement a USB HID mouse driver 😀
And now after the above spam ... 😀
I think your best bets are (in order from most recommended to least recommended IMHO) :
1. Use the BIOS, Luke!
Your system looks recent enough to have a USB BIOS ( does a USB keyboard work in BIOS setup ? ) , which should be emulating a PS/2 mouse using your USB mouse.
Then you can use the standard Windows 3.x PS/2 mouse driver.
This is basically what everyone does.
Is it not working for some reason ?
2. Use a USB stack for MS-DOS to emulate a PS/2 mouse.
E.g. http://bretjohnson.us/ is a full featured USB stack for MS-DOS that I've used in the past.
It even contains a program called "USBMOUSE" which does exactly what you need: it emulates a PS/2 mouse using the USB mouse.
Then you can use the standard Windows 3.x PS/2 mouse driver.
3. Use a USB stack for MS-DOS to emulate a int33h mouse driver, then use a int33h passthrough driver in Windows 3.x .
But I'm not familiar of any such stack for DOS.
As for a int33 passthrough driver for Windows 3.x , you have the one from dosemu2 https://github.com/dosemu2/win31-mouse-driver/
4. I don't recommend writing a "direct" USB mouse driver for Windows 3.x , because then you have to worry about sharing control of the USB controller with other USB drivers (like mass storage) and that is going to be painful.
Much better to just utilize APIs from a DOS USB stack.