Linux下Synaptics笔记本触摸板的配置

笔记本上Synaptics的触摸板比较常见,但关于其配置的资料目前来看比较混乱,主要原因是这两年来桌面环境的变化比较大,搜索出来的结果是不同时期的人的解决办法,往往五花八门让人无所适从,如果想完全控制触摸板,可能需要了解以下的事情:

  • 触摸板是输入设备,首先需要Xorg的支持,所以/etc/X11/xorg.conf里面会有synaptics的配置;
  • 大约08年开始,X11依赖hal来挂载硬件驱动,hal读取/etc/hal/fdi/policy里面的配置,所以会有写hal的配置文件的配置方法;
  • 10年3月,Xorg发布了1.8.0版,不再依赖hal而实现动态加载驱动,依然使用xorg.conf配置驱动参数,还新引入/etc/X11/xorg.conf.d目录里面的配置文件;
  • Xorg的synaptics驱动带有一个配置程序,synclient可对驱动参数动态设置;
  • 各个桌面环境,如Gnome、KDE默认自带了不同程度对触摸板设置的支持;
  • gsynaptics设置程序提供比桌面环境自带的多一些的设置选项,但是这个项目即将面临被荒废;Gnome有个子项目GPointingDeviceSettings,跟gsynaptics功能基本一致但还未被收录到Gnome桌面的默认组件。

在网上搜到的资料,包括各大发行版的Wiki,一般都只会覆盖以上其中一两点的配置描述,而且很多都过时。

从上面这些很“历史性”的事情可以概括出的事实:

  • 使用xorg.conf、synclient来配置触摸板最具体的参数,这点是不会变的;
  • HAL作为一个过渡性组件,对其配置的意义不太大;
  • Gnome等桌面环境启动后会重新设定一些参数,可能会重载xorg.conf的设置参数;
  • gsynaptics提供了一个常驻进程,在进入桌面时候启动,它的配置参数记录在gconf,只要其进程在运行,就会重载所有触摸板的配置参数;
  • 没有一个图形界面的设置工具能提供所有的触摸板高级特性特性设置支持。

下面列举一些触摸板的高级特性:

  • 四边角按钮

    触摸板被分布成类似九宫格的区域,除了中间的矩形区域面积较大,四个边角可以设置为一个按钮,比如最常用就是点击右下角就相当于右键,左上角为中键(个人 喜好)。
    涉及参数:(2为右键,3为中键)

    RTCornerButton=2
    RBCornerButton=0
    LTCornerButton=3
    LBCornerButton=0
  • 多点触摸

    如果是硬件原生支持多点触摸的,在Gnome的触摸板设置内能够直接打开双指滚动的选项;

  • 模拟多点触摸

    非多点触摸的触摸板也可以实现双指滚动,它通过触摸板的感应宽度来判断,即两指的在触摸板的跨度比单指大;但是这需要设置驱动参数:

    EmulateTwoFingerMinZ=50 #模拟双指感应压力
    EmulateTwoFingerMinW=6 #模拟双指感应跨度
    VertTwoFingerScroll=1 #使用双指垂直滚动
    HorizTwoFingerScroll=1 #使用双指水平滚动
    VertScrollDelta=75 #垂直滚动速度
    HorizScrollDelta=100 #水平滚动速度

    这些参数很可能需要用户自己调试出最适合的组合(如何设置调试请看本文后介绍),以上数值仅供参考。

  • 多指按键

    即在触摸板任意地方多指同敲就是相当于某击键,涉及参数:

    TapButton1=1    #一指,左键,默认
    TapButton2=3    #两指,右键;
    TapButton3=0    #三指,仅适合硬件支持多触点的触摸板,否则没法感应三指同
  • 圆周滚动

    即可在某个边沿(通常右)开始手指在触摸板按顺时/逆时针圆周划动,即产生鼠标滚轮滚动作用,通常效率比仅仅使用右侧划动区上下滚动高,特别浏览长网页时(本设置在gsynaptics/GPointingDeviceSettings里面可以直观地设置)。涉及参数:

    CircularScrolling=1 #打开圆周滚动
    CircScrollTrigger=3 #右边沿,除了0代表任意边沿,1~8分别代表从顶开始顺时针的九宫格外围8个位置。

想使用这些高级特征,一个方法是就像多数搜索出来的资料,修改xorg.conf,但如前文说会有弊端,被桌面环境重载,所以我们最好还是使用synaptics驱动自带的小工具synclient。synclient接受k=v的参数,而实时修改X11对触摸板的驱动,也很方便调试,就是运行synclient TapButton2=3,应该马上就有双指右键的效果了。所以,把所有需要设置的参数写成一个脚本文件,让进入桌面时候启动synclient来设置,似乎是目前最方便好的方法:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
export DISPLAY=:0.0
 
synclient \
EmulateTwoFingerMinZ=50 \
EmulateTwoFingerMinW=6 \
VertTwoFingerScroll=1 \
HorizTwoFingerScroll=1 \
VertScrollDelta=75 \
HorizScrollDelta=100 \
;

把代码保存成touchpad_args.sh,chmod +x加上执行位,放倒任意地方,加入到System-Preferance-Startup Application内,即可!

关于synclient的另外一个小功能是可以实时查看触摸板的感应参数,运行synclient -m 100即每100毫秒读取一次触摸板的数据并打印,所以如果感觉触摸板操作不够灵敏,肯定是那些参数数值有些不合理,可以借助这个功能(使用这个功能需要打开X11的synaptics的SHMConfig设置)。其运行结果如下:

 time     x    y   z f  w  l r u d m     multi  gl gm gr gdx gdy
0.000     1 5855   0 0  0  0 0 0 0 0  00000000   0  0  0   0   0
1.465  2562 2450  10 1  5  0 0 0 0 0  00000000   0  0  0   0   0
....

其中主要参数:x,y是水平竖直值,z指垂直压力,f是手指数,非硬件支持多指的只会0或1,w指感应跨度。这些就是对应上述的参数,如Z就是EmulateTwoFingerMinZ的Z,如果设置过大是不会反应的。

另外有人不喜欢触摸板,设置touchpadoff=1即可关闭触摸板的感应;Gnome的触摸板设置里面有一个选项,键盘打字时智能关闭触摸板,个人感觉比较有效,也就没做更多设置了。

文章分类 Unix/Linux 标签: , , , , , , , , , ,
7 comments on “Linux下Synaptics笔记本触摸板的配置
  1. BOYPT说道:

    testing…

  2. pouch说道:

    这个不错,这两天研究触控板怎么配置,把man手册和Google出来的东西翻了个遍,就是没想到在启动脚本里加一段synclient脚本的方法

  3. Mark,这几天正好要配置,谢谢PT牛~

  4. @BOYPT 话说怎么在ubuntu的network manager gadget上面启用L2TP的VPN支持?

  5. alswl说道:

    赞,这篇是我见过最好 Linux 下鼠标设置文章。

  6. benhuan说道:

    多谢多谢,非常好,非常详尽,应该再写一篇英文版的帮助一下国际友人

  7. wsdjeg说道:

    add `exec –no-startup-id synclient TapButton2=3` into `~/.i3/config` works for me

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*