Относительный / Абсолютный по-прежнему не будет делать то, что вы хотите, пока ориентация тоже не изменилась. Не существует общего механизма, позволяющего X-серверу интерпретировать указательные устройства в разных ориентациях. Вам нужно каким-то образом заставить базовое устройство сообщать по-другому. Однако существует общий механизм связи с базовым устройством.
В моем ноутбуке есть стилус Wacom. Чтобы восстановить нормальную ориентацию, я могу сделать следующее:
xsetwacom set "стилус" Поворот НЕТ
, который напрямую общается с основным драйвером. Я также могу сделать следующее:
стилус xinput set-int-prop 'Wacom Rotation' '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
Инверсный:
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
Вам, конечно, понадобится какой-то способ выбрать, на какое устройство наложить свойства.