From: "Zephaniah E\. Hull" <warp@babylon.d2dc.net>
To: vojtech@suse.cz
Cc: linux-kernel@vger.kernel.org
Subject: [patch] Problem with mousedev.c
Date: Sat, 26 Oct 2002 21:05:38 -0400 [thread overview]
Message-ID: <20021027010538.GA1690@babylon.d2dc.net> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 1016 bytes --]
To make a long story short, mousedev.c does not properly implement the
EXPS/2 protocol, specificly dealing with the wheel.
The lower 8 bits of the 4th byte are supposed to be 0x1 or 0xf to
indicate movement of the first wheel, and 0x2 or 0xe for the second
wheel.
Attached is a patch to correct this.
This does not get my two wheel mouse working perfectly yet, sadly that
will take a bit of a hack, and I'm not sure where the best place to put
it is yet, but this gets it back to generating correct data.
Zephaniah E. Hull.
(Debian GPM maintainer.)
--
1024D/E65A7801 Zephaniah E. Hull <warp@babylon.d2dc.net>
92ED 94E4 B1E6 3624 226D 5727 4453 008B E65A 7801
CCs of replies from mailing lists are requested.
Yes, Java is so bulletproofed that to a C programmer it feels like
being in a straightjacket, but it's a really comfy and warm
straightjacket, and the world would be a safer place if everyone was
straightjacketed most of the time. -- Overheard in the SDM.
[-- Attachment #1.2: hid.diff --]
[-- Type: text/plain, Size: 1799 bytes --]
diff -ur linux/drivers/input/mousedev.c linux.mine/drivers/input/mousedev.c
--- linux/drivers/input/mousedev.c 2001-09-30 15:26:05.000000000 -0400
+++ linux.mine/drivers/input/mousedev.c 2002-10-26 18:20:19.000000000 -0400
@@ -62,7 +62,7 @@
struct fasync_struct *fasync;
struct mousedev *mousedev;
struct mousedev_list *next;
- int dx, dy, dz, oldx, oldy;
+ int dw, dx, dy, dz, oldx, oldy;
signed char ps2[6];
unsigned long buttons;
unsigned char ready, buffer, bufsiz;
@@ -117,6 +117,7 @@
case REL_X: list->dx += value; break;
case REL_Y: list->dy -= value; break;
case REL_WHEEL: if (list->mode) list->dz -= value; break;
+ case REL_HWHEEL: if (list->mode == 2) list->dw -= value; break;
}
break;
@@ -260,9 +261,22 @@
list->bufsiz = off + 3;
if (list->mode == 2) {
- list->ps2[off + 3] = (list->dz > 7 ? 7 : (list->dz < -7 ? -7 : list->dz));
- list->dz -= list->ps2[off + 3];
- list->ps2[off + 3] = (list->ps2[off + 3] & 0x0f) | ((list->buttons & 0x18) << 1);
+ if (!list->dz && !list->dw) {
+ list->ps2[off + 3] = 0;
+ } else if (list->dw > 0) {
+ list->ps2[off + 3] = 0x2;
+ list->dw--;
+ } else if (list->dw < 0) {
+ list->ps2[off + 3] = 0xe;
+ list->dw++;
+ } else if (list->dz > 0) {
+ list->ps2[off + 3] = 0x1;
+ list->dz--;
+ } else if (list->dz < 0) {
+ list->ps2[off + 3] = 0xf;
+ list->dz++;
+ }
+ list->ps2[off + 3] |= (list->buttons & 0x18) << 1;
list->bufsiz++;
}
@@ -272,7 +286,7 @@
list->bufsiz++;
}
- if (!list->dx && !list->dy && (!list->mode || !list->dz)) list->ready = 0;
+ if (!list->dx && !list->dy && (!list->mode || !list->dz) && ((list->mode != 2) || !list->dw)) list->ready = 0;
list->buffer = list->bufsiz;
}
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2002-10-27 0:59 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-27 1:05 Zephaniah E. Hull [this message]
2002-10-28 13:27 ` [patch] Problem with mousedev.c Petr Vandrovec
2002-10-28 17:00 ` Zephaniah E. Hull
2002-10-28 17:40 ` Vojtech Pavlik
2002-10-30 15:32 ` Zephaniah E. Hull
2002-10-30 15:59 ` Vojtech Pavlik
2002-10-30 16:04 ` Zephaniah E. Hull
2002-10-30 16:11 ` Vojtech Pavlik
2002-10-30 16:21 ` Zephaniah E. Hull
-- strict thread matches above, loose matches on Subject: below --
2002-10-30 16:46 Petr Vandrovec
2002-10-30 18:37 ` Zephaniah E. Hull
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021027010538.GA1690@babylon.d2dc.net \
--to=warp@babylon.d2dc.net \
--cc=linux-kernel@vger.kernel.org \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.