Data Structures
Here are the data structures with brief descriptions:

C libinput | A handle for accessing libinput
C libinput_device | A base handle for accessing libinput devices
C libinput_device_group | A base handle for accessing libinput device groups
C libinput_event | The base event type
C libinput_event_device_notify | An event notifying the caller of a device being added or removed
C libinput_event_keyboard | A keyboard event representing a key press/release
C libinput_event_pointer | A pointer event representing relative or absolute pointer movement, a button press/release or scroll axis events
C libinput_event_switch | A switch event representing a changed state in a switch
C libinput_event_tablet_pad | Tablet pad event representing a button press, or ring/strip update on the tablet pad itself
C libinput_event_tablet_tool | Tablet tool event representing an axis update, button press, or tool update
C libinput_event_touch | Touch event representing a touch down, move or up, as well as a touch cancel and touch frame events
C libinput_interface | Libinput does not open file descriptors to devices directly, instead open_restricted() and close_restricted() are called for each path that must be opened
C libinput_seat | The base handle for accessing libinput seats
C libinput_tablet_pad_mode_group | A mode on a tablet pad is a virtual grouping of functionality, usually based on some visual feedback like LEDs on the pad
C libinput_tablet_tool | An object representing a tool being used by a device with the LIBINPUT_DEVICE_CAP_TABLET_TOOL capability