     selection 1.5: Copy and paste for Linux Virtual Consoles using mouse
     --------------------------------------------------------------------

This package implements mouse-driven selection of text from a VC and pasting
of the text into the same or a different VC, the user interface being based
loosely on the equivalent xterm facility.

Version 1.5
-----------
 -  fixed support for bus mice.
 -  added support for PS/2 and Mouse Systems 3-byte mice.
 -  command line options added.
 -  updated for kernel version 0.99.pl10.
 -  cooperates with XFree86 1.2, for serial mice at least.
 -  enabled as part of normal kernel configuration process.

Version 1.4
-----------
 -  added manual page.
 -  updated for kernel version 0.99.pl0.

Version 1.3
-----------
 -  improved support for Logitech mice (speed set correctly).
 -  optional flag for left-handed users.
 -  corrected bug in Mouse Systems handling code.

Version 1.2
-----------
 -  disabled when console in graphics mode, eg. under X11 or MGR.
 -  uses default screen size if ioctl TIOCGWINSZ fails.

Version 1.1
-----------
 -  support for some common mouse types.
 -  selection by word or line as well as by character.
 -  changes in the interface to make it behave more like xterm.

Manifest
--------
    README
    Makefile
    selection.1		manual page
    selection.man	formatted manual page
    patch-0.99.10	patches to kernel
    mouse.c		source for mouse driver
    mouse.h		mouse driver interface
    selection.c		source for selection manager
    test-mouse.c	test code for mouse compatibility

Mouse support
-------------

The following types of mouse are supported.

 -  Microsoft
 -  MouseSystems 3-byte and 5-byte
 -  MM Series
 -  Logitech
 -  BusMouse
 -  PS/2

The code has been tested with various types of mice, including
Microsoft-compatible and Logitech, a three-button Mouse Systems, and with bus
and PS/2 mice; please tell me if it doesn't work with yours and you think it
ought to.

Installation
------------

1. Check it out
---------------

 -  Make the mouse device. If you have a serial mouse, either use `mknod' to
    make /dev/mouse reference the appropriate serial driver or create a
    symbolic link from /dev/ttys? to /dev/mouse. If you have a bus mouse,
    use `mknod' to create the bus mouse device if it doesn't already exist.
    Make sure that your kernel is configured to support the appropriate
    bus mouse device (specified during `make config').

e.g.	mknod /dev/mouse c 4 64
or	ln -s /dev/ttys1 /dev/mouse	(for serial mouse)

	mknod /dev/busmouse c 10 0	(for Logitech bus mouse)

 -  Test your mouse for compatibility by using the test-mouse facility
    supplied. Build it by typing `make test-mouse', then run `test-mouse'.
    You may need to supply it with certain options; try `test-mouse -?'.
    If your mouse device is not /dev/mouse, use the -m option.  You should
    be able to move the cursor over the entire screen, and draw
    asterisks in different colours by moving the mouse while pressing
    different buttons. Press both the left and right buttons while the mouse
    is not moving to quit the program. The options that you find work with
    `test-mouse' should also work with `selection'.

2. Patch the kernel
-------------------

    [ NOTE: Precompiled versions of the kernel supplied with the SLS
      package should already have the patch applied, in which case this
      section may be skipped. ]

 -  Apply the kernel patches, by going into the directory in which the
    kernel source is located (eg. /usr/src/linux) and typing:

	patch < patch-0.99.10

    The patches were generated against the standard 0.99.pl10 kernel.

The following files are patched:

    config.in			to add the selection mechanism as a
				configuration option.

    kernel/chr_drv/tty_ioctl.c	to provide the interface to the selection
				mechanism via ioctl(..., TCIOLINUX, ...).
    
    kernel/chr_drv/console.c	to implement the selection mechanism itself.

 -  Reconfigure the kernel by typing 'make config', remembering to include
    the selection mechanism by answering 'y' to the appropriate question.

 -  To be safe, rebuild the kernel dependencies using 'make dep'.

 -  Rebuild the kernel and reboot.

 -  Make sure you have the /dev/tty0 (current VC) device. If not, make it using

	mknod /dev/tty0 c 4 0

3. Build the program
--------------------

 -  Type `make' in the directory in which you unpacked the selection code;
    this will build the `selection' executable. It has been tested with
    gcc 2.3.3 and libc.so.4.3.3.

 -  Run `selection &' to test it out. Use `selection -?' to see what
    options are supported. Then type `make install', which installs the
    executable in /etc and the manual page in /usr/man, and start it up
    from /etc/rc.local. Consult the manual page for usage. It should
    work with text screens of various sizes, e.g. 80x28, 80x50, etc.

The default size of the paste buffer is 2048 bytes. This may be changed by
altering the value of SEL_BUFFER_SIZE in kernel/chr_drv/console.c.

And that's all there is to it, hopefully. See the manual page for a more
detailed description of operation. Please let me know of any problems,
suggestions for enhancements, etc, etc.

Andrew Haylett <ajh@gec-mrc.co.uk>, 17th June 1993
