接前篇文章《Linux下修改触摸板默认行为的方法、所遇问题及解决》,地址:
Linux下修改触摸板默认行为的方法、所遇问题及解决_蓝天居士的博客-CSDN博客
修改触摸板行为的方法找到了,但是如何能够在编译及生成镜像的时候就已经将70-synaptics.conf文件修改过来了,而不需要用户通过脚本或者GUI手动进行修改?
为此,需要找到是哪个包中产生的70-synaptics.conf文件。在笔者的ubuntu22.04环境下,看一下/usr/share/X11/xorg.conf.d/目录下的内容,如下所示:
- $ ls /usr/share/X11/xorg.conf.d/
- 10-amdgpu.conf 10-quirks.conf 10-radeon.conf 40-libinput.conf 70-wacom.conf
虽然没有看到70-synaptics.conf文件,但是有个70-wacom.conf文件。看名字也能知道,和synaptics是类似的。通过dpkg -S命令看一下它属于哪个包:
- $ dpkg -S /usr/share/X11/xorg.conf.d/
- xserver-xorg-core, xserver-xorg-input-wacom, xserver-xorg-input-libinput, xserver-xorg-video-amdgpu, xserver-xorg-video-radeon: /usr/share/X11/xorg.conf.d
-
- $ dpkg -S /usr/share/X11/xorg.conf.d/70-wacom.conf
- xserver-xorg-input-wacom: /usr/share/X11/xorg.conf.d/70-wacom.conf
根据以上信息可以看到,70-wacom.conf属于xsever-xorg-input-wacom包。那么这个包又是通过哪个源码包安装的呢?我们需要在BLFS中寻找答案,见以下链接:
https://www.linuxfromscratch.org/blfs/view/systemd/x/x7driver.html
其页面下有这样一段内容:


有人也许会问,你怎么知道是这个Xorg Wacom Driver生成的xsever-xorg-input-wacom包?你可以观察它的名字。前半部分是xserver-xorg,说明与xserver-xorg相关并且在其下;后半部分为input-wacom,这就能定位到页面中的具体位置了。
至此,我们找到了70-wacom.conf文件对应的源码包。这就离70-synaptics.conf不远了。实际上wacom对应的是wacom公司的触摸板,那么显而易见地,synaptics对应的就是synaptics公司的触摸板了。
仍然还是上面的链接:https://www.linuxfromscratch.org/blfs/view/systemd/x/x7driver.html
在其中找到synaptics相关的内容,其实就在wacom的上边(笔者再贴图中留了个线索,仔细观察上边wacom的图会看到蛛丝马迹)。


可以看到,产生70-synaptics.conf文件的源码包是xf86-input-synaptics-xx.xx.xx.tar.gz(其中:xx代表版本号)。
下载对应的源码包,解压后内容如下:
- $ ls xf86-input-synaptics-1.9.2
- aclocal.m4 compile config.guess config.sub configure.ac depcomp INSTALL ltmain.sh Makefile.in missing src xorg-synaptics.pc.in
- ChangeLog conf config.h.in configure COPYING include install-sh Makefile.am man README.md tools
在其中查找“70-synaptics”相关的内容:
- $ grep -rn "70-synaptics" ./xf86-input-synaptics-1.9.2
- ./xf86-input-synaptics-1.9.2/ChangeLog:234: conf: rename to 70-synaptics.conf
- ./xf86-input-synaptics-1.9.2/conf/Makefile.am:23:dist_config_DATA = 70-synaptics.conf
- ./xf86-input-synaptics-1.9.2/conf/Makefile.in:141:am__dist_config_DATA_DIST = 70-synaptics.conf
- ./xf86-input-synaptics-1.9.2/conf/Makefile.in:328:@HAS_XORG_CONF_DIR_TRUE@dist_config_DATA = 70-synaptics.conf
- ./xf86-input-synaptics-1.9.2/man/synaptics.man:926:.I ${sourcecode}/conf/70-synaptics.conf
可以看到,70-synaptics文件位于config文件夹下。查看其内容:
- $ cat conf/70-synaptics.conf
- # Example xorg.conf.d snippet that assigns the touchpad driver
- # to all touchpads. See xorg.conf.d(5) for more information on
- # InputClass.
- # DO NOT EDIT THIS FILE, your distribution will likely overwrite
- # it when updating. Copy (and rename) this file into
- # /etc/X11/xorg.conf.d first.
- # Additional options may be added in the form of
- # Option "OptionName" "value"
- #
- Section "InputClass"
- Identifier "touchpad catchall"
- Driver "synaptics"
- MatchIsTouchpad "on"
- # This option is recommend on all Linux systems using evdev, but cannot be
- # enabled by default. See the following link for details:
- # http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
- # MatchDevicePath "/dev/input/event*"
- EndSection
-
- Section "InputClass"
- Identifier "touchpad ignore duplicates"
- MatchIsTouchpad "on"
- MatchOS "Linux"
- MatchDevicePath "/dev/input/mouse*"
- Option "Ignore" "on"
- EndSection
-
- # This option enables the bottom right corner to be a right button on clickpads
- # and the right and middle top areas to be right / middle buttons on clickpads
- # with a top button area.
- # This option is only interpreted by clickpads.
- Section "InputClass"
- Identifier "Default clickpad buttons"
- MatchDriver "synaptics"
- Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
- Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%"
- EndSection
-
- # This option disables software buttons on Apple touchpads.
- # This option is only interpreted by clickpads.
- Section "InputClass"
- Identifier "Disable clickpad buttons on Apple touchpads"
- MatchProduct "Apple|bcm5974"
- MatchDriver "synaptics"
- Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
- EndSection
这就是最终系统中的/usr/share/X11/xorg.conf.d/70-synaptics.conf文件。
经过一番努力,文件找到了,如何自动向文件中添加需要的内容?利用sed命令。在这里假设需要事触摸板的默认行为变为轻触触摸板表示左键单击,则需要添加以下一行命令:
sed -i '/This option is recommend on all Linux systems using evdev/i \ \ \ \ \ \ \ \ Option "TapButton1" "1"' ./conf/70-synaptics.conf
完整的示例脚本如下:
- tar -xf xf86-input-synaptics-1.9.1.tar.bz2
- cd xf86-input-synaptics-1.9.1
-
- sed -i '/This option is recommend on all Linux systems using evdev/i \ \ \ \ \ \ \ \ Option "TapButton1" "1"' ./conf/70-synaptics.conf
-
- ./configure $XORG_CONFIG
-
- make -j32
- make install
这样修改后,经过编译生成镜像并烧录,系统中的/usr/share/X11/70-synaptics.conf文件内容就是修改后的了,触摸板的默认行为就改变过来了。