GPM (the General Purpose Mouse daemon) is a mouse server for applications running in the console. It not only provides cut and paste support generally, but its library component is used by various software such as links to provide mouse support to the application generally. It is useful on desktops, especially if following (Beyond) Linux From Scratch instructions - it's often much easier (and less error prone) to cut and paste between two console windows than to type everything by hand!
The GPM package contains a mouse server for the console and xterm. This is useful for cutting and pasting text in console mode, and also because many console-based programs need it to compile mouse support into themselves.
Download (FTP): ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2
Download size: 556 KB
Estimated Disk space required: 5.3 MB
Estimated build time: 0.09 SBU
Recommended patch: http://www.linuxfromscratch.org/patches/blfs/5.0/gpm-1.20.1-segfault.patch
Recommended patch: http://www.linuxfromscratch.org/patches/blfs/5.0/gpm-1.20.1-silent.patch
Install GPM by running the following commands:
patch -Np1 -i ../gpm-1.20.1-segfault.patch && patch -Np1 -i ../gpm-1.20.1-silent.patch && LDFLAGS="-lm" ./configure --prefix=/usr && make && make install && ldconfig -n -l /usr/lib/libgpm.so.1.19.0 |
export LDFLAGS="-lm": The math library must be linked with gpm, as ceil() is used in some cursor scrolling logic. LDFLAGS is only needed if you optimize gpm for size.
ldconfig -n -l : During installation, gpm outputs a message to run the above command to create the proper library links.
The gpm init.d script can be created using the following commands:
cat > /etc/rc.d/init.d/gpm << "EOF" #!/bin/sh # Begin $rc_base/init.d/gpm # Based on sysklogd script from LFS-3.1 and earlier. # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org # GPM specific parts by Mark Hymers - markh@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions if [ -f /etc/sysconfig/mouse ] then source /etc/sysconfig/mouse fi if [ -z "$MDEVICE" ] || [ -z "$PROTOCOL" ] then echo "Please create an /etc/sysconfig/mouse file containing" echo "MDEVICE and PROTOCOL values" exit 1; fi case "$1" in start) echo "Starting gpm..." loadproc gpm -m $MDEVICE -t $PROTOCOL ;; stop) echo "Stopping gpm..." killproc gpm ;; restart) $0 stop sleep 1 $0 start ;; status) statusproc gpm ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # End $rc_base/init.d/gpm EOF chmod 755 /etc/rc.d/init.d/gpm |
You then need to create symbolic links to this file in the relevant rc.d directories. For example:
cd /etc/rc.d/init.d && ln -sf ../init.d/gpm ../rc0.d/K10gpm && ln -sf ../init.d/gpm ../rc1.d/K10gpm && ln -sf ../init.d/gpm ../rc2.d/K10gpm && ln -sf ../init.d/gpm ../rc3.d/S70gpm && ln -sf ../init.d/gpm ../rc4.d/S70gpm && ln -sf ../init.d/gpm ../rc5.d/S70gpm && ln -sf ../init.d/gpm ../rc6.d/K10gpm |
/etc/sysconfig/mouse This file contains the name of your mouse device and the protocol which it uses. To create this file, run the following:
cat > /etc/sysconfig/mouse << "EOF" # start /etc/sysconfig/mouse MDEVICE=[yourdevice] PROTOCOL=[yourprotocol] # end /etc/sysconfig/mouse EOF |
Examples of values to set MDEVICE and PROTOCOL to are
MDEVICE=/dev/psaux PROTOCOL=imps2 |
A list of which protocol values are known can be found by running gpm -t -help. Your MDEVICE setting depends on which type of mouse you have. For example, /dev/ttyS0 for a serial mouse (on Windows this is COM1), /dev/input/mice is often used for USB mice and /dev/psaux for PS2 mice. It is normally thought not a good idea to link /dev/mouse to the relevant device, but instead to reference it directly.