代码改变世界

Karabiner 替代 Scroll Reverser 设置鼠标滚动方向反转

2016-06-21 11:05  西不肚  阅读(2631)  评论(0)    收藏  举报

转载自:http://www.v2ex.com/t/182542

我一直以来是使用 Scroll Reverser 来设置,在触摸板的滚动方向为自然时,使外置鼠标的滚轮保持传统的滚动方向。

但最近我发现在开启 Scroll Reverser 后,在触摸板上用两指快速连续多次滚动时,偶尔会有几下滚动被识别成了相反方向,很扰人,退出 Scroll Reverser 后就正常了。之前没有注意到这个现象,不知道是系统还是 Scroll Reverser 的问题,或者还是新装了什么软件造成的冲突。

根据 Scroll Reverser 官网的 FAQ,Scroll Reverser 应该是通过检测是否有两个以上的指头放在触摸板上来判断出用户是不是正在使用触摸板来滚动,若少于两个指头在触摸板上就认为是正在用外置鼠标来进行滚动。
因此我猜测出现我这种情况的原因是,在快速滚动时,手指在触摸板上停留的时间较短,导致 Scroll Reverser 因为未知原因偶尔无法正确检测到触摸板上有两个手指,于是被认为是正在用鼠标滚轮滚动,便将滚动方向进行了错误的反转。

搜索并测试后发现强大的 Karabiner 也可以实现反转滚动方向的功能,并且 Karabiner 可以根据正在使用设备的 Vendor ID / Product ID 来区分触摸板和外置鼠标,这样就不会出现上述 Scroll Reverser 的问题了。

以下配置代码设置了对任何非苹果输入设备的滚动方向进行反转,这样就能保持苹果的触摸板和 Magic Mouse 的自然滚动方向,而反转其它厂商鼠标的滚动方向为传统方式。将代码添加到 Karabiner 的 private.xml 配置文件中并开启设置就搞定了。

<item>
  <name>Reverse Vertical Scrolling for Mouse</name>
  <identifier>private.reverse_vertical_scrolling_mouse</identifier>
  <device_not>
    DeviceVendor::APPLE_COMPUTER,
    DeviceProduct::ANY
  </device_not>
  <autogen>
    __FlipScrollWheel__
    <!-- reverse vertical scrolling -->
    Option::FLIPSCROLLWHEEL_VERTICAL
  </autogen>
</item>

推荐原本有同时使用 Scroll Reverser 和 Karabiner 的同学改用此方法,这样又可以减少一个常驻软件了。