Структура, определяющая модуль ввода
#include <sys/devi.h>
typedef struct _input_module {
input_module_t *up;
input_module_t *down;
struct Line *line;
int flags;
int type;
char name[12],
date[12];
const char *args;
void *data;
int (*init)( input_module_t * );
int (*reset)( input_module_t * );
int (*input)( input_module_t *, int, void * );
int (*output)( input_module_t *, void *, int );
int (*pulse)( message_context_t *, int, unsigned, void * );
int (*parm)( input_module_t *, int, char * );
int (*devctrl)( input_module_t *, int, void * );
int (*shutdown)( input_module_t *, int );
} input_module_t;
Структура определяет модуль ввода. Поля структуры включают:
- up
- down
- Предшествующий и последующий модули на шине событий.
- line
- Драйвер шины (для внутреннего использования)
- flags
- Флаги модуля. Возможные значения:
- MODULE_FLAG_INUSE
- Определяет модуль как корректный.
- type
- Тип модуля, являющийся комбинацией нескольких групп флагов. Класс драйвера:
- DEVI_CLASS_KBD
- Клавиатуры.
- DEVI_CLASS_REL
- Устройства с относительными координатами.
- DEVI_CLASS_ABS
- Устройства с абсолютными координатами.
- DEVI_CLASS_JOYSTICK
- Джойстики.
- DEVI_CLASS_GAMEPAD
- Игровые манипуляторы.
- DEVI_CLASS_CONTROL
- Устройства управления.
Драйверный слой, к которому относится модуль: - DEVI_MODULE_TYPE_FILTER
- Модуль фильтра.
- DEVI_MODULE_TYPE_PROTO
- Модуль протокола.
- DEVI_MODULE_TYPE_DEVICE
- Модуль устройства.
- name
- Имя модуля, используемое в имени файла
devi-*
. - date
- Дата сборки.
- args
- Перечень аргументов драйвера в формате getopt().
- data
- Указатель на приватные данные драйвера. Он определяется в input_module_t :: init().
- init()
- reset()
- input()
- output()
- pulse()
- parm()
- devctrl()
- shutdown()
- Функции-обработчики драйвера (описаны в разделе Интерфейсы модуля ввода).
ЗОСРВ «Нейтрино»
Предыдущий раздел: Библиотека разработки драйверов ввода (libinput)