ports/132100: Xorg server forgets pointer map after xlock
hanche at math.ntnu.no
Wed Feb 25 13:40:02 UTC 2009
>Synopsis: Xorg server forgets pointer map after xlock
>Arrival-Date: Wed Feb 25 13:40:01 UTC 2009
>Originator: Harald Hanche-Olsen
FreeBSD fiinbeck.math.ntnu.no 7.1-STABLE FreeBSD 7.1-STABLE #4: Mon Jan 12 20:59:50 CET 2009 root at fiinbeck.math.ntnu.no:/usr/obj/usr/src/sys/FIINBECK amd64
After unlocking xlock, the pointer setting (the result of xmodmap -e 'pointer = ...') is lost. More precisely, xmodmap -pp reports the settings that were created before, but the server behaves as if the identity map was in force, i.e., as if one had run xmodmap -e 'pointer = 1 2 3 4 5 6 ...'.
This does not always happen if I run xlock for a short while, but if it runs overnight, it always does for me.
I run moused and hald. Some relevant port versions: xorg-server-1.5.3_5,1 hal-0.5.11_17 xf86-input-mouse-1.4.0_3. I should add that I have two pointer devices: One regular three button mouse where the middle button is also a scroll wheel, and a four button trackball.
When I run xlock, the following appears in Xorg.0.log:
(II) config/hal: removing device USB Trackball
(II) UnloadModule: "mouse"
And when I unlock xlock, the following appears:
(II) config/hal: Adding input device USB Trackball
(**) USB Trackball: Device: "/dev/sysmouse"
(==) USB Trackball: Protocol: "Auto"
(**) USB Trackball: always reports core events
(**) Option "Device" "/dev/sysmouse"
(==) USB Trackball: Emulate3Buttons, Emulate3Timeout: 50
(**) USB Trackball: ZAxisMapping: buttons 4 and 5
(**) USB Trackball: Buttons: 9
(**) USB Trackball: Sensitivity: 1
(II) XINPUT: Adding extended input device "USB Trackball" (type: MOUSE)
(II) USB Trackball: SetupAuto: hw.iftype is 4, hw.model is 0
(II) USB Trackball: SetupAuto: protocol is SysMouse
Also, messages in dmesg indicate that the entire USB world is being rescanned by the kernel, just as during boot.
Create a file with a non-identity mapping of mouse buttons. I use
pointer = 1 9 3 4 5 8 7 6 2 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
but other maps should work, so long as they are not simply 1 2 3 4 ...
Feed the file to xmodmap. Verify that the pointer map works, both by running xmodmap -pp and by trying the mouse buttons (xev is good for this).
Run xlock, and keep it running for a while.
Unlock xlock. Run xmodmap -pp: It shows the same output as previously. Try the mouse buttons: They act as if the pointer map was 1 2 3 4 ...
A workaround is to rerun xmodmap after unlocking xlock.
More information about the freebsd-ports-bugs