Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Aug 2021 17:51:58 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 257867] Mouse 4D+ erratic move (psm.c and moused.c)
Message-ID:  <bug-257867-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D257867

            Bug ID: 257867
           Summary: Mouse 4D+ erratic move (psm.c and moused.c)
           Product: Base System
           Version: Unspecified
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: franz.arnold@live.com

Mouse 4D+ is erratic when moving backward (negative X or negative Y). Cursor
jumps instantly to position (0,0) under a GUI (Graphic User Interface).

Mouse move could go even crazier when it is enabled for terminal text,
selecting and doing things under no clearly understandable reason.

This seems to be affecting both Free BSD and DragonFly BSD I've tested so f=
ar
(the late two main releases of both OS).

In both case, after forcing the boot probe to ignore actual mouse or forcing
mouse protocol to be a regular PS/2 mouse, it seemed to work (move cursor) =
as
expected.

I've researched several Discussion Groups and Forums for months without fin=
ding
useful solution. Also have researched both OS Source Code and found somethi=
ng
interesting that might be related to that strange behavior.


First issue:

In the psm.c, searching for the keyword MOUSE_MODEL_4DPLUS, on line 5103, we
can find "if ((x < 16 - 256) && (y < 16 - 256))".

But in moused.c, searching for the same MOUSE_MODEL_4DPLUS, on line 2289, we
can find "if ((act->dx < 16 - 256) && (act->dy > 256 - 16))".

Why would there be a different calculation for testing and decision regardi=
ng
mouse move?


Second issue:

In both source codes (psm.c line 5103; moused.c line 2290) we can find "x =
=3D y =3D
0" and "act->dx =3D act->dy =3D 0" respectively.

What is happening actually? What is being interpreted as backward mouse mov=
e?
Is it correct for the 4D+ Mouse protocol?


I am not experienced in hardware communication protocol, which applies PS/2
mouse protocol. Hope this finding could useful, specially other users trying
BSD with old hardware like myself (which is not a bad idea).

Please, could someone more knowledgeable about PS/2 mouse and binary protoc=
ol
check this?

Many thanks in advance.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-257867-227>