Поддръжка на мултитъч жестове в лаптопи, оборудвани с тъчпада

Добавяне на плъзгане и щипка с три пръста с помощна програма за синхронизация и синтетични X събития

Multi-touch интерфейсите предоставят много предимства за интегриране на нови режими на взаимодействие в приложенията. Днешните хардуерни платформи и драйвери за Mac OS X и Microsoft® Windows® позволяват на приложенията да се придвижват по-ефективно с по-голямо разнообразие от жестове, отколкото обикновени докосвания. Тази статия разглежда инструментите и кода, необходими за добавяне на поддръжка за тези нови ходове към по-стар хардуер на платформата Linux®. Представеният тук код на Perl, който анализира изхода на помощната програма за синхронизация, ви позволява да присвоите изпълнението на функциите на приложението на жестове за плъзгане и притискане/прищипване с три пръста.

Изисквания

Хардуер

Софтуер

Изисква се модерно ядро ​​на Linux с поддръжка на evdev. За щастие, повечето съвременни дистрибуции имат вградена тази функционалност. Много дистрибуции също се доставят с пакета Synaptics, който съдържа помощната програма за синхронизация, която се използва за наблюдение на събитията на тъчпада. Fedora Core например също съдържа подходяща конфигурация за X Window System, която ви позволява да използвате тъчпада с минимални модификации. Други дистрибуции (например Ubuntu V7.10) може да изискват някаква конфигурация, за да работи пакетът Synaptics правилно, инсталиран с командата sudo apt-get install tpconfig. За връзки към повече информация за конфигуриране на основната функционалност за тъчпад на Synaptics в Linux, вижте Ресурси.

Ще ви е необходим и модулът Time: HiRes от CPAN, за да осигурите прецизен контрол на времето за обработка на събития от сензорен панел. Освен това ви е необходим модулът X11: GuiTest, за да изпращате синтетични събития от X Window до приложения. За връзки към тези инструменти вижте Ресурси.

Проверка на основната функционалност

Ако тъчпадът може да работи, уверете се, че реагира адекватно на докосване с пръст. Стартирайте synclient -m 100 и опитайте различни допирателни движения на тъчпада. Трябва да се покаже следната информация.

Листинг 1. Примерен изход от synclient -m 100

Опитайте с докосване с един, два и три пръста, за да проверите дали събитието е било открито правилно. Уверете се, че тъчпадът разпознава докосване с три пръста, тъй като първият жест, който добавяме, ще бъде слайд с три пръста. Забележете как тъчпадът реагира, когато не се почука и как се четат координатите X и Y при докосване с два пръста с различно разстояние. Сценарият по-долу използва някои от тези характеристики за откриване на жестове за щипка. Натиснете клавишната комбинация Ctrl + c за да излезете от синхронизатора

Общ подход

Използването на изхода на помощната програма syclient за наблюдение на състоянието на тъчпада е прост и ефективен начин за добавяне на допълнително потребителско изживяване към приложенията на Linux. Програмата gestureListener.pl по-долу отваря тръба за четене на данни от синхронизатора и обработва събития на тъчпада за откриване на жестове. Тези жестове са свързани с команди на клавиатурата, изпратени до активното в момента приложение на X Window System.

Плъзгащи се жестове

Слайдът с три пръста е относително лесен за откриване жест, тъй като изисква само преместване на три пръста наляво или надясно по панела. Листинг 2 показва началото на програмата gestureListener.pl, която започва да обработва данните, получени от синхронизатора, за да открие жеста.

Листинг 2. Началото на програмата gestureListener.pl

Имайте предвид, че променливата centerTouchPad и други настройки може да се наложи да бъдат коригирани в зависимост от конкретното хардуерно устройство или нивото на драйвера на Synaptics. Настройката за синхронизация TouchPadOff = 1 деактивира стандартните събития на тъчпада. Червеният джойстик (на ThinkPad и други лаптопи) обаче остава на разположение, както и поддръжката на PS2 и USB мишка. Деактивирането на тъчпада не е задължително, но това ще намали проблема с идентифицирането на събития на мишката, които не са свързани с жестове за притискане и плъзгане.