Отладка

Предыдущая  Содержание  Следующая V*D*V

Если вы разрабатываете драйвер ввода, в качестве помощи при отладке можно использовать модуль 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) и завершает каждое событие ввода.

Предыдущая  Содержание  Следующая