xref: /freebsd/usr.sbin/moused/moused.8 (revision 2b743a9e9ddc6736208dc8ca1ce06ce64ad20a19)
1.\" Copyright (c) 1996
2.\"	Mike Pritchard <mpp@FreeBSD.org>.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\"    must display the following acknowledgement:
14.\"	This product includes software developed by Mike Pritchard.
15.\" 4. Neither the name of the author nor the names of its contributors
16.\"    may be used to endorse or promote products derived from this software
17.\"    without specific prior written permission.
18.\"
19.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE.
30.\"
31.\" $FreeBSD$
32.\"
33.Dd November 12, 2004
34.Dt MOUSED 8
35.Os
36.Sh NAME
37.Nm moused
38.Nd pass mouse data to the console driver
39.Sh SYNOPSIS
40.Nm
41.Op Fl DPRacdfs
42.Op Fl I Ar file
43.Op Fl F Ar rate
44.Op Fl r Ar resolution
45.Op Fl S Ar baudrate
46.Op Fl VH Op Fl U Ar distance
47.Op Fl a Ar X Ns Op , Ns Ar Y
48.Op Fl C Ar threshold
49.Op Fl m Ar N=M
50.Op Fl w Ar N
51.Op Fl z Ar target
52.Op Fl t Ar mousetype
53.Op Fl l Ar level
54.Op Fl 3 Op Fl E Ar timeout
55.Op Fl T Ar distance Ns Op , Ns Ar time Ns Op , Ns Ar after
56.Fl p Ar port
57.Pp
58.Nm
59.Op Fl Pd
60.Fl p Ar port
61.Fl i Ar info
62.Sh DESCRIPTION
63The
64.Nm
65utility and the console driver work together to support
66mouse operation in the text console and user programs.
67They virtualize the mouse and provide user programs with mouse data
68in the standard format
69(see
70.Xr sysmouse 4 ) .
71.Pp
72The mouse daemon listens to the specified port for mouse data,
73interprets and then passes it via ioctls to the console driver.
74The mouse daemon
75reports translation movement, button press/release
76events and movement of the roller or the wheel if available.
77The roller/wheel movement is reported as
78.Dq Z
79axis movement.
80.Pp
81The console driver will display the mouse pointer on the screen
82and provide cut and paste functions if the mouse pointer is enabled
83in the virtual console via
84.Xr vidcontrol 1 .
85If
86.Xr sysmouse 4
87is opened by the user program, the console driver also passes the mouse
88data to the device so that the user program will see it.
89.Pp
90If the mouse daemon receives the signal
91.Dv SIGHUP ,
92it will reopen the mouse port and reinitialize itself.
93Useful if
94the mouse is attached/detached while the system is suspended.
95.Pp
96If the mouse daemon receives the signal
97.Dv SIGUSR1 ,
98it will stop passing mouse events.
99Sending the signal
100.Dv SIGUSR1
101again will resume passing mouse events.
102Useful if your typing on a laptop is
103interrupted by accidentally touching the mouse pad.
104.Pp
105The following options are available:
106.Bl -tag -width indent
107.It Fl 3
108Emulate the third (middle) button for 2-button mice.
109It is emulated
110by pressing the left and right physical buttons simultaneously.
111.It Fl C Ar threshold
112Set double click speed as the maximum interval in msec between button clicks.
113Without this option, the default value of 500 msec will be assumed.
114This option will have effect only on the cut and paste operations
115in the text mode console.
116The user program which is reading mouse data
117via
118.Xr sysmouse 4
119will not be affected.
120.It Fl D
121Lower DTR on the serial port.
122This option is valid only if
123.Ar mousesystems
124is selected as the protocol type.
125The DTR line may need to be dropped for a 3-button mouse
126to operate in the
127.Ar mousesystems
128mode.
129.It Fl E Ar timeout
130When the third button emulation is enabled
131(see above),
132the
133.Nm
134utility waits
135.Ar timeout
136msec at most before deciding whether two buttons are being pressed
137simultaneously.
138The default timeout is 100 msec.
139.It Fl F Ar rate
140Set the report rate (reports/sec) of the device if supported.
141.It Fl H
142Enable
143.Dq Horizontal Virtual Scrolling .
144With this option set, holding the middle mouse
145button down will cause motion to be interpreted as
146horizontal scrolling.
147Use the
148.Fl U
149option to set the distance the mouse must move before the scrolling mode is
150activated.
151This option may be used with or without the
152.Fl V
153option.
154.It Fl I Ar file
155Write the process id of the
156.Nm
157utility in the specified file.
158Without this option, the process id will be stored in
159.Pa /var/run/moused.pid .
160.It Fl P
161Do not start the Plug and Play COM device enumeration procedure
162when identifying the serial mouse.
163If this option is given together with the
164.Fl i
165option, the
166.Nm
167utility will not be able to print useful information for the serial mouse.
168.It Fl R
169Lower RTS on the serial port.
170This option is valid only if
171.Ar mousesystems
172is selected as the protocol type by the
173.Fl t
174option below.
175It is often used with the
176.Fl D
177option above.
178Both RTS and DTR lines may need to be dropped for
179a 3-button mouse to operate in the
180.Ar mousesystems
181mode.
182.It Fl S Ar baudrate
183Select the baudrate for the serial port (1200 to 9600).
184Not all serial mice support this option.
185.It Fl T Ar distance Ns Op , Ns Ar time Ns Op , Ns Ar after
186Terminate drift.
187Use this option if mouse pointer slowly wanders when mouse is not moved.
188Movements up to
189.Ar distance
190(for example 4) pixels (X+Y) in
191.Ar time
192msec (default 500) are ignored, except during
193.Ar after
194msec (default 4000) since last real mouse movement.
195.It Fl V
196Enable
197.Dq Virtual Scrolling .
198With this option set, holding the middle mouse
199button down will cause motion to be interpreted as scrolling.
200Use the
201.Fl U
202option to set the distance the mouse must move before the scrolling mode is
203activated.
204.It Fl U Ar distance
205When
206.Dq Virtual Scrolling
207is enabled, the
208.Fl U
209option can be used to set the
210.Ar distance
211(in pixels) that the mouse must move before the scrolling
212mode is activated.
213The default
214.Ar distance
215is 3 pixels.
216.It Fl a Ar X Ns Op , Ns Ar Y
217Accelerate or decelerate the mouse input.
218This is a linear acceleration only.
219Values less than 1.0 slow down movement, values greater than 1.0 speed it
220up.
221Specifying only one value sets the acceleration for both axes.
222.It Fl c
223Some mice report middle button down events
224as if the left and right buttons are being pressed.
225This option handles this.
226.It Fl d
227Enable debugging messages.
228.It Fl f
229Do not become a daemon and instead run as a foreground process.
230Useful for testing and debugging.
231.It Fl i Ar info
232Print specified information and quit.
233Available pieces of
234information are:
235.Pp
236.Bl -tag -compact -width modelxxx
237.It Ar port
238Port (device file) name, i.e.\&
239.Pa /dev/cuad0 ,
240.Pa /dev/mse0
241and
242.Pa /dev/psm0 .
243.It Ar if
244Interface type: serial, bus, inport or ps/2.
245.It Ar type
246Protocol type.
247It is one of the types listed under the
248.Fl t
249option below or
250.Ar sysmouse
251if the driver supports the
252.Ar sysmouse
253data format standard.
254.It Ar model
255Mouse model.
256The
257.Nm
258utility may not always be able to identify the model.
259.It Ar all
260All of the above items.
261Print port, interface, type and model in this order
262in one line.
263.El
264.Pp
265If the
266.Nm
267utility cannot determine the requested information, it prints
268.Dq Li unknown
269or
270.Dq Li generic .
271.It Fl l Ar level
272Specifies at which level
273.Nm
274should operate the mouse driver.
275Refer to
276.Sx Operation Levels
277in
278.Xr psm 4
279for more information on this.
280.It Fl m Ar N=M
281Assign the physical button
282.Ar M
283to the logical button
284.Ar N .
285You may specify as many instances of this option as you like.
286More than one physical button may be assigned to a logical button at the
287same time.
288In this case the logical button will be down,
289if either of the assigned physical buttons is held down.
290Do not put space around
291.Ql = .
292.It Fl p Ar port
293Use
294.Ar port
295to communicate with the mouse.
296.It Fl r Ar resolution
297Set the resolution of the device; in Dots Per Inch, or
298.Ar low ,
299.Ar medium-low ,
300.Ar medium-high
301or
302.Ar high .
303This option may not be supported by all the device.
304.It Fl s
305Select a baudrate of 9600 for the serial line.
306Not all serial mice support this option.
307.It Fl t Ar type
308Specify the protocol type of the mouse attached to the port.
309You may explicitly specify a type listed below, or use
310.Ar auto
311to let the
312.Nm
313utility automatically select an appropriate protocol for the given
314mouse.
315If you entirely omit this option in the command line,
316.Fl t Ar auto
317is assumed.
318Under normal circumstances,
319you need to use this option only if the
320.Nm
321utility is not able to detect the protocol automatically
322(see
323.Sx "Configuring Mouse Daemon" ) .
324.Pp
325Note that if a protocol type is specified with this option, the
326.Fl P
327option above is implied and Plug and Play COM device enumeration
328procedure will be disabled.
329.Pp
330Also note that if your mouse is attached to the PS/2 mouse port, you should
331always choose
332.Ar auto
333or
334.Ar ps/2 ,
335regardless of the brand and model of the mouse.
336Likewise, if your
337mouse is attached to the bus mouse port, choose
338.Ar auto
339or
340.Ar busmouse .
341Serial mouse protocols will not work with these mice.
342.Pp
343For the USB mouse, the protocol must be
344.Ar auto .
345No other protocol will work with the USB mouse.
346.Pp
347Valid types for this option are
348listed below.
349.Pp
350For the serial mouse:
351.Bl -tag -compact -width mousesystemsxxx
352.It Ar microsoft
353Microsoft serial mouse protocol.
354Most 2-button serial mice use this protocol.
355.It Ar intellimouse
356Microsoft IntelliMouse protocol.
357Genius NetMouse,
358.Tn ASCII
359Mie Mouse,
360Logitech MouseMan+ and FirstMouse+ use this protocol too.
361Other mice with a roller/wheel may be compatible with this protocol.
362.It Ar mousesystems
363MouseSystems 5-byte protocol.
3643-button mice may use this protocol.
365.It Ar mmseries
366MM Series mouse protocol.
367.It Ar logitech
368Logitech mouse protocol.
369Note that this is for old Logitech models.
370.Ar mouseman
371or
372.Ar intellimouse
373should be specified for newer models.
374.It Ar mouseman
375Logitech MouseMan and TrackMan protocol.
376Some 3-button mice may be compatible
377with this protocol.
378Note that MouseMan+ and FirstMouse+ use
379.Ar intellimouse
380protocol rather than this one.
381.It Ar glidepoint
382ALPS GlidePoint protocol.
383.It Ar thinkingmouse
384Kensington ThinkingMouse protocol.
385.It Ar mmhitab
386Hitachi tablet protocol.
387.It Ar x10mouseremote
388X10 MouseRemote.
389.It Ar kidspad
390Genius Kidspad and Easypad protocol.
391.It Ar versapad
392Interlink VersaPad protocol.
393.El
394.It Ar gtco_digipad
395GTCO Digipad protocol.
396.Pp
397For the bus and InPort mouse:
398.Bl -tag -compact -width mousesystemsxxx
399.It Ar busmouse
400This is the only protocol type available for
401the bus and InPort mouse and should be specified for any bus mice
402and InPort mice, regardless of the brand.
403.El
404.Pp
405For the PS/2 mouse:
406.Bl -tag -compact -width mousesystemsxxx
407.It Ar ps/2
408This is the only protocol type available for the PS/2 mouse
409and should be specified for any PS/2 mice, regardless of the brand.
410.El
411.Pp
412For the USB mouse,
413.Ar auto
414is the only protocol type available for the USB mouse
415and should be specified for any USB mice, regardless of the brand.
416.It Fl w Ar N
417Make the physical button
418.Ar N
419act as the wheel mode button.
420While this button is pressed, X and Y axis movement is reported to be zero
421and the Y axis movement is mapped to Z axis.
422You may further map the Z axis movement to virtual buttons by the
423.Fl z
424option below.
425.It Fl z Ar target
426Map Z axis (roller/wheel) movement to another axis or to virtual buttons.
427Valid
428.Ar target
429maybe:
430.Bl -tag -compact -width x__
431.It Ar x
432.It Ar y
433X or Y axis movement will be reported when the Z axis movement is detected.
434.It Ar N
435Report down events for the virtual buttons
436.Ar N
437and
438.Ar N+1
439respectively when negative and positive Z axis movement
440is detected.
441There do not need to be physical buttons
442.Ar N
443and
444.Ar N+1 .
445Note that mapping to logical buttons is carried out after mapping
446from the Z axis movement to the virtual buttons is done.
447.It Ar N1 N2
448Report down events for the virtual buttons
449.Ar N1
450and
451.Ar N2
452respectively when negative and positive Z axis movement
453is detected.
454.It Ar N1 N2 N3 N4
455This is useful for the mouse with two wheels of which
456the second wheel is used to generate horizontal scroll action,
457and for the mouse which has a knob or a stick which can detect
458the horizontal force applied by the user.
459.Pp
460The motion of the second wheel will be mapped to the buttons
461.Ar N3 ,
462for the negative direction, and
463.Ar N4 ,
464for the positive direction.
465If the buttons
466.Ar N3
467and
468.Ar N4
469actually exist in this mouse, their actions will not be detected.
470.Pp
471Note that horizontal movement or second roller/wheel movement may not
472always be detected,
473because there appears to be no accepted standard as to how it is encoded.
474.Pp
475Note also that some mice think left is the negative horizontal direction;
476others may think otherwise.
477Moreover, there are some mice whose two wheels are both mounted vertically,
478and the direction of the second vertical wheel does not match the
479first one.
480.El
481.El
482.Ss Configuring Mouse Daemon
483The first thing you need to know is the interface type
484of the mouse you are going to use.
485It can be determined by looking at the connector of the mouse.
486The serial mouse has a D-Sub female 9- or 25-pin connector.
487The bus and InPort mice have either a D-Sub male 9-pin connector
488or a round DIN 9-pin connector.
489The PS/2 mouse is equipped with a small, round DIN 6-pin connector.
490Some mice come with adapters with which the connector can
491be converted to another.
492If you are to use such an adapter,
493remember the connector at the very end of the mouse/adapter pair is
494what matters.
495The USB mouse has a flat rectangular connector.
496.Pp
497The next thing to decide is a port to use for the given interface.
498For the bus, InPort and PS/2 mice, there is little choice:
499the bus and InPort mice always use
500.Pa /dev/mse0 ,
501and the PS/2 mouse is always at
502.Pa /dev/psm0 .
503There may be more than one serial port to which the serial
504mouse can be attached.
505Many people often assign the first, built-in
506serial port
507.Pa /dev/cuad0
508to the mouse.
509You can attach multiple USB mice to your system or to your USB hub.
510They are accessible as
511.Pa /dev/ums0 , /dev/ums1 ,
512and so on.
513.Pp
514You may want to create a symbolic link
515.Pa /dev/mouse
516pointing to the real port to which the mouse is connected, so that you
517can easily distinguish which is your
518.Dq mouse
519port later.
520.Pp
521The next step is to guess the appropriate protocol type for the mouse.
522The
523.Nm
524utility may be able to automatically determine the protocol type.
525Run the
526.Nm
527utility with the
528.Fl i
529option and see what it says.
530If the command can identify
531the protocol type, no further investigation is necessary on your part.
532You may start the daemon without explicitly specifying a protocol type
533(see
534.Sx EXAMPLES ) .
535.Pp
536The command may print
537.Ar sysmouse
538if the mouse driver supports this protocol type.
539.Pp
540Note that the
541.Dv type
542and
543.Dv model
544printed by the
545.Fl i
546option do not necessarily match the product name of the pointing device
547in question, but they may give the name of the device with which it is
548compatible.
549.Pp
550If the
551.Fl i
552option yields nothing, you need to specify a protocol type to the
553.Nm
554utility by the
555.Fl t
556option.
557You have to make a guess and try.
558There is rule of thumb:
559.Pp
560.Bl -enum -compact -width 1.X
561.It
562The bus and InPort mice always use
563.Ar busmouse
564protocol regardless of the brand of the mouse.
565.It
566The
567.Ar ps/2
568protocol should always be specified for the PS/2 mouse
569regardless of the brand of the mouse.
570.It
571You must specify the
572.Ar auto
573protocol for the USB mouse.
574.It
575Most 2-button serial mice support the
576.Ar microsoft
577protocol.
578.It
5793-button serial mice may work with the
580.Ar mousesystems
581protocol.
582If it does not, it may work with the
583.Ar microsoft
584protocol although
585the third (middle) button will not function.
5863-button serial mice may also work with the
587.Ar mouseman
588protocol under which the third button may function as expected.
589.It
5903-button serial mice may have a small switch to choose between
591.Dq MS
592and
593.Dq PC ,
594or
595.Dq 2
596and
597.Dq 3 .
598.Dq MS
599or
600.Dq 2
601usually mean the
602.Ar microsoft
603protocol.
604.Dq PC
605or
606.Dq 3
607will choose the
608.Ar mousesystems
609protocol.
610.It
611If the mouse has a roller or a wheel, it may be compatible with the
612.Ar intellimouse
613protocol.
614.El
615.Pp
616To test if the selected protocol type is correct for the given mouse,
617enable the mouse pointer in the current virtual console,
618.Pp
619.Dl "vidcontrol -m on"
620.Pp
621start the mouse daemon in the foreground mode,
622.Pp
623.Dl "moused -f -p <selected_port> -t <selected_protocol>"
624.Pp
625and see if the mouse pointer travels correctly
626according to the mouse movement.
627Then try cut & paste features by
628clicking the left, right and middle buttons.
629Type ^C to stop
630the command.
631.Ss Multiple Mice
632As many instances of the mouse daemon as the number of mice attached to
633the system may be run simultaneously; one
634instance for each mouse.
635This is useful if the user wants to use the built-in PS/2 pointing device
636of a laptop computer while on the road, but wants to use a serial
637mouse when s/he attaches the system to the docking station in the office.
638Run two mouse daemons and tell the application program
639(such as the
640.Tn "X\ Window System" )
641to use
642.Xr sysmouse 4 ,
643then the application program will always see mouse data from either mouse.
644When the serial mouse is not attached, the corresponding mouse daemon
645will not detect any movement or button state change and the application
646program will only see mouse data coming from the daemon for the
647PS/2 mouse.
648In contrast when both mice are attached and both of them
649are moved at the same time in this configuration,
650the mouse pointer will travel across the screen just as if movement of
651the mice is combined all together.
652.Sh FILES
653.Bl -tag -width /dev/consolectl -compact
654.It Pa /dev/consolectl
655device to control the console
656.It Pa /dev/mse%d
657bus and InPort mouse driver
658.It Pa /dev/psm%d
659PS/2 mouse driver
660.It Pa /dev/sysmouse
661virtualized mouse driver
662.It Pa /dev/ttyv%d
663virtual consoles
664.It Pa /dev/ums%d
665USB mouse driver
666.It Pa /var/run/moused.pid
667process id of the currently running
668.Nm
669utility
670.It Pa /var/run/MouseRemote
671UNIX-domain stream socket for X10 MouseRemote events
672.El
673.Sh EXAMPLES
674.Dl "moused -p /dev/cuad0 -i type"
675.Pp
676Let the
677.Nm
678utility determine the protocol type of the mouse at the serial port
679.Pa /dev/cuad0 .
680If successful, the command will print the type, otherwise it will say
681.Dq Li unknown .
682.Bd -literal -offset indent
683moused -p /dev/cuad0
684vidcontrol -m on
685.Ed
686.Pp
687If the
688.Nm
689utility is able to identify the protocol type of the mouse at the specified
690port automatically, you can start the daemon without the
691.Fl t
692option and enable the mouse pointer in the text console as above.
693.Bd -literal -offset indent
694moused -p /dev/mouse -t microsoft
695vidcontrol -m on
696.Ed
697.Pp
698Start the mouse daemon on the serial port
699.Pa /dev/mouse .
700The protocol type
701.Ar microsoft
702is explicitly specified by the
703.Fl t
704option.
705.Pp
706.Dl "moused -p /dev/mouse -m 1=3 -m 3=1"
707.Pp
708Assign the physical button 3 (right button) to the logical button 1
709(logical left) and the physical button 1 (left) to the logical
710button 3 (logical right).
711This will effectively swap the left and right buttons.
712.Pp
713.Dl "moused -p /dev/mouse -t intellimouse -z 4"
714.Pp
715Report negative Z axis movement (i.e., mouse wheel) as the button 4 pressed
716and positive Z axis movement (i.e., mouse wheel) as the button 5 pressed.
717.Pp
718If you add
719.Pp
720.Dl "ALL ALL = NOPASSWD: /usr/bin/killall -USR1 moused"
721.Pp
722to your
723.Pa /usr/local/etc/sudoers
724file, and bind
725.Pp
726.Dl "killall -USR1 moused"
727.Pp
728to a key in your window manager, you can suspend mouse events on your laptop if
729you keep brushing over the mouse pad while typing.
730.Sh CAVEATS
731Many pad devices behave as if the first (left) button were pressed if
732the user
733.Dq taps
734the surface of the pad.
735In contrast, some ALPS GlidePoint and Interlink VersaPad models
736treat the tapping action
737as fourth button events.
738Use the option
739.Dq Fl m Li 1=4
740for these models
741to obtain the same effect as the other pad devices.
742.Pp
743Cut and paste functions in the virtual console assume that there
744are three buttons on the mouse.
745The logical button 1 (logical left) selects a region of text in the
746console and copies it to the cut buffer.
747The logical button 3 (logical right) extends the selected region.
748The logical button 2 (logical middle) pastes the selected text
749at the text cursor position.
750If the mouse has only two buttons, the middle, `paste' button
751is not available.
752To obtain the paste function, use the
753.Fl 3
754option to emulate the middle button, or use the
755.Fl m
756option to assign the physical right button to the logical middle button:
757.Dq Fl m Li 2=3 .
758.Sh SEE ALSO
759.Xr kill 1 ,
760.Xr vidcontrol 1 ,
761.Xr keyboard 4 ,
762.Xr mse 4 ,
763.Xr psm 4 ,
764.Xr screen 4 ,
765.Xr sysmouse 4 ,
766.Xr ums 4
767.Sh STANDARDS
768The
769.Nm
770utility partially supports
771.Dq Plug and Play External COM Device Specification
772in order to support PnP serial mice.
773However, due to various degrees of conformance to the specification by
774existing serial mice, it does not strictly follow the version 1.0 of the
775standard.
776Even with this less strict approach,
777it may not always determine an appropriate protocol type
778for the given serial mouse.
779.Sh HISTORY
780The
781.Nm
782utility first appeared in
783.Fx 2.2 .
784.Sh AUTHORS
785.An -nosplit
786The
787.Nm
788utility was written by
789.An Michael Smith Aq msmith@FreeBSD.org .
790This manual page was written by
791.An Mike Pritchard Aq mpp@FreeBSD.org .
792The command and manual page have since been updated by
793.An Kazutaka Yokota Aq yokota@FreeBSD.org .
794