我的电脑是 ThinkBook 16+ 2024 Ultra 9。机器底部写的具体型号是:ThinkBook 16 G6+ IMH。安装了 Deepin V23.1 后发现触控板没反应。
我的型号触控板信息:
caibh@deepin:~$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SONiX USB Keyboard Consumer Control id=9 [slave pointer (2)] ⎜ ↳ Logitech G304 id=11 [slave pointer (2)] ⎜ ↳ GXTP5100:00 27C6:01E9 id=12 [slave pointer (2)] # <---- 这个!!! ⎜ ↳ GXTP5100:00 27C6:01E9 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Video Bus id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ SONiX USB Keyboard id=8 [slave keyboard (3)] ↳ SONiX USB Keyboard System Control id=10 [slave keyboard (3)] ↳ Ideapad extra buttons id=14 [slave keyboard (3)] ↳ sof-hda-dsp Headphone id=15 [slave keyboard (3)] ↳ Intel HID events id=16 [slave keyboard (3)] ↳ Intel HID 5 button array id=17 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=18 [slave keyboard (3)] ↳ SONiX USB Keyboard Consumer Control id=19 [slave keyboard (3)] ↳ Logitech G304 id=20 [slave keyboard (3)]
先克隆这里的代码:
git clone https://github.com/ty2/goodix-gt7868q-linux-driver.git
然后 cd 到代码目录下,执行 make 命令,如无意外会报错:
make
caibh@deepin:~/app/touchpad_driber/goodix-gt7868q-linux-driver$ make make -C /lib/modules/6.12.20-amd64-desktop-rolling/build/ M=/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver modules make[1]: 进入目录“/usr/src/linux-headers-6.12.20-amd64-desktop-rolling” warning: the compiler differs from the one used to build the kernel The kernel was built by: gcc (Deepin 12.3.0-17deepin8) 12.3.0 You are using: gcc (Deepin 12.3.0-17deepin12) 12.3.0 CC [M] /home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.o /home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.c:36:21: error: initialization of ‘const __u8 * (*)(struct hid_device *, __u8 *, unsigned int *)’ {aka ‘const unsigned char * (*)(struct hid_device *, unsigned char *, unsigned int *)’} from incompatible pointer type ‘__u8 * (*)(struct hid_device *, __u8 *, unsigned int *)’ {aka ‘unsigned char * (*)(struct hid_device *, unsigned char *, unsigned int *)’} [-Werror=incompatible-pointer-types] 36 | .report_fixup = goodix_gt7868q_report_fixup, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.c:36:21: note: (near initialization for ‘goodix_gt7868q_driver.report_fixup’) cc1: some warnings being treated as errors make[3]: *** [scripts/Makefile.build:229:/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.o] 错误 1 make[2]: *** [/usr/src/linux-headers-6.12.20-amd64-desktop-rolling/Makefile:1952:/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver] 错误 2 make[1]: *** [Makefile:224:__sub-make] 错误 2 make[1]: 离开目录“/usr/src/linux-headers-6.12.20-amd64-desktop-rolling” make: *** [Makefile:10:all] 错误 2
解决方法是打开 goodix-gt7868q.c 这个文件,修改一下 goodix_gt7868q_report_fixup 的返回值类型,加一个 const 关键字:
goodix-gt7868q.c
goodix_gt7868q_report_fixup
// 原来是这样的: static __u8 *goodix_gt7868q_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) // 改成这样: static const __u8 *goodix_gt7868q_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
然后重新编译:
make clean make
接下来跟着 README.md 里面的步骤做就行:
sudo modprobe ./goodix-gt7868q.ko sudo make install-dkms sudo make install-quirks
最后重启一下显示管理器,注销再登录都可以:
sudo systemctl restart lightdm
现在触控板是可以用了,但是发现没法用 FN + F8 来切换触控板的开关,而通过 设置 / 鼠标 / 触控板 / 启用触控板 去控制开关则是没问题的。
FN + F8
设置 / 鼠标 / 触控板 / 启用触控板
希望官方可以解决这个小问题。
Popular Ranking
Popular Events
问题
我的电脑是 ThinkBook 16+ 2024 Ultra 9。机器底部写的具体型号是:ThinkBook 16 G6+ IMH。安装了 Deepin V23.1 后发现触控板没反应。
我的型号触控板信息:
解决
先克隆这里的代码:
然后 cd 到代码目录下,执行
make
命令,如无意外会报错:解决方法是打开
goodix-gt7868q.c
这个文件,修改一下goodix_gt7868q_report_fixup
的返回值类型,加一个 const 关键字:然后重新编译:
接下来跟着 README.md 里面的步骤做就行:
最后重启一下显示管理器,注销再登录都可以:
遗留问题
现在触控板是可以用了,但是发现没法用
FN + F8
来切换触控板的开关,而通过设置 / 鼠标 / 触控板 / 启用触控板
去控制开关则是没问题的。希望官方可以解决这个小问题。
参考