1

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

Device 'ft5x_ts':
...
Evdev Third Button Emulation (257): 1
Evdev Third Button Emulation Timeout (258): 750
Evdev Third Button Emulation Button (259):  3
Evdev Third Button Emulation Threshold (260):   20
...

(полный журнал)

Однако эмуляция не работает - события нажатия правой кнопки никогда не появляются. Вот пример вывода xev :

ButtonPress event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2058845, (94,90), root:(96,117),
state 0x100, button 1, same_screen YES

MotionNotify event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2059658, (94,89), root:(96,116),
state 0x100, is_hint 0, same_screen YES

MotionNotify event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2060101, (94,89), root:(96,116),
state 0x100, is_hint 0, same_screen YES

ButtonRelease event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2060101, (94,89), root:(96,116),
state 0x100, button 1, same_screen YES

Как видите, интервал между ButtonPress и ButtonRelease превышает 750 мс, а перемещение указателя ниже порога 20 пикселей , однако xev сообщает о нажатии кнопки 1, а не кнопки 3.

По иронии судьбы, когда я настраиваю USB-мышь таким же образом, длинные нажатия на кнопку 1 делают эмуляцию кнопки 3:

ButtonPress event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2870367, (48,82), root:(50,109),
state 0x0, button 3, same_screen YES

MotionNotify event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2870422, (49,81), root:(51,108),
state 0x400, is_hint 0, same_screen YES

ButtonRelease event, serial 45, synthetic NO, window 0x2000001,
root 0x44, subw 0x0, time 2870590, (49,81), root:(51,108),
state 0x400, button 3, same_screen YES

Кто-нибудь может мне помочь, возможно, указать на некоторые аномалии, которые я не заметил?

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

1 ответ1

0

В соответствии с этим и этим, эмуляция правого клика является распространенной проблемой в Debian Jessie, не ограничиваясь конкретным дистрибутивом. Обходной путь, который мне помог (на 10-точечном сенсорном экране), заключается в использовании утилиты twofing :

git clone https://github.com/Plippo/twofing
sudo apt-get install build-essential libx11-dev libxtst-dev libxi-dev x11proto-randr-dev libxrandr-dev
cd twofing; make
./twofing /dev/input/eventXX

eventXX - это устройство, соответствующее сенсорному экрану, которое можно найти в xinput list . Событие щелчка правой кнопкой мыши выполняется нажатием двумя пальцами, и в качестве бонуса вы получаете жест прокрутки (перетаскивание двумя пальцами) и жест увеличения / уменьшения масштаба (щепотка двумя пальцами). Я не пробовал twofing с резистивным сенсорным экраном, но полагаю, что он не будет работать, поскольку резистивные сенсорные экраны не поддерживают мультитач.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .