更改 Ubuntu 触摸板滚动为自然滚动

前段时间通过修改 grub 参数的形式来让 Ubuntu 识别了触摸板,基本的移动和点击功能可以使用了,但边缘滚动和双指滚动功能还无法正常使用。

但在 Ubuntu 正式发布了 12.04 后,从 beta 版 upgrade 了一下,发现滚动功能居然可以使用了,系统设置了也有了 Touchpad 这个选项卡。

ubuntu's touchpad settings

这样,边缘滚动和双指滚动便可以使用了。但默认情况下的滚动是和鼠标的滚动一样的,手指运动方向和滚动条的运动方向一致而和内容的滚动方向相反,对于习惯了手机等触摸屏的滚动方式来说,触摸板的滚动方式有一点违和感,决定调为和触屏手机一致的滚动方式,或者说是 mac 宣称的 natural scroll

方法一

一开始找到的是个极其简单的方法,只需要添加或修改一个文件即可,具体如下:

  1. 在当前用户 home 目录下添加或修改 .Xmodmap 文件
  2. 里面内容为:pointer = 1 2 3 5 4 7 6 8 9 10 11 12
  3. 注销当前用户再登录即可

虽然具体的数值含义不是很明白,但从 5/4、7/6 的交换情况来看,还是大抵明白是什么原理了:交换了滚动方向的信号。

我尝试后的确可以了,但使用了一会后,当我接上我的无线鼠标后,发现一种更加强烈的违和感了:常规鼠标的滚动方向也被相反了。这应该是那个配置文件做了全局映射的原因,无奈,放弃这种方法。

方法二

在第一个方案的评论中,找到了另一种解决方法,通过安装一个小软件来达到目的,具体如下:

sudo add-apt-repository ppa:zedtux/naturalscrolling
sudo apt-get update
sudo apt-get install naturalscrolling

安装完毕后启动这个应用程序即可设置是否启动 natural scrolling 以及是否开机启动。

我专门测试了下触摸板和鼠标的工作情况,触摸板可以使用 natural scrolling,而鼠标也可以维持原有的滚动方式,不错。

方法三

方法二可以后,我想了想,既然方法一可以通过简单的配置文件来达到目的,那么按理说,应该不需要常驻一个程序来监控,方便随时调整的 GUI 界面也不是必须的。只是问题是,如何把全局的映射改为只映射触摸版呢?

想了又想,想起当初查找资料来让系统识别触摸板的时候似乎 xinput 有一些设置功能的,尝试地敲了一下帮助命令 xinput -h,发现里面有 get-button-mapset-button-map 参数,这下高兴了,找着门道了。

于是先获取到触摸板对应的设备id,然后查看一下其原有的 button-map,然后设置新的 button-map,具体的过程如下图:

set natural scroll button map for touchpad

需要注意的是,这种方法会在重启后失效,所以需要把最后那个 set-button-map 命令加到 startup 中,让其开机启动。

update in 2012-05-03

发现触摸板的 id 会发生变化,从而导致有时 set-button-map 失效,这样的话,直接用 devices name 会更加合适,即:

xinput set-button-map "FSPPS/2 Sentelic FingerSensingPad" 1 2 3 5 4 7 6 8 9 10 11 12

mouse button maps

查了一下,Remapping mouse buttons 一文记录的 mouse button maps 如下:

1 Left click
2 Middle click
3 Right click
4 Wheel up
5 Wheel down
6 Wheel left
7 Wheel right
8 Thumb1
9 Thumb2
10 ExtBt7
11 ExtBt8

从那文来看,甚至可以做到不同程序使用不同的键映射。

3条评论

    1. 没办法,很多设备都没有 Linux 版的驱动,只能靠社区力量或自己摸索 😎

评论已关闭。