Provided by: linuxcnc-uspace_2.9.4-2ubuntu1_amd64 bug

NAME

       hal_input - control HAL pins with any Linux input device, including USB HID devices

SYNOPSIS

       loadusr hal_input [-KRAL] inputspec ...

DESCRIPTION

       hal_input  is  an  interface between HAL and any Linux input device, including USB HID devices.  For each
       device named, hal_input creates pins corresponding to its keys, absolute axes, and LEDs.  At a fixed rate
       of approximately 10ms, it synchronizes the device and the HAL pins.

INPUT SPECIFICATION

       The inputspec may be in one of several forms:

       A string S
              A substring or shell-style pattern match will be tested against the  "name"  of  the  device,  the
              "phys" (which gives information about how it is connected), and the "id", which is a string of the
              form  "Bus=...  Vendor=...  Product=...   Version=...".   You  can  view the name, phys, and id of
              attached devices by executing less /proc/bus/input/devices.  Examples:
                   SpaceBall
                   "Vendor=001f Product=0001"
                   serio*/input0

       A number N
              This opens /dev/input/eventN.  Except for devices that are always attached  to  the  system,  this
              number  may  change over reboots or when the device is removed.  For this reason, using an integer
              is not recommended.

       When several devices are identified by the same string, add ":N" where N is  the  index  of  the  desired
       device.   For  example,  if  Mouse  matches  input3  and  input10,  then Mouse and Mouse:0 select input3.
       Specifying mouse:1 selects input10.

       For devices that appear as multiple entries in /dev/input, these indices are  likely  to  stay  the  same
       every  time.   For multiple identical devices, these indices are likely to depend on the insertion order,
       but stay the same across reboots as long as the devices are not moved to  different  ports  or  unplugged
       while the machine is booted.

       If the first character of the inputspec is a "+", then hal_input requests exclusive access to the device.
       The first device matching an inputspec is used.  Any number of inputspecs may be used.

       A  subset  option  may precede each inputspec.  The subset option begins with a dash.  Each letter in the
       subset option specifies a device feature to include.  Features that are not specified are excluded.   For
       instance, to export keyboard LEDs to HAL without exporting keys, use
                   hal_input -L keyboard ...

DEVICE FEATURES SUPPORTED

       •   EV_KEY (buttons and keys).  Subset -K

       •   EV_ABS (absolute analog inputs).  Subset -A

       •   EV_REL (relative analog inputs).  Subset -R

       •   EV_LED (LED outputs).  Subset -L

HAL PINS AND PARAMETERS

   For buttons
       input.N.btn-name bit out
       input.N.btn-name-not bit out
              Created for each button on the device.

   For keys
       input.N.key-name
       input.N.key-name-not
              Created for each key on the device.

   For absolute axes
       input.N.abs-name-counts s32 out
       input.N.abs-name-position float out
       input.N.abs-name-scale parameter float rw
       input.N.abs-name-offset parameter float rw
       input.N.abs-name-fuzz parameter s32 rw
       input.N.abs-name-flat parameter s32 rw
       input.N.abs-name-min parameter s32 r
       input.N.abs-name-max parameter s32 r
              Created  for  each  absolute  axis on the device.  Device positions closer than flat to offset are
              reported as offset in counts, and counts does not change until the device position changes  by  at
              least  fuzz.  The position is computed as position = (counts - offset) / scale.  The default value
              of scale and offset map the range of the axis reported by the operating  system  to  [-1,1].   The
              default values of fuzz and flat are those reported by the operating system.  The values of min and
              max are those reported by the operating system.

   For relative axes
       input.N.rel-name-counts s32 out
       input.N.rel-name-position float out
       input.N.rel-name-reset bit in
       input.N.rel-name-scale parameter float rw
       input.N.rel-name-absolute parameter s32 rw
       input.N.rel-name-precision parameter s32 rw
       input.N.rel-name-last parameter s32 rw
              Created  for  each relative axis on the device.  As long as reset is true, counts is reset to zero
              regardless of any past or  current  axis  movement.   Otherwise,  counts  increases  or  decreases
              according  to  the motion of the axis.  counts is divided by position-scale to give position.  The
              default value of position is 1.  There are some  devices,  notably  scroll  wheels,  which  return
              signed values with less resolution than 32 bits.  The default value of precision is 32.  precision
              can  be  set  to 8 for a device that returns signed 8 bit values, or any other value from 1 to 32.
              absolute, when set true, ignores duplicate events with the same value.  This  allows  for  devices
              that  repeat  events  without any user action to work correctly.  last shows the most recent count
              value returned by the device, and is used in the implementation of absolute.

   For LEDs
       input.N.led-name bit out
       input.N.led-name-invert parameter bit rw
              Created for each LED on the device.

PERMISSIONS AND UDEV

       By default, the input devices may not be  accessible  to  regular  users--hal_input  requires  read-write
       access, even if the device has no outputs.

       Different  versions  of  udev have slightly different, incompatible syntaxes.  For this reason, it is not
       possible for this manual page to give an accurate example.  The udev(7) manual page documents the  syntax
       used on your Linux distribution.  To view it in a terminal, the command is man 7 udev.

BUGS

       The  initial  state  of  keys, buttons, and absolute axes are erroneously reported as FALSE or 0 until an
       event is received for that key, button, or axis.

SEE ALSO

       udev(8), udev(7)

LinuxCNC Documentation                             2007-02-25                                       HAL_INPUT(1)