我在触摸屏设备上使用 xrandr -o left|right|inverse|normal 旋转了 X 环境。除了触摸,一切正常。在屏幕上移动手指时,它取手指的绝对坐标,如果旋转是反向的,则向相反方向移动光标。因此,如果我实际上向上滑动,它会向下滑动。那么有没有办法配置触摸屏输入来读取相对坐标而不是绝对坐标。触摸屏驱动程序是evdev。
问候,列文
只要方向也没有改变,相对/绝对仍然不会做你想做的事。没有通用的机制来告诉 X 服务器以不同的方向解释指针设备。您需要以某种方式让底层设备以不同的方式报告。但是,有一种与底层设备通信的通用机制。
我的笔记本电脑内置了 Wacom 触控笔。要恢复正常方向,我可以执行以下操作:
xsetwacom 设置“stylus”旋转无
它直接与底层驱动程序对话。我还可以执行以下操作:
xinput set-int-prop stylus 'Wacom Rotation' '8' 0
它通过 XInput“属性”与 X 驱动程序通信以执行相同的操作。
幸运的是,“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
当然,您将需要一些方法来选择将属性放在哪个设备上。