Отслеживание нескольких касаний вниз / вверх с libevdev - PullRequest
0 голосов
/ 11 апреля 2019

Я использую libevdev и у меня проблемы с пониманием того, как я могу обнаружить несколько касаний / взлетов.Как показано в этом уроке libevdev , вы можете видеть, что в последнем примере на странице происходит два касания.Однако принимаются только два события BTN_TOUCH, одно для первого пальца вниз, а затем, когда последний палец поднимается.Нет BTN_TOUCH не происходит для второго / промежуточного касания.Итак, как я могу узнать, когда второе касание поднимается и возвращается назад (т. Е. Переход от жеста двумя пальцами к жесту одним пальцем)?

Вот мой журнал для двух пальцев вниз и обоих назад:

EV_KEY  BTN_TOOL_FINGER ), value 1
EV_KEY  BTN_TOUCH ), value 1
EV_ABS  ABS_MT_TRACKING_ID ), value 0
EV_ABS  ABS_MT_POSITION_X ), value 1718
EV_ABS  ABS_MT_POSITION_Y ), value 1161
EV_ABS  ABS_MT_PRESSURE ), value 51
EV_ABS  ABS_MT_TOUCH_MAJOR ), value 1
EV_ABS  ABS_MT_TOUCH_MINOR ), value 1
EV_ABS  ABS_MT_ORIENTATION ), value 0
EV_SYN  SYN_MT_REPORT ), value 0
EV_SYN  SYN_REPORT ), value 0
EV_ABS  ABS_MT_TRACKING_ID ), value 0
EV_ABS  ABS_MT_POSITION_X ), value 1718
EV_ABS  ABS_MT_POSITION_Y ), value 1161
EV_ABS  ABS_MT_PRESSURE ), value 51
EV_ABS  ABS_MT_TOUCH_MAJOR ), value 1
EV_ABS  ABS_MT_TOUCH_MINOR ), value 1
EV_ABS  ABS_MT_ORIENTATION ), value 0
EV_SYN  SYN_MT_REPORT ), value 0
EV_SYN  SYN_REPORT ), value 0
EV_ABS  ABS_MT_TRACKING_ID ), value 0
EV_ABS  ABS_MT_POSITION_X ), value 1717
EV_ABS  ABS_MT_POSITION_Y ), value 1159
EV_ABS  ABS_MT_PRESSURE ), value 43
EV_ABS  ABS_MT_TOUCH_MAJOR ), value 1
EV_ABS  ABS_MT_TOUCH_MINOR ), value 1
EV_ABS  ABS_MT_ORIENTATION ), value 0
EV_SYN  SYN_MT_REPORT ), value 0
EV_ABS  ABS_MT_TRACKING_ID ), value 1
EV_ABS  ABS_MT_POSITION_X ), value 2148
EV_ABS  ABS_MT_POSITION_Y ), value 1066
EV_ABS  ABS_MT_PRESSURE ), value 18
EV_ABS  ABS_MT_TOUCH_MAJOR ), value 1
EV_ABS  ABS_MT_TOUCH_MINOR ), value 1
EV_ABS  ABS_MT_ORIENTATION ), value 0
EV_SYN  SYN_MT_REPORT ), value 0
EV_SYN  SYN_REPORT ), value 0
EV_KEY  BTN_TOUCH ), value 0
EV_KEY  BTN_TOOL_FINGER ), value 0
EV_SYN  SYN_REPORT ), value 0

И когда один палец поднимается и опускается, а другой остается на экране, все, что я получаю, это повторяющиеся части этого:

(EV_ABS), code 57( 57 -> 32, 32 == ABS_MT_TRACKING_ID ), value 0
(EV_ABS), code 53( 53 -> 47, 47 == ABS_MT_POSITION_X ), value 1395
(EV_ABS), code 54( 54 -> 0, 65506 == ABS_MT_POSITION_Y ), value 2086
(EV_ABS), code 58( 58 -> 0, 65509 == ABS_MT_PRESSURE ), value 127
(EV_ABS), code 48( 48 -> 98, 98 == ABS_MT_TOUCH_MAJOR ), value 1
(EV_ABS), code 49( 49 -> 110, 110 == ABS_MT_TOUCH_MINOR ), value 1
(EV_ABS), code 52( 52 -> 46, 46 == ABS_MT_ORIENTATION ), value 0
(EV_SYN), code 2( 2 -> 49, 49 == SYN_MT_REPORT ), value 0
(EV_SYN), code 0( 0 -> 0, 0 == SYN_REPORT ), value 0

1 Ответ

1 голос
/ 11 апреля 2019

Используйте инструменты BTN_TOOL_<DEVICE>. Для вашего случая это будет BTN_TOOL_DOUBLETAP. Вы можете просмотреть больше информации о них здесь https://www.kernel.org/doc/Documentation/input/event-codes.txt

...