My current goal with Multitouch is to get a release out every couple of weeks. It’s been a bit longer since the v1.3.0 release, and this is because I’ve refactored a lot of code around some of the core parts of gesture recognition.
In macOS, there’s two different ways to listen to trackpad events, using an event tap and using Apple’s private multitouch framework. Within Multitouch, I had been using an event tap because Apple could remove support for the private framework. There’s a bug that some users have encountered where the event tap causes problems with Apple’s built in pinch, rotate and two-finger swipe (back and forward in the browser) gestures.
Unfortunately, the best way to work around this bug in Multitouch is to listen to trackpad events using the private framework instead of using an event tap. I still have to use the event tap for force touch gestures, so if you experience any issues with the pinch, rotate, and two finger swipe then you will want to disable the force touch gestures and log out/in to your mac to get the Apple gesture behavior back.
On the plus side, I’ve streamlined some things along the way and it will be easy to switch between the two frameworks if Apple fixes the event tap bugs or removes support for the private framework.
Multitouch v1.4.0 also has the following updates:
- Added gestures for single finger click or force touch in top left or right corners of the trackpad.
- Added trackpad gestures for “rest one finger and tap one finger to the left or right”.
- Made “rest plus tap” gestures less likely to be executed accidentally when swiping.
- Fixed a bug with haptic feedback sometimes not happening immediately for the “rest plus tap” gestures when enabled.
- Fixed a bug where three and four finger force touch gestures would prevent single finger force touches from performing built-in macOS force touch behavior.
Next I will be looking at improving the timing on tap gestures, specifically when multiple tap gestures are executed in quick succession or when the “double tap” setting is enabled.