Обнаружение абсолютных положений пальца на трекпаде

Я нахожусь на 13-дюймовом MacBook Pro (модель 7,1. Середина 2010 года), и я недавно установил Ubuntu 12.04 LTS. По сути, я пытаюсь сделать программу, которая вызывает контекстное меню, когда пользователь нажимает в правом нижнем углу сенсорной панели Mac.

Основная проблема здесь заключается в том, чтобы определить, где именно находится позиция пользователя на трекпаде. Конечно, это довольно легко сделать в OSX, используя NSTouch :

 - (void)touchesBeganWithEvent:(NSEvent *)event { NSSet *touches = [event touchesMatchingPhase:NSTouchPhaseBegan inView:self]; for(NSTouch *touch in touches) { NSPoint normalizedPosition = touch.normalizedPosition; //points inside `normalizedPosition` //top center: (.5, 1), bottom left: (1, 0) } } 

Тем не менее, проблема делает то же самое в Ubuntu (любой язык программирования, если честно). Итак, я видел сообщения, подобные этому , однако, поскольку я уже понял, как это сделать в OSX, я не рассматриваю этот вопрос как релевантный. Я также видел этот пост, однако я не ищу универсальный стандартизированный способ определения абсолютного положения пальца. Честно говоря, я был бы рад, если бы Ubuntu обнаружил позиции пальцев только для гусениц Mac-made. Увидел этот пост AskUbuntu , но ответчик (хотя он делает большое резюме), кажется, говорит более универсально.

Кто-нибудь знает, как получить что-то вроде атрибута normalizedPosition в NSTouch в Ubuntu (или язык программирования, который компилируется на Ubuntu)?

Вы можете сделать это с помощью библиотеки mtdev . Начните с evtest, чтобы выяснить, какое устройство ввода и информация нужно использовать на устройстве ввода, а затем используйте библиотеку mtdev для доступа к ней с C.

Еще одна отличная библиотека для выполнения того, что я изначально пытался сделать (т. Е. Создать зону на трекпаде, которая вызовет контекстное меню вверх), это библиотека mtrack (чтобы сохранить некоторую работу). В нем также есть примеры для доступа к информации из mtdev, если вы хотите отправиться на охоту через код.