Difference between revisions of "Touchpad Synaptics (简体中文)"

From ArchWiki
Jump to: navigation, search
Line 363: Line 363:
  
 
==疑难解答==
 
==疑难解答==
 +
 +
=== xorg.conf.d/50-synaptics.conf 在 GNOME and MATE失效 ===
 +
 +
[[GNOME]] 和[[MATE]] 会覆盖您的个性化设定,包括那些没法在GNOME或者MATE下进行图形化设定的选项.所以这导致{{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} 里的设置不起作用了.请参考本文GNOME一节来避免这种情况的发生.
 +
 +
* [[Touchpad_Synaptics#GNOME]]
 +
 +
 
====ALPS 触摸板====
 
====ALPS 触摸板====
 
{{Expansion}}
 
{{Expansion}}

Revision as of 07:03, 29 October 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: please use the first argument of the template to provide more detailed indications.

本文描述了 Synaptics 输入驱动 的安装和配置过程,适用于大多数笔记本电脑上的Synaptics(或ALPS)触摸板

安装

Synaptics 驱动当前被打包为xf86-input-synaptics,可以从官方软件仓库安装

配置

配置的主要方法是通过修改 xorg Server 配置文件来完成配置。在安装了 xf86-input-synaptics 之后,一个默认的配置文件位于 /etc/X11/xorg.conf.d/10-synaptics.conf


用户可以通过编辑这个文件来对驱动的各种选项进行配置,完整的选项列表请参考synaptics的man page:

$ man synaptics

常用选项

下面列举了大多数用户希望进行配置的选项。请注意,所有的这些选项都可以直接被添加到主配置文件 /etc/X11/xorg.conf.d/10-synaptics.conf 中,比如,下面的例子里,我们启用了水平,垂直和环形滚动:

/etc/X11/xorg.conf.d/10-synaptics.conf
 Section "InputClass"
       Identifier "touchpad"
       Driver "synaptics"
       MatchIsTouchpad "on"
              Option "TapButton1" "1"
              Option "TapButton2" "2"
              Option "TapButton3" "3"
              Option "VertEdgeScroll" "on"
              Option "VertTwoFingerScroll" "on"
              Option "HorizEdgeScroll" "on"
              Option "HorizTwoFingerScroll" "on"
              Option "CircularScrolling" "on"
              Option "CircScrollTrigger" "2"
              Option "EmulateTwoFingerMinZ" "40"
              Option "EmulateTwoFingerMinW" "8"
              ...
 EndSection
TapButton1
(integer) 配置 “当用一根手指在非角落区域触击时,哪个鼠标键点击事件被上报”
TapButton2
(integer) 配置 “当用两根手指在非角落区域触击时,哪个鼠标键点击事件被上报”
TapButton3
(integer) 配置 “当用三根手指在非角落区域触击时,哪个鼠标键点击事件被上报”
RBCornerButton
(integer) 配置 “当在右下角单指触及时,哪个鼠标键点击事件被上报"(使用Option "RBCornerButton" "3"来完成Ubuntu式的右键点击设定(右下角轻触代表点击右键))
RTCornerButton
(integer) 对右上角轻触进行配置,和RBCornerButton类似
VertEdgeScroll
(boolean) 在触摸板的由边缘滑动时,启用垂直滚动
HorizEdgeScroll
(boolean) 在触摸板的下边缘滑动时,启用水平滚动
VertTwoFingerScroll
(boolean) 启用双指垂直滚动
HorizTwoFingerScroll
(boolean) 启用双指水平滚动
EmulateTwoFingerMinZ/W
(integer) 使用这两个参数来对双指滚动的精度进行调教


这个例子包含了所有选项的简短介绍. 因为不同计算机的配置一般也不同. 我们推荐使用 synclient来对你的计算机进行针对性调教

Note: 如果你经常因为手掌扫过触摸板而导致TabButton2属性被触发(大多数时候都是"粘贴”动作),而你又不介意关闭掉双指触击功能,请将TapButton2设置为0

其他选项

VertScrollDelta and HorizScrollDelta
(integer)配置滚动速度, 对它们的配置比较直观,因为值越高滚动精度就越高而速度越低.设置成负值就能实现类似OS X系统的"自然滚动"
SHMConfig
(boolean) 是否开启共享内存以支持实时调试. 现在这个选项已经无效,并且它也只能提供针对事件的实时调试

GNOME

GNOME用户可能必须对这些选项进行客制化,因为GNOME默认禁用了触击,水平滚动,并且不允许在打字时暂时禁用触摸板。

当在Gnome 2下想要修改这些设定时:

  1. 运行 gconf-editor
  2. 编辑 /desktop/gnome/peripherals/touchpad/ 文件夹中的键.

当在Gnome 3下想要修改这些设定时:

  1. 打开 System Settings.
  2. 点击 Mouse and Touchpad.
  3. Touchpad 选项卡里对这些配置进行更改.


Gnome的配置监控程序可能会覆盖现存设定(比如在 xorg.conf.d 中进行的预设),而那些设定可能和您的配置完全不一样。不过,我们可以完全停止Gnome在鼠标设定上的监控:

  1. 运行dconf-editor
  2. 编辑 /org/gnome/settings-daemon/plugins/mouse/
  3. active 的勾选取消

这样,您对synaptics触摸板的设定就可以生效了。

Remember: 既然Gnome是基于用户配置的,当你运行了dconf-editor或者gconf-editor进行更改,那么这些变化也只会体现当前用户的会话上。你在其他账户上可能需要重复上述过程。

MATE

在MATE上,可以通过类似于GNOME的方法来配置触摸板:

  1. 运行 mateconf-editor
  2. 编辑 desktop/mate/peripherals/touchpad/ 文件夹里面的键


可以通过下面的方法来阻止Mate配置守护程序改写当前配置:

  1. 运行 mateconf-editor
  2. 编辑 /apps/mate_settings_daemon/plugins/mouse/
  3. 取消active勾选 .

实时配置

除了提供传统的配置方法,Synaptics驱动现在还支持实时配置。这意味着用户能通过软件来进行实时设置而不需要重启X服务器。在你将配置项添加到主配置文件之前,这个特性可以帮助你进行测试。 实时配置是非永久的,当重启,挂起/恢复,或者重启udev后就会失效。所以这个功能只适合用来对配置进行测试和精校。

为了让这些“实时配置工具”生效,您需要在10-synaptic.conf中添加SHMConfig Option

/etc/X11/xorg.conf.d/10-synaptics.conf
…
Option "SHMConfig" "on" # or Option "SHMConfig"  "true"
…

命令行工具

  • Note : Synclient — cSynclient是一个可以对Synaptics驱动进行查询并进行配置的命令行工具,这个工具是由synaptics维护者开发并和synaptics驱动一起提供给用户
http://xorg.freedesktop.org/ || xf86-input-synaptics

图形化工具

Warning: 下面的某些工具仍然需要在过去的SHMConfig模式下运行,而且和目前的 xf86-input-synaptics驱动也不兼容。请从列表中移除过期的工具。
  • GPointing Device Settings — 提供对当前系统上的指针设备进行实时配置的图形界面(包括Synaptics触摸板),这个应用替代GSynaptics成为了对Synaptics驱动进行图形化配置的优先程序.
http://live.gnome.org/GPointingDeviceSettings || gpointing-device-settings
Note: 需要安装 xf86-input-synapticslibsynaptics , GPointingDeviceSettings工具才能在Synaptics触摸板上运行!
  • GSynaptics (deprecated) — 允许用户配置诸如水平,垂直,环形滚动,启不启用触摸板等选项.GSynaptics website上面提到这个程序的开发已经停止,所以它最终会过期. 这个应用在xorg 1.11上可以完美运行.一般情况下,建议寻找图形化配置工具的用户使用"GPointingDeviceSettings",只有在别无选择的情况下才应该尝试使用GSynaptics.
http://gsynaptics.sourceforge.jp/ || gsynaptics
  • Synaptiks (unmaintained) — KDE上的触摸板管理配置工具.它提供一个系统设置模块来对触摸板进行基础和高级配置.另外,它还附有系统托盘程序,这个托盘程序能够在插入外接鼠标或者打字时临时禁用触摸板.这个程序目前处于无人维护状态,而且在KDE4.11下,它好像会崩溃.
https://github.com/synaptiks/synaptiks || synaptiks

高级配置

使用xinput来检测您的触摸板有什么功能

根据型号不同,Synaptics可能有以下特性:

  • 拥有物理左键,物理中键,物理右键
  • 能够进行两指检测
  • 能够进行三指检测
  • 能够配置分辨率

使用 xinput list来找到您的synaptics设备名

首先,找到触摸板的名字

$ xinput -list

然后,您可以使用xipunt来查看您的触摸板有什么特性

$ xinput list-props "SynPS/2 Synaptics TouchPad" | grep Capabilities

      Synaptics Capabillities (309):  1, 0, 1, 0, 0, 1, 1

从左到右,分别代表:

  • (1) 设备有物理左键
  • (0) 设备有物理中键
  • (1) 设备有物理右键
  • (0) 设备支持两指检测
  • (0) 设备支持三指检测
  • (1) 设备可以配置垂直分辨率
  • (1) 设备可以配置水平分辨率


使用xinput list-props "SynPS/2 Synaptics TouchPad" 来列出设备的所有属性

详情请阅读xinput和synaptics的帮助文档

Synclient

在synaptics manpage里面列出的所有参数都可以通过synclient进行配置.下面命令列出了一个完整的用户设置的清单:

$ synclient -l

所有列出的参数都可以用synclient进行配置, 比如:

$ synclient PalmDetect=1 (to enable palm detection)
$ synclient TapButton1=1 (configure button events)
$ synclient TouchpadOff=1 (disable the touchpad)

使用synclient进行成功的设定和测试后,你可以将这些设定添加到/etc/X11/xorg.conf.d/10-synaptics.conf

(1.71驱动里,已经取消了SHMConfig设定,随驱动一起发行的synclient工具也不再支持-m参数.所以,下面的描述已经过期.本文的英文版里面已经删除了使用synclient -m进行测试的这一节.考虑到兼容性,我保留了这一段描述)

synclient监视器可以实时地显示触摸板的触摸位置和压力,以提供比默认的Synaptics设置更精细的调整。您需要设置SHMConfig选项为ontrue以确保synclient正常工作。

您可以这样启动synclient:

$ synclient -m 100

-m参数设置了synclient的更新间隔时间,单位为毫秒。

这个监视器提供了有关于触摸板当前状态的信息。比如,如果您利用触摸板移动了鼠标指针,那么监视器中x和y的值就会随之变化。这样您就可以方便地确定各个边界,以便于设定LeftEdge-,RightEdge-,BottomEdge-和TopEdge-选项。

下面列出了所有能够监视的状态以及它们的简要描述:

+监视项+ +描述+
time 从开始记录起到当前经过的时间,单位是秒。
x, y 手指放在触摸板上的x/y坐标,原点是左上角。
z 手指放在触摸板上的压力。
f 放在触摸板上的手指数。
w 手指的宽度。
l,r,u,d,m,multi 这些值代表了左,右,上,下,中,多功能这6个按键的状态,0代表没有被按下,1代表被按下。
gl,gm,gr 对于有guest device的触摸板,这些值代表了guest device上按键的状态。
gdx, gdy guest device的x/y坐标。

如果某个值一直是0,那就表明您的触摸板不支持这一项。

可以利用synclient来测试新的值(首先要确保SHMConfig被打开)。例如,要调整最小指针速度:

$ synclient MinSpeed=0.5

这样做出的改变不是永久的。如果您对这些更改满意并希望它们一直保留,就需要把他们放到 /etc/X11/xorg.conf.d/10-synaptics.conf 中。


Evtest

evtest工具能够实时的显示触摸板上的压力和位置信息,允许对默认的Synaptics设定进行精校.可以通过如下方式启动evtest

$ evtest /dev/input/eventX

X代表触摸板的ID,可以通过查看cat /proc/bus/input/devices的输出来获取它. evtest需要对设备进行排他访问,因此,evtest不能和X Server的实例共存.你可以通过杀死X Server进程或者在虚拟终端上运行evtest来解决这个问题(例如,通过CTRL+ALT+2来切换到2号虚拟终端)

环状滚动

Synaptics提供和ipod触控方式类似的环状滚动功能。您可以在触摸板上画圈,来代替在边缘上垂直或水平地滑动。有些用户发现这样滚动的更快也更精确.

添加下面几行到/etc/X11/xorg.conf.d/10-synaptics.conf中以启用环状滚动:

/etc/X11/xorg.conf.d/10-synaptics.conf
 Section "InputDevice"
         ...
         Option      "CircularScrolling"          "on"
         Option      "CircScrollTrigger"          "0"
         ...
 EndSection

选项CircScrollTrigger可以设置为下面的值之一,它能够决定环状滚动应该从哪个边缘开始:

0    所有边缘
1    顶部边缘
2    右上角
3    右边缘
4    右下角
5    底部边缘
6    左下角
7    左边缘
8    左上角

设置一个非0值对于同时使用水平/垂直滚动和环状滚动的用户非常有用.设定后,会根据你开始的边缘决定到底使用哪种滚动.

如果您想要快速滚动,请在触摸板中部画小圈,相反,如果您想要慢速地且更精确地滚动,请画大圈。

自然滚动(触摸屏式滚动)

可以在synaptics上启用自然滚动(触摸屏那种滚动).只要将VertScrollDeltaHorizScrollDelta的值设定为负就行(翻转滚动方向):

/etc/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
    ...
    Option      "VertScrollDelta"          "-111"
    Option      "HorizScrollDelta"         "-111"
    ...
EndSection

软开关

有一个能启用禁用触摸板的软开关会方便许多,特别是您要大量录入文字而触摸板又很灵敏的时候.请参阅#在探测到外置鼠标后禁用触摸板,它也许更方便,因为有一个守护程序自动启用/禁用触摸板.软开关的好处是可以主动启用/禁用触摸板.

如果你的系统上没有快捷键绑定工具,可以下载一个xbindkeys

将下面的脚本保存到/sbin/trackpad-toggle.sh中:

/sbin/trackpad-toggle.sh
 #!/bin/bash
 
 synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff.*=.*0')

最后绑定一个快捷键来运行这段脚本,如果采用xbindkeys(配置文件为~/.xbindkeysrc),那么修改如下:

~/.xbindkeysrc
 "/sbin/trackpad-toggle.sh"
     m:0x5 + c:65
     Control+Shift + space

重启 xbindkeys然后Ctrl+Shift+Space, 现在能够启用/禁用您的触摸板了吧!

当然您可以使用其它快捷键软件,例如Xfce4 ,GNOME都提供了快捷键设定工具.

在打字时禁用触摸板

使用掌压感应

首先,你需要测试您的触摸板是否支持掌压感应,如果支持,需要测试设定是否精确:

$ synclient PalmDetect=1

试着打字,通过如下方式调整感应精度:

$ synclient PalmMinWidth=

PalmMinWidth用来设定接触面的最小值

$ synclient PalmMinZ=

PalmMinZ用来设定在什么压力下会启动掌压感应.

当你找到了合适的设定后,将它们加入 /etc/X11/xorg.conf.d/10-synaptics.conf中.

#synclient PalmDetect=1
Option "PalmDetect" "1"
#synclient PalmMinWidth=10
Option "PalmMinWidth" "10"
#synclient PalmMinZ=200
Option "PalmMinZ" "200"

利用 .xinitrc

将下面一行添加到 .xinitrc 中(将这行添加在exec开头的行前,否则命令可能不会被执行):

$ syndaemon -t -k -i 2 -d &
-i 2参数
设定一个等待时间,它决定了在最后一个键盘按键按下后要过多少秒后才重新启用触摸板。
-t参数
仅仅在打字时禁用触击和滚动而不禁用鼠标移动。
-k
告诉守护程序在监控键盘活动时忽略修饰键 (比如: 允许 Ctrl+单机左键).
-d
在后台做为守护程序启动.

更多的细节请参考manpage:

$ man syndaemon

如果您使用了登录管理器,那么您需要将上面的指令添加到登录管理器允许的地方。

利用登录管理器

"-d"参数可以在登录前将syndaemon作为守护进程启动。

对于Gnome(GDM)用户

您需要利用Gnome启动程序首选项程序(Gnome's Startup Applications Preferences program)来将syndaemon做为守护进程启动。登录到Gnome中,找到系统 > 首选项 > 启动程序,在启动程序标签页,单击“添加”(Add)按钮,根据您的喜好给这个启动项起一个名字,然后输入注释(或留空).在“命令”(Command)栏中填入:

$ syndaemon -t -k -i 2 -d &

完成后,单击对话框中的添加(Add)按钮.请在额外的启动程序(Addtional StartUp Programms)清单中确保刚才添加的程序旁边的复选框被选中.最后,关闭窗口,完事大吉~

对于KDE(KDM)用户

系统设置 > 高级 > 自动启动,单击 添加程序,输入:

 syndaemon -t -k -i 2 -d &

并且选上“在命令行下运行”


疑难解答

xorg.conf.d/50-synaptics.conf 在 GNOME and MATE失效

GNOMEMATE 会覆盖您的个性化设定,包括那些没法在GNOME或者MATE下进行图形化设定的选项.所以这导致/etc/X11/xorg.conf.d/50-synaptics.conf 里的设置不起作用了.请参考本文GNOME一节来避免这种情况的发生.


ALPS 触摸板

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Touchpad Synaptics (简体中文)#)
Template:Box YELLOW

对于ALPS触摸板,如果采用以上的配置不能正常工作,请尝试下面的配置:

 Section "ServerLayout"
   ...
   InputDevice    "USB Mouse" "CorePointer"
   InputDevice    "Touchpad"  "SendCoreEvents"
 EndSection
 Section "InputDevice"
       Identifier  "Touchpad"
   Driver  "synaptics"
   Option  "Device"   "/dev/input/mouse0"
   Option  "Protocol"   "auto-dev"
   Option  "LeftEdge"   "130"
   Option  "RightEdge"   "840"
   Option  "TopEdge"   "130"
   Option  "BottomEdge"   "640"
   Option  "FingerLow"   "7"
   Option  "FingerHigh"   "8"
   Option  "MaxTapTime"   "180"
   Option  "MaxTapMove"   "110"
   Option  "EmulateMidButtonTime"   "75"
   Option  "VertScrollDelta"   "20"
   Option  "HorizScrollDelta"   "20"
   Option  "MinSpeed"   "0.25"
   Option  "MaxSpeed"   "0.50"
   Option  "AccelFactor"   "0.010"
   Option  "EdgeMotionMinSpeed"   "200"
   Option  "EdgeMotionMaxSpeed"   "200"
   Option  "UpDownScrolling"   "1"
   Option  "CircularScrolling"   "1"
   Option  "CircScrollDelta"   "0.1"
   Option  "CircScrollTrigger"   "2"
   Option  "SHMConfig"   "on"
   Option  "Emulate3Buttons"   "on"
 EndSection


The touchpad is not working, Xorg.0.log shows "Query no Synaptics: 6003C8"

Due to the way synaptics is currently set-up, 2 instances of the synaptics module are loaded. We can recognize this situation by opening the xorg log file (/var/log/Xorg.0.log) and noticing this:

/var/log/Xorg.0.log
 [ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"
 [ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"

Notice how 2 differently named instances of the module are being loaded. In some cases, this causes the touchpad to become nonfunctional.

We can prevent this double loading by adding MatchDevicePath "/dev/input/event*" to our /etc/X11/xorg.conf.d/10-synaptics.conf file:

/etc/X11/xorg.conf.d/10-synaptics.conf
 Section "InputClass"
       Identifier "touchpad catchall"
       Driver "synaptics"
       MatchIsTouchpad "on"
       MatchDevicePath "/dev/input/event*"
             Option "TapButton1" "1"
             Option "TapButton2" "2"
             Option "TapButton3" "3"
 EndSection 

Restart X and check xorg logs again, the error should be gone and the touchpad should be functional.

related bugreport: FS#20830

related forum topics:

Touchpad detected as "PS/2 Generic Mouse" or "Logitech PS/2 mouse"

This is caused by a kernel bug. Wrongly detected touchpads cannot be configured with the Synaptic input driver. To fix this, simply install the AUR package psmouse-elantechAUR.

Among the affected notebooks are the following models:

  • Acer Aspire 7750G
  • Dell Latitude e6520 (ALPS touchpad)
  • Samsung NC110/NF210/QX310/QX410/QX510/SF310/SF410/SF510/RF410/RF510/RF710/RV515

You can check whether your touchpad is correctly detected by running:

$ xinput list

More information can be found in this thread.

Non-functional Synaptics Special Abilities (multi-tap, scrolling, etc.)

In some cases Synaptics touchpads only work partially. Features like two-finger scrolling or two-finger middle-click do not work even if properly enabled. This is probably related to the The touchpad is not working problem mentioned above. Fix is the same, prevent double module loading.

If preventing the module from loading twice does not solve your issue, try commenting out the toggle "MatchIsTouchpad" (which is now included by default in the synaptics config).

在探测到外置鼠标后禁用触摸板

udev的协助下,可以实现当外置鼠标插入后自动禁用触摸板的功能。可以添加以下udev规则到/etc/udev/rules.d/01-touchpad.rules来实现这一点:

/etc/udev/rules.d/01-touchpad.rules
 ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0.0",
 ENV{XAUTHORITY}="/home/USERNAME/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
 ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ENV{DISPLAY}=":0.0",
 ENV{XAUTHORITY}="/home/USERNAME/.Xauthority", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"

GDM stores Xauthority files in /var/run/gdm in a randomly-named directory. So udev rules will look like this:

ACTION=="add", KERNEL=="mouse[0-9]", SUBSYSTEM=="input", PROGRAM="/usr/bin/find /var/run/gdm -name *username*", ENV{DISPLAY}=":0.0",
ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", KERNEL=="mouse[0-9]", SUBSYSTEM=="input", PROGRAM="/usr/bin/find /var/run/gdm -name *username*", ENV{DISPLAY}=":0.0",
ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=0"
Note: udev rules must be a single line each, so format accordingly.

需要启用SHMConfig(详情请参考本文的#配置一节)

Note: SHMConfig has been deprecated.

指针跳跃

某些用户会发现鼠标指针奇怪地在屏幕上“跳跃”,当前没有有效的办法解决这个问题,但是正有开发者关注这个BUG.

Another posibility is that you're experiencing IRQ losses related to the i8042 controller (this device handles the keyboard and the touchpad of many laptops), so you have two posibilities here:

1. rmmod && insmod the psmouse module. 2. append i8042.nomux=1 to the boot line and reboot your machine.

触摸板设备不在 /dev/input/*

如果出现这种情况,您可以利用这条命令来显示您的输入设备信息:

$ cat /proc/bus/input/devices

找寻一个名字为"SynPS/2 Synaptics TouchPad"的输入设备。输出中的"Handlers"一节就是触摸板设备的正确位置。

样例输出

$ cat /proc/bus/input/devices
 I: Bus=0011 Vendor=0002 Product=0007 Version=0000
 N: Name="SynPS/2 Synaptics TouchPad"
 P: Phys=isa0060/serio4/input0
 S: Sysfs=/class/input/input1
 H: Handlers=mouse0 event1
 B: EV=b
 B: KEY=6420 0 7000f 0

在这个例子中 Handlersmouse0event1,所以应该使用 /dev/input/mouse0 作为触摸板设备的位置。

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Touchpad Synaptics (简体中文)#)
Template:Box YELLOW


Firefox和特殊触摸板事件

默认的,firefox会设置触摸板上特殊区域完成特殊功能。你可以在地址栏输入about:config设置这些功能。编辑就是双击这些行,让true变成false,如果是数值你就必须手动改变了。

如果想让firefox不从滚动历史记录,而让它在网页滚动,你可以在about:config里面改变下面两个选项。

mousewheel.horizscroll.withnokey.action = 1
mousewheel.horizscroll.withnokey.sysnumlines = true

如果不想firefox当你点击触摸板右上(或者鼠标中键)把剪切板里面内容粘贴到地址栏并且打开,你需要设置如下内容为false:

middlemouse.contentLoadURL = false

Opera:水平滚动问题

就像上面提到的一样。 修复这个问题,你需要点击工具 -> 首选项 -> 高级 -> 快捷键。在这里选择 "Opera Standard" 鼠标属性点击“编辑”。在“应用程序”部分:

  • assign key "Button 6" to command "Scroll left"
  • assign key "Button 7" to command "Scroll right"

在LG笔记本上的滚动和多功能

这些问题可能出现在多种型号的LG笔记本上。 症状包括:当按下鼠标键1时snaptics误认为同时有ScrollUP操作和一个鼠标键1按下;鼠标键2的情况类似.

滚动问题可以通过添加下面一行到xorg.conf中:

/etc/X11/xorg.conf.d/xorg.conf
Option "UpDownScrolling" "0"

注意这会让synaptics对其它键的响应出错。有一个Oskar Sandberg写的补丁[1] 能够解决这个问题。

但是不能为最新版的synaptics驱动打上面的补丁,编译会出错。您可以用GIT包来安装synaptics[2]

AUR中也提供了一个相应的包:xf86-input-synaptics-lgAUR

To build the package after downloading the tarball and unpacking it, execute:

$ cd synaptics-git
$ makepkg

Other external mouse issues

首先,你需要确定你的外部鼠标描述设置里面包含(或者类似)这一行:

/etc/X11/xorg.conf.d/xorg.conf
Option     "Device" "/dev/input/mice"

如果"Device"行不一样,改成如上的,并且重新启动X。如果没有解决,修改"Server Layout"设置,将touchpad设置成 CorePointer:

/etc/X11/xorg.conf.d/xorg.conf
InputDevice    "Touchpad" "CorePointer"

然后设置你的外接鼠标为"SendCoreEvents":

/etc/X11/xorg.conf.d/xorg.conf
InputDevice    "USB Mouse" "SendCoreEvents"

最后,你需要添加这个到你的外接鼠标设置里面去:

/etc/X11/xorg.conf.d/xorg.conf
Option      "SendCoreEvents"    "true"

如果还是不行,说不定是鼠标硬件有问题。请检查是不是bug,或者查看论坛,看是否有人有更好的解决方法。

触摸板的同步问题

有些时候指针会没有原因地“卡住”几秒或随机乱动。可以在/var/log/messages.log中看到出现了如下提示:

/var/log/messages.log
psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away

这个问题没有一个通用的解决办法,但是您可以尝试以下的方法:

  • 如果您使用CPU频率调节,不要使用"ondemand"模式而是"performance"模式 ,因为触摸板可能会在cpu频率变化时失去同步。
  • 尝试不要使用ACPI电池监视器。
  • 尝试用"proto=imps"选项载入pmouse模块,添加下面一行到/etc/modprobe.d/modprobe.conf
/etc/modprobe.d/modprobe.conf
options psmouse proto=imps
  • 尝试其它桌面环境。据某些用户报告,这个问题仅在使用Xfce,GNOME时才出现,不知道什么原因。

Delay between a button tap and the actual click

If you experience a delay between the tap on the touchpad and the actual click that is registered you need to enable FastTaps:

To do so, you should add Option "FastTaps" "1" to /etc/X11/xorg.conf.d/10-synaptics.conf so that you have:

/etc/X11/xorg.conf.d/10-synaptics.conf
 Section "InputClass"
      Identifier "Synaptics Touchpad"
      Driver "synaptics"
      ...
      Option "FastTaps" "1"
      ...
 EndSection

SynPS/2 Synaptics TouchPad can't grab event device, errno=16

如果你使用Xorg 7.4,查看Xorg日志(/var/log/Xorg.0.log)时候可能会发现有这么一条警告信息。这是因为当使用linux2.6事件协议,驱动默认会试图独占此设备。失败就会出现此条提示。也就是说其他无论是内核空间还是用户空间的程序都无法获取此设备上的信号。当你的xorg.conf里面还定义了一个/dev/misc输入设备时候,这点很有用。但是如果你想测试设备的信号,那么就很麻烦了。

开启和关闭这项功能,可以修改你定义的xorg.conf的触摸板部分:

Section "InputDevice"
       ...
       Option "GrabEventDevice" "boolean"
       ...
EndSection

boolean部分可以是yes或者false,分别代表启用和禁止此功能。

当然你也可以使用synclient来调整,不过不能马上生效,只有触摸板驱动被禁用然后重新启用才能有效果。你可以通过切换到控制台然后切换回X来实现。

Synaptics Loses Multitouch Detection After Rebooting From Windows

Many drivers include a firmware that is loaded into flash memory when the computer boots. This firmware is not necessarily cleared upon shutdown, and is not always compatible with Linux drivers. The only way to clear the flash memory is to shutdown completely rather than using reboot. It is generally considered best practice to never use reboot when switching between operating systems.

Buttonless TouchPads (aka ClickPads)

Some laptops have a special kind of touchpad which has the mouse buttons as part of the tracking plate, instead of being external buttons. HP series 4500 Probooks and X220 and X1 Thinkpads have this kind of a touchpad. Both of the mouse buttons are detected as one, resulting in the second mouse button being unusable and click + drag will not work. To enable the second mouse button you need to install a patched version of the synaptics driver. Install xf86-input-synaptics-clickpadAUR from the AUR.

Touchpad detected as mouse (elantech touchpads)

This can happend on some laptops with elantech touchpad, for example ASUS x53s. In this situation you need psmouse-elantechAUR package from AUR.

链接