X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fidev-internal.h;h=a159aef211a8922bfaa534afec1f0e57907f05ad;hb=b6e676ce41508e2aeea22202fc8f234126177f52;hp=bffefbb9c11c80f362c90d4782f3f177b538d771;hpb=e202fa31fb2d60084e7b2ab7976a81c138184d40;p=elogind.git diff --git a/src/libsystemd-terminal/idev-internal.h b/src/libsystemd-terminal/idev-internal.h index bffefbb9c..a159aef21 100644 --- a/src/libsystemd-terminal/idev-internal.h +++ b/src/libsystemd-terminal/idev-internal.h @@ -22,10 +22,13 @@ #pragma once #include +#include +#include #include #include #include #include +#include #include "hashmap.h" #include "idev.h" #include "list.h" @@ -36,6 +39,22 @@ typedef struct idev_device_vtable idev_device_vtable; typedef struct idev_element idev_element; typedef struct idev_element_vtable idev_element_vtable; +/* + * Evdev Elements + */ + +bool idev_is_evdev(idev_element *e); +idev_element *idev_find_evdev(idev_session *s, dev_t devnum); +int idev_evdev_new(idev_element **out, idev_session *s, struct udev_device *ud); + +/* + * Keyboard Devices + */ + +bool idev_is_keyboard(idev_device *d); +idev_device *idev_find_keyboard(idev_session *s, const char *name); +int idev_keyboard_new(idev_device **out, idev_session *s, const char *name); + /* * Element Links */ @@ -97,6 +116,8 @@ struct idev_element_vtable { void (*disable) (idev_element *e); void (*open) (idev_element *e); void (*close) (idev_element *e); + void (*resume) (idev_element *e, int fd); + void (*pause) (idev_element *e, const char *mode); void (*feedback) (idev_element *e, idev_data *data); }; @@ -136,6 +157,8 @@ struct idev_session { idev_context *context; char *name; char *path; + sd_bus_slot *slot_resume_device; + sd_bus_slot *slot_pause_device; Hashmap *element_map; Hashmap *device_map;