pcvt cleanup. remove the "mcon" utility: the PCVT_EMU_MOUSE code

in the driver is gone, because of this mcon is of no use anymore.
This commit is contained in:
Hellmuth Michaelis 2000-03-26 11:20:42 +00:00
parent 99753b70d6
commit 9da485d8d9
4 changed files with 1 additions and 372 deletions

View File

@ -1,7 +1,7 @@
# $FreeBSD$
SUBDIR= keycap cursor fontedit fonts kcon loadfont scon \
userkeys vttest ispcvt mcon
userkeys vttest ispcvt
SUBDIR+= vgaio kbdio
SUBDIR+= demo
SUBDIR+= Misc

View File

@ -1,3 +0,0 @@
PROG= mcon
.include <bsd.prog.mk>

View File

@ -1,175 +0,0 @@
.\" Copyright (c) 1994 Joerg Wunsch
.\"
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Joerg Wunsch
.\" 4. The name authors may not be used to endorse or promote products
.\" derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" @(#)mcon.1, 3.00, Last Edit-Date: [Mon Jan 10 21:28:22 1994]
.\" $FreeBSD$
.\"
.Dd January 3, 1994
.Dt MCON 1
.Sh NAME
.Nm mcon
.Nd controls pcvt mouse emulator
.Sh SYNOPSIS
.Nm mcon
.Op Fl l Ar left-button-key
.Op Fl m Ar mid-button-key
.Op Fl r Ar right-button-key
.Op Fl a Ar accel-time
.Op Fl s Ar 0 | false | \&no
.Op Fl s Ar 1 | true | yes
.Ar device
.Sh DESCRIPTION
The
.Nm mcon
utility controls the configurable parameters for the mouse emulator of
.Xr pcvt 4 .
.br
.Em NB :
The mouse emulator is not configured in by default; the system's config
file needs to specify an option line
.Em options Dq PCVT_EMU_MOUSE
in order to get its functionality.
.Pp
Either way, the
.Nm
program must be called with an argument
.Ar device
that specifies the device node used for the mouse emulation.
This is
usually the first device node of the
.Xr pcvt 4
driver not being used as a virtual terminal device.
E.\ g., if you
have configured eight virtual terminals
.Pq the default value ,
named
.Pa /dev/ttyv0
through
.Pa /dev/ttyv7 ,
the mouse emulator would allocate
.Pa /dev/ttyv8 .
If
.Nm
is called without any option, it will print the actual values of the
configurable parameters.
If called with an option, the program attempts to set up the new value.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl l Ar left-button-key
.It Fl m Ar mid-button-key
.It Fl r Ar right-button-key
Maps the named
.Ar button key
to emulate either the left, middle, or right mouse button.
.Ar Button key
is the usual name for that key.
Normal ASCII keys are denoted by the
character they're labeled with, function keys are named
.Em f1
through
.Em f10 .
Note that the AT function keys
.Em f11
and
.Em f12
are
.Em extended
keys that cannot be mapped to be used with the mouse emulator since
it only allows basic PC-scancode keys to be used.
.It Fl a Ar accel-time
Set the time limit for the internal accelerator to
.Ar accel-time
milliseconds.
Key events occurring after a longer time than this limit
will move the mouse cursor in single steps.
Key events arriving more
frequently will move the cursor accelerated by a factor of 6. Note that
despite of
.Em milliseconds
being the unit of choice here, the time resolution is restricted by the
timer tick distance of the underlying operating system, usually to a
granularity of 10 milliseconds.
.It Fl s Ar 0 | false | \&no
.It Fl s Ar 1 | true | yes
The first form disables, the second form enables the
.Em sticky
behaviour of the mouse buttons.
Sticky mouse keys behave much like
toggle-buttons: on first press, they become active, on second press,
they're deactivated.
Pressing another button will deactivate any
other sticky button anyway.
Sticky buttons might be more convenient since you don't need 20 fingers
at all; on the other hand, they make it virtually impossible to initiate
double or triple mouse clicks.
.El
.Sh EXAMPLES
The following example would install the default behaviour of the
mouse emulator:
.Nm mcon
.Fl l Ar f1
.Fl m Ar f2
.Fl r Ar f3
.Fl a Ar 250
.Fl s Ar \&no
.Pa /dev/ttyv8
.Sh BUGS
The key names used to map the button-emulating keys to scan codes
.Pq and vica verse
are based on the American keyboard layout.
This would usually not
cause any trouble since the
.Dq button-of-choice
is certainly some function key that should be equal for any national
keyboard layout.
.Pp
The mouse emulator is a rude hack at all; its only purpose is to provide
a device to move the pointer within an X-windowing environment.
.Sh SEE ALSO
.Xr X 1 ,
.Xr pcvt 4
.Sh HISTORY
The
.Nm
utility appeared in
.Xr pcvt 4 ,
release 3.00.
.Sh AUTHORS
The mouse emulator has been contributed by
.if n Joerg Wunsch.
.if t J\(:org Wunsch.

View File

@ -1,193 +0,0 @@
/*
* Copyright (c) 1994 Joerg Wunsch
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Joerg Wunsch
* 4. The name authors may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* @(#)mcon.c, 3.20, Last Edit-Date: [Tue Dec 20 14:53:15 1994]
*/
/*---------------------------------------------------------------------------*
*
* history:
*
* -jw initial version; includes a basic mapping between PeeCee
* scan codes and key names
* -hm changed sys/pcvt_ioctl.h -> machine/pcvt_ioctl.h
*
*---------------------------------------------------------------------------*/
/*
* Utility program to wire the mouse emulator control ioctl to the
* user level. Allows setting of any configurable parameter, or
* display the current configuration.
*/
#include <machine/pcvt_ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/fcntl.h>
static const char *keynames[] = {
"", "esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
"-", "+", "bksp", "tab", "q", "w", "e", "r", "t", "y", "u",
"i", "o", "p", "[", "]", "enter", "ctrl", "a", "s", "d", "f",
"g", "h", "j", "k", "l", ";", "\"", "`", "lshift", "\\",
"z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "rshift",
"prtscr", "alt", "space", "caps", "f1", "f2", "f3", "f4",
"f5", "f6", "f7", "f8", "f9", "f10", "numlock", "scrolllock",
"kp7", "kp8", "kp9", "kp-", "kp4", "kp5", "kp6", "kp+",
"kp1", "kp2", "kp3", "kp0", "kp."
};
const char *scantoname(int scan) {
if(scan >= sizeof keynames / sizeof(const char *))
return "???";
else
return keynames[scan];
}
int nametoscan(const char *name) {
int i;
for(i = 0; i < sizeof keynames / sizeof(const char *); i++)
if(strcmp(keynames[i], name) == 0)
return i;
return -1;
}
int main(int argc, char **argv) {
int c, errs = 0, fd, do_set = 0;
int left = 0, mid = 0, right = 0, accel = 0, sticky = -1;
struct mousedefs mdef;
while((c = getopt(argc, argv, "l:m:r:a:s:")) != -1)
switch(c) {
case 'l':
left = nametoscan(optarg);
do_set = 1;
if(left == -1) goto keynameerr;
break;
case 'm':
mid = nametoscan(optarg);
do_set = 1;
if(mid == -1) goto keynameerr;
break;
case 'r':
right = nametoscan(optarg);
do_set = 1;
if(right == -1) goto keynameerr;
break;
keynameerr:
{
fprintf(stderr, "unknown key name: %s\n",
optarg);
errs++;
}
break;
case 'a':
accel = 1000 * strtol(optarg, 0, 10);
do_set = 1;
break;
case 's':
if(strcmp(optarg, "0") == 0
|| strcmp(optarg, "false") == 0
|| strcmp(optarg, "no") == 0)
sticky = 0;
else if(strcmp(optarg, "1") == 0
|| strcmp(optarg, "true") == 0
|| strcmp(optarg, "yes") == 0)
sticky = 1;
else {
fprintf(stderr, "invalid argument to -s: %s\n",
optarg);
errs++;
}
do_set = 1;
break;
default:
errs++;
}
argc -= optind;
argv += optind;
if(errs || argc != 1) {
fprintf(stderr, "usage: "
"mouse [-l key][-m key][-r key][-a acctime][-s 0|1] "
"mousedev\n");
return 2;
}
if((fd = open(argv[0], O_RDONLY)) < 0) {
perror("open(mousedev)");
return 2;
}
if(ioctl(fd, KBDMOUSEGET, &mdef) < 0) {
perror("ioctl(KBDMOUSEGET)");
return 1;
}
if(!do_set) {
printf("Current mouse emulator definitions:\n"
"left button: %s\n"
"middle button: %s\n"
"right button: %s\n"
"acceleration limit: %d msec\n"
"sticky buttons: %s\n",
scantoname(mdef.leftbutton),
scantoname(mdef.middlebutton),
scantoname(mdef.rightbutton),
mdef.acceltime / 1000,
mdef.stickybuttons? "yes": "no");
return 0;
}
if(left) mdef.leftbutton = left & 0x7f;
if(mid) mdef.middlebutton = mid & 0x7f;
if(right) mdef.rightbutton = right & 0x7f;
if(accel) mdef.acceltime = accel;
if(sticky != -1) mdef.stickybuttons = sticky;
if(ioctl(fd, KBDMOUSESET, &mdef) < 0) {
perror("ioctl(KBDMOUSESET)");
return 1;
}
return 0;
}