home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / DOC / HOWTO / OTHER_FO / SGML / BUSMOUSE.GZ / Busmouse-HOWTO.sgml
Encoding:
SGML Document  |  1996-02-11  |  18.4 KB  |  548 lines

  1. <!-- $Id: busmouse.tutorial.sgml,v 1.3 1994/08/01 13:25:28 mike Exp mike $ -->
  2. <!doctype linuxdoc system>
  3.  
  4. <article>
  5.  
  6. <title>The Linux Busmouse Howto
  7. <author>Mike Battersby, <tt/mib@deakin.edu.au/
  8. <date>v1.2, 2 August 1994
  9.  
  10. <toc>
  11.  
  12. <sect>Introduction.
  13. <p>
  14. This document is a guide to getting your busmouse working with
  15. Linux.  I've written this in the hope that the ten people a week
  16. who post ``how do I get my busmouse to work'' questions in the
  17. comp.os.linux.* newsgroups will read it first, though I won't be
  18. holding my breath.
  19.  
  20. <p>
  21. Busmouse support has been in the kernel for as long as I can
  22. remember, and hasn't changed in a long time, so this document
  23. should be relevant to any version of Linux you're likely to have.
  24.  
  25. <sect1>Disclaimer.
  26. <p>
  27. The information in this document is correct to the best of my
  28. knowledge, but there's a always a chance I've made some mistakes,
  29. so don't follow everything too blindly, especially if it seems wrong.
  30. Nothing here should have a detrimental effect on your computer, but
  31. just in case I take no responsibility for any damages incurred from
  32. the use of the information contained herein.
  33.  
  34. <tt>Microsoft(R) is a Trademark of Microsoft Corporation.</tt>
  35.  
  36. [ trademark notices for other mice, anyone? --- Mike ]
  37.  
  38. <sect1>Feedback.
  39. <p>
  40. If you find any mistakes in this document, have any comments about
  41. its contents or an update or addition, send them to me at the
  42. address listed at the top of this howto.
  43.  
  44. <sect1>Acknowledgements.
  45. <p>
  46. This howto has been, in the spirit of Linux, a community effort.
  47. Many thanks go to Johan Myreen for the sections on the PS/2 mice,
  48. Robert T. Harris for help on the ATI-XL sections and Reuben Sumner
  49. for miscellaneous info and constructive criticism.
  50.  
  51. <p>
  52. Thanks also to the multitudes of people who have sent me mouse
  53. information, fixes or words of encouragement.
  54.  
  55. <sect>Determining your mouse type.
  56. <p>
  57. There are two separate but important characteristics you will need
  58. to know about your mouse before you go on: what interface it uses
  59. and what protocol it uses.  The interface is the hardware aspect
  60. of the mouse, taking into account things like which i/o ports it
  61. uses and how to check if it is installed.  This is the part which
  62. the kernel is concerned with, so that it knows how to read data
  63. from the mouse.  The protocol is the software aspect of the mouse.
  64. Applications need to know the protocol to interpret the raw mouse
  65. data they receive from the kernel.
  66.  
  67. <sect1>Mouse interfaces.
  68. <p>
  69. The Linux kernel currently supports four different kinds of bus
  70. mouse interface : Inport (Microsoft), Logitech, PS/2 and ATI-XL.
  71. The majority of bus mice have Inport interfaces, although lately
  72. PS/2 interfaces are becoming more popular.  There is no surefire
  73. way of determining your mouse interface --- mouse developers generally
  74. do their own thing when it comes to standards.  The following
  75. sections may help, otherwise you'll just have to make it up.
  76.  
  77. <sect1>Inport mice.
  78. <p>
  79. This includes most of the old style Microsoft mice which are
  80. shaped like a bar of dove soap.  U.S. users who have purchased
  81. Gateway computers should note that the mice that come with them
  82. are not Inport mice but PS/2 mice (see below).  Inport mice
  83. generally connect to an interface card which plugs into the bus
  84. on your motherboard.  If the plug which connects your mouse cord
  85. to the interface card is round, has 9 pins, and a notch in one
  86. side you likely have an Inport mouse.
  87.  
  88. <p>
  89. As far as I can tell, apart from the ATI-XL, all ATI mice
  90. (such as those on the Graphics Ultra cards) are plain Inport
  91. mice.
  92.  
  93. <sect1>Logitech mice.
  94. <p>
  95. Logitech mice in general appear almost exactly the same as Inport
  96. mice.  They too connect to an interface card via a 9 pin mini-din
  97. connector.  Hopefully, it will have come in a Logitech box or
  98. have ``Logitech'' printed on the connector card so that you can
  99. tell it actually is a Logitech mouse.
  100.  
  101. <p>
  102. There are also some truly ancient Microsoft mice (ones with
  103. ball bearings on the bottom as well as the mouse ball and
  104. a DB9 connector) which also use the Logitech protocol.
  105.  
  106. <sect1>PS/2 mice.
  107. <p>
  108. PS/2 mice aren't really bus mice at all.  The PS/2 mouse
  109. interface is not on an expansion card, the mouse is connected
  110. to the PS/2 Auxiliary Device port on the keyboard controller.
  111. A PS/2 mouse port uses a 6-pin mini DIN connector, similar to
  112. the keyboard connector.  Many laptops also use this kind of
  113. interface to their trackballs --- except for the connector, of
  114. course.
  115.  
  116. <sect1>ATI-XL mice.
  117. <p>
  118. ATI-XL mice are a variant of Inport mice, with some slight
  119. differences.  They come on the ATI-XL combined video adaptor/mouse
  120. card.  Unless you know you have an ATI-XL card (and thus an ATI-XL
  121. mouse), you probably don't have one of these. It is possible for
  122. ATI-XL mice to use either the ATI-XL or Inport kernel drivers,
  123. although the ATI-XL driver should give better results.
  124.  
  125. <sect1>Mouse protocols.
  126. <p>
  127. The PC world is full of different and conflicting mouse protocols.
  128. Fortunately, the choice for bus mice is considerable smaller than
  129. that for serial mice.  Most Inport, Logitech and ATI-XL mice use
  130. the ``BusMouse'' protocol, although there are some ancient Logitech
  131. mice which use the ``MouseSystems'' protocol, and some even older
  132. Microsoft mice which use the Logitech protocol.  PS/2 mice use
  133. the ``PS/2'' protocol.
  134.  
  135. <sect>Getting your mouse working.
  136. <p>
  137. Once you have figured out your mouse interface and protocol types,
  138. you're ready to proceed.
  139.  
  140. <sect1><label id="interrupt">Setting the mouse interrupt.
  141. <p>
  142. Now, you'll need to know which interrupt number your mouse is
  143. using, and make sure it doesn't conflict with any other
  144. peripherals you have installed.
  145.  
  146. <p>
  147. You should make sure that your mouse is not trying to use the same
  148. interrupt as any of your other devices --- it is not possible for
  149. the mouse to share an interrupt under Linux, even though it may
  150. work fine under other operating systems.  Check the documentation
  151. for all your peripherals to see which interrupt they use.  In most
  152. cases IRQ4 is used for the first serial port (<tt>/dev/ttyS0</tt>),
  153. IRQ3 for the second (<tt>/dev/ttyS1</tt>) (these are assuming you
  154. actually have such devices --- if you don't you can happily use
  155. their IRQ's), and IRQ5 for some SCSI adaptors.
  156.  
  157. <p>
  158. Note that for ATI-XL, Inport and Logitech mice the kernel
  159. default is to use IRQ5, so if you are stuck with a pre-compiled
  160. kernel (eg, CD-ROM users) you will have to use that.
  161.  
  162. <sect1>Inport and Logitech mice.
  163. <p>
  164. If you open up your computer's case and look at the card which
  165. your mouse plugs into, you should notice a block of jumpers
  166. on the card (hopefully labeled ``INTERRUPT'') with positions
  167. for interrupt (otherwise known as IRQ) numbers 2,3,4 and 5.
  168. To change the interrupt simply move the jumper from its current
  169. position onto the correct pair of pins.
  170.  
  171. <tscreen>
  172. <verb>
  173. ***************************************************
  174. ***     MAKE SURE YOUR COMPUTER IS TURNED OFF   ***
  175. ***     BEFORE CHANGING THE JUMPERS AROUND.     ***
  176. ***************************************************
  177. </verb>
  178. </tscreen>
  179.  
  180.  
  181. <sect1>ATI-XL mice.
  182. <p>
  183. ATI-XL busmice have a software selectable IRQ - you should have
  184. received with your mouse a MS-DOS program (<tt>VSETUP.EXE</tt>) to set the
  185. IRQ.  In order to do so you must (temporarily) boot MS-DOS and run
  186. this program.  Note that the VSETUP program takes an optional
  187. parameter ``/70'' to increase the vertical refresh rate (which results
  188. in less flicker).  The VSETUP program also allows you to select
  189. either the primary or secondary mouse address - you should set
  190. this to the primary address or the kernel will not be able to
  191. detect your mouse.
  192.  
  193. <p>
  194. Once VSETUP has been run you must perform a hard reset for the new
  195. configuration to take effect.
  196.  
  197.  
  198. <sect1>PS/2 mice.
  199. <p>
  200. The PS/2 mouse always uses IRQ12 -- there is no way of changing
  201. this (except with a soldering gun.)  In the rare case that some
  202. other device is using IRQ12, you'll have to rejumper that
  203. peripheral to use another IRQ number.
  204.  
  205. <sect1>Compiling the kernel.
  206. <p>
  207. In order for your busmouse to operate correctly you will need
  208. to recompile your kernel with the busmouse support compiled in.
  209.  
  210. <p>
  211. Change to your kernel directory (here assumed to be (<tt>/usr/src/linux</tt>)
  212. and do a
  213. <tscreen>
  214. <verb>
  215. make config
  216. </verb>
  217. </tscreen>
  218.  
  219. <p>
  220. If you are unsure as to your mouse type, the first time you
  221. recompile the kernel you may wish to enable all of the busmouse
  222. options in the hope that the kernel will autodetect your mouse
  223. properly.  People have mixed sucess with this: it doesn't
  224. always work, but on the other hand it might save you any
  225. further compiles.
  226.  
  227. <sect2>Inport, Logitech and ATI-XL mice.
  228. <p>
  229. Answer ``y'' to the question pertaining to your type of busmouse
  230. interface and ``n'' to all the other busmouse questions.  For
  231. example, if you have an Inport mouse you should answer ``y'' to
  232. <tscreen>
  233. Microsoft busmouse support
  234. </tscreen>
  235. and ``n'' to all other busmouse questions.  Answer the non-mouse
  236. related questions as you usually would.
  237.  
  238. <p>
  239. If you have a Logitech or Inport mouse, edit the file
  240. <tt>/usr/src/linux/include/linux/busmouse.h</tt> and change the line
  241. which says
  242. <tscreen>
  243. <tt>#define MOUSE_IRQ               5</tt>
  244. </tscreen>
  245. to reflect the interrupt number for your mouse (see section
  246. <ref id="interrupt" name="setting the mouse interrupt">
  247. for details on finding your interrupt number).
  248.  
  249. <p>
  250. If you have an ATI-XL mouse, edit the file
  251. <tt>/usr/src/linux/drivers/char/atixlmouse.c</tt> and change the line
  252. which says
  253. <tscreen>
  254. #define ATIXL_MOUSE_IRQ         5
  255. </tscreen>
  256. to reflect your mouse's interrupt number.
  257.  
  258. <p>
  259. Due to the 
  260. vagaries of the PC architecture, if you have set your mouse to
  261. use interrupt 2, you must set the #define to use interrupt 9.
  262.  
  263. <p>
  264. Examples
  265.  
  266. <p>
  267. For a mouse on interrupt 3, you should change the line to read
  268. <tscreen>
  269. #define MOUSE_IRQ               3
  270. </tscreen>
  271.  
  272. <p>
  273. For a mouse on interrupt 2, you should change the line to read
  274. <tscreen>
  275. #define MOUSE_IRQ               9
  276. </tscreen>
  277.  
  278. <p>
  279. Next, compile your kernel as per the instructions which come
  280. with it, and boot from the new kernel.  You should now have
  281. the busmouse support correctly compiled in.
  282.  
  283. <sect2>PS/2 mice.
  284. <p>
  285. To compile the kernel with PS/2 mouse support answer ``y'' to
  286. the question.
  287. <tscreen>
  288. PS/2 mouse (aka &dquot;auxiliary device&dquot;) support
  289. </tscreen>
  290.  
  291. <p>
  292. The PS/2 mouse driver actually supports two kinds of devices:
  293. the standard PS/2 Auxiliary Device controller and a special
  294. PS/2 mouse interface chip from Chips & Technologies which is
  295. used in the Texas Instruments Travelmate and Gateway Nomad
  296. laptops.  To compile in support for the trackballs on these
  297. computers, answer ``y'' to the
  298. <tscreen>
  299. C&T 82C710 mouse port support (as on TI Travelmate)
  300. </tscreen>
  301. question.  Note that you will still have to answer ``y'' to the
  302. question about the standard PS/2 driver to even get a chance to
  303. answer this question, since the 82C710 driver is actually an
  304. add-on to the standard PS/2 mouse driver.
  305.  
  306. <p>
  307. When configured both for a standard PS/2 mouse device and the
  308. 82C710 device, the driver first tries to locate a 82C710 chip
  309. at boot time.  Failing this, the standard driver is used
  310. instead, so using a kernel configured for both types of
  311. interface on a machine with a standard PS/2 mouse port should
  312. work too.  However, there has been one report of a falsely
  313. detected 82C710 chip, so to be on the safe side do not
  314. configure in support for the 82C710 if you don't need it.
  315.  
  316. <p>
  317. Compile your new kernel and boot from it as you normally would.
  318.  
  319. <sect2>Selection.
  320. <p>
  321. Regardless of your mouse type you should answer ``y'' to the
  322. <tscreen>
  323. Selection (cut and paste for virtual consoles)
  324. </tscreen>
  325. question if you wish to run the selection program (see section
  326. <ref id="selection" name="selection"> for more details).
  327.  
  328.  
  329. <sect1>The mouse devices.
  330. <p>
  331. Mice under Linux are accessed via the devices in the <tt>/dev</tt>
  332. directory. The following table gives a list of interface types
  333. and which device you should use.
  334.  
  335. <tscreen>
  336. <verb>
  337. INTERFACE        DEVICE        MAJOR    MINOR
  338. ---------------------------------------------
  339. Logitech        /dev/logibm      10       0
  340. PS/2            /dev/psaux       10       1
  341. Inport          /dev/inportbm    10       2
  342. ATI-XL          /dev/atibm       10       3
  343.  
  344.     Table 1.  Mouse devices.
  345. </verb>
  346. </tscreen>
  347.  
  348. <descrip>
  349. <tag/Note:/ If you are using your ATI-XL mouse with the Inport driver,
  350. you should use the <tt>/dev/inportbm</tt> device, not the <tt>/dev/atibm</tt>
  351. device.
  352. </descrip>
  353.  
  354. <p>
  355. The major and minor entries are the device numbers for that
  356. particular device.  
  357.  
  358. <p>
  359. If you find that you do not have these devices, you should
  360. create them first.  To do so, execute the following as root.
  361. <tscreen>
  362. <verb>
  363. mknod /dev/logibm   c 10 0
  364. mknod /dev/psaux    c 10 1
  365. mknod /dev/inportbm c 10 2
  366. mknod /dev/atibm    c 10 3
  367. </verb>
  368. </tscreen>
  369.  
  370. <descrip>
  371. <tag/Note:/ Some time in the (progressively less) recent history of
  372. Linux the names for 
  373. the busmouse devices have changed.  The following device names
  374. have been superceded by those above and should be removed:
  375. <tt>bmousems, bmouseps2, bmouseatixl, bmouselogitech</tt>.
  376. </descrip>
  377.  
  378. <p>
  379. Many people like to create a symbolic link from their mouse
  380. device to <tt>/dev/mouse</tt> so that they don't have to remember which
  381. device they need to be using.  If you have one of the current
  382. Linux distributions you will almost certainly find that you have
  383. such a link.  If you have such a link, or create one, you should
  384. make sure that it is pointing to the correct device for your
  385. mouse.
  386.  
  387.  
  388. <sect1>Testing your mouse.
  389. <p>
  390. Get the file <tt>selection-1.6.tar.gz</tt> from your local Linux ftp
  391. site and compile the program ``test-mouse'' within it, according
  392. to the instructions (all you should need to do is type
  393. ``make~test-mouse'').  Run the program like this
  394. <tscreen>
  395. test-mouse -t <mouse arg> -m <mouse dev>
  396. </tscreen>
  397. where <mouse arg> is ``bm'' (without the quotes) if you use the
  398. BusMouse protocol, or ``ps2'' if you use the PS/2 protocol, and
  399. <mouse dev> is your mouse device name from table 1.
  400.  
  401. <p>
  402. If your mouse is working correctly, you should be able to
  403. paint on the screen by holding down the right or left mouse
  404. button and dragging the mouse.  Push the left and right mouse
  405. buttons simultaneously to exit the program.
  406.  
  407. <sect>Using your mouse.
  408.  
  409. <sect1><label id="selection">Selection.
  410. <p>
  411. Selection is a program which allows you to do mouse based 'cut-
  412. and-paste' between virtual consoles under Linux.  Selection can
  413. be found as the file <tt>selection-1.6.tar.gz</tt> at your friendly
  414. Linux FTP site (such as <tt>sunsite.unc.edu</tt>), and contains instructions
  415. for getting it compiled.  Some Linux distributions, such as 
  416. Slackware, come with a precompiled selection binary.
  417.  
  418. <p>
  419. When invoking selection, use the -t switch to selection to indicate
  420. which protocol your mouse is using and the -m option to indicate
  421. which mouse device you are using.  The default is to use the
  422. <tt>/dev/mouse</tt> device, so you can omit the -m option if you have the
  423. appropriate symbolic link. For example, if you use the BusMouse
  424. protocol, selection should be run like this:
  425. <tscreen>
  426. selection -t bm
  427. </tscreen>
  428. or if you use the PS/2 protocol:
  429. <tscreen>
  430. selection -t ps2
  431. </tscreen>
  432.  
  433. <p>
  434. You should then be able to cut and paste text between virtual
  435. consoles using the mouse buttons.  Read the documentation with
  436. selection, or do a ``man selection'' for more information on how
  437. to operate it.
  438.  
  439. <P>
  440. There have been a couple of reports of selection not working
  441. correctly with certain laptop trackballs (under the PS/2
  442. interface).  Replacing the line
  443. <tscreen>
  444. <verb>
  445. { 0xcc,   0x00,   0x00,   0x00,   3       }   /* PS/2 */
  446. </verb>
  447. </tscreen>
  448. in selection's mouse.c file with the line
  449. <tscreen>
  450. <verb>
  451. { 0xcc,   0x08,   0x00,   0x00,   3       }   /* PS/2 */
  452. </verb>
  453. </tscreen>
  454. may help if you are having problems and can't track it
  455. down to anything else.
  456.  
  457. <sect1>XFree86.
  458. <p>
  459. To use your busmouse under XFree86, you will need to set your
  460. mouse protocol type in your Xconfig file. If you have a BusMouse
  461. protocol mouse, your Xconfig should contain (including the quotes)
  462. <tscreen>
  463. <verb>
  464. Busmouse        "/dev/mouse"
  465. </verb>
  466. </tscreen>
  467.  
  468. <p>
  469. For PS/2 mice it should have
  470. <tscreen>
  471. <verb>
  472. ps/2        "/dev/mouse"
  473. </verb>
  474. </tscreen>
  475.  
  476. <p>
  477. If you have a two button mouse, it should also contain the line
  478. <tscreen>
  479. <verb>
  480. Emulate3Buttons
  481. </verb>
  482. </tscreen>
  483. which will allow you to emulate the use of the middle mouse button
  484. by pressing both mouse buttons simultaneously.
  485. All other mouse related lines, such as ``BaudRate'' and ``SampleRate''
  486. should be commented out, as these have no effect on bus mice.
  487.  
  488. <sect1>XFree86 and selection.
  489. <p>
  490. Unlike serial mice, you cannot share busmice between processes.
  491. This means you will have to kill any copies of ``selection'' (see
  492. section <ref id="selection" name="selection">) you have running before
  493. you start 
  494. up Xfree86.  If you try to run X with selection running, you will
  495. get errors like the following
  496. <tscreen>
  497. <verb>
  498. Fatal server error:
  499. Cannot open mouse (Device or resource busy)
  500. </verb>
  501. </tscreen>
  502.  
  503. <p>
  504. Version 1.6 of selection allows you to terminate running copies of
  505. selection by executing
  506. <tscreen>
  507. selection -k
  508. </tscreen>
  509. This should be done before starting up X11.  You may wish to add a
  510. line containing the above command to the top of your <tt>startx</tt>
  511. script so that the mouse is shut down automatically.  If you have an
  512. older version of selection which does not support the <tt>-k</tt>
  513. switch you will have to kill selection by hand.
  514.  
  515. <sect>Still can't get your mouse going?
  516. <p>
  517. So you've read through this howto a dozen times, done everything
  518. exactly as you think you should have, and your mouse still doesn't
  519. work?  The best advice I can give you is this: experiment.  Sure,
  520. it's a pain in the posterior, but in the end the only way to find
  521. out what is going to work with your mouse is to try all of the
  522. alternatives until you have success.
  523.  
  524. <p>
  525. As always, if there is something you don't understand, try reading
  526. the manual page first and see if that helps.  If you have a specific
  527. question, or a problem you think I might be able to help with, feel
  528. free to contact me at the address listed at the top of this howto,
  529. and I'll see if I can help you out or point you to someone who can.
  530.  
  531. <p>
  532. The <tt>comp.os.linux.help</tt> newsgroup is the appropriate forum for
  533. discussion and/or questions regarding mice --- please don't post
  534. questions to other groups, and especially don't crosspost
  535. questions to two or more of the Linux groups, they are more than
  536. cluttered enough as it is!  When posting, you will get a much
  537. better response (and much fewer flames) if you use appropriate
  538. Subject: and Keywords: lines.  For example:
  539. <tscreen>
  540. <verb>
  541. Subject: BUSMICE - Gateway 2000 mouse wont work.
  542. Keywords: mouse busmouse gateway
  543. </verb>
  544. </tscreen>
  545.  
  546. </article>
  547.  
  548.