
GLUT NOTE:  The GLUT API version 2 & 3 X11 implementations support the SGI
Dials and Buttons, SGI Spaceball, and SGI Tablet via the X Input
extension.  These devices are advertised as described below.  If other
vendors advertise these X Input extension devices differently, GLUT's X
implementation will need to be extended to properly support such
differently advertised devices.


    X Input Extension Devices as Advertised by Silicon Graphics

                            Mark Kilgard

                         February 13, 1995

                             $Revision: 1.2 $

This document describes how Silicon Graphics Inc. (SGI) advertises its
support for input devices through the X Input extension.  Because the X
Input extension only provides mechanism for supporting additional X
input devices, vendors may support the same or similar devices in
slightly different ways making it difficult for programs to count on
how a given input device will be supported across vendors.

The intent of this document is not to propose any standard way of
supporting specific X Input extension devices, but merely to thoroughly
describe SGI's X Input support for the benefit of X Input programmers
and other X Input extension implementors wishing to mimic SGI's X Input
support to avoid needless incompatibility for otherwise standard and
common input devices.

The client queriable state returned by the X Input extension is not
enough to effectively use X Input extension devices.  The physical
layout of how the dials, axes, buttons, etc. are laid out is not
queriable.  Effective use of the extension requires knowledge of the
physical layout of the devices.  Diagrams are provided to show the
actual layout.

Comments and corrections should be sent to Mark Kilgard <mjk@nvidia.com>
(Please note that I no longer work at Silicon Graphics.  Try contacting
Peter Daifuku <daifuku@sgi.com) if you need to contact SGI about this
information.)

SGI Dials and Buttons:

  Device type:                    KNOB_BOX
  Device name:                    dial+buttons
  Classes:                        2
    ButtonClass
      Number buttons:             32
    ValuatorClass
      Device mode:                Absolute
      Number axes:                8
	Axis 1
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 2
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 3
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 4
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 5
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 6
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 7
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200
	Axis 8
	  Minimum value:          -32768
	  Maximum value:          32767
	  Resolution:             200

  Physical layout:

       +---------+
       | (7) (8) |
       |         |
       | (5) (6) |
       |         |   <---- Dials on dial box w/ axis number
       | (3) (4) |
       |         |
       | (1) (2) |
       +---------+
 
       +-------------------------------+
       |      [ 1] [ 2] [ 3] [ 4]      |
       |                               |
       | [ 5] [ 6] [ 7] [ 8] [ 9] [10] |
       |                               |
       | [11] [12] [13] [14] [15] [16] |  <--- Buttons on button box
       |                               |       w/ button number
       | [17] [18] [19] [20] [21] [22] |
       |                               |
       | [23] [24] [25] [26] [27] [28] |
       |                               |
       |      [29] [30] [31] [32]      |
       +-------------------------------+

  Device manufacturer:            Seiko

SGI SpaceBall:

  Device type:                    SPACEBALL
  Device name:                    spaceball
  Classes:                        2
    ButtonClass
      Number buttons:             9
    ValuatorClass
      Device mode:                Absolute
      Number axes:                7
	Axis 1
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 2
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 3
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 4
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 5
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 6
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200
	Axis 7
	  Minimum value:          -18000
	  Maximum value:          18000
	  Resolution:             200

  Physical layout:

     +-----------------+
     | [1] [2] [3] [4] |   <---  Function keys
     | [5] [6] [7] [8] |
     |                 |
     |    /--[9]--\    |   <---  Pick button (hidden on ball surface)
     |   /         \   |
     |  |  "the     |  |         Axes 1-3   X, Y, Z rotation
     |  |   ball"   |  |         Axes 4-6   X, Y, Z translation
     |  |           |  |         Axis 7     Period
     |   \         /   |
     |    \-------/    |         X is left and right; Y is up and down;
     |                 |         Z is back and forward.
     +-----------------+

  Device manufacturer:            SpaceBall Technologies, Inc. Lowell, MA
				  (508) 970-0330.

SGI Tablet:

  Device type:                    TABLET
  Device name:                    tablet
  Classes:                        2
    ButtonClass
      Number buttons:             4
    ValuatorClass
      Device mode:                Absolute
      Number axes:                2
	Axis 1
	  Minimum value:          0
	  Maximum value:          2206
	  Resolution:             200
	Axis 2
	  Minimum value:          0
	  Maximum value:          2206
	  Resolution:             200
  Physical layout:

            -----
           / (+) \        The tablet puck crosshair
          /   |   \
         /    |    \
         +---------+
         |   <1>   |      The tablet puck buttons.
         |         |
         | <2> <4> |
         |         |
         |   <3>   |
          \       /
	   +-----+
 
  Device manufacturer:            Hitachi

SGI Virtual Pointer:

  Device type:                    VIRTUAL_POINTER
  Device name:                    virtual_pointer
  Classes:                        2
    ButtonClass
      Number buttons:             5
    ValuatorClass
      Device mode:                Absolute
      Number axes:                2
	Axis 1
	  Minimum value:          0
	  Maximum value:          1280
	  Resolution:             200
	Axis 2
	  Minimum value:          0
	  Maximum value:          1024
	  Resolution:             200
  Physical layout:                n/a
  Device manufacturer:            n/a
  Notes:  The virtual_pointer allows multiple physical devices to "push"
    a single logical pointer.  The virtual pointer is an SGI feature.

SGI Mouse:
  
  Device type:                    MOUSE
  Device name:                    mouse
  Classes:                        2
    ButtonClass
      Number buttons:             3
    ValuatorClass
      Device mode:                Absolute
      Number axes:                2
	Axis 1
	  Minimum value:          0
	  Maximum value:          65000
	  Resolution:             200
	Axis 2
	  Minimum value:          0
	  Maximum value:          65000
	  Resolution:             200
  Physical layout:
    
    +-------------+
    |             |
    | [1] [2] [3] |  <---  Buttons on mouse w/ button numbers.
    |             |
    |             |
    |             |
    |             |
    +-------------+

    Axis 1 is for mouse motion in X axis (left & right)
    Axis 2 is for mouse motion in Y axis (top & bottom)

  Device manufacturer:            SGI


