Вопросы касательно драйвера мультитач-ввода ядра [закрыто]

Я разрабатываю драйвер ядра Linux для мультитач-устройства. Я использовал в качестве начальной точки драйвер usbtouchscreen, включенный в исходный код ядра linux-3.0.

Хотя я уже могу заставить свой указатель мыши двигаться с помощью прикосновения, все еще остается много вопросов:

  • При правильной настройке будет ли xinput отображать мое устройство как устройство с несколькими касаниями или сенсорный экран? Единственное, что я получил до сих пор, было указано в категории Virtual Core Pointer

  • Как правильно настроить и настроить устройство ввода? Вот как я делаю:

/ * Для одного прикосновения * /
input_set_abs_params (input_dev, ABS_X, 0, 6300 , 0, 0);
input_set_abs_params (input_dev, ABS_Y, 0, 6300, 0, 0);

/ * Для мультитач * *
input_mt_init_slots (input_dev , 6);
input_set_abs_params (input_dev, ABS_MT_TOUCH_MAJOR, 0, 0xff, 0, 0);
input_set_abs_params (input_dev, ABS_MT_POSITION_X, 0, 6300, 0, 0);
[ 116] input_set_abs_params (input_dev, ABS_MT_POSITION_Y, 0, 6300, 0, 0);

  • Как правильно вводить прикосновения? В протоколе ввода мультитач linux говорится следующее:

Протокол делится на два типа в зависимости от возможностей оборудования. -Для устройств, обрабатывающих анонимные контакты (тип A), протокол описывает, как отправить необработанные данные для всех контактов получателю. Для устройств, способных отслеживать идентифицируемые контакты (тип B), протокол описывает, как отправлять обновления для отдельных контактов через слоты событий.

Что означает анонимные контакты? Мое устройство отправляет необработанные данные, и мое отслеживание выполняется в ядре. К тому времени, когда я собираюсь внедрить касания в подсистему ядра, я уже идентифицировал и отслеживал касания. В конце концов, какой у меня тип устройства?

Несмотря на это, я уже попробовал два типа отчетов, и, похоже, не дает мне мультитач-ввода. Вот как я сейчас поступаю:

if(touchActive)
{
    input_mt_slot(usbtouch->input, Touch->Id);
    input_mt_report_slot_state(usbtouch->input, MT_TOOL_FINGER, true);

   input_report_abs(usbtouch->input, ABS_MT_TOUCH_MAJOR, 128);
   input_report_abs(usbtouch->input, ABS_MT_POSITION_X, Touch->ReportedPosition.X);
   input_report_abs(usbtouch->input, ABS_MT_POSITION_Y, Touch->ReportedPosition.Y);

   touch++;
}

if (touch>0)
{
    input_report_key(usbtouch->input, BTN_TOUCH, true);

    input_report_abs(usbtouch->input, ABS_X, Touch->ReportedPosition.X);
    input_report_abs(usbtouch->input, ABS_Y, Touch->ReportedPosition.Y);

    input_sync(usbtouch->input);
}
  • Как я могу проверить ввод с мультитачом на стороне пользователя? Я пытаюсь увидеть, перечисляет ли xinput мое устройство как устройство с несколькими касаниями. Нет успеха Я также пробую пример с qt4-demos, рисование пальцем, которое всегда мне ничего не дает. Есть ли какой-нибудь "официальный" инструмент для тестирования ввода Ubuntu Multitouch?
2
задан 9 November 2011 в 16:49

0 ответов

Другие вопросы по тегам:

Похожие вопросы: