<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

  <!ENTITY gpm-download-http "http://www.nico.schottelius.org/software/gpm/archives/gpm-&gpm-version;.tar.bz2">
  <!ENTITY gpm-download-ftp  " ">
  <!ENTITY gpm-md5sum        "bf84143905a6a903dbd4d4b911a2a2b8">
  <!ENTITY gpm-size          "820 KB">
  <!ENTITY gpm-buildsize     "7.4 MB">
  <!ENTITY gpm-time          "0.1 SBU">
]>

<sect1 id="gpm" xreflabel="GPM-&gpm-version;">
  <?dbhtml filename="gpm.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2015-02-21 00:50:01 -0500 (Sat, 21 Feb 2015) $</date>
  </sect1info>

  <title>GPM-&gpm-version;</title>

  <indexterm zone="gpm">
    <primary sortas="a-GPM">GPM</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to GPM</title>

    <para>The <application>GPM</application> (General Purpose Mouse
    daemon) package contains a mouse server for the console and
    <command>xterm</command>. It not only provides cut and paste support
    generally, but its library component is used by various software such as
    <application>Links</application> to provide mouse support to the application.
    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!</para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>Download (HTTP): <ulink url="&gpm-download-http;"/></para>
      </listitem>
      <listitem>
        <para>Download (FTP): <ulink url="&gpm-download-ftp;"/></para>
      </listitem>
      <listitem>
        <para>Download MD5 sum: &gpm-md5sum;</para>
      </listitem>
      <listitem>
        <para>Download size: &gpm-size;</para>
      </listitem>
      <listitem>
        <para>Estimated disk space required: &gpm-buildsize;</para>
      </listitem>
      <listitem>
        <para>Estimated build time: &gpm-time;</para>
      </listitem>
    </itemizedlist>

    <para condition="html" role="usernotes">User Notes:
    <ulink url="&blfs-wiki;/GPM"/></para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of GPM</title>

    <para>Install <application>GPM</application> by running
    the following commands:</para>

<screen><userinput>./autogen.sh                                &amp;&amp;
./configure --prefix=/usr --sysconfdir=/etc &amp;&amp;
make</userinput></screen>

    <para>This package does not come with a test suite.</para>

    <para>Now, as the <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>make install                                          &amp;&amp;

install-info --dir-file=/usr/share/info/dir           \
             /usr/share/info/gpm.info                 &amp;&amp;

ln -sfv libgpm.so.2.1.0 /usr/lib/libgpm.so            &amp;&amp;
install -v -m644 conf/gpm-root.conf /etc              &amp;&amp;

install -v -m755 -d /usr/share/doc/gpm-&gpm-version;/support &amp;&amp;
install -v -m644    doc/support/*                     \
                    /usr/share/doc/gpm-&gpm-version;/support &amp;&amp;
install -v -m644    doc/{FAQ,HACK_GPM,README*}        \
                    /usr/share/doc/gpm-&gpm-version;</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para><command>./autogen.sh</command>: This command creates the missing
    <command>configure</command> script.</para>

    <para><command>install-info ...</command>: This package installs an
    <filename class="extension">.info</filename> file, but does not update the
    system <filename>dir</filename> file. This command makes the update.</para>

    <para><command>ln -v -sfn libgpm.so.2.1.0 /usr/lib/libgpm.so</command>: This
    command is used to create (or update) the <filename class="extension">.so</filename>
    symlink to the library.</para>

  </sect2>

  <sect2 role="configuration">
    <title>Configuring GPM</title>

    <sect3 id="gpm-init">
      <title>Boot Script</title>

      <indexterm zone="gpm gpm-init">
        <primary sortas="f-gpm-init">gpm</primary>
      </indexterm>

      <para>Install the <filename>/etc/rc.d/init.d/gpm</filename> init script
      included in the <xref linkend="bootscripts"/> package.</para>

<screen role="root"><userinput>make install-gpm</userinput></screen>

    </sect3>

    <sect3 id="gpm-config">
      <title>Config Files</title>

      <para><filename>/etc/gpm-root.conf</filename> and
      <filename>~/.gpm-root</filename>: The default and individual user
      <command>gpm-root</command> configuration files.</para>

      <para><filename>/etc/sysconfig/mouse</filename>:
      This file contains the name of your mouse device and the protocol
      it uses.  To create this file, run the following as the
      <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>cat &gt; /etc/sysconfig/mouse &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/mouse

MDEVICE="<replaceable>&lt;yourdevice&gt;</replaceable>"
PROTOCOL="<replaceable>&lt;yourprotocol&gt;</replaceable>"
GPMOPTS="<replaceable>&lt;additional options&gt;</replaceable>"

# End /etc/sysconfig/mouse</literal>
EOF</userinput></screen>

      <indexterm zone="gpm gpm-config">
        <primary sortas="e-AA.gpm-root">~/.gpm-root</primary>
      </indexterm>

      <indexterm zone="gpm gpm-config">
        <primary sortas="e-etc-gpm-root.conf">/etc/gpm-root.conf</primary>
      </indexterm>

      <indexterm zone="gpm gpm-config">
        <primary sortas="e-etc-sysconfig-mouse">/etc/sysconfig/mouse</primary>
      </indexterm>

    </sect3>

    <sect3>
      <title>Configuration Information</title>

      <para>Examples of values to set <envar>MDEVICE</envar>,
      <envar>PROTOCOL</envar>, and <envar>GPMOPTS</envar> to are:</para>

<screen><literal>MDEVICE="/dev/input/mice"
PROTOCOL="imps2"
GPMOPTS=""</literal></screen>

      <para>A list of which protocol values are known can be found by running
      <command>gpm -m <replaceable>[device]</replaceable> -t -help</command>.
      The <envar>MDEVICE</envar> setting depends on which type of mouse you
      have.  For example, <filename>/dev/ttyS0</filename> for a serial mouse
      (on Windows this is COM1), <filename>/dev/input/mice</filename> is often
      used for USB mice and <filename>/dev/psaux</filename> for PS2 mice.
      <envar>GPMOPTS</envar> is the 'catch all' for any additional options that
      are needed for your hardware.</para>

    </sect3>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Library</segtitle>
      <segtitle>Installed Directory</segtitle>

      <seglistitem>
        <seg>disable-paste, display-buttons, display-coords, get-versions, gpm,
        gpm-root, hltest, mev, and mouse-test</seg>
        <seg>libgpm.{so.a}</seg>
        <seg>/usr/share/doc/gpm-&gpm-version;</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="disable-paste">
        <term><command>disable-paste</command></term>
        <listitem>
          <para>is a security mechanism used to disable the paste buffer.</para>
          <indexterm zone="gpm disable-paste">
            <primary sortas="b-disable-paste">disable-paste</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="display-buttons">
        <term><command>display-buttons</command></term>
        <listitem>
          <para>is a simple program that reports the mouse buttons being
          pressed and released.</para>
          <indexterm zone="gpm display-buttons">
            <primary sortas="b-display-buttons">display-buttons</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="display-coords">
        <term><command>display-coords</command></term>
        <listitem>
          <para>is a simple program that reports the mouse coordinates.</para>
          <indexterm zone="gpm display-coords">
            <primary sortas="b-display-coords">display-coords</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="get-versions">
        <term><command>get-versions</command></term>
        <listitem>
          <para>is used to report the <application>GPM</application> library
          and server versions.</para>
          <indexterm zone="gpm get-versions">
            <primary sortas="b-get-versions">get-versions</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="gpm-prog">
        <term><command>gpm</command></term>
        <listitem>
          <para>is a cut and paste utility and mouse server for virtual consoles.</para>
          <indexterm zone="gpm gpm-prog">
            <primary sortas="b-gpm">gpm</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="gpm-root">
        <term><command>gpm-root</command></term>
        <listitem>
          <para>is a default handler for <command>gpm</command>. It is used to
          draw menus on the root window.</para>
          <indexterm zone="gpm gpm-root">
            <primary sortas="b-gpm-root">gpm-root</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="hltest">
        <term><command>hltest</command></term>
        <listitem>
          <para>is a simple sample application using the high-level library,
          meant to be read by programmers trying to use the high-level library.</para>
          <indexterm zone="gpm hltest">
            <primary sortas="b-hltest">hltest</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mev">
        <term><command>mev</command></term>
        <listitem>
          <para>is a program to report mouse events.</para>
          <indexterm zone="gpm mev">
            <primary sortas="b-mev">mev</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mouse-test">
        <term><command>mouse-test</command></term>
        <listitem>
          <para>is a tool for determining the mouse type and device it's
          attached to.</para>
          <indexterm zone="gpm mouse-test">
            <primary sortas="b-mouse-test">mouse-test</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libgpm">
        <term><filename class='libraryfile'>libgpm.{so.a}</filename></term>
        <listitem>
          <para>contains the API functions to access the
          <application>GPM</application> daemon.</para>
          <indexterm zone="gpm libgpm">
            <primary sortas="c-libgpm">libgpm.{so,a}</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
