http://bugs.winehq.org/show_bug.cgi?id=30123
Bug #: 30123 Summary: Mouse pointer is confined in a box lesser than the full screen Product: Wine Version: 1.4-rc4 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dinput AssignedTo: wine-bugs@winehq.org ReportedBy: kol@MV8660.spb.edu Classification: Unclassified
Running TES5:Skyrim on the old system without Xinput2 support and on the modern Fedora 16 (but not on Ubuntu) under Wine 1.3.21 or later versions exhibits the "inertial mouse" bug described in http://appdb.winehq.org/objectManager.php?sClass=version&iId=24749 : after changing the direction of mouse movement the look continues to move in the old direction for some time.
Since Wine 1.4-rc1 the old "inertial mouse" bug goes away but it is replaced by the new "clip" bug. The old bug appeared to be caused by the next strings in the dinput_mouse_hook() function in "dlls/dinput/mouse.c": if (This->clipped) pt = This->mapped_center; else GetCursorPos(&pt); which have been changed to GetCursorPos(&pt); in Wine 1.4-rc1. With new versions of Wine the mouse pointer is confined to some box lesser than the full screen. The behaviour of mouse depends on the "HKCU\Software\Wine\X11 Driver\GrabPointer" key. When it is set to "Y", the pointer is strictly confined to a box in game and in menus, when the key is set to "N", the pointer moves free in menus but mouse look in game is free within some limits and becomes very slow beyond these limits. It is similar to Bug#6971 but setting "MouseWarpOverride" to "force" does not change the mouse movement.
I experimentally found a simple "patch" to workaround: in the function warp_check() in "dlls/dinput/mouse.c" file the last operator "This->clipped = ..." has to be commented out and "This->clipped = FALSE;" has to be inserted in place of. I do not know how it work but it makes the mouse look correct in Skyrim on my Fedora 10 system and, as far as I can see, does not break other games at least in fullscreen mode.