Устройство или драйвер с сенсорной панелью на ThinkPad X250 пропускает обновления положения при медленных движениях, приводящих к прыжкам, неточным движениям, временно застрявшему курсору. Это особенно раздражает для точных настроек курсора.
Симптомы:
- При слишком медленном перемещении пальца курсор перестает двигаться и возобновляет работу после достаточного пройденного расстояния, что приводит к прыжку.
- Это порог, а не проблема разрешения. Движение плавное выше порога.
- Пока он работает, evtest показывает события для ABS_MT_POSITION_X, ABS_MT_POSITION_Y, ABS_X, ABS_Y, ABS_PRESSURE, ABS_MT_PRESSURE.
- Пока устройство зависло, оно продолжает отправлять обновления, но только ABS_PRESSURE и ABS_MT_PRESSURE.
Количество прыжков зависит от настроек драйвера. Предлагаемое решение изменяет настройки драйвера, чтобы уменьшить переходы от этого нестабильного поведения за счет значительного уменьшения используемых разрешений и профилей ускорения. Это не относится к пороговому значению, но уменьшает симптом скачка.
Andrew.punnett связывает такой отчет об ошибке. Примеры видео из этого отчета об ошибке: https://www.youtube.com/watch?v=oTgaf8tTNEc , https://imgur.com/gVV7OqI
Система: Ubuntu 16.04, в настоящее время используется стандартная версия 4.4.0-92 x86_64. Xinput отображает устройство как «SynPS / 2 Synaptics TouchPad». Я наблюдал поведение на двух X250 и на T-??? ThinkPad.
Моя конфигурация драйвера настраивается через synclient и xinput. Я не нашел параметров, чтобы изменить это поведение. Смотрите вывод synclient, xinput ниже:
~$ synclient
Parameter settings:
LeftEdge = 1545
RightEdge = 5399
TopEdge = 1333
BottomEdge = 4521
FingerLow = 25
FingerHigh = 30
MaxTapTime = 180
MaxTapMove = 255
MaxDoubleTapTime = 100
SingleTapTimeout = 180
ClickTime = 100
EmulateMidButtonTime = 0
EmulateTwoFingerMinZ = 282
EmulateTwoFingerMinW = 7
VertScrollDelta = 116
HorizScrollDelta = 116
VertEdgeScroll = 0
HorizEdgeScroll = 0
CornerCoasting = 0
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 1
MinSpeed = 1
MaxSpeed = 1
AccelFactor = 0.0343997
TouchpadOff = 0
LockedDrags = 0
LockedDragTimeout = 5000
RTCornerButton = 2
RBCornerButton = 3
LTCornerButton = 0
LBCornerButton = 0
TapButton1 = 1
TapButton2 = 3
TapButton3 = 2
ClickFinger1 = 1
ClickFinger2 = 3
ClickFinger3 = 2
CircularScrolling = 1
CircScrollDelta = 0.1
CircScrollTrigger = 0
CircularPad = 0
PalmDetect = 0
PalmMinWidth = 10
PalmMinZ = 200
CoastingSpeed = 20
CoastingFriction = 50
PressureMotionMinZ = 30
PressureMotionMaxZ = 160
PressureMotionMinFactor = 1
PressureMotionMaxFactor = 1
ResolutionDetect = 1
GrabEventDevice = 0
TapAndDragGesture = 1
AreaLeftEdge = 2000
AreaRightEdge = 5000
AreaTopEdge = 0
AreaBottomEdge = 0
HorizHysteresis = 0
VertHysteresis = 0
ClickPad = 1
RightButtonAreaLeft = 3472
RightButtonAreaRight = 0
RightButtonAreaTop = 4112
RightButtonAreaBottom = 0
MiddleButtonAreaLeft = 0
MiddleButtonAreaRight = 0
MiddleButtonAreaTop = 0
MiddleButtonAreaBottom = 0
~$ xinput list-props "SynPS/2 Synaptics TouchPad"
Device 'SynPS/2 Synaptics TouchPad':
Device Enabled (139): 1
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (270): 1
Device Accel Constant Deceleration (271): 1.000000
Device Accel Adaptive Deceleration (272): 1.000000
Device Accel Velocity Scaling (273): 1.000000
Synaptics Edges (295): 1545, 5399, 1333, 4521
Synaptics Finger (296): 25, 30, 0
Synaptics Tap Time (297): 180
Synaptics Tap Move (298): 255
Synaptics Tap Durations (299): 180, 100, 100
Synaptics ClickPad (300): 1
Synaptics Middle Button Timeout (301): 0
Synaptics Two-Finger Pressure (302): 282
Synaptics Two-Finger Width (303): 7
Synaptics Scrolling Distance (304): 116, 116
Synaptics Edge Scrolling (305): 0, 0, 0
Synaptics Two-Finger Scrolling (306): 1, 1
Synaptics Move Speed (307): 1.000000, 1.000000, 0.034400, 0.000000
Synaptics Off (308): 0
Synaptics Locked Drags (309): 0
Synaptics Locked Drags Timeout (310): 5000
Synaptics Tap Action (311): 2, 3, 0, 0, 1, 3, 2
Synaptics Click Action (312): 1, 3, 2
Synaptics Circular Scrolling (313): 1
Synaptics Circular Scrolling Distance (314): 0.100000
Synaptics Circular Scrolling Trigger (315): 0
Synaptics Circular Pad (316): 0
Synaptics Palm Detection (317): 0
Synaptics Palm Dimensions (318): 10, 200
Synaptics Coasting Speed (319): 20.000000, 50.000000
Synaptics Pressure Motion (320): 30, 160
Synaptics Pressure Motion Factor (321): 1.000000, 1.000000
Synaptics Resolution Detect (322): 1
Synaptics Grab Event Device (323): 0
Synaptics Gestures (324): 1
Synaptics Capabilities (325): 1, 0, 0, 1, 1, 1, 1
Synaptics Pad Resolution (326): 73, 53
Synaptics Area (327): 2000, 5000, 0, 0
Synaptics Soft Button Areas (328): 3472, 0, 4112, 0, 0, 0, 0, 0
Synaptics Noise Cancellation (329): 0, 0
Device Product ID (260): 2, 7
Device Node (261): "/dev/input/event5"