xorg 在開機的時後,會將所有的 driver load 進來,可以在/var/log/Xorg.0.log 看到,而 /usr/share/X11/xorg.conf.d 下面則放著針對各個 driver 的設定檔 (也可以不放就是 default), 像這次遇到的就是 50-synaptics.conf
然後從 xinput 及 移除 psmouse kernel module 的方式可以知道它的 touch pad 是走 I2C,也就是說 kernel driver 把 x, y 丟上來, xorg driver 去判斷是 edge 還是 function button 之類的。
所以再看 xorg 的 user space Synaptics driver :
* https:/
* https:/
透過 code 及觀查 evtest 吐出來的 x, y 可以看到兩個問題 (evtest 在 driver 之上, Xorg 之下):
1. right edge 沒有 x 坐標丟出來
- 這應該要看 kernel driver.
2. user space Synaptics driver 根据的 VID:PID [0002:0007] 是 psmouse 的ID,但最後抓到的是 [06cb:78f6] 看起來像是 Synaptics i2c 的 ID.
- driver根拒這個決定 edge width,UNKNOWN ID 短於 Synaptics ,再加上 第 1. 點,所以touch 點永遠不被判定為 edge
所以解 1 or 2 就可以解掉這個問題,或者直接在 50-synaptics.conf 上面固定 edge width 當 workaround.
另外,同事有建議試用 xinput 取代Synaptics user space driver, 有空再試吧~
reference :
* https://wiki.archlinux.org/index.php/Touchpad_Synaptics
* https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/+bug/1627674