Всем привет! Имеется несколько тачпадов от ноутбуков, хотелось бы их использовать в своих проектах. Все тачпады используют контроллеры Synaptics: T1006, T1007, SS2202A, и подобные. Интерфейс подключения - PS/2. В сети нашел несколько библиотек и примеров подключения. Но все дают только один и тот же функционал: передается направление перемещения мыши по "x" и "y" с определенным ускорением. Как это работает можно посмотреть в этом видео:
https://www.youtube.com/watch?v=drMe4CBBxdsТо есть не зависимо от положения мыши, не зависимо от положения пальца на тачпаде, передается только направление движения пальца-мыши, и с какой скоростью идет это движение.
В то же время тачпады имеют разметку функциональных кнопок и скролов. На фото ниже видно как тачпад от Тошибы имеет такую разметку.
Это подразумевает что контроллеры Synaptics имеют возможность отслеживания не только направление и скорость перемещения, но и точное место прикосновения пальца к тачпаду. То есть, можно на тачпад нанести разметку собственных кнопок и сделать сенсорную клавиатуру... Но ни одна библиотека или пример не дают такой возможности. Только направление и скорость перемещения. Вот ссылка на архив с несколькими библиотеками:
https://drive.google.com/file/d/1SO5TpS ... sp=sharingЛогическим анализатором я снял дамп работы с тачпадом во время "покоя", то есть пальцем его не трогать. Отчетливо видно что передается 5 пакетов, но во всех примерах считывание идет только 3 раза. Для тестов а подключал большой тачпад (правый верхний), он так же имеет кнопку. Кнопка подключена к контроллеру но ее нажатие никак не передается....
Пишу в Ардуино IDE, Скетч использовал этот:
В сети нашел пример работы с тачпадом и считывания "зоны скролла", скетч практически идентичный, за исключением того что в функции инициализации татча чуть больше команд, а в основном цикле программы чтение с тачпада идет 4 раза.
Но не работает! Если в основном цикле программы чтение данных идет более 3-х раз то Ардуино зависает. Если убрать строчку
mz = mouse_read();То код работает, но считывает только перемещения.
Может вы можете что-то посоветовать? Может есть готовое решение или библиотеки, которые реализуют получение не только перемещения но и места прикосновения?