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.\" $Id: moused.8,v 1.17 1998/11/20 11:19:20 yokota Exp $ 32.\" 33.Dd December 3, 1997 34.Dt MOUSED 8 35.Os FreeBSD 36.Sh NAME 37.Nm moused 38.Nd pass mouse data to the console driver 39.Sh SYNOPSIS 40.Nm 41.Op Fl 3DPRcdfs 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 C Ar threshold 47.Op Fl m Ar N=M 48.Op Fl w Ar N 49.Op Fl z Ar target 50.Op Fl t Ar mousetype 51.Fl p Ar port 52.Pp 53.Nm 54.Op Fl Pd 55.Fl p Ar port 56.Fl i Ar info 57.Sh DESCRIPTION 58The mouse daemon 59.Nm 60and the console driver work together to support 61mouse operation in the text console and user programs. 62They virtualize the mouse and provide user programs with mouse data 63in the standard format 64.Pq see Xr sysmouse 4 . 65.Pp 66The mouse daemon listens to the specified port for mouse data, 67interprets and then passes it via ioctls to the console driver. 68The mouse daemon 69reports translation movement, button press/release 70events and movement of the roller or the wheel if available. 71The roller/wheel movement is reported as ``Z'' axis movement. 72.Pp 73The console driver will display the mouse pointer on the screen 74and provide cut and paste functions if the mouse pointer is enabled 75in the virtual console via 76.Xr vidcontrol 4 . 77If 78.Xr sysmouse 4 79is opened by the user program, the console driver also passes the mouse 80data to the device so that the user program will see it. 81.Pp 82If the mouse daemon receives the signal 83.Dv SIGHUP , 84it will reopen the mouse port and reinitializes itself. Useful if 85the mouse is attached/detached while the system is suspended. 86.Pp 87The following options are available: 88.Bl -tag -width indent 89.It Fl 3 90Emulate the third (middle) button for 2-button mice. It is emulated 91by pressing the left and right physical buttons simultaneously. 92.It Fl C Ar threshold 93Set double click speed as the maximum interval in msec between button clicks. 94Without this option, the default value of 500 msec will be assumed. 95This option will have effect only on the cut and paste operations 96in the text mode console. The user program which is reading mouse data 97via 98.Xr sysmouse 4 99won't be affected. 100.It Fl D 101Lower DTR on the serial port. 102This option is valid only if 103.Ar mousesystems 104is selected as the protocol type. 105The DTR line may need to be dropped for a 3-button mouse 106to operate in the 107.Ar mousesystems 108mode. 109.It Fl F Ar rate 110Set the report rate (reports/sec) of the device if supported. 111.It Fl I Ar file 112Write the process id of the 113.Nm 114daemon in the specified file. 115Without this option, the process id will be stored in 116.Pa /var/run/moused.pid . 117.It Fl P 118Do not start the Plug and Play COM device enumeration procedure 119when identifying the serial mouse. 120If this option is given together with the 121.Fl i 122option, the 123.Nm 124command won't be able to print useful information for the serial mouse. 125.It Fl R 126Lower RTS on the serial port. 127This option is valid only if 128.Ar mousesystems 129is selected as the protocol type by the 130.Fl t 131option below. It is often used with the 132.Fl D 133option above. Both RTS and DTR lines may need to be dropped for 134a 3-button mouse to operate in the 135.Ar mousesystems 136mode. 137.It Fl S Ar baudrate 138Select the baudrate for the serial port (1200 to 9600). 139Not all serial mice support this option. 140.It Fl c 141Some mice report middle button down events 142as if the left and right buttons are pressed. This option handles this. 143.It Fl d 144Enable debugging messages. 145.It Fl f 146Do not become a daemon and instead run as a foreground process. 147Useful for testing and debugging. 148.It Fl i Ar info 149Print specified information and quit. Available pieces of 150information are: 151.Pp 152.Bl -tag -compact -width modelxxx 153.It Ar port 154Port (device file) name, i.e. 155.Pa /dev/cuaa0 , 156.Pa /dev/mse0 157and 158.Pa /dev/psm0 . 159.It Ar if 160Interface type: serial, bus, inport or ps/2. 161.It Ar type 162Protocol type. It is one of the types listed under the 163.Fl t 164option below or 165.Ar sysmouse 166if the driver supports the 167.Ar sysmouse 168data format standard. 169.It Ar model 170Mouse model. The 171.Nm 172command may not always be able to identify the model. 173.It Ar all 174All of the above items. Print port, interface, type and model in this order 175in one line. 176.El 177.Pp 178If the 179.Nm 180command cannot determine the requested information, it prints ``unknown'' 181or ``generic''. 182.It Fl m Ar N=M 183Assign the physical button 184.Ar M 185to the logical button 186.Ar N. 187You may specify as many instances of this option as you like. 188More than one physical button may be assigned to a logical button at the 189same time. In this case the logical button will be down, 190if either of the assigned physical buttons is held down. 191Do not put space around `='. 192.It Fl p Ar port 193Use 194.Ar port 195to communicate with the mouse. 196.It Fl r Ar resolution 197Set the resolution of the device; in Dots Per Inch, or 198.Ar low , 199.Ar medium-low , 200.Ar medium-high 201or 202.Ar high . 203This option may not be supported by all the device. 204.It Fl s 205Select a baudrate of 9600 for the serial line. 206Not all serial mice support this option. 207.It Fl t Ar type 208Specify the protocol type of the mouse attached to the port. 209You may explicitly specify a type listed below, or use 210.Ar auto 211to let the 212.Nm 213command to automatically select an appropriate protocol for the given 214mouse. 215If you entirely ommit this options in the command line, 216.Fl t Ar auto 217is assumed. 218Under normal circumstances, 219you need to use this option only if the 220.Nm 221command is not able to detect the protocol automatically 222.Pq see the Sx Configuring Mouse Daemon . 223.Pp 224Also note that if a protocol type is specified with this option, the 225.Fl P 226option above is implied and Plug and Play COM device enumeration 227procedure will be disabled. 228.Pp 229Valid types for this option are 230listed below. 231.Pp 232For the serial mouse: 233.Bl -tag -compact -width mousesystemsxxx 234.It Ar microsoft 235Microsoft serial mouse protocol. Most 2-button serial mice use this protocol. 236.It Ar intellimouse 237Microsoft IntelliMouse protocol. Genius NetMouse, ASCII Mie Mouse, 238Logitech MouseMan+ and FirstMouse+ use this protocol too. 239Other mice with a roller/wheel may be compatible with this protocol. 240.It Ar mousesystems 241MouseSystems 5-byte protocol. 3-button mice may use this protocol. 242.It Ar mmseries 243MM Series mouse protocol. 244.It Ar logitech 245Logitech mouse protocol. Note that this is for old Logitech models. 246.Ar mouseman 247or 248.Ar intellimouse 249should be specified for newer models. 250.It Ar mouseman 251Logitech MouseMan and TrackMan protocol. Some 3-button mice may be compatible 252with this protocol. Note that MouseMan+ and FirstMouse+ use 253.Ar intellimouse 254protocol rather than this one. 255.It Ar glidepoint 256ALPS GlidePoint protocol. 257.It Ar thinkingmouse 258Kensington ThinkingMouse protocol. 259.It Ar mmhitab 260Hitachi tablet protocol. 261.It Ar x10mouseremote 262X10 MouseRemote. 263.It Ar kidspad 264Genius Kidspad and Easypad protocol. 265.El 266.Pp 267For the bus and InPort mouse: 268.Bl -tag -compact -width mousesystemsxxx 269.It Ar busmouse 270This is the only protocol type available for 271the bus and InPort mouse and should be specified for any bus mice 272and InPort mice, regardless of the brand. 273.El 274.Pp 275For the PS/2 mouse: 276.Bl -tag -compact -width mousesystemsxxx 277.It Ar ps/2 278This is the only protocol type available for the PS/2 mouse 279and should be specified for any PS/2 mice, regardless of the brand. 280.El 281.It Fl w Ar N 282Make the physical button 283.Ar N 284act as the wheel mode button. 285While this button is pressed, X and Y axis movement is reported to be zero 286and the Y axis movement is mapped to Z axis. 287You may further map the Z axis movement to virtual buttons by the 288.Fl z 289option below. 290.It Fl z Ar target 291Map Z axis (roller/wheel) movement to another axis or to virtual buttons. 292Valid 293.Ar target 294maybe: 295.Bl -tag -compact -width x__ 296.It Ar x 297.It Ar y 298X or Y axis movement will be reported when the Z axis movement is detected. 299.It Ar N 300Report the virtual buttons 301.Ar N 302and 303.Ar N+1 304down events respectively when negative and positive Z axis movement 305is detected. There doesn't need to be physical buttons 306.Ar N 307and 308.Ar N+1 . 309Note that mapping to logical buttons is carried out after mapping 310from the Z axis movement to the virtual buttons is done. 311.El 312.El 313.Ss Configuring Mouse Daemon 314The first thing you need to know is the interface type 315of the mouse you are going to use. 316It can be determined by looking at the connector of the mouse. 317The serial mouse has a D-Sub female 9- or 25-pin connector. 318The bus and InPort mice have either a D-Sub male 9-pin connector 319or a round DIN 9-pin connector. 320The PS/2 mouse is equipped with a small, round DIN 6-pin connector. 321Some mice come with adapters with which the connector can 322be converted to another. If you are to use such an adapter, 323remember the connector at the very end of the mouse/adapter pair is 324what matters. 325.Pp 326The next thing to decide is a port to use for the given interface. 327For the bus, InPort and PS/2 mice, there is little choice: 328the bus and InPort mice always use 329.Pa /dev/mse0 , 330and the PS/2 mouse is always at 331.Pa /dev/psm0 . 332There may be more than one serial port to which the serial 333mouse can be attached. Many people often assign the first, built-in 334serial port 335.Pa /dev/cuaa0 336to the mouse. 337You may want to create a symbolic link 338.Pa /dev/mouse 339pointing to the real port to which the mouse is connected, so that you 340can easily distinguish which is your ``mouse'' port later. 341.Pp 342The next step is to guess the appropriate protocol type for the mouse. 343The 344.Nm 345command may be able to automatically determine the protocol type. 346Run the 347.Nm 348command with the 349.Fl i 350option and see what it says. If the command can identify 351the protocol type, no further investigation is necessary on your part. 352You may start the daemon without explicitly specifying a protocol type 353.Pq see Sx EXAMPLE . 354.Pp 355The command may print 356.Ar sysmouse 357if the mouse driver supports this protocol type. 358.Pp 359Note that the 360.Dv type 361and 362.Dv model 363printed by the 364.Fl i 365option do not necessarily match the product name of the pointing device 366in question, but they may give the name of the device with which it is 367compatible. 368.Pp 369If the 370.Fl i 371option yields nothing, you need to specify a protocol type to the 372.Nm 373command by the 374.Fl t 375option. You have to make a guess and try. 376There is rule of thumb: 377.Pp 378.Bl -tag -compact -width 1.X 379.It 1. 380The bus and InPort mice always use 381.Ar busmouse 382protocol regardless of the brand of the mouse. 383.It 2. 384The 385.Ar ps/2 386protocol should always be specified for the PS/2 mouse 387regardless of the brand of the mouse. 388.It 3. 389Most 2-button serial mice support the 390.Ar microsoft 391protocol. 392.It 4. 3933-button serial mice may work with the 394.Ar mousesystems 395protocol. If it doesn't, it may work with the 396.Ar microsoft 397protocol although 398the third (middle) button won't function. 3993-button serial mice may also work with the 400.Ar mouseman 401protocol under which the third button may function as expected. 402.It 5. 4033-button serial mice may have a small switch to choose between ``MS'' 404and ``PC'', or ``2'' and ``3''. 405``MS'' or ``2'' usually mean the 406.Ar microsoft 407protocol. 408``PC'' or ``3'' will choose the 409.Ar mousesystems 410protocol. 411.It 6. 412If the mouse has a roller or a wheel, it may be compatible with the 413.Ar intellimouse 414protocol. 415.El 416.Pp 417To test if the selected protocol type is correct for the given mouse, 418enable the mouse pointer in the current virtual console, 419.Pp 420.Dl vidcontrol -m on 421.Pp 422start the mouse daemon in the foreground mode, 423.Pp 424.Dl moused -f -p Ar _selected_port_ -t Ar _selected_protocol_ 425.Pp 426and see if the mouse pointer travels correctly 427according to the mouse movement. Then try cut & paste features by 428clicking the left, right and middle buttons. Type ^C to stop 429the command. 430.Ss Multiple Mice 431As many instances of the mouse daemon as the number of mice attached to 432the system may be run simultaneously; one 433instance for each mouse. 434This is useful if the user wants to use the built-in PS/2 pointing device 435of a laptop computer while on the road, but wants to use a serial 436mouse when s/he attaches the system to the docking station in the office. 437Run two mouse daemons and tell the application program 438.Pq such as the X Window System 439to use 440.Xr sysmouse , 441then the application program will always see mouse data from either mice. 442When the serial mouse is not attached, the corresponding mouse daemon 443won't detect any movement or button state change and the application 444program will only see mouse data coming from the daemon for the 445PS/2 mouse. In contrast when both mice are attached and both of them 446are moved at the same time in this configuration, 447the mouse pointer will travel across the screen just as if movement of 448the mice is combined all together. 449.Sh FILES 450.Bl -tag -width /dev/consolectl -compact 451.It Pa /dev/consolectl 452device to control the console 453.It Pa /dev/mse%d 454bus and InPort mouse driver 455.It Pa /dev/psm%d 456PS/2 mouse driver 457.It Pa /dev/sysmouse 458virtualized mouse driver 459.It Pa /dev/ttyv%d 460virtual consoles 461.It Pa /var/run/moused.pid 462process id of the currently running 463.Nm 464daemon 465.It Pa /var/run/MouseRemote 466UNIX-domain stream socket for X10 MouseRemote events 467.El 468.Sh EXAMPLE 469.Pp 470.Dl moused -p /dev/cuaa0 -i type 471.Pp 472Let the 473.Nm 474command determine the protocol type of the mouse at the serial port 475.Pa /dev/cuaa0 . 476If successful, the command will print the type, otherwise it will say 477``unknown''. 478.Pp 479.Dl moused -p /dev/cuaa0 480.Dl vidcontrol -m on 481.Pp 482If the 483.Nm 484command is able to identify the protocol type of the mouse at the specified 485port automatically, you can start the daemon without the 486.Fl t 487option and enable the mouse pointer in the text console as above. 488.Pp 489.Dl moused -p /dev/mouse -t microsoft 490.Dl vidcontrol -m on 491.Pp 492Start the mouse daemon on the serial port 493.Pa /dev/mouse . 494The protocol type 495.Ar microsoft 496is explicitly specified by the 497.Fl t 498option. 499.Pp 500.Dl moused -p /dev/mouse -m 1=3 -m 3=1 501.Pp 502Assign the physical button 3 (right button) to the logical button 1 503(logical left) and the physical button 1 (left) to the logical 504button 3 (logical right). 505This will effectively swap the left and right buttons. 506.Pp 507.Dl moused -p /dev/mouse -t intellimouse -z 4 508.Pp 509Report negative Z axis (roller) movement as the button 4 pressed 510and positive Z axis movement as the button 5 pressed. 511.Sh CAVEATS 512The 513.Nm 514command does not currently work with the alternative console driver 515.Xr pcvt 4 . 516.Pp 517Many pad devices behave as if the first (left) button were pressed if 518the user `taps' the surface of the pad. 519In contrast, some ALPS GlidePoint pad models treat the tapping action 520as fourth button events. Use the option ``-m 1=4'' for these models 521to obtain the same effect as the other pad devices. 522.Pp 523Cut and paste functions in the virtual console assume that there 524are three buttons on the mouse. 525The logical button 1 (logical left) selects a region of text in the 526console and copies it to the cut buffer. 527The logical button 3 (logical right) extends the selected region. 528The logical button 2 (logical middle) pastes the selected text 529at the text cursor position. 530If the mouse has only two buttons, the middle, `paste' button 531is not available. 532To obtain the paste function, use the 533.Fl 3 534option to emulate the middle button, or use the 535.Fl m 536option to assign the physical right button to the logical middle button: 537``-m 2=3''. 538.Sh SEE ALSO 539.Xr kill 1 , 540.Xr vidcontrol 1 , 541.Xr keyboard 4 , 542.Xr mse 4 , 543.Xr pcvt 4 , 544.Xr psm 4 , 545.Xr screen 4 , 546.Xr sysmouse 4 547.Sh STANDARD 548The 549.Nm 550command partially supports ``Plag and Play External COM Device Specification'' 551in order to support PnP serial mice. 552However, due to various degrees of conformance to the specification by 553existing serial mice, it does not strictly follow the version 1.0 of the 554standard. Even with this less strict approach, 555it may not always determine an appropriate protocol type 556for the given serial mouse. 557.Sh AUTHORS 558The 559.Nm 560command was written by 561.An Michael Smith Aq msmith@FreeBSD.org . 562This manual page was written by 563.An Mike Pritchard Aq mpp@FreeBSD.org . 564The command and manual page have since been updated by 565.An Kazutaka Yokota Aq yokota@FreeBSD.org . 566.Sh HISTORY 567The 568.Nm 569command first appeared in 570.Fx 2.2 . 571