# phpman > man > inputtestdrv(4)

[INPUTTEST(4)](https://www.chedong.com/phpMan.php/man/INPUTTEST/4/markdown)                          Kernel Interfaces Manual                          [INPUTTEST(4)](https://www.chedong.com/phpMan.php/man/INPUTTEST/4/markdown)



## NAME
       inputtest - An X.Org input driver for testing

## SYNOPSIS
### Section "InputDevice"
         **Identifier** **"**_devname_**"**
         **Driver** **"inputtest"**
         **Option** **"SocketPath"**   **"**_path_**"**
         ...
### EndSection


## DESCRIPTION
       **inputtest**  is an Xorg input driver that passes events received over a socket on to the server
       as input events. It supports the full set of the xf86 driver APIs exposed by Xorg.  The  pri‐
       mary use cases of this input driver are various integration tests that need to interface with
       the input subsystem.


## CONFIGURATION DETAILS
       Please refer to [xorg.conf(5)](https://www.chedong.com/phpMan.php/man/xorg.conf/5/markdown) for general configuration details and for options  that  can  be
       used with all input drivers.  This section only covers configuration details specific to this
       driver.

       External process can communicate with the input driver via a named socket that is created af‐
       ter the driver is initialized. The paths to the socket is passed via input driver options.

       The following driver **Options** are supported:

       **Option** **"SocketPath"** **"**_string_**"**
              Sets  the  path where the driver will create a named socket. Any existing file at that
              location will be removed.

       **Option** **"DeviceType"** **"**_string_**"**
              Sets the type of the device to be emulated.

              **Keyboard** Initializes a keyboard device.

              **Pointer** Initializes a relative-mode pointer device. It will have four  valuators  -  a
              "Rel X" valuator at axis 0 and a "Rel Y" valuator at axis 1.  A horizontal scroll val‐
              uator will be set up at axis 2.  A vertical scroll valuator will be set up at axis 3.

              **PointerAbsolute** Initializes an absolute-mode pointer device. It will have four  valua‐
              tors  - an "Abs X" valuator at axis 0 and an "Abs Y" valuator at axis 1.  A horizontal
              scroll valuator will be set up at axis 2.  A vertical scroll valuator will be  set  up
              at axis 3.

              **PointerAbsoluteProximity**  Initializes  an  absolute-mode pointer device with proximity
              support.  The valuators are initialized in the same way as for **PointerAbsolute** type.

              **Touch** Initializes a touch device.  It will have 5 valuators: an "Abs MT Position X" at
              axis  0,  an  "Abs  MT Position Y" valuator at axis 1, a horizontal scroll valuator on
              axis 2, a vertical scroll valuator on axis 3 and an "Abs MT Pressure" valuator at axis
              4.

       **Option** **"TouchCount"** **"**_int_**"**
              Sets the maximum number of simultaneous touches for touch devices.

       **Option** **"PointerButtonCount"** **"**_int_**"**
              Sets the maximum number of buttons in pointer devices.

       **Option** **"PointerHasPressure"** **"**_bool_**"**
              Selects whether "Abs Pressure" is available at the axis 4 in pointer devices.


## INTERFACE WITH THE DRIVER
       The  communication  with  the  driver  is a binary protocol defined in include/xf86-input-in‐
       puttest-protocol.h

       At the beginning, the client process that communicates with the driver must  connect  to  the
       socket  that  is created by the driver at SocketPath.  Once the connection is established, it
       must write a xf86ITEventClientVersion event and read a  xf86ITResponseServerVersion  response
       where  the  driver  specifies  the protocol version supported by it. If this version is lower
       than requested by the client, then the driver will disconnect.

       After receiving xf86ITResponseServerVersion message the client may send events to the driver.
       Each  event  is  an instance of one of the **xf86ITEvent*** structs. The length field defines the
       full length of the struct in bytes and the event field defines the type of the struct.

       The responses from the server follow the same structure. Each response is an instance of  one
       of  the  **xf86ITResponse***  structs.  The length field defines the full length of the struct in
       bytes and the event field defines the type of the struct.

       The synchronization with Xorg is performed via **xf86ITEventWaitForSync**  event.  After  sending
       such  event,  the  client must read of a **xf86ITResponseSyncFinished**_event_**from**_the_**socket**_without__‐
       **sending**_additional_ events. The completion of the read operation indicates that Xorg has  fully
       processed all input events sent to it so far.


## AUTHORS
       Povilas Kanapickas <<povilas@radix.lt>>

## SEE ALSO
       [Xorg(1)](https://www.chedong.com/phpMan.php/man/Xorg/1/markdown), [xorg.conf(5)](https://www.chedong.com/phpMan.php/man/xorg.conf/5/markdown), [Xserver(1)](https://www.chedong.com/phpMan.php/man/Xserver/1/markdown), [X(7)](https://www.chedong.com/phpMan.php/man/X/7/markdown)



X Version 11                             xorg-server 21.1.4                             [INPUTTEST(4)](https://www.chedong.com/phpMan.php/man/INPUTTEST/4/markdown)
