# lv_indev.h (/api/indev/lv_indev_h)



<RelatedHeaders name="lv_indev_private.h" isPrivate="false" />

<ApiSummary functions="54" enums="4" structs="1" typedefs="2" />

Functions [#functions]

<ApiTabs items="[&#x22;Setters (17)&#x22;,&#x22;Getters (22)&#x22;,&#x22;Other (15)&#x22;]">
  <ApiTab value="Setters (17)">
    <ApiMember kind="function" name="lv_indev_set_type" file="indev/lv_indev.h" line="138" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L138">
      lv_indev_set_type [#lv_indev_set_type]

      Set the type of an input device

      ```c title=" " lineNumbers=1
      void lv_indev_set_type(lv_indev_t *indev, lv_indev_type_t indev_type)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name         | Type                                                 | Description                                                               |
      | ------------ | ---------------------------------------------------- | ------------------------------------------------------------------------- |
      | `indev`      | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                                                |
      | `indev_type` | <ApiLink name="lv_indev_type_t" />                   | the type of the input device from `lv_indev_type_t` (`LV_INDEV_TYPE_...`) |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_read_cb" file="indev/lv_indev.h" line="145" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L145">
      lv_indev_set_read_cb [#lv_indev_set_read_cb]

      Set a callback function to read input device data to the indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_read_cb(lv_indev_t *indev, lv_indev_read_cb_t read_cb)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name      | Type                                                 | Description                                            |
      | --------- | ---------------------------------------------------- | ------------------------------------------------------ |
      | `indev`   | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                             |
      | `read_cb` | <ApiLink name="lv_indev_read_cb_t" />                | pointer to callback function to read input device data |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_user_data" file="indev/lv_indev.h" line="152" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L152">
      lv_indev_set_user_data [#lv_indev_set_user_data]

      Set user data to the indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_user_data(lv_indev_t *indev, void *user_data)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name        | Type                                                 | Description                |
      | ----------- | ---------------------------------------------------- | -------------------------- |
      | `indev`     | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
      | `user_data` | `void *`                                             | pointer to user data       |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_driver_data" file="indev/lv_indev.h" line="159" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L159">
      lv_indev_set_driver_data [#lv_indev_set_driver_data]

      Set driver data to the indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_driver_data(lv_indev_t *indev, void *driver_data)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name          | Type                                                 | Description                |
      | ------------- | ---------------------------------------------------- | -------------------------- |
      | `indev`       | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
      | `driver_data` | `void *`                                             | pointer to driver data     |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_display" file="indev/lv_indev.h" line="166" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L166">
      lv_indev_set_display [#lv_indev_set_display]

      Assign a display to the indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_display(lv_indev_t *indev, struct _lv_display_t *disp)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                              | Description                |
      | ------- | ----------------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" />              | pointer to an input device |
      | `disp`  | <ApiLink name="_lv_display_t" display="struct _lv_display_t *" /> | pointer to an display      |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_long_press_time" file="indev/lv_indev.h" line="173" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L173">
      lv_indev_set_long_press_time [#lv_indev_set_long_press_time]

      Set long press time to indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_long_press_time(lv_indev_t *indev, uint16_t long_press_time)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name              | Type                                                 | Description                |
      | ----------------- | ---------------------------------------------------- | -------------------------- |
      | `indev`           | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to input device    |
      | `long_press_time` | <ApiLink name="uint16_t" />                          | time long press time in ms |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_long_press_repeat_time" file="indev/lv_indev.h" line="180" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L180">
      lv_indev_set_long_press_repeat_time [#lv_indev_set_long_press_repeat_time]

      Set long press repeat time to indev

      ```c title=" " lineNumbers=1
      void lv_indev_set_long_press_repeat_time(lv_indev_t *indev, uint16_t long_press_repeat_time)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name                     | Type                                                 | Description                  |
      | ------------------------ | ---------------------------------------------------- | ---------------------------- |
      | `indev`                  | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to input device      |
      | `long_press_repeat_time` | <ApiLink name="uint16_t" />                          | long press repeat time in ms |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_scroll_limit" file="indev/lv_indev.h" line="187" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L187">
      lv_indev_set_scroll_limit [#lv_indev_set_scroll_limit]

      Set scroll limit to the input device

      ```c title=" " lineNumbers=1
      void lv_indev_set_scroll_limit(lv_indev_t *indev, uint8_t scroll_limit)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name           | Type                                                 | Description                                                   |
      | -------------- | ---------------------------------------------------- | ------------------------------------------------------------- |
      | `indev`        | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                                    |
      | `scroll_limit` | <ApiLink name="uint8_t" />                           | the number of pixels to slide before actually drag the object |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_scroll_throw" file="indev/lv_indev.h" line="194" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L194">
      lv_indev_set_scroll_throw [#lv_indev_set_scroll_throw]

      Set scroll throw slow-down to the indev. Greater value means faster slow-down

      ```c title=" " lineNumbers=1
      void lv_indev_set_scroll_throw(lv_indev_t *indev, uint8_t scroll_throw)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name           | Type                                                 | Description                |
      | -------------- | ---------------------------------------------------- | -------------------------- |
      | `indev`        | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
      | `scroll_throw` | <ApiLink name="uint8_t" />                           | the slow-down in \[%]      |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_gesture_min_velocity" file="indev/lv_indev.h" line="204" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L204">
      lv_indev_set_gesture_min_velocity [#lv_indev_set_gesture_min_velocity]

      Set the minimum velocity threshold for gesture detection. The difference between consecutive points must exceed this value (in pixels) for the movement to be considered fast enough to trigger a gesture.

      ```c title=" " lineNumbers=1
      void lv_indev_set_gesture_min_velocity(lv_indev_t *indev, uint8_t min_velocity)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name           | Type                                                 | Description                                       |
      | -------------- | ---------------------------------------------------- | ------------------------------------------------- |
      | `indev`        | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                        |
      | `min_velocity` | <ApiLink name="uint8_t" />                           | minimum velocity threshold in pixels (default: 3) |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_gesture_min_distance" file="indev/lv_indev.h" line="215" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L215">
      lv_indev_set_gesture_min_distance [#lv_indev_set_gesture_min_distance]

      Set the minimum distance threshold for gesture detection. The total distance from the first point to the current point must exceed this value (in pixels) for the movement to be considered large enough to trigger a gesture.

      ```c title=" " lineNumbers=1
      void lv_indev_set_gesture_min_distance(lv_indev_t *indev, uint8_t min_distance)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name           | Type                                                 | Description                                        |
      | -------------- | ---------------------------------------------------- | -------------------------------------------------- |
      | `indev`        | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                         |
      | `min_distance` | <ApiLink name="uint8_t" />                           | minimum distance threshold in pixels (default: 50) |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_cursor" file="indev/lv_indev.h" line="298" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L298">
      lv_indev_set_cursor [#lv_indev_set_cursor]

      Set a cursor for a pointer input device (for LV\_INPUT\_TYPE\_POINTER and LV\_INPUT\_TYPE\_BUTTON)

      ```c title=" " lineNumbers=1
      void lv_indev_set_cursor(lv_indev_t *indev, lv_obj_t *cur_obj)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name      | Type                                                 | Description                               |
      | --------- | ---------------------------------------------------- | ----------------------------------------- |
      | `indev`   | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device                |
      | `cur_obj` | <ApiLink name="lv_obj_t" display="lv_obj_t *" />     | pointer to an object to be used as cursor |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_group" file="indev/lv_indev.h" line="305" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L305">
      lv_indev_set_group [#lv_indev_set_group]

      Set a destination group for a keypad input device (for LV\_INDEV\_TYPE\_KEYPAD)

      ```c title=" " lineNumbers=1
      void lv_indev_set_group(lv_indev_t *indev, lv_group_t *group)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
      | `group` | <ApiLink name="lv_group_t" display="lv_group_t *" /> | pointer to a group         |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_button_points" file="indev/lv_indev.h" line="313" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L313">
      lv_indev_set_button_points [#lv_indev_set_button_points]

      Set the an array of points for LV\_INDEV\_TYPE\_BUTTON. These points will be assigned to the buttons to press a specific point on the screen

      ```c title=" " lineNumbers=1
      void lv_indev_set_button_points(lv_indev_t *indev, const lv_point_t points[])
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name     | Type                                                     | Description                |
      | -------- | -------------------------------------------------------- | -------------------------- |
      | `indev`  | <ApiLink name="lv_indev_t" display="lv_indev_t *" />     | pointer to an input device |
      | `points` | <ApiLink name="lv_point_t" display="const lv_point_t" /> | array of points            |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_mode" file="indev/lv_indev.h" line="402" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L402">
      lv_indev_set_mode [#lv_indev_set_mode]

      Set the input device's event model: event-driven mode or timer mode.

      ```c title=" " lineNumbers=1
      void lv_indev_set_mode(lv_indev_t *indev, lv_indev_mode_t mode)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
      | `mode`  | <ApiLink name="lv_indev_mode_t" />                   | the mode of input device   |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_key_remap_cb" file="indev/lv_indev.h" line="476" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L476">
      lv_indev_set_key_remap_cb [#lv_indev_set_key_remap_cb]

      Set key remapping callback (LV\_INDEV\_TYPE\_KEYPAD)

      ```c title=" " lineNumbers=1
      void lv_indev_set_key_remap_cb(lv_indev_t *indev, lv_indev_key_remap_cb_t remap_cb)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name       | Type                                                 | Description                                                |
      | ---------- | ---------------------------------------------------- | ---------------------------------------------------------- |
      | `indev`    | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev                                        |
      | `remap_cb` | <ApiLink name="lv_indev_key_remap_cb_t" />           | remapping function callback. Use NULL to disable callback. |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_set_external_data" file="indev/lv_indev.h" line="491" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L491">
      lv_indev_set_external_data [#lv_indev_set_external_data]

      Attaches external user data and destructor callback to an indev.

      Associates custom user data with an LVGL indev and specifies a destructor function that will be automatically invoked when the indev is deleted to properly clean up the associated resources.

      ```c title=" " lineNumbers=1
      void lv_indev_set_external_data(lv_indev_t *indev, void *data, void(*free_cb)(void *data))
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name      | Type                                                 | Description                                                                                                                         |
      | --------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
      | `indev`   | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | Pointer to an indev                                                                                                                 |
      | `data`    | `void *`                                             | User-defined data pointer to associate with the indev                                                                               |
      | `free_cb` | `void(*)(void *data)`                                | Callback function for cleaning up ext\_data when indev is deleted. Receives ext\_data as parameter. NULL means no cleanup required. |
    </ApiMember>
  </ApiTab>

  <ApiTab value="Getters (22)">
    <ApiMember kind="function" name="lv_indev_get_next" file="indev/lv_indev.h" line="105" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L105">
      lv_indev_get_next [#lv_indev_get_next]

      Get the next input device.

      ```c title=" " lineNumbers=1
      lv_indev_t * lv_indev_get_next(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                                              |
      | ------- | ---------------------------------------------------- | -------------------------------------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to the current input device. NULL to initialize. |

      **Returns:** <ApiLink name="lv_indev_t" display="lv_indev_t *" /> — the next input device or NULL if there are no more. Provide the first input device when the parameter is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_type" file="indev/lv_indev.h" line="222" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L222">
      lv_indev_get_type [#lv_indev_get_type]

      Get the type of an input device

      ```c title=" " lineNumbers=1
      lv_indev_type_t lv_indev_get_type(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_indev_type_t" /> — the type of the input device from `lv_hal_indev_type_t` (`LV_INDEV_TYPE_...`)
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_read_cb" file="indev/lv_indev.h" line="229" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L229">
      lv_indev_get_read_cb [#lv_indev_get_read_cb]

      Get the callback function to read input device data to the indev

      ```c title=" " lineNumbers=1
      lv_indev_read_cb_t lv_indev_get_read_cb(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_indev_read_cb_t" /> — Pointer to callback function to read input device data or NULL if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_state" file="indev/lv_indev.h" line="236" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L236">
      lv_indev_get_state [#lv_indev_get_state]

      Get the indev state

      ```c title=" " lineNumbers=1
      lv_indev_state_t lv_indev_get_state(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_indev_state_t" /> — Indev state or LV\_INDEV\_STATE\_RELEASED if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_group" file="indev/lv_indev.h" line="243" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L243">
      lv_indev_get_group [#lv_indev_get_group]

      Get the indev assigned group

      ```c title=" " lineNumbers=1
      lv_group_t * lv_indev_get_group(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_group_t" display="lv_group_t *" /> — Pointer to indev assigned group or NULL if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_display" file="indev/lv_indev.h" line="250" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L250">
      lv_indev_get_display [#lv_indev_get_display]

      Get a pointer to the assigned display of the indev

      ```c title=" " lineNumbers=1
      lv_display_t * lv_indev_get_display(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_display_t" display="lv_display_t *" /> — pointer to the assigned display or NULL if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_user_data" file="indev/lv_indev.h" line="257" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L257">
      lv_indev_get_user_data [#lv_indev_get_user_data]

      Get a pointer to the user data of the indev

      ```c title=" " lineNumbers=1
      void * lv_indev_get_user_data(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** `void *` — pointer to the user data or NULL if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_driver_data" file="indev/lv_indev.h" line="264" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L264">
      lv_indev_get_driver_data [#lv_indev_get_driver_data]

      Get a pointer to the driver data of the indev

      ```c title=" " lineNumbers=1
      void * lv_indev_get_driver_data(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** `void *` — pointer to the driver data or NULL if indev is NULL
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_press_moved" file="indev/lv_indev.h" line="271" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L271">
      lv_indev_get_press_moved [#lv_indev_get_press_moved]

      Get whether indev is moved while pressed

      ```c title=" " lineNumbers=1
      bool lv_indev_get_press_moved(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="bool" /> — true: indev is moved while pressed; false: indev is not moved while pressed
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_point" file="indev/lv_indev.h" line="320" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L320">
      lv_indev_get_point [#lv_indev_get_point]

      Get the last point of an input device (for LV\_INDEV\_TYPE\_POINTER and LV\_INDEV\_TYPE\_BUTTON)

      ```c title=" " lineNumbers=1
      void lv_indev_get_point(const lv_indev_t *indev, lv_point_t *point)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                            |
      | ------- | ---------------------------------------------------------- | -------------------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device             |
      | `point` | <ApiLink name="lv_point_t" display="lv_point_t *" />       | pointer to a point to store the result |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_gesture_dir" file="indev/lv_indev.h" line="327" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L327">
      lv_indev_get_gesture_dir [#lv_indev_get_gesture_dir]

      Get the current gesture direct

      ```c title=" " lineNumbers=1
      lv_dir_t lv_indev_get_gesture_dir(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_dir_t" /> — current gesture direct
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_key" file="indev/lv_indev.h" line="334" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L334">
      lv_indev_get_key [#lv_indev_get_key]

      Get the last pressed key of an input device (for LV\_INDEV\_TYPE\_KEYPAD)

      ```c title=" " lineNumbers=1
      uint32_t lv_indev_get_key(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="uint32_t" /> — the last pressed key (0 on error)
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_short_click_streak" file="indev/lv_indev.h" line="343" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L343">
      lv_indev_get_short_click_streak [#lv_indev_get_short_click_streak]

      Get the counter for consecutive clicks within a short distance and time. The counter is updated before LV\_EVENT\_SHORT\_CLICKED is fired.

      ```c title=" " lineNumbers=1
      uint8_t lv_indev_get_short_click_streak(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="uint8_t" /> — short click streak counter
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_scroll_dir" file="indev/lv_indev.h" line="352" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L352">
      lv_indev_get_scroll_dir [#lv_indev_get_scroll_dir]

      Check the current scroll direction of an input device (for LV\_INDEV\_TYPE\_POINTER and LV\_INDEV\_TYPE\_BUTTON)

      ```c title=" " lineNumbers=1
      lv_dir_t lv_indev_get_scroll_dir(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_dir_t" /> — LV\_DIR\_NONE: no scrolling now LV\_DIR\_HOR/VER
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_scroll_obj" file="indev/lv_indev.h" line="360" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L360">
      lv_indev_get_scroll_obj [#lv_indev_get_scroll_obj]

      Get the currently scrolled object (for LV\_INDEV\_TYPE\_POINTER and LV\_INDEV\_TYPE\_BUTTON)

      ```c title=" " lineNumbers=1
      lv_obj_t * lv_indev_get_scroll_obj(const lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                |
      | ------- | ---------------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_obj_t" display="lv_obj_t *" /> — pointer to the currently scrolled object or NULL if no scrolling by this indev
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_vect" file="indev/lv_indev.h" line="368" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L368">
      lv_indev_get_vect [#lv_indev_get_vect]

      Get the movement vector of an input device (for LV\_INDEV\_TYPE\_POINTER and LV\_INDEV\_TYPE\_BUTTON)

      ```c title=" " lineNumbers=1
      void lv_indev_get_vect(const lv_indev_t *indev, lv_point_t *point)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                       | Description                                          |
      | ------- | ---------------------------------------------------------- | ---------------------------------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="const lv_indev_t *" /> | pointer to an input device                           |
      | `point` | <ApiLink name="lv_point_t" display="lv_point_t *" />       | pointer to a point to store the types.pointer.vector |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_cursor" file="indev/lv_indev.h" line="375" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L375">
      lv_indev_get_cursor [#lv_indev_get_cursor]

      Get the cursor object of an input device (for LV\_INDEV\_TYPE\_POINTER only)

      ```c title=" " lineNumbers=1
      lv_obj_t * lv_indev_get_cursor(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_obj_t" display="lv_obj_t *" /> — pointer to the cursor object
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_active_obj" file="indev/lv_indev.h" line="387" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L387">
      lv_indev_get_active_obj [#lv_indev_get_active_obj]

      Gets a pointer to the currently active object in the currently processed input device.

      ```c title=" " lineNumbers=1
      lv_obj_t * lv_indev_get_active_obj(void)
      ```

      **Returns:** <ApiLink name="lv_obj_t" display="lv_obj_t *" /> — pointer to currently active object or NULL if no active object
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_read_timer" file="indev/lv_indev.h" line="395" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L395">
      lv_indev_get_read_timer [#lv_indev_get_read_timer]

      Get a pointer to the indev read timer to modify its parameters with `lv_timer_...` functions.

      ```c title=" " lineNumbers=1
      lv_timer_t * lv_indev_get_read_timer(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_timer_t" display="lv_timer_t *" /> — pointer to the indev read refresher timer. (NULL on error)
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_mode" file="indev/lv_indev.h" line="409" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L409">
      lv_indev_get_mode [#lv_indev_get_mode]

      Get the input device's running mode.

      ```c title=" " lineNumbers=1
      lv_indev_mode_t lv_indev_get_mode(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |

      **Returns:** <ApiLink name="lv_indev_mode_t" /> — the running mode for the specified input device.
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_event_count" file="indev/lv_indev.h" line="435" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L435">
      lv_indev_get_event_count [#lv_indev_get_event_count]

      Get the number of event attached to an indev

      ```c title=" " lineNumbers=1
      uint32_t lv_indev_get_event_count(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description         |
      | ------- | ---------------------------------------------------- | ------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev |

      **Returns:** <ApiLink name="uint32_t" /> — number of events
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_get_event_dsc" file="indev/lv_indev.h" line="443" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L443">
      lv_indev_get_event_dsc [#lv_indev_get_event_dsc]

      Get an event descriptor for an event

      ```c title=" " lineNumbers=1
      lv_event_dsc_t * lv_indev_get_event_dsc(lv_indev_t *indev, uint32_t index)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description            |
      | ------- | ---------------------------------------------------- | ---------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev    |
      | `index` | <ApiLink name="uint32_t" />                          | the index of the event |

      **Returns:** <ApiLink name="lv_event_dsc_t" display="lv_event_dsc_t *" /> — the event descriptor
    </ApiMember>
  </ApiTab>

  <ApiTab value="Other (15)">
    <ApiMember kind="function" name="lv_indev_create" file="indev/lv_indev.h" line="91" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L91">
      lv_indev_create [#lv_indev_create]

      Create an indev

      ```c title=" " lineNumbers=1
      lv_indev_t * lv_indev_create(void)
      ```

      **Returns:** <ApiLink name="lv_indev_t" display="lv_indev_t *" /> — Pointer to the created indev or NULL when allocation failed
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_delete" file="indev/lv_indev.h" line="97" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L97">
      lv_indev_delete [#lv_indev_delete]

      Remove the provided input device. Make sure not to use the provided input device afterwards anymore.

      ```c title=" " lineNumbers=1
      void lv_indev_delete(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description       |
      | ------- | ---------------------------------------------------- | ----------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to delete |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_read" file="indev/lv_indev.h" line="111" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L111">
      lv_indev_read [#lv_indev_read]

      Read data from an input device.

      ```c title=" " lineNumbers=1
      void lv_indev_read(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_read_timer_cb" file="indev/lv_indev.h" line="117" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L117">
      lv_indev_read_timer_cb [#lv_indev_read_timer_cb]

      Called periodically to read the input devices

      ```c title=" " lineNumbers=1
      void lv_indev_read_timer_cb(lv_timer_t *timer)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `timer` | <ApiLink name="lv_timer_t" display="lv_timer_t *" /> | pointer to a timer to read |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_enable" file="indev/lv_indev.h" line="124" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L124">
      lv_indev_enable [#lv_indev_enable]

      Enable or disable one or all input devices (default enabled)

      ```c title=" " lineNumbers=1
      void lv_indev_enable(lv_indev_t *indev, bool enable)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name     | Type                                                 | Description                                                      |
      | -------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
      | `indev`  | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device or NULL to enable/disable all of them |
      | `enable` | <ApiLink name="bool" />                              | true to enable, false to disable                                 |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_active" file="indev/lv_indev.h" line="131" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L131">
      lv_indev_active [#lv_indev_active]

      Get the currently processed input device. Can be used in action functions too.

      ```c title=" " lineNumbers=1
      lv_indev_t * lv_indev_active(void)
      ```

      **Returns:** <ApiLink name="lv_indev_t" display="lv_indev_t *" /> — pointer to the currently processed input device or NULL if no input device processing right now
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_reset" file="indev/lv_indev.h" line="278" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L278">
      lv_indev_reset [#lv_indev_reset]

      Reset one or all input devices

      ```c title=" " lineNumbers=1
      void lv_indev_reset(lv_indev_t *indev, lv_obj_t *obj)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                                                      |
      | ------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device to reset or NULL to reset all of them |
      | `obj`   | <ApiLink name="lv_obj_t" display="lv_obj_t *" />     | pointer to an object which triggers the reset.                   |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_stop_processing" file="indev/lv_indev.h" line="285" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L285">
      lv_indev_stop_processing [#lv_indev_stop_processing]

      Touch and key related events are sent to the input device first and to the widget after that. If this functions called in an indev event, the event won't be sent to the widget.

      ```c title=" " lineNumbers=1
      void lv_indev_stop_processing(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_reset_long_press" file="indev/lv_indev.h" line="291" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L291">
      lv_indev_reset_long_press [#lv_indev_reset_long_press]

      Reset the long press state of an input device

      ```c title=" " lineNumbers=1
      void lv_indev_reset_long_press(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_wait_release" file="indev/lv_indev.h" line="381" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L381">
      lv_indev_wait_release [#lv_indev_wait_release]

      Do nothing until the next release

      ```c title=" " lineNumbers=1
      void lv_indev_wait_release(lv_indev_t *indev)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                |
      | ------- | ---------------------------------------------------- | -------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an input device |
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_search_obj" file="indev/lv_indev.h" line="417" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L417">
      lv_indev_search_obj [#lv_indev_search_obj]

      Search the most top, clickable object by a point

      ```c title=" " lineNumbers=1
      lv_obj_t * lv_indev_search_obj(lv_obj_t *obj, lv_point_t *point)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                                         |
      | ------- | ---------------------------------------------------- | --------------------------------------------------- |
      | `obj`   | <ApiLink name="lv_obj_t" display="lv_obj_t *" />     | pointer to a start object, typically the screen     |
      | `point` | <ApiLink name="lv_point_t" display="lv_point_t *" /> | pointer to a point for searching the most top child |

      **Returns:** <ApiLink name="lv_obj_t" display="lv_obj_t *" /> — pointer to the found object or NULL if there was no suitable object
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_add_event_cb" file="indev/lv_indev.h" line="427" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L427">
      lv_indev_add_event_cb [#lv_indev_add_event_cb]

      Add an event handler to the indev

      ```c title=" " lineNumbers=1
      lv_event_dsc_t * lv_indev_add_event_cb(lv_indev_t *indev, lv_event_cb_t event_cb, lv_event_code_t filter, void *user_data)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name        | Type                                                 | Description                           |
      | ----------- | ---------------------------------------------------- | ------------------------------------- |
      | `indev`     | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev                   |
      | `event_cb`  | <ApiLink name="lv_event_cb_t" />                     | an event callback                     |
      | `filter`    | <ApiLink name="lv_event_code_t" />                   | event code to react or `LV_EVENT_ALL` |
      | `user_data` | `void *`                                             | optional user\_data                   |

      **Returns:** <ApiLink name="lv_event_dsc_t" display="lv_event_dsc_t *" /> — the event descriptor or NULL if the event couldn't be created
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_remove_event" file="indev/lv_indev.h" line="451" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L451">
      lv_indev_remove_event [#lv_indev_remove_event]

      Remove an event

      ```c title=" " lineNumbers=1
      bool lv_indev_remove_event(lv_indev_t *indev, uint32_t index)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                      |
      | ------- | ---------------------------------------------------- | -------------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev              |
      | `index` | <ApiLink name="uint32_t" />                          | the index of the event to remove |

      **Returns:** <ApiLink name="bool" /> — true: and event was removed; false: no event was removed
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_remove_event_cb_with_user_data" file="indev/lv_indev.h" line="460" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L460">
      lv_indev_remove_event_cb_with_user_data [#lv_indev_remove_event_cb_with_user_data]

      Remove an event\_cb with user\_data

      ```c title=" " lineNumbers=1
      uint32_t lv_indev_remove_event_cb_with_user_data(lv_indev_t *indev, lv_event_cb_t event_cb, void *user_data)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name        | Type                                                 | Description                          |
      | ----------- | ---------------------------------------------------- | ------------------------------------ |
      | `indev`     | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to a indev                   |
      | `event_cb`  | <ApiLink name="lv_event_cb_t" />                     | the event\_cb of the event to remove |
      | `user_data` | `void *`                                             | user\_data                           |

      **Returns:** <ApiLink name="uint32_t" /> — the count of the event removed
    </ApiMember>

    <ApiMember kind="function" name="lv_indev_send_event" file="indev/lv_indev.h" line="469" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L469">
      lv_indev_send_event [#lv_indev_send_event]

      Send an event to an indev

      ```c title=" " lineNumbers=1
      lv_result_t lv_indev_send_event(lv_indev_t *indev, lv_event_code_t code, void *param)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name    | Type                                                 | Description                   |
      | ------- | ---------------------------------------------------- | ----------------------------- |
      | `indev` | <ApiLink name="lv_indev_t" display="lv_indev_t *" /> | pointer to an indev           |
      | `code`  | <ApiLink name="lv_event_code_t" />                   | an event code. LV\_EVENT\_... |
      | `param` | `void *`                                             | optional param                |

      **Returns:** <ApiLink name="lv_result_t" /> — LV\_RESULT\_OK: indev wasn't deleted in the event.
    </ApiMember>
  </ApiTab>
</ApiTabs>

Enums [#enums]

<ApiMember kind="enum" name="lv_indev_type_t" file="indev/lv_indev.h" line="30" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L30">
  lv_indev_type_t [#lv_indev_type_t]

  Possible input device types

  | Name                    | Description                                                                    |
  | ----------------------- | ------------------------------------------------------------------------------ |
  | `LV_INDEV_TYPE_NONE`    | Uninitialized state                                                            |
  | `LV_INDEV_TYPE_POINTER` | Touch pad, mouse, external button                                              |
  | `LV_INDEV_TYPE_KEYPAD`  | Keypad or keyboard                                                             |
  | `LV_INDEV_TYPE_BUTTON`  | External (hardware button) which is assigned to a specific point of the screen |
  | `LV_INDEV_TYPE_ENCODER` | Encoder with only Left, Right turn and a Button                                |
</ApiMember>

<TypeUsedBy name="lv_indev_type_t" count="6">
  * `lv_test_indev_get_indev` — param `type`
  * `lv_test_indev_get_gesture_indev` — param `type`
  * `lv_evdev_create` — param `indev_type`
  * `lv_evdev_create_fd` — param `indev_type`
  * `lv_libinput_create` — param `indev_type`
  * `lv_indev_set_type` — param `indev_type`
</TypeUsedBy>

<ApiMember kind="enum" name="lv_indev_state_t" file="indev/lv_indev.h" line="39" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L39">
  lv_indev_state_t [#lv_indev_state_t]

  States for input devices

  | Name                      | Value |
  | ------------------------- | ----- |
  | `LV_INDEV_STATE_RELEASED` | `0`   |
  | `LV_INDEV_STATE_PRESSED`  |       |
</ApiMember>

<ApiMember kind="enum" name="lv_indev_mode_t" file="indev/lv_indev.h" line="44" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L44">
  lv_indev_mode_t [#lv_indev_mode_t]

  | Name                  | Value |
  | --------------------- | ----- |
  | `LV_INDEV_MODE_NONE`  | `0`   |
  | `LV_INDEV_MODE_TIMER` |       |
  | `LV_INDEV_MODE_EVENT` |       |
</ApiMember>

<TypeUsedBy name="lv_indev_mode_t" count="1">
  * `lv_indev_set_mode` — param `mode`
</TypeUsedBy>

<ApiMember kind="enum" name="lv_indev_gesture_type_t" file="indev/lv_indev.h" line="52" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L52">
  lv_indev_gesture_type_t [#lv_indev_gesture_type_t]

  | Name                                 | Value |
  | ------------------------------------ | ----- |
  | `LV_INDEV_GESTURE_NONE`              | `0`   |
  | `LV_INDEV_GESTURE_PINCH`             |       |
  | `LV_INDEV_GESTURE_SWIPE`             |       |
  | `LV_INDEV_GESTURE_ROTATE`            |       |
  | `LV_INDEV_GESTURE_TWO_FINGERS_SWIPE` |       |
  | `LV_INDEV_GESTURE_SCROLL`            |       |
  | `LV_INDEV_GESTURE_CNT`               |       |
</ApiMember>

<TypeUsedBy name="lv_indev_gesture_type_t" count="2">
  * `lv_indev_set_gesture_data` — param `type`
  * `lv_event_get_gesture_state` — param `type`
</TypeUsedBy>

Structs [#structs]

<ApiMember kind="struct" name="lv_indev_data_t">
  lv_indev_data_t [#lv_indev_data_t]

  Data structure passed to an input driver to fill

  | Member             | Type                                            | Description                                                                                                                           |
  | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
  | `gesture_type`     | `lv_indev_gesture_type_t[LV_INDEV_GESTURE_CNT]` |                                                                                                                                       |
  | `gesture_data`     | `void *[LV_INDEV_GESTURE_CNT]`                  |                                                                                                                                       |
  | `state`            | <ApiLink name="lv_indev_state_t" />             | LV\_INDEV\_STATE\_RELEASED or LV\_INDEV\_STATE\_PRESSED                                                                               |
  | `point`            | <ApiLink name="lv_point_t" />                   | For LV\_INDEV\_TYPE\_POINTER the currently pressed point                                                                              |
  | `key`              | <ApiLink name="uint32_t" />                     | For LV\_INDEV\_TYPE\_KEYPAD the currently pressed key                                                                                 |
  | `btn_id`           | <ApiLink name="uint32_t" />                     | For LV\_INDEV\_TYPE\_BUTTON the currently pressed button                                                                              |
  | `enc_diff`         | <ApiLink name="int16_t" />                      | For LV\_INDEV\_TYPE\_ENCODER number of steps since the previous read                                                                  |
  | `timestamp`        | <ApiLink name="uint32_t" />                     | Initialized to <ApiLink name="lv_tick_get" display="lv_tick_get()" />. Driver may provide more accurate timestamp for buffered events |
  | `continue_reading` | <ApiLink name="bool" />                         | If set to true, the read callback is invoked again, unless the device is in event-driven mode                                         |
</ApiMember>

<TypeUsedBy name="lv_indev_data_t" count="2">
  * `lv_indev_set_gesture_data` — param `data`
  * `lv_indev_gesture_recognizers_set_data` — param `data`
</TypeUsedBy>

Typedefs [#typedefs]

<ApiMember kind="typedef" name="lv_indev_read_cb_t" file="indev/lv_indev.h" line="78" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L78">
  lv_indev_read_cb_t [#lv_indev_read_cb_t]

  ```c title=" " lineNumbers=1
  typedef void(* lv_indev_read_cb_t) (lv_indev_t *indev, lv_indev_data_t *data)
  ```
</ApiMember>

<TypeUsedBy name="lv_indev_read_cb_t" count="2">
  * `lv_wayland_update_indevs` — param `read_cb`
  * `lv_indev_set_read_cb` — param `read_cb`
</TypeUsedBy>

<ApiMember kind="typedef" name="lv_indev_key_remap_cb_t" file="indev/lv_indev.h" line="81" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/indev/lv_indev.h#L81">
  lv_indev_key_remap_cb_t [#lv_indev_key_remap_cb_t]

  ```c title=" " lineNumbers=1
  typedef lv_key_t(* lv_indev_key_remap_cb_t) (lv_indev_t *indev, lv_key_t key)
  ```

  Indev key remapping callback
</ApiMember>

<TypeUsedBy name="lv_indev_key_remap_cb_t" count="1">
  * `lv_indev_set_key_remap_cb` — param `remap_cb`
</TypeUsedBy>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_group.h&#x22;, &#x22;lv_area.h&#x22;, &#x22;lv_timer.h&#x22;, &#x22;lv_event.h&#x22;]" includedBy="[&#x22;lv_obj_event.h&#x22;, &#x22;lv_monkey.h&#x22;, &#x22;lv_test_indev.h&#x22;, &#x22;lv_test_indev_gesture.h&#x22;, &#x22;lv_lovyan_gfx.h&#x22;, &#x22;lv_evdev.h&#x22;, &#x22;lv_libinput.h&#x22;, &#x22;lv_nuttx_entry.h&#x22;, &#x22;lv_nuttx_libuv.h&#x22;, &#x22;lv_nuttx_mouse.h&#x22;, &#x22;lv_nuttx_touchscreen.h&#x22;, &#x22;lv_qnx.h&#x22;, &#x22;lv_sdl_window.h&#x22;, &#x22;lv_uefi_indev.h&#x22;, &#x22;lv_wayland_keyboard.h&#x22;, &#x22;lv_wayland_pointer.h&#x22;, &#x22;lv_wayland_pointer_axis.h&#x22;, &#x22;lv_wayland_touch.h&#x22;, &#x22;lv_windows_context.h&#x22;, &#x22;lv_windows_display.h&#x22;, &#x22;lv_windows_input.h&#x22;, &#x22;lv_x11.h&#x22;, &#x22;lv_indev_private.h&#x22;]" transitiveIncludes="[&#x22;lv_array.h&#x22;, &#x22;lv_conf_internal.h&#x22;, &#x22;lv_conf_kconfig.h&#x22;, &#x22;lv_ll.h&#x22;, &#x22;lv_math.h&#x22;, &#x22;lv_tick.h&#x22;, &#x22;lv_types.h&#x22;]" />
