Проблема с дескрипторами HID сенсорного экрана USB Android

Постараюсь максимально четко описать свою проблему. Я пытаюсь заставить устройство с сенсорным экраном работать с Android. устройство является USB-устройством, и у меня оно корректно работает в различных ОС (Windows, Mac OS X, Ubuntu). В Android 4.0.4 у меня проблема. Есть некоторая реакция на прикосновения, но это неверно. тачскрин проявляет себя как тачпад, а не как абсолютный тачскрин, к тому же прикосновения происходят некорректно.

Я изучал различные дескрипторы HID и обнаружил следующее, что может вызывать проблемы с Android:

Interface 0 HID Report Descriptor Mouse
Item Tag (Value)    Raw Data
Usage Page (Generic Desktop)    05 01 
Usage (Mouse)   09 02 
Collection (Application)    A1 01 
    Usage (Pointer) 09 01 
    Collection (Physical)   A1 00 
        Usage Page (Digitizer)  05 0D 
        Usage (Touch)   09 33 
        Usage Minimum (Digitizer)   19 01 
        Usage Maximum (Digitizer)   29 01 
        Logical Minimum (0) 15 00 
        Logical Maximum (1) 25 01 
        Report Count (1)    95 01 
        Report Size (1) 75 01 
        Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
        Report Count (1)    95 01 
        Report Size (7) 75 07 
        Input (Cnst,Ary,Abs)    81 01 
        Usage Page (Generic Desktop)    05 01 
        Usage (X)   09 30 
        Usage (Y)   09 31 
        Logical Minimum (0) 15 00 
        Logical Maximum (1024)  26 00 04 
        Physical Minimum (16)   35 10 
        Physical Maximum (1024) 46 00 04 
        Unit (None) 65 00 
        Report Size (16)    75 10 
        Report Count (2)    95 02 
        Input (Data,Var,Abs,NWrp,Lin,NPrf,Null,Bit) 81 62 
    End Collection  C0 
End Collection

Теперь похоже, что устройство сообщает и как дигитайзер, и как сенсорное устройство? Устройство представляет собой устройство с одним касанием «наведи и нажми» и сообщает абсолютные координаты X и Y.

Мне интересно, не запутается ли Android, читая этот отчет, и поэтому загружает конфигурацию дигитайзера / планшета, а не сенсорного экрана? Здесь есть несколько указателей http://source.android.com/tech/input/touch-devices.html, но я действительно не понимаю, где эти вещи сообщаются / определяются?

Любая помощь будет принята с благодарностью. При необходимости я могу отправить дополнительную информацию из отчетов HID.


person september28    schedule 20.11.2012    source источник


Ответы (2)


На основании своего анализа я даю это предложение. Возьмите коэффициент логического максимума к физическому максимуму как для X, так и для Y.

factorValue = логический максимум / физический максимум

Умножьте это значение factorValue на исходные координаты, поступающие с сенсорного экрана, и попробуйте отправить их на android.

person user2003923    schedule 23.01.2013

Обычно очень важно использовать мышь, которая отправляет абсолютные координаты. Например, в Linux это не сработает из-за ошибок и недоработок в X11.

Ваш дескриптор определенно неверен. Нельзя смешивать мышь и дигитайзер.
Это две разные категории устройств. Дигитайзер может быть сенсорным экраном или пером, но не мышью. Вы рискуете, что водитель не знает, что делать с вашим устройством. Ваш дескриптор - ни рыба, ни птица.

Вы смешиваете разные вещи: страницу использования «Стандартный рабочий стол» со страницей использования «Дигитайзер».

Чтобы быть уверенным в своем проекте, я не использую рукотворный дескриптор. Наконец-то я клонировал настоящий тачскрин от ELO Touchsystems. Это работает во всех операционных системах, где я это тестировал. Я не могу сказать, работает ли он также на Android.

Но вы можете просто попробовать мой дескриптор: http://www.codeproject.com/Articles/1001891/A-USB-HID-Keyboard-Mouse-Touchscreen-emulator-with

person Elmue    schedule 18.06.2015
comment
Спасибо, я использую ваш дескриптор, но Android показывает указатель мыши везде, где я касаюсь экрана. stackoverflow.com/questions/46033581 / - person fadedbee; 04.09.2017