blob: 184a1a61e320b18d3ee3b277681be3029e39f64d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
graphic: 0.963
debug: 0.958
performance: 0.935
kernel: 0.859
mistranslation: 0.833
boot: 0.819
architecture: 0.815
device: 0.805
user-level: 0.795
semantic: 0.768
permissions: 0.692
peripherals: 0.666
network: 0.653
VMM: 0.551
register: 0.541
PID: 0.533
socket: 0.532
arm: 0.511
risc-v: 0.504
ppc: 0.503
vnc: 0.471
files: 0.421
TCG: 0.354
hypervisor: 0.329
x86: 0.289
i386: 0.246
assembly: 0.233
KVM: 0.193
virtual: 0.192
Incorrect vertical mouse leaps on qemu-system-sparc
Description of problem:
In openwin (i.e. X) if you turn the scrollwheel on the mouse 1 click the cursor jumps almost all of the way down the screen. Similarly, just pressing the scroll wheel (middle click) multiple times will sometimes produce similar behavior but the cursor doesn't jump as far.
Steps to reproduce:
- Boot Solaris and log in
- capture the mouse by clicking on the screen
- position the mouse cursor near the top of the screen (just so you can see how far it jumps)
- click the scroll wheel up or down one click and observe the cursor jump downward
Additional information:
The issue is independent of which graphic display is used -- sdl, gtk and vnc all do the same thing. Debugging so far suggests that the problem is related to the fact that `sunmouse_event` in `escc.c` is sending a flood of duplicate events in response to the mouse scroll action. My surmise is that this is causing one byte to be dropped from the 5 byte mouse protocol expected by the Solaris kernel and that it is interpreting a sync byte as a vertical motion byte.
`sunmouse_event` should not send events with only `dz` non-zero and no button changes. The Mouse Systems Corp spec for the the Sun mouse says that it never sends duplicate events (i.e. an event is produced only if there is non-zero `dx` or `dy` or there has been a button state change), and the mouse protocol has no support for `dz` events.
I will propose a patch shortly to enforce this (and which has seemingly fixed the problem).
|