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