0

我在触摸屏设备上使用 xrandr -o left|right|inverse|normal 旋转了 X 环境。除了触摸,一切正常。在屏幕上移动手指时,它取手指的绝对坐标,如果旋转是反向的,则向相反方向移动光标。因此,如果我实际上向上滑动,它会向下滑动。那么有没有办法配置触摸屏输入来读取相对坐标而不是绝对坐标。触摸屏驱动程序是evdev。

问候,列文

4

1 回答 1

1

只要方向也没有改变,相对/绝对仍然不会做你想做的事。没有通用的机制来告诉 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

当然,您将需要一些方法来选择将属性放在哪个设备上。

于 2011-02-06T10:47:55.427 回答