chromebook触摸板优化调整

 在正式内容之前,我先唠叨两句:

Deepseek,NNNPD!!!
好了,言归正传:

声明:本文时间是2025年5月17日。

事情起因:

之前在海鲜市场买了一台200RMB的Chromebook,给小孩作为看视频的电脑。配置是N4120,4GB内存,64GB硬盘。
chromebook本身没问题,很流畅,兼容安卓和linux子系统。
因为我也要看视频,刚好这个小破本可以翻转过来,屏幕和键盘折叠在一起,作为一个比较厚重的平板使用,还是带触摸屏的。晚上躺着看视频挺方便。
然后就到我手里用了一段时间,结果发现 wps安装不上,没有office软件可以用。然后就开始里折腾。

折腾过程涉及范围很宽,这里主要先说说linux的事情,其他的暂时不说。

我的电脑是 poin2 chromebook 11P, 内部型号是foob360。刷的seabios,就是legacy bios,不是 full版本的,我的用full版本的黑屏无法启动。应该是bios与硬件兼容性是有问题的。

先整理一下各个发行版的驱动兼容情况:
1、ubuntu24.04 ,默认屏幕方向正常(自动旋转无效)、翻转后键盘禁用触摸板仍然工作、触摸屏没有驱动、触摸板有驱动,但工作不正常、音频正常、wifi正常
2、ubuntu22.04 ,默认屏幕方向正常(自动旋转无效)、翻转后键盘禁用触摸板仍然工作、触摸屏没有驱动、触摸板有驱动,但工作不正常、没有声音、wifi正常
3、ubuntu20 屏幕闪烁(方向不稳定,一会左、一会右)、没有声音,wifi正常,触摸板不正常
4、fydeos公开版,优盘无法启动,黑屏
5、fydeos of chromebook pixel ,触摸板正常、触摸屏正常、屏幕旋转正常,无wifi
6、chromebook flex, 优盘启动黑屏(无法安装)

最终是在ubuntu24上进行触摸板问题进行研究:

问题表现:

1、触摸板指尖轻触不工作。一度让我认为触摸板不能工作,直到偶然大力触摸发现竟然指针动了!
2、使用 evtest 工具测试,指尖轻触后在终端中会有明显的数据产生,包括触摸压力反馈都正常。
3、使用 libinput debug-event 进行测试,数据输出不正常,触摸板需要大力(例如整个指腹按上去)才有反馈,包括按键反馈和移动坐标反馈

所以推测驱动没有问题(在此之前提取了chromebook源码中的驱动重新编译发现症状依旧,一开始以为是驱动编译的不对,没效果),
而是在libinput与底层驱动之间发生了问题。用deepseek 帮助指导,进行了复杂的修改,修改内容很多不再赘述,把系统改坏,重新安装系统2次!
最后没有办法,既然evtest数据没问题,外部鼠标也没有问题,于是自己写了一个python的脚本,虚拟一个鼠标设备,利用python-evdev库直接读取触摸板数据,然后转化为虚拟鼠标的数据,进行控制。
鼠标移动、单击都很灵敏了,但是双指滚动,以及选中(点击并移动)不太理想。代码附后。有了这个起码可以凑合用了。中间停了2天。
最后还是不甘心,既然不是驱动问题,肯定是可以设置的。继续找deepseek,重点在对libinput的配置上。结果deepseek这个SB让我反复的改。给我A方案,我反馈不行,它给我B方案,我反馈不行之后,它又给我A方案,如此反复。

在测试的过程中,遇到一个报错,给了一个libinput的官方文档:https://wayland.freedesktop.org/libinput/doc/1.25.0/touchpad-pressure-debugging.html#debugging-touchpad-pressure-ranges
 
进去后,豁然开朗,很快就解决了问题!

具体过程如下:

(如果我的步骤不管用了,请直接看官方文档,很简单的)

1、确定触摸板位置和名称:

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Lid Switch
/dev/input/event1:    Sleep Button
/dev/input/event10:    sof-glkda7219max HDMI/DP,pcm=6
/dev/input/event11:    sof-glkda7219max HDMI/DP,pcm=7
/dev/input/event2:    Power Button
/dev/input/event3:    AT Translated Set 2 keyboard
/dev/input/event4:    PNP0C50:00 093A:1003 Touchpad  (我的触摸板 位置和 名称,后面用)
/dev/input/event5:    PNP0C50:00 093A:1003 Mouse
/dev/input/event7:    Tablet Mode Switch
/dev/input/event8:    sof-glkda7219max Headset Jack
/dev/input/event9:    sof-glkda7219max HDMI/DP,pcm=5
Select the device event number [0-11]: 

2、

# libinput quirks list /dev/input/event4 

我这里没有任何输出,按照官方的解释是,这个触摸板暂时没有对应的配置文件,所以可以自己新建一个。进入3.

3、

# nano /etc/libinput/local-overrides.quirks

 ,新建的文件中,输入以下内容:

[Touchpad pressure override]
MatchUdevType=touchpad
MatchName=*PNP0C50:00 093A:1003 Touchpad  (这里换成1 中的名称,前面的*号留着,应该是通配符)
MatchDMIModalias=dmi:*Foob.11297.169.0:bd05/14/2020:br4.0:efr0.0:svnGoogle:pnFoob:pvrrev0:rvnGoogle:rnFoob:rvrrev0:cvnGoogle:ct9:cvr:skusku9:         
##(这里用这个命令获得:# cat /sys/class/dmi/id/modalias)

AttrPressureRange=10:8  ##(这里在下一步修改)

4、确定压力参数,最关键(但很简单)

#libinput measure touchpad-pressure

这个命令先看下自己的触摸板的压力参数,下面是一个示例:

+-------------------------------------------------------------------------------+
| Thresh |   70   |  60  |  130   |  100   |                                    |
+-------------------------------------------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+-------------------------------------------------------------------------------+
|  178   |   x    |  x   |        |        |  75  |  75  | 0  |  75  |    75    |
|  179   |   x    |  x   |        |        |  35  |  88  | 0  |  77  |    81    |
|  180   |   x    |  x   |        |   x    |  65  | 113  | 0  |  98  |    98    |
|  181   |   x    |  x   |        |   x    |  50  | 101  | 0  |  86  |    90    |
|  182   |   x    |  x   |        |        |  40  |  80  | 0  |  66  |    70    |
|  183   |   x    |      |        |        |  43  |  78  | 78 |                 |
...

上面是libinput接收到的信息,而我这边显示的是 min、max 显示都是挺正常的,但是在down(就是按下不正常),我轻触的时候,手指明明在触摸板上,但是显示却是up,松开后,up和down都没有了。而用指腹,大力的时候,down有显示。所以就找到问题了。

5、临时调整:

# libinput measure touchpad-pressure --touch-thresholds=10:8 --palm-threshold=20

这是官方推荐的参数,直接用这个参数后,继续用上面 4的看看效果。我用了这个参数的结果就是 手掌检测太灵敏了,我手指按上去,检测的也是手掌 ,根据4上的显示,我用手掌试了一下,压力基本在100以上。所以我把最后一项改成了100。
确定参数后,回去修改 3 里面的配置文件。

6、验证参数:

# libinput  quirks  list /dev/input/event4 

 (这里 官方文档有个错误,使用的命令是 quirks list 而不是 list-quirks
 如果看到类似这样的输出,就是配置成功了AttrPressureRange=10:8,具体看你配置文件中写的

6、保存退出,重启,触摸板就可以正常使用了。

附上我完整的配置文件:
 

~$ cat /etc/libinput/local-overrides.quirks

[Touchpad pressure override]
MatchUdevType=touchpad
MatchName=*PNP0C50:00 093A:1003 Touchpad
MatchDMIModalias=dmi:*Foob.11297.169.0:bd05/14/2020:br4.0:efr0.0:svnGoogle:pnFoob:pvrrev0:rvnGoogle:rnFoob:rvrrev0:cvnGoogle:ct9:cvr:skusku9:
AttrPressureRange=10:8

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容