Wacom Tablet HOWTO
 Stefan Runkel <[email protected]>
 Version 1.0.4, Nov 1999

 Installation of (not only) Wacom graphic tablets under linux and  / or
 xfree86
 ______________________________________________________________________

 Table of Contents


 1. Copyright

 2. Introduction

    2.1 New Versions of this Document
    2.2 Feedback and Corrections
    2.3 Acknowledgements

 3. Requirements

    3.1 Which Hardware is supported
    3.2 Which Software is needed
    3.3 Which Software is supported

 4. Tablets as Mouse-Replacement for the Linux-Console

    4.1 Tablets and gpm

 5. Tablets with XFree

    5.1 Required XFree Version
    5.2 Sample XF86Config snippet (simple)
    5.3 Section Module
    5.4 Device Types
    5.5 DeviceName
    5.6 Port
    5.7 DebugLevel
    5.8 Serial num (intuos series only)
       5.8.1 How to find out the serial number of a device
       5.8.2 Serial Num - Example of what has been logged
    5.9 Mode absolute, Mode relative
    5.10 Device Modes Extension, Core, AlwaysCore
    5.11 HistorySize
    5.12 Suppress
    5.13 TiltMode (intuos only)
    5.14 TopX, TopY, BottomX, BottomY Statements
       5.14.1 Getting the maximal X, Y Values, current configuration, and the resolution
       5.14.2 Getting Resolution - Example of what has been logged
    5.15 KeepShape

 6. Changing configuration from within a running X-Server

    6.1 Setting up the Gimp to use XInput devices
    6.2 The Switch Device
    6.3 Buttons
    6.4 Button Mapping with xmodmap for Devices in Core Mode
    6.5 Button Mapping with xinput  for Devices in Extension Mode
    6.6 xsetmode - changing absolute / relative mode
    6.7 xsetpointer - setting the default core device
    6.8 Keys
    6.9 Utilities to use more than one tablet and for toggle support on  / off

 7. Further Information / used documents


 ______________________________________________________________________

 11..  CCooppyyrriigghhtt

 Copyright (c) 1999 by Stefan Runkel [email protected]

 This document describes the installation of Wacom tablets under linux.
 You may use, disseminate, and reproduce this document freely, provided
 you:

 +o  Do not omit or alter this copyright notice.

 +o  Do not omit or alter the version number and date.

 +o  Do not omit or alter the document's pointer to the current WWW
    version.

 +o  Clearly mark any condensed, altered or modified versions as such.



 22..  IInnttrroodduuccttiioonn



 Graphic tablets are now quite inexpensive and can help allot with the
 work of image manipulation. In addition to that what a mouse can do
 for you they have the following features:


 +o  pressure and tilt sensitivity

 +o  high resolution motion control

 +o  sub-pixel positioning

 +o  An input device that looks like and is handled like a normal Pen.

 This document addresses mainly the products from Wacom, because I own
 3 different products of them and because their products are highly
 available in the region of Europe.

 Nevertheless I think it should be easy to adapt the shown concepts to
 other products.


 I have written this document because I could not find anything of that
 kind in the net. Instead I got a large number of documents which
 described that point only in partial. There where (and are) still open
 questions to me after reading what I found, so I had to ask many
 different people to get thinks clearer.

 After all what had to be done, I still think that this document is
 worth it.


 22..11..  NNeeww VVeerrssiioonnss ooff tthhiiss DDooccuummeenntt



 The latest version of this document will be available at
 http://www.runkeledv.de/linux.htm .




 22..22..  FFeeeeddbbaacckk aanndd CCoorrrreeccttiioonnss



 Comments, corrections, and additions are greatly be appreciated. I can
 be contacted at:

 [email protected]


 22..33..  AAcckknnoowwlleeddggeemmeennttss



 I would like to thank all authors listed in the ``Further Information
 / used documents'' Section as well as everyone who answered my
 questions by email.  This HOWTO reflects much of their work.


 33..  RReeqquuiirreemmeennttss



 This chapter is about what is needed to get your tablet working.

 33..11..  WWhhiicchh HHaarrddwwaarree iiss ssuuppppoorrtteedd



 First of all, you should have a tablet, of course. This should be a
 product that connects to the serial port (RS232) of your computer,
 because USB support for linux is still under development and it seems
 that ADB will not survive any longer.

 The following Wacom tablets are supported:



 +o  ArtZ II series (known in Europe as the UltraPad series - the same
    UltraPad name also was used for earlier tablets that only work
    partially.)

 +o  ArtPad II

 +o  PL300 (combined LCD screen and tablet)

 +o  Pen Partner

 +o  Graphire (mouse and pen, you must get at least the alpha 11 driver
    from below.)

 +o  Intuos series (support may be only partial with the driver of your
    distribution, get  updated alpha versions from

    Frederic Lepied's page: http://www.lepied.com/xfree86/)


 The older SD and HD series are not supported by the standard XFree86
 driver, however, a modified driver that supports these devices as well
 some OEM products with embedded screens including the IBM Thinkpad 360
 PE and Toshiba T200 is available from: http://hwr.nici.kun.nl/pen-
 computing/pen-computing-formats.html




 33..22..  WWhhiicchh SSooffttwwaarree iiss nneeeeddeedd




 +o   If you want support for the linux console, get the latest version
    of gpm from ftp://ftp.prosa.it/pub/gpm or from
    ftp://animal.unipv.it/pub/gpm (mirror)



 +o   If you want support for XFree86, use at least version 3.3.3.1 or
    get the latest from http://www.xfree.org


 33..33..  WWhhiicchh SSooffttwwaarree iiss ssuuppppoorrtteedd




 +o  For the linux console, the only program I know is gpm.


 +o  For XFree, the keyword is XInput. This specification has to be
    supported by device drivers which provide extra information. In
    turn, XInput has to be understood by programs which want to use
    alternative pointer devices.

 There is a big number of programs based on the gtk library. The gtk
 has XInput support and makes it very easy to use.
 At least the following applications support XInput:



 +o  The Gimp - a powerful image manipulation program in the style of
    Photoshop. The 1.1.x instable development version includes XInput
    support as a standard feature. Gimp 1.1.x is in feature hold by the
    time of writing (10/99) and I hope they spend us the 1.2 stable
    version till the end of 1999.

    Obtain Gimp from http://www.gimp.org , it really deserves it !  I
    am sure most of you know this and it was the reason to buy a
    tablet.



 +o  gsumi - a simple B/W drawing program that supports drawing /
    erasing with pressure and tilt sensitivity.  Get it from the gsumi
    web page: http://www.gtk.org/~otaylor/gsumi/



 +o  xink (By Ralph Levien) - another rudimentary drawing program for X.

    xink is available from:
    ftp://kiwi.cs.berkeley.edu/pub/raph/xink.tar.gz


 +o  RasMol - a molecular visualization program that supports a hardware
    dial box using XInput. look at
    http://www.umass.edu/microbio/rasmol/distrib/rasman.htm .



 +o  xinput (by Frederic Lepied) - a very useful utility for configuring
    and testing XInput devices.
    xinput is available from:
    ftp://ftp.x.org/contrib/utilities/xinput-1.2.tar.gz


 44..  TTaabblleettss aass MMoouussee--RReeppllaacceemmeenntt ffoorr tthhee LLiinnuuxx--CCoonnssoollee




 44..11..  TTaabblleettss aanndd ggppmm



 The ``gpm'' daemon supports allot of input devices, including tablets.
 If you want a list of the supported devices of your gpm,  do a _g_p_m _-_t
 _h_e_l_p and you get it.

 The Wacom driver of gpm seems to be for the very old ultrapad models,
 the documentation does not say anything about this. I tested it with
 penpartner, graphire and intuos models but it did not work.  I have
 written graphire-support for gpm, to use it you need at least gpm
 version 1.18.1 .

 However, if you own an old artpad, just try: _k_i_l_l_a_l_l _g_p_m _; _g_p_m _-_t
 _w_a_c_o_m _-_m _/_d_e_v_/_t_t_y_S_0 and it should work.
 If you own a graphire, this has to look like: _k_i_l_l_a_l_l _g_p_m _; _g_p_m _-_t
 _g_r_a_p_h_i_r_e _-_m _/_d_e_v_/_t_t_y_S_0

 Of course, you get only the buttons and the movement function,
 pressure and tilt are not supported because they are not too useful in
 text-based applications.

 If you use gpm and XFree86, you may or may not run in problems,
 because normally a device can be opened only by one program at a time.
 There are two solutions for that:



 +o  The gpm repeater mode. If you start gpm with the "-R protocol"
    option, it will repeat all data it gets to the device /dev/gpmdata.
    Let us say, you have a ps2 type mouse and your gpm call looks like:
    _g_p_m _-_t _p_s_2 _-_R_m_m_a_n then gpm gets your ps2 mouse data and tries to
    translate this into a mman packet, which it will emit to
    /dev/gpmdata. Unfortunately, gpm can translate to only a few
    protocols at the time of writing.  If you want to omit the
    translation and only get the data byte for byte, just call _g_p_m _-_t
    _p_s_2 _-_R _r_a_w . You can then make XFree use that second device by
    putting the line _D_e_v_i_c_e      _"_/_d_e_v_/_g_p_m_d_a_t_a_" in your XF86Config in
    the pointer section or the Xinput section.


 +o  If you use startx, you can modify it that it does a _g_p_m _-_k before
    the X-Server is started. This option kills a running gpm.


 55..  TTaabblleettss wwiitthh XXFFrreeee



 55..11..  RReeqquuiirreedd XXFFrreeee VVeerrssiioonn



 Minimum ``XFree'' version should be 3.3.3.1 because this version has
 extended XInput support, the second side switch works now and the
 blocking mouse effect has been fixed.
 If you must use any prior version, XInput support should be available
 since 3.1.2.d.


 XInput support in XFree is configured basically in a file called
 XF86Config.  In most cases the XF86Config file is located in /etc or
 in /etc/x11. I will show now a very short configuration section and
 explain then what can be changed and why  this is needed.


 55..22..  SSaammppllee XXFF8866CCoonnffiigg ssnniippppeett ((ssiimmppllee))





      Section "Module"
      # Wacom Device Driver
      Load "xf86Wacom.so"
      EndSection

      Section "Xinput"
      # Settings for Wacom pen
        SubSection "WacomStylus"    # type of input device
          DeviceName "Pen1"         # Name, choose it free
          Port "/dev/ttyS0"         # Serial Port
          Baudrate 9600             # Usable only for intuos
          Mode Absolute             # Map Tablet Area to Screen
          AlwaysCore                # See text
          HistorySize 200           # Buffer size for motion events
        EndSubSection
      EndSection





 55..33..  SSeeccttiioonn MMoodduullee



 XInput support in XFree is reached due to the use of modules. The
 device driver module for Wacom is called ``xf86Wacom.so'' . This goes
 to the "Module" section and has to be appear only once per XF86Config
 file.



 55..44..  DDeevviiccee TTyyppeess



 A physical device can be:

 +o  The tip of your pen

 +o  The eraser of your pen

 +o  A mouse like the Wacom products lens cursor, 4d-mouse, graphire-
    mouse

 +o  The airbrush

 The  penpartner and graphire products simply recognize the type of a
 device, but they can not distinguish them. For example, you can not
 use two different pens, say, one configured red  and one configured
 blue - all what these products say is: "I found a pen tip on my
 surface", or "I found an Eraser on my surface", or "I found a mouse on
 my surface".


 XInput maps the device types to devices, these device types are later
 specified in the XF86Config as a subsection in the Section Xinput:

 +o  WacomStylus Tip of a pen or airbrush

 +o  WacomErasor Eraser of a pen or airbrush

 +o  WacomCursor Mice, like graphire mouse, lens cursor, 4d-mouse

 55..55..  DDeevviicceeNNaammee



 You must give every configured device a unique name. This name will be
 used later in your program to talk to that device. You can choose this
 name free.



 55..66..  PPoorrtt



 XInput wants to know at which serial port this device can be found.
 This allows me to use two different tablets at the same time, for
 example a graphire connected to /dev/ttyS0 and a penpartner connected
 to /dev/ttyS1.


 55..77..  DDeebbuuggLLeevveell



 This statement controls how verbose the Wacom driver is. The Level
 goes from 0 to 10. If this statement is not given, DebugLevel 0 is
 used, which logs the very less.

 EExxaammppllee::


      SubSection "WacomStylus" # Pen
        DeviceName "PenRed"    # Name, choose it free
        ...
        DebugLevel 10          # be very verbose
        ...
      EndSubSection






 55..88..  SSeerriiaall nnuumm ((iinnttuuooss sseerriieess oonnllyy))



 The intuos product is more efficient than penpartner and graphire
 because it can distinguish many devices of the same type. This means
 that it is now possible to use two pens, one configured red  and one
 configured blue. As you see, the use of device types is not enough
 information to handle different pens. Therefore, each intuos device,
 be it a pen, ink pen, mouse, or whatever has a serial number, which
 you can specify to aid XInput in resolving the right device. This
 would look like:



      Section "Xinput"
        SubSection "WacomStylus" # Pen
          DeviceName "PenRed"    # Name, choose it free
          ...
          Serial 2609917443      # Serial Number of that device
          ...
        EndSubSection
        SubSection "WacomStylus" # another Pen
          DeviceName "PenBlue"   # Name, choose it free
          ...
          Serial 2609918664      # Serial Number of that device
          ...
        EndSubSection
      EndSection




 It should be said that combined input devices like pens have only one
 serial number. The driver uses the serial number it gets to recognize
 one specific pen and the device type to distinguish the tip of that
 specific pen from its eraser.



 55..88..11..  HHooww ttoo ffiinndd oouutt tthhee sseerriiaall nnuummbbeerr ooff aa ddeevviiccee


 1. Set DebugLevel to  6

 2. Start the  X-Server by typing _X _2_>_t

 3. Tip all devices down on the tablet and make a notice of the order
    you tipped them.

 4. Kill the X-Server (usually  Ctrl+Alt+Backspace)

 5. Do a _g_r_e_p _s_e_r_i_a_l___n_u_m _t

 You should get a list of your different numbers.



 55..88..22..  SSeerriiaall NNuumm -- EExxaammppllee ooff wwhhaatt hhaass bbeeeenn llooggggeedd



      BEGIN xf86WcmProc dev=0x8354d60 priv=0x833e3f0 type=stylus flags=9 what=1
      xf86WcmProc pWcm=0x8354d60 what=ON
      END xf86WcmProc Success what=1 dev=0x8354d60 priv=0x833e3f0
      device_id=0x96 serial_num=2595227137 type=cursor
      [cursor] abs prox=false x=0 y=0 z=0 button=false buttons=0








 55..99..  MMooddee aabbssoolluuttee,, MMooddee rreellaattiivvee



 If you set a device in mode absolute, this means, that the active area
 of the tablet will be mapped to the screen. Every time you go down to
 the tablet at the same point with an absolute device the pointer will
 appear at the same point of the screen.


 If you set a device in mode relative, you will get the well known
 behavior of a mouse. This means, that if you take the mouse off from
 the surface, move it and go down again, the pointer does (ideally) not
 move.


 EExxaammppllee::
 Mode Absolute


 55..1100..  DDeevviiccee MMooddeess EExxtteennssiioonn,, CCoorree,, AAllwwaayyssCCoorree



 XFree knows two pointers: one with only the standard features
 (buttons, moving-capabilities), which is used for selecting menus,
 text, clicking buttons and doing other controlling stuff. This is the
 _C_o_r_e _D_e_v_i_c_e.

 The other pointer is used by applications which want more information,
 like pressure and tilt.
 This is the extension device.


 Starting with version 3.3.3.1, the Statement AlwaysCore tells the
 driver that it should send both types of events.


 If you do not specify Alwayscore in your XF86Config, then this device
 is initially used as extension device, this means it is usable only in
 applications but you can not control the menus of your window manager
 with it.


 If Alwayscore is given, then your device acts as core pointer (in
 addition to the mouse) as well as it sends tilt and pressure
 information to applications which opened the device in extention mode.

 You can configure two different logical devices, one in Core-Mode and
 one in Extension-Mode, to the same physical device.
 To do so, simply type two identical sections, only the DeviceName
 statement must differ.  Then specify AlwaysCore only for the last
 section.

 EExxaammppllee::
 AlwaysCore


 55..1111..  HHiissttoorryySSiizzee



 This statement sets the buffer size that is used to cache motion
 events.


 55..1122..  SSuupppprreessss



 This statement specifies how many units the device must move before
 the driver moves the pointer. This can be necessary if very large
 resolutions are used.

 EExxaammppllee::
 Suppress 6



 55..1133..  TTiillttMMooddee ((iinnttuuooss oonnllyy))



 TiltMode enables sending of tilt information for intuos devices. If
 this statement is missing, only pressure information is transferred.



 55..1144..  TTooppXX,, TTooppYY,, BBoottttoommXX,, BBoottttoommYY SSttaatteemmeennttss



 These four statements allow to reduce the active area of the tablet.
 My intuos A4 oversize, for example, is so big that you can not do
 painting work with it because the ways of  the pen are too long. I use
 these four Statements to tell the driver that it should map only the
 lower left quarter of the tablet to the screen.

 EExxaammppllee::


      TopX        0 #coord of top left point
      TopY     5000
      BottomX  5000 #coord of bottom right point
      BottomY 10000





 55..1144..11..  GGeettttiinngg tthhee mmaaxxiimmaall XX,, YY VVaalluueess,, ccuurrrreenntt ccoonnffiigguurraattiioonn,, aanndd
 tthhee rreessoolluuttiioonn

 If you use the above for statements, you sometimes want to make some
 calculations on the size and position of the rectangle to be defined.
 Often the maximal tablet coordinates and the resolution are needed for
 this.  To get these values, start your server: _X _2_>_t.  Kill the X-
 Server (usually  Ctrl+Alt+Backspace) and do a _g_r_e_p _"_X_=_" _t .You should
 get back the values in question.



 55..1144..22..  GGeettttiinngg RReessoolluuttiioonn -- EExxaammppllee ooff wwhhaatt hhaass bbeeeenn llooggggeedd



      (--) Wacom IV tablet maximum X=5103 maximum Y=3711 X
           resolution=1000 Y resolution=1000 suppress=6
      (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
      (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
      (--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711

 55..1155..  KKeeeeppSShhaappee



 This option uses the TopX, TopY statements (or their built in
 defaults, if omitted) and adjusts the BottomX, BottomY statements so
 that


 +o  The ratio height / width of the screen is the same ratio on the
    tablet

 +o  The active area starting at TopX, TopY of the tablet is as big as
    it can be with the above condition.

 Any given BottomX, BottomY statement is ignored, because these values
 will be calculated.



 66..  CChhaannggiinngg ccoonnffiigguurraattiioonn ffrroomm wwiitthhiinn aa rruunnnniinngg XX--SSeerrvveerr



 66..11..  SSeettttiinngg uupp tthhee GGiimmpp ttoo uussee XXIInnppuutt ddeevviicceess



 ``Gimp'' has built-in XInput support since Version 1.1.x.

 Gimp must know which devices it should use and in what mode. You have
 to open the _F_i_l_e_/_D_i_a_l_o_g_s_/_I_n_p_u_t _D_e_v_i_c_e_s - dialog for setting this up.
 You will find two listbox-controls at the top of that window labeled
 _D_e_v_i_c_e and _M_o_d_e . Choose the device to set up from the _D_e_v_i_c_e control
 and choose a mode from the _M_o_d_e -control.

 The modes are:


 +o  disabled: Gimp does not use this device.

 +o  window: Gimp uses this device. (The cursor is drawn by the
    application ???)

 +o  screen: Gimp uses this device.   (The cursor is drawn by the X-
    Server ??? )


 If you see two cursors linked to your device, you have two solutions:

 +o  Use mode screen but you may or may not loose the special gimp-tool
    cursors; If so, all cursors will be replaced by the pen cursor.

 +o  Configure two different devices in the XF86Config file, one
    _A_l_w_a_y_s_C_o_r_e and one not. Tell gimp to use the later one in mode
    window. If you do so and have one of the statements _T_o_p_X_, _T_o_p_Y_,
    _B_o_t_t_o_m_X_, _B_o_t_t_o_m_Y in your XF86Config, take care to use the same
    adjustments for that statements in both logical devices. If you do
    not, then you get confused because X draws a cursor of the one
    device while the other is active. the effect of this is a cursor,
    very far away from the point of action (hotspot).


 Below the two listbox-controls there is a tab-control with the two
 register tabs _A_x_e_s and _K_e_y_s .  _A_x_e_s assigns an axis a function, it is
 mostly not necessary to change this. But think about a touch-screen
 device which is built in a table rotated by 90 degrees, then you might
 want to swap the x and y axis.


 Some tablets have so called macro keys at the top which may hold some
 often used functions. The _K_e_y_s tab lets you assign a character to a
 macro key. For example, you can put Ctrl+Shift+R, to a macro key. If
 you activate this key, then the rulers are toggled.
 The current Wacom driver supports only the macro keys of the ultrapad
 series, the macro area of the intuos products is not yet usable for
 that.


 Now we should talk about how the devices can be used. Open the
 _F_i_l_e_/_D_i_a_l_o_g_s_/_D_e_v_i_c_e _S_t_a_t_u_s -dialog. Open an image.

 You set up each device independently from each other in gimp.

 If you move the cursor with different devices in the image window you
 can see the devices change in the Device Status dialog. If you pick a
 tool, brush, pattern or color with a device, again the changes are
 reflected in the dialog.  You can save the settings in the Status
 Dialog, so that they will be restored before your next session.



 66..22..  TThhee SSwwiittcchh DDeevviiccee



 This is a special device that is always present. It generates an event
 every time a new device becomes the core pointer. It has a pseudo
 "axis".  The "value" of  this axis is the id of the core pointer
 device. I do not know what a user can do with it - this is mainly
 helpful for internal use.


 66..33..  BBuuttttoonnss



 The buttons of the devices are as different as the devices are:
 A pen has at least a tip, but it may have one or two side switches and
 an eraser. A mouse may have up to 32 buttons (but usually 3). Buttons
 are numbered from 1 to the number of buttons. With the next two
 utilities you can change, to what number a button is mapped.


 66..44..  BBuuttttoonn MMaappppiinngg wwiitthh xxmmooddmmaapp ffoorr DDeevviicceess iinn CCoorree MMooddee



 xmodmap will only modify the Core Pointer. As there is only one Core
 pointer at a time, it makes no difference between the physical devices
 which may become the Core Pointer. For the moment, let us forget the
 whole XInput stuff and think of a left-hander who just wants to swap
 the left and right mouse buttons.  You would execute _x_m_o_d_m_a_p _-_p_p to
 look what the current assignment is. You should get the following
 table back:







 Physical        Button
 Button          Code
 1              1      # ( Left   Button )
 2              2      # ( Right  Button )
 3              3      # ( Middle Button )





 To swap the buttons, you do a _x_m_o_d_m_a_p _-_e _"_p_o_i_n_t_e_r _= _2 _1 _3_" , and to
 get back, _x_m_o_d_m_a_p _-_e _"_p_o_i_n_t_e_r _= _d_e_f_a_u_l_t_" . This should work with every
 device with at least two buttons. Note that  the term _"_p_o_i_n_t_e_r _= _x _x
 _x_" has to be quoted to prevent it from being changed by the shell.



 66..55..  BBuuttttoonn MMaappppiinngg wwiitthh xxiinnppuutt  ffoorr DDeevviicceess iinn EExxtteennssiioonn MMooddee



 Back to XInput now. If you use the gimp, you may want to change the
 button mapping for each device separately (may be you are happy with
 the mouse but want to swap the two side-switches of the pen). Frederic
 Lepied has written a utility called ``xinput'' for that.

 To swap the side-switches, you would do a _x_i_n_p_u_t _l_i_s_t to get a list of
 the devices and their current settings. Swapping is done with _x_i_n_p_u_t
 _s_e_t_-_b_u_t_t_o_n_-_m_a_p _P_e_n_1 _1 _3 _2 where _P_e_n_1 is the Device to change.

 Starting with XFree 3.3.2 this works also with devices that are
 configured _A_l_w_a_y_s_C_o_r_e in XF86Config.



 66..66..  xxsseettmmooddee -- cchhaannggiinngg aabbssoolluuttee // rreellaattiivvee mmooddee




 With xsetmode you can change the mode of a device between absolute and
 relative.

 EExxaammppllee::
 _x_s_e_t_m_o_d_e _G_r_a_p_h_i_r_e_M_o_u_s_e _A_B_S_O_L_U_T_E .



 66..77..  xxsseettppooiinntteerr -- sseettttiinngg tthhee ddeeffaauulltt ccoorree ddeevviiccee



 If you have none of your devices configured _A_l_w_a_y_s_C_o_r_e and you want a
 device to become  the core-pointer, then xsetpointer must be used.

 Do a _x_s_e_t_p_o_i_n_t_e_r _D_e_v_i_c_e_n_a_m_e . The old core-device (usually the mouse)
 is not usable anymore and the one you specified should be active. For
 example I can make the graphire mouse the standard core device from
 within a running XFree.

 _x_s_e_t_p_o_i_n_t_e_r _-_l lists all devices and the modes they are in.





 66..88..  KKeeyyss


 Some devices have macro keys or pads on them, to which a scancode or
 string may be assigned. This works only for devices in extension mode
 and is therefore done in the application you want use the keys with.

 _x_i_n_p_u_t _-_l gives information about the number of keys and things like
 the first scancode.



 66..99..  UUttiilliittiieess ttoo uussee mmoorree tthhaann oonnee ttaabblleett aanndd ffoorr ttooggggllee ssuuppppoorrtt oonn
 // ooffff



 I own myself 3 tablets of Wacom and use them on my notebook. Whenever
 no tablets are connected and I start X, I have to wait very long until
 the driver gives up. If xdm is used, this increases to multiple of
 that timeouts.

 I have written two utilities which should make live easier with that:


 +o  The shell script ssxx for those who use startx.  sx uses the dialog
    tool to present a nice menu where the user can choose:

 +o  one of up to 10 devices (tablet, joystick, ...)

 +o  for notebooks, which display to use (internal or external display)

 +o  which window-manager to use





 +o  The small gtk-application xxiinnppuutt--cchhoooosseerr for those who use xdm.
    xinput-chooser presents the user a menu whenever the xdm login
    screen is shown, from which one of up to ten different
    configurations can be chosen.


 The concept behind this is that a XF86Config file is split in at least
 a XF86Config.bare file, which holds the information common to all
 configurations, and various snippets, each of them holding the special
 information for a particular configuration.

 The two utilities will then concat the parts back to a working
 configuration.


 You can get this packet from http://www.runkeledv.de/download , it is
 named xinput_chooser_sr.



 77..  FFuurrtthheerr IInnffoorrmmaattiioonn // uusseedd ddooccuummeennttss




 gpm:
 gpm man page, gpm FAQ, source code file mice.c

 XInput:
 XInput HOWTO by Owen Taylor

 XFree and Wacom:
 XF86Config man page

 Frederic Lepied's site

 much, much, e-mails...