lv_indev.h

Typedefs

typedef void (*lv_indev_read_cb_t)(lv_indev_t *indev, lv_indev_data_t *data)

Enums

enum lv_indev_type_t

Possible input device types

Values:

enumerator LV_INDEV_TYPE_NONE

Uninitialized state

enumerator LV_INDEV_TYPE_POINTER

Touch pad, mouse, external button

enumerator LV_INDEV_TYPE_KEYPAD

Keypad or keyboard

enumerator LV_INDEV_TYPE_BUTTON

External (hardware button) which is assigned to a specific point of the screen

enumerator LV_INDEV_TYPE_ENCODER

Encoder with only Left, Right turn and a Button

enum lv_indev_state_t

States for input devices

Values:

enumerator LV_INDEV_STATE_RELEASED
enumerator LV_INDEV_STATE_PRESSED
enum lv_indev_mode_t

Values:

enumerator LV_INDEV_MODE_NONE
enumerator LV_INDEV_MODE_TIMER
enumerator LV_INDEV_MODE_EVENT

Functions

lv_indev_t *lv_indev_create(void)

Create an indev

Returns:

Pointer to the created indev or NULL when allocation failed

void lv_indev_delete(lv_indev_t *indev)

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

Parameters:

indev -- pointer to delete

lv_indev_t *lv_indev_get_next(lv_indev_t *indev)

Get the next input device.

Parameters:

indev -- pointer to the current input device. NULL to initialize.

Returns:

the next input device or NULL if there are no more. Provide the first input device when the parameter is NULL

void lv_indev_read(lv_indev_t *indev)

Read data from an input device.

Parameters:

indev -- pointer to an input device

void lv_indev_read_timer_cb(lv_timer_t *timer)

Called periodically to read the input devices

Parameters:

timer -- pointer to a timer to read

void lv_indev_enable(lv_indev_t *indev, bool enable)

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

Parameters:
  • indev -- pointer to an input device or NULL to enable/disable all of them

  • enable -- true to enable, false to disable

lv_indev_t *lv_indev_active(void)

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

Returns:

pointer to the currently processed input device or NULL if no input device processing right now

void lv_indev_set_type(lv_indev_t *indev, lv_indev_type_t indev_type)

Set the type of an input device

Parameters:
  • indev -- pointer to an input device

  • indev_type -- the type of the input device from lv_indev_type_t (LV_INDEV_TYPE_...)

void lv_indev_set_read_cb(lv_indev_t *indev, lv_indev_read_cb_t read_cb)

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

Parameters:
  • indev -- pointer to an input device

  • read_cb -- pointer to callback function to read input device data

void lv_indev_set_user_data(lv_indev_t *indev, void *user_data)

Set user data to the indev

Parameters:
  • indev -- pointer to an input device

  • user_data -- pointer to user data

void lv_indev_set_driver_data(lv_indev_t *indev, void *driver_data)

Set driver data to the indev

Parameters:
  • indev -- pointer to an input device

  • driver_data -- pointer to driver data

void lv_indev_set_display(lv_indev_t *indev, struct _lv_display_t *disp)

Assign a display to the indev

Parameters:
  • indev -- pointer to an input device

  • disp -- pointer to an display

lv_indev_type_t lv_indev_get_type(const lv_indev_t *indev)

Get the type of an input device

Parameters:

indev -- pointer to an input device

Returns:

the type of the input device from lv_hal_indev_type_t (LV_INDEV_TYPE_...)

lv_indev_read_cb_t lv_indev_get_read_cb(lv_indev_t *indev)

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

Parameters:

indev -- pointer to an input device

Returns:

Pointer to callback function to read input device data or NULL if indev is NULL

lv_indev_state_t lv_indev_get_state(const lv_indev_t *indev)

Get the indev state

Parameters:

indev -- pointer to an input device

Returns:

Indev state or LV_INDEV_STATE_RELEASED if indev is NULL

lv_group_t *lv_indev_get_group(const lv_indev_t *indev)

Get the indev assigned group

Parameters:

indev -- pointer to an input device

Returns:

Pointer to indev assigned group or NULL if indev is NULL

lv_display_t *lv_indev_get_display(const lv_indev_t *indev)

Get a pointer to the assigned display of the indev

Parameters:

indev -- pointer to an input device

Returns:

pointer to the assigned display or NULL if indev is NULL

void *lv_indev_get_user_data(const lv_indev_t *indev)

Get a pointer to the user data of the indev

Parameters:

indev -- pointer to an input device

Returns:

pointer to the user data or NULL if indev is NULL

void *lv_indev_get_driver_data(const lv_indev_t *indev)

Get a pointer to the driver data of the indev

Parameters:

indev -- pointer to an input device

Returns:

pointer to the driver data or NULL if indev is NULL

void lv_indev_reset(lv_indev_t *indev, lv_obj_t *obj)

Reset one or all input devices

Parameters:
  • indev -- pointer to an input device to reset or NULL to reset all of them

  • obj -- pointer to an object which triggers the reset.

void lv_indev_reset_long_press(lv_indev_t *indev)

Reset the long press state of an input device

Parameters:

indev -- pointer to an input device

void lv_indev_set_cursor(lv_indev_t *indev, lv_obj_t *cur_obj)

Set a cursor for a pointer input device (for LV_INPUT_TYPE_POINTER and LV_INPUT_TYPE_BUTTON)

Parameters:
  • indev -- pointer to an input device

  • cur_obj -- pointer to an object to be used as cursor

void lv_indev_set_group(lv_indev_t *indev, lv_group_t *group)

Set a destination group for a keypad input device (for LV_INDEV_TYPE_KEYPAD)

Parameters:
  • indev -- pointer to an input device

  • group -- pointer to a group

void lv_indev_set_button_points(lv_indev_t *indev, const lv_point_t 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

Parameters:
  • indev -- pointer to an input device

  • points -- array of points

void lv_indev_get_point(const lv_indev_t *indev, lv_point_t *point)

Get the last point of an input device (for LV_INDEV_TYPE_POINTER and LV_INDEV_TYPE_BUTTON)

Parameters:
  • indev -- pointer to an input device

  • point -- pointer to a point to store the result

lv_dir_t lv_indev_get_gesture_dir(const lv_indev_t *indev)

Get the current gesture direct

Parameters:

indev -- pointer to an input device

Returns:

current gesture direct

uint32_t lv_indev_get_key(const lv_indev_t *indev)

Get the last pressed key of an input device (for LV_INDEV_TYPE_KEYPAD)

Parameters:

indev -- pointer to an input device

Returns:

the last pressed key (0 on error)

lv_dir_t lv_indev_get_scroll_dir(const lv_indev_t *indev)

Check the current scroll direction of an input device (for LV_INDEV_TYPE_POINTER and LV_INDEV_TYPE_BUTTON)

Parameters:

indev -- pointer to an input device

Returns:

LV_DIR_NONE: no scrolling now LV_DIR_HOR/VER

lv_obj_t *lv_indev_get_scroll_obj(const lv_indev_t *indev)

Get the currently scrolled object (for LV_INDEV_TYPE_POINTER and LV_INDEV_TYPE_BUTTON)

Parameters:

indev -- pointer to an input device

Returns:

pointer to the currently scrolled object or NULL if no scrolling by this indev

void lv_indev_get_vect(const lv_indev_t *indev, lv_point_t *point)

Get the movement vector of an input device (for LV_INDEV_TYPE_POINTER and LV_INDEV_TYPE_BUTTON)

Parameters:
  • indev -- pointer to an input device

  • point -- pointer to a point to store the types.pointer.vector

void lv_indev_wait_release(lv_indev_t *indev)

Do nothing until the next release

Parameters:

indev -- pointer to an input device

lv_obj_t *lv_indev_get_active_obj(void)

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

Returns:

pointer to currently active object or NULL if no active object

lv_timer_t *lv_indev_get_read_timer(lv_indev_t *indev)

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

Parameters:

indev -- pointer to an input device

Returns:

pointer to the indev read refresher timer. (NULL on error)

void lv_indev_set_mode(lv_indev_t *indev, lv_indev_mode_t mode)

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

Parameters:
  • indev -- pointer to an input device

  • mode -- the mode of input device

lv_indev_mode_t lv_indev_get_mode(lv_indev_t *indev)

Get the input device's running mode.

Parameters:

indev -- pointer to an input device

Returns:

the running mode for the specified input device.

lv_obj_t *lv_indev_search_obj(lv_obj_t *obj, lv_point_t *point)

Search the most top, clickable object by a point

Parameters:
  • obj -- pointer to a start object, typically the screen

  • point -- pointer to a point for searching the most top child

Returns:

pointer to the found object or NULL if there was no suitable object

void lv_indev_add_event_cb(lv_indev_t *indev, lv_event_cb_t event_cb, lv_event_code_t filter, void *user_data)

Add an event handler to the indev

Parameters:
  • indev -- pointer to an indev

  • event_cb -- an event callback

  • filter -- event code to react or LV_EVENT_ALL

  • user_data -- optional user_data

uint32_t lv_indev_get_event_count(lv_indev_t *indev)

Get the number of event attached to an indev

Parameters:

indev -- pointer to an indev

Returns:

number of events

lv_event_dsc_t *lv_indev_get_event_dsc(lv_indev_t *indev, uint32_t index)

Get an event descriptor for an event

Parameters:
  • indev -- pointer to an indev

  • index -- the index of the event

Returns:

the event descriptor

bool lv_indev_remove_event(lv_indev_t *indev, uint32_t index)

Remove an event

Parameters:
  • indev -- pointer to an indev

  • index -- the index of the event to remove

Returns:

true: and event was removed; false: no event was removed

uint32_t lv_indev_remove_event_cb_with_user_data(lv_indev_t *indev, lv_event_cb_t event_cb, void *user_data)

Remove an event_cb with user_data

Parameters:
  • indev -- pointer to a indev

  • event_cb -- the event_cb of the event to remove

  • user_data -- user_data

Returns:

the count of the event removed

lv_result_t lv_indev_send_event(lv_indev_t *indev, lv_event_code_t code, void *param)

Send an event to an indev

Parameters:
  • indev -- pointer to an indev

  • code -- an event code. LV_EVENT_...

  • param -- optional param

Returns:

LV_RESULT_OK: indev wasn't deleted in the event.

struct lv_indev_data_t
#include <lv_indev.h>

Data structure passed to an input driver to fill

Public Members

lv_point_t point

For LV_INDEV_TYPE_POINTER the currently pressed point

uint32_t key

For LV_INDEV_TYPE_KEYPAD the currently pressed key

uint32_t btn_id

For LV_INDEV_TYPE_BUTTON the currently pressed button

int16_t enc_diff

For LV_INDEV_TYPE_ENCODER number of steps since the previous read

lv_indev_state_t state

LV_INDEV_STATE_RELEASED or LV_INDEV_STATE_PRESSED

bool continue_reading

If set to true, the read callback is invoked again, unless the device is in event-driven mode