Date: Mon, 21 Sep 1998 04:34:36 +0900 (JST) From: Hideyuki Suzuki <hideyuki@sat.t.u-tokyo.ac.jp> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/8001: moused: wheel mode button support Message-ID: <199809201934.EAA21414@odin.sat.t.u-tokyo.ac.jp>
next in thread | raw e-mail | index | archive | help
>Number: 8001
>Category: bin
>Synopsis: moused: wheel mode button support
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sun Sep 20 12:40:00 PDT 1998
>Last-Modified:
>Originator: Hideyuki Suzuki
>Organization:
Univ. of Tokyo
>Release: FreeBSD 2.2.7-STABLE i386
>Environment:
- FreeBSD 2.2.7-STABLE
- trackball with wheel mode button, such as Logitech TrackMan Marble FX.
>Description:
I made a patch for moused to have the following option:
-w N Treat the physical button N as a wheel mode button. While this
button is pressed, X and Y axis movement is reported to be zero
and Y axis movement is mapped to Z axis. You may map this move-
ment to virtual buttons with the -z option.
Wheel mode button on TrackMan Marble FX is reported as a button 4
from normal moused. But with the -w option,
moused -p /dev/psm0 -w 4 -z 4
enables you to use scrolling functionality on X Window System.
>How-To-Repeat:
>Fix:
Apply the following patch in src/usr.sbin/moused.
moused.c and moused.8 are modified.
I have not checked if this modification works on 3.0-CURRENT environment,
but this patch can be applied cleanly.
Index: moused.8
===================================================================
RCS file: /pub/FreeBSD-CVS/src/usr.sbin/moused/moused.8,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 moused.8
--- moused.8 1998/03/13 11:21:15 1.1.2.5
+++ moused.8 1998/09/20 18:50:19
@@ -273,6 +273,13 @@
This is the only protocol type available for the PS/2 mouse
and should be specified for any PS/2 mice, regardless of the brand.
.El
+.It Fl w Ar N
+Treat the physical button
+.Ar N
+as a wheel mode button.
+While this button is pressed, X and Y axis movement is reported to be zero
+and Y axis movement is mapped to Z axis.
+You may map this movement to virtual buttons with the -z option.
.It Fl z Ar target
Map Z axis (roller/wheel) movement to another axis or to virtual buttons.
Valid
Index: moused.c
===================================================================
RCS file: /pub/FreeBSD-CVS/src/usr.sbin/moused/moused.c,v
retrieving revision 1.4.2.7
diff -u -r1.4.2.7 moused.c
--- moused.c 1998/03/13 11:21:18 1.4.2.7
+++ moused.c 1998/09/20 18:01:21
@@ -336,6 +336,7 @@
int rate; /* report rate */
int resolution; /* MOUSE_RES_XXX or a positive number */
int zmap; /* MOUSE_{X|Y}AXIS or a button number */
+ int wmode; /* wheel mode button number */
int mfd; /* mouse file descriptor */
int cfd; /* /dev/consolectl file descriptor */
long clickthreshold; /* double click speed in msec */
@@ -350,6 +351,7 @@
rate : 0,
resolution : MOUSE_RES_UNKNOWN,
zmap: 0,
+ wmode: 0,
mfd : -1,
cfd : -1,
clickthreshold : 500, /* 0.5 sec */
@@ -393,7 +395,7 @@
int c;
int i;
- while((c = getopt(argc,argv,"3C:DF:I:PRS:cdfhi:l:m:p:r:st:z:")) != -1)
+ while((c = getopt(argc,argv,"3C:DF:I:PRS:cdfhi:l:m:p:r:st:w:z:")) != -1)
switch(c) {
case '3':
@@ -473,6 +475,14 @@
rodent.baudrate = 9600;
break;
+ case 'w':
+ i = atoi(optarg);
+ if ((i <= 0) || (i > MOUSE_MAXBUTTON)) {
+ warnx("invalid argument `%s'", optarg);
+ usage();
+ }
+ rodent.wmode = 1 << (i - 1);
+
case 'z':
if (strcmp(optarg, "x") == 0)
rodent.zmap = MOUSE_XAXIS;
@@ -1560,6 +1570,11 @@
lbuttons = 0;
act2->obutton = act2->button;
+ if (pbuttons & rodent.wmode) {
+ act1->dz = act1->dy;
+ act1->dx = 0;
+ act1->dy = 0;
+ }
act2->dx = act1->dx;
act2->dy = act1->dy;
act2->dz = act1->dz;
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809201934.EAA21414>
