2010-09-14 4 views
0

Я повернул окружение X с помощью xrandr -o left | right | inverse | normal на устройстве сенсорного экрана. Все работает нормально рядом с прикосновением. При перемещении пальца на экране он принимает абсолютные координаты пальца и перемещает курсор в противоположном направлении, если вращение является обратным. Так что, если я покажусь, он скользит вниз. Так что есть способ настроить сенсорный экран, чтобы считать относительные координаты не абсолютными. Драйвер сенсорного экрана - evdev.Относительные координаты сенсорного экрана

С уважением, Левон

ответ

1

Relative/Absolute еще не будет делать то, что вы хотите, так долго, как ориентация не меняется тоже. Не существует универсального механизма, позволяющего серверу X интерпретировать устройства указателей в разных ориентациях. Вам нужно каким-то образом заставить базовое устройство сообщать об этом по-другому. Однако существует общий механизм для связи с базовым устройством.

У меня есть стилус Wacom, встроенный в мой ноутбук. Для восстановления нормальной ориентации, я могу сделать следующее:

xsetwacom набор «стилус» Поворачивать NONE

, который непосредственно общается с подстилающей водителем. Я также могу сделать следующее:

XInput установленный ИНТ-проп стилуса Wacom «Поворот» «8» 0

, который взаимодействует с драйвером X через XInput «свойства», чтобы сделать то же самое.

«evdev» - это, к счастью, тот, который позволяет такое переназначение.

xinput list, в дополнении к стилусу показывает трекпоинт моего ноутбука и внешнюю мышь, которые оба работают через evdev:

⎡ Virtual core pointer       id=2 [master pointer (3)] 
⎜ ↳ Virtual core XTEST pointer    id=4 [slave pointer (2)] 
⎜ ↳ stylus         id=6 [slave pointer (2)] 
⎜ ↳ eraser         id=7 [slave pointer (2)] 
⎜ ↳ TPPS/2 IBM TrackPoint      id=14 [slave pointer (2)] 
⎜ ↳ HID 0430:0100        id=11 [slave pointer (2)] 
... 

xinput list-props 'HID 0430:0100'

Device 'HID 0430:0100': 
     Device Enabled (135): 1 
     Device Accel Profile (251):  0 
     Device Accel Constant Deceleration (252):  1.000000 
     Device Accel Adaptive Deceleration (254):  1.000000 
     Device Accel Velocity Scaling (255): 10.000000 
     Evdev Reopen Attempts (299): 10 
     Evdev Axis Inversion (301):  0, 0 
     Evdev Axes Swap (303): 0 
     Axis Labels (304):  "Rel X" (143), "Rel Y" (144) 
     Button Labels (305): "Button Left" (136), "Button Middle" (137), "Button Right" (138), "Button Wheel Up" (139), "Button Wheel Down" (140) 
     Evdev Middle Button Emulation (306): 2 
     Evdev Middle Button Timeout (307):  50 
     Evdev Wheel Emulation (308): 0 
     Evdev Wheel Emulation Axes (309):  0, 0, 4, 5 
     Evdev Wheel Emulation Inertia (310): 10 
     Evdev Wheel Emulation Timeout (311): 200 
     Evdev Wheel Emulation Button (312):  4 
     Evdev Drag Lock Buttons (313): 0 

xinput set-int-prop 'HID 0430:0100' 'Evdev Axis Inversion' 8 1 1 инвертирует свою внешнюю мышь.

Чтобы установить в нормальное состояние:

xinput set-int-prop 'HID 0430:0100' 'Evdev Axis Inversion' 8 0 0 
xinput set-int-prop 'HID 0430:0100' 'Evdev Axes Swap' 8 0 

повернуты на 90 градусов:

xinput set-int-prop 'HID 0430:0100' 'Evdev Axis Inversion' 8 1 0 
xinput set-int-prop 'HID 0430:0100' 'Evdev Axes Swap' 8 1 

Inverted:

xinput set-int-prop 'HID 0430:0100' 'Evdev Axis Inversion' 8 1 1 
xinput set-int-prop 'HID 0430:0100' 'Evdev Axes Swap' 8 0 

повернуты на 90 градусов в другую сторону:

xinput set-int-prop 'HID 0430:0100' 'Evdev Axis Inversion' 8 0 1 
xinput set-int-prop 'HID 0430:0100' 'Evdev Axes Swap' 8 1 

Вам понадобится какой-то способ выбрать, какое устройство включить, конечно.

+0

Я сделал так же! благодаря !! – deimus

Смежные вопросы