Отладка |
Предыдущая Содержание Следующая |
Если вы разрабатываете драйвер ввода, в качестве помощи при отладке можно использовать модуль evbug. Он распечатывает набор (тип, код, значение) (смотрите структуру input_event, определённую ранее), соответствующий событиям, порождённым подсистемой ввода. На Рисунке 7.4 приведены данные, перехваченные evbug при работе с некоторыми устройствами ввода:
Рисунок 7.4. Вывод из Evbug.
Код: /* Движение по сенсорной панели */ evbug.c Event. Dev: isa0060/serio1/input0: Type: 3, Code: 28, Value: 0 evbug.c Event. Dev: isa0060/serio1/input0: Type: 1, Code: 325, Value: 0 evbug.c Event. Dev: isa0060/serio1/input0: Type: 0, Code: 0, Value: 0
/* Передвижение устройства позиционирования */ evbug.c Event. Dev: synaptics-pt/serio0/input0: Type: 2, Code: 0, Value: -1 evbug.c Event. Dev: synaptics-pt/serio0/input0: Type: 2, Code: 1, Value: -2 evbug.c Event. Dev: synaptics-pt/serio0/input0: Type: 0, Code: 0, Value: 0
/* Движение USB мыши */ evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 2, Code: 1, Value: -1 evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 0, Code: 0, Value: 0 evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 2, Code: 0, Value: 1 evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 0, Code: 0, Value: 0
/* Нажатие кнопки 'a' на PS/2 клавиатуре */ evbug.c Event. Dev: isa0060/serio0/input0: Type: 4, Code: 4, Value: 30 evbug.c Event. Dev: isa0060/serio0/input0: Type: 1, Code: 30, Value: 0 evbug.c Event. Dev: isa0060/serio0/input0: Type: 0, Code: 0, Value: 0
/* Нажатие кнопки 'a' на USB клавиатуре */ evbug.c Event. Dev: usb-0000:00:1d.1-1/input0: Type: 1, Code: 30, Value: 1 evbug.c Event. Dev: usb-0000:00:1d.1-1/input0: Type: 0, Code: 0, Value: 0 evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 1, Code: 30, Value: 0 evbug.c Event. Dev: usb-0000:00:1d.1-2/input0: Type: 0, Code: 0, Value: 0
Чтобы разобраться в дампе на Рисунке 7.4, вспомните, что сенсорные панели генерируют абсолютные координаты (EV_ABS) или событие типа 0x03, устройства позиционирования дают относительные координаты (EV_REL) или события типа 0x02, и клавиатуры создают события кнопок (EV_KEY) или события типа 0x01. Тип события 0x0 соответствует вызову input_sync(), который выполняет следующие действия:
input_event(dev, EV_SYN, SYN_REPORT, 0);
Это приводит к набору (тип, код, значение) (0x0, 0x0, 0x0) и завершает каждое событие ввода. |
Предыдущая Содержание Следующая |