You are not logged in.

#1 2012-10-08 05:25:39

ike
Member
Registered: 2012-10-08
Posts: 6

Multitouch gestures with Synaptics and Touchegg

To whom it may concern: wink

A few days ago I switched from using osx to arch on my beloved macbook pro 8,1.
I absolutely love arch, but I really missed all those fancy multi touch gestures I was used to from osx.
What were my options? The wiki suggested using the xf86-input-mtrack driver which translates the common
gestures to mouse buttons. On the other hand there was xf86-input-synaptics which offers a soooo much
better feel for my mouse cursor - and coasting!!! But no gestures (except for, well two finger scrolling, if you
call that "gesture"). Touchégg to the rescue!
A simple program which can handle gestures on a per application level - but... it doesn't really work
with synaptics. Why doesn't it work with synaptics? I found the answer in the ubuntu wiki:
https://wiki.ubuntu.com/Multitouch/TouchpadSupport
Which boils down to:

Unfortunately, X can't send touch events if it is also sending other events caused by the same touches. For example, if you have two finger scrolling enabled for a touchpad, X can't send touch events until you put three touches down.

Call me ignorant and naive, but I see no reason, why those touches cannot be processed by the driver itself and additionally send to the touch event stack? Open source software to the rescue, if no one helps me, I have to do it myself:
(AUR) en - xf86-input-synaptics-mtpatch
The patch just comments out a few lines, which make sure that 2 or 3 finger events, which would be handled
by the driver get pass through to the xserver. Long story short: 3 finger tap and smooth 2 finger scrolling plus
all the 2+ finger gestures offered by touchegg cool

Oh wait, there's more!
Touchegg now working like a charm had only one little hickup. The ROTATE gesture I use for twisting through my
firefox tabs was way too sensitive (it got randomly triggered by vertical scrolling). So, we could also patch
touchegg and add a little threshold before the rotate gesture gets triggered.
Here you go:
(AUR) en - touchegg-rotate_threshold

I hope someone will find this useful and give me plenty of bug reports if I broke everything because of my naivité wink
(have mercy on me, this is my first contribution).

Enjoy! smile

Offline

#2 2012-10-08 21:51:34

avx
Member
Registered: 2011-07-05
Posts: 71

Re: Multitouch gestures with Synaptics and Touchegg

Interesting read, thank you.

I'm currently using the mtrack driver, too on a Macbook 8,1, and I'm not overly satisfied so I'm willing to try this.
Since I'm not running Arch on that machine, I'd be happy if you could share the needed files via some repo and maybe also share your respective X.org config files.

Am I right that the GUIs shown on Touchégg's site aren't really needed, as in no forced dep? What WM/DE are you using it with.

//Danke für den Hinweis smile

Offline

#3 2012-10-09 09:38:02

ike
Member
Registered: 2012-10-08
Posts: 6

Re: Multitouch gestures with Synaptics and Touchegg

Hi!

The patch for synaptics is just commenting out the check if 2 or 3 finger actions are used. You can find it here and apply on your own: https://raw.github.com/jfeick/xf86-inpu … ents.patch

While I fiddled with all those options offered by synclient, I decided to write a tiny script to output my settings in xorg.conf-format:

#!/bin/sh
echo -e "Section \"InputClass\""
echo -e "\tIdentifier \"touchpad_catchall\""
echo -e "\tDriver \"synaptics\""
echo -e "\tMatchIsTouchpad \"on\""
echo -e "\tMatchDevicePath \"/dev/input/event*\""
synclient -l | awk '/=/{printf "\tOption \"%s\" \"%s\"\n",$1,$3}'
echo -e "\tOption \"SHMConfig\" \"on\""
echo -e "EndSection"

My personal 10-synaptics.conf:

Section "InputClass"
	Identifier "touchpad_catchall"
	Driver "synaptics"
	MatchIsTouchpad "on"
	MatchDevicePath "/dev/input/event*"
	Option "LeftEdge" "-3611"
	Option "RightEdge" "4246"
	Option "TopEdge" "517"
	Option "BottomEdge" "6108"
	Option "FingerLow" "25"
	Option "FingerHigh" "75"
	Option "FingerPress" "257"
	Option "MaxTapTime" "180"
	Option "MaxTapMove" "511"
	Option "MaxDoubleTapTime" "180"
	Option "SingleTapTimeout" "180"
	Option "ClickTime" "100"
	Option "FastTaps" "0"
	Option "EmulateMidButtonTime" "0"
	Option "EmulateTwoFingerMinZ" "283"
	Option "EmulateTwoFingerMinW" "7"
	Option "VertScrollDelta" "-220"
	Option "HorizScrollDelta" "-220"
	Option "VertEdgeScroll" "0"
	Option "HorizEdgeScroll" "0"
	Option "CornerCoasting" "0"
	Option "VertTwoFingerScroll" "1"
	Option "HorizTwoFingerScroll" "1"
	Option "MinSpeed" "1.03333"
	Option "MaxSpeed" "1.4"
	Option "AccelFactor" "0.017"
	Option "TrackstickSpeed" "40"
	Option "EdgeMotionMinZ" "30"
	Option "EdgeMotionMaxZ" "160"
	Option "EdgeMotionMinSpeed" "1"
	Option "EdgeMotionMaxSpeed" "929"
	Option "EdgeMotionUseAlways" "0"
	Option "TouchpadOff" "0"
	Option "LockedDrags" "0"
	Option "LockedDragTimeout" "5000"
	Option "RTCornerButton" "0"
	Option "RBCornerButton" "0"
	Option "LTCornerButton" "0"
	Option "LBCornerButton" "0"
	Option "TapButton1" "1"
	Option "TapButton2" "3"
	Option "TapButton3" "0"
	Option "ClickFinger1" "1"
	Option "ClickFinger2" "3"
	Option "ClickFinger3" "0"
	Option "CircularScrolling" "0"
	Option "CircScrollDelta" "0.1"
	Option "CircScrollTrigger" "0"
	Option "CircularPad" "0"
	Option "PalmDetect" "1"
	Option "PalmMinWidth" "10"
	Option "PalmMinZ" "200"
	Option "CoastingSpeed" "20"
	Option "CoastingFriction" "50"
	Option "PressureMotionMinZ" "30"
	Option "PressureMotionMaxZ" "160"
	Option "PressureMotionMinFactor" "1"
	Option "PressureMotionMaxFactor" "1"
	Option "GrabEventDevice" "1"
	Option "TapAndDragGesture" "1"
	Option "AreaLeftEdge" "0"
	Option "AreaRightEdge" "0"
	Option "AreaTopEdge" "0"
	Option "AreaBottomEdge" "0"
	Option "HorizHysteresis" "5"
	Option "VertHysteresis" "3"
	Option "ClickPad" "1"
	Option "RightButtonAreaLeft" "0"
	Option "RightButtonAreaRight" "0"
	Option "RightButtonAreaTop" "0"
	Option "RightButtonAreaBottom" "0"
	Option "MiddleButtonAreaLeft" "0"
	Option "MiddleButtonAreaRight" "0"
	Option "MiddleButtonAreaTop" "0"
	Option "MiddleButtonAreaBottom" "0"
	Option "SHMConfig" "on"
EndSection

And yeah, the new version of touchegg is not using the GUI anymore. I found a call to qmake somewhere in the build process, so not sure if you still need qt-dev.

I use awesome WM right now. There could be some problems with the gestures provided by gnome, but I didn't dive into that.

Cheers

//Nichts zu danken smile

Offline

#4 2012-10-09 14:06:28

avx
Member
Registered: 2011-07-05
Posts: 71

Re: Multitouch gestures with Synaptics and Touchegg

Thank you, looks easy enough to do, though as it seems I'd need to whip up some ebuilds for it first, using Gentoo on this machine. I plan to test this with fvwm and maybe sawfish.

Will report back once I found the time to try it.

Edit, will you try getting the patches accepted upstream?

Last edited by avx (2012-10-09 17:48:21)

Offline

#5 2012-10-19 14:17:04

vheon
Member
Registered: 2010-04-08
Posts: 21

Re: Multitouch gestures with Synaptics and Touchegg

thanks for sharing... I'm looking for testing it myself since I have a magic trackpad ready for my Arch Box since 6 months but at the time the developer of Touchégg didn't fix the problem with the new uTouch-geis framework...

I will let you know how it'll go on my machine (is always useful to have some feedback wink )

Last edited by vheon (2012-10-19 14:17:23)

Offline

#6 2012-10-20 10:46:45

ike
Member
Registered: 2012-10-08
Posts: 6

Re: Multitouch gestures with Synaptics and Touchegg

The more I test my setup, the more I realize using gestures on linux is a pain.
Perhaps I will find the time to take a look at the mtrack driver and find a way to get rid of geis and touchegg altogether.

Offline

#7 2012-10-22 13:56:15

vheon
Member
Registered: 2010-04-08
Posts: 21

Re: Multitouch gestures with Synaptics and Touchegg

The thing that I hated the most when I used it was the absence of thumb recognition... I also want to look into mtrack driver since it has no commits since 10 month on the master branch, but I don't think I have the required knowledge to do that...

Offline

#8 2012-10-24 12:36:44

SuperBo
Member
Registered: 2012-02-20
Posts: 45

Re: Multitouch gestures with Synaptics and Touchegg

I will give it a try. Thank you for your work ^^

Offline

#9 2014-02-11 09:05:23

marcD
Member
Registered: 2014-02-11
Posts: 5

Re: Multitouch gestures with Synaptics and Touchegg

I've tried your patch but it didn't work for me.

However, I was wondering if your patch was not equivalent to changing the value of the "GrabEventDevice" option:

Option "GrabEventDevice"    "boolean"
          If GrabEventDevice is true,  the    driver    will  grab  the     event
          device  for  exclusive use when using the    linux 2.6 event    proto-
          col.  When using other protocols,    this  option  has  no  effect.
          Grabbing the event device    means that no other user space or ker-
          nel space    program    sees the touchpad events.  This     is  desirable
          if  the  X  config  file    includes  /dev/input/mice  as an input
          device, but is undesirable if you    want  to  monitor  the    device
          from  user  space.   When     changing this parameter with the syn-
          client program, the change will not take effect until the    synap-
          tics  driver is disabled and reenabled.  This can    be achieved by
          switching    to a text console and then switching back to X.

Offline

#10 2014-09-16 21:48:30

SergentPepper
Member
Registered: 2014-07-19
Posts: 10

Re: Multitouch gestures with Synaptics and Touchegg

Hello marcD,

Just in case you were struggling with this, i had it to work without the patch. In case you don't need it, nevermind, I hope i'll help someone anyway. The first link (https://wiki.ubuntu.com/Multitouch/TouchpadSupport) and your post about "grabEventDevice" helped me a lot, so thanks for sharing smile.

So, to get this to work, i changed the config according to the ubuntu wikipage :
(added the following to) /etc/X11/xorg.conf.d/50-synaptics.conf

        Option "ClickFinger1" "1"
	Option "ClickFinger2" "0"
	Option "ClickFinger3" "0"
        Option "TapButton1" "1"
        Option "TapButton2" "0"
        Option "TapButton3" "0"
	Option "VertTwoFingerScroll" "0"
	Option "HorizTwoFingerScroll" "0"
        Option "GrabEventDevice" "0"

I also installed xf86-input-multitouch from the AUR at some point during my attempts, but i think the result should be due to the changes made to 50-synaptics.conf.

EDIT : hmm no that's weird, i can only get 2 finger gestures to work, can't figure out why...

Last edited by SergentPepper (2014-09-16 21:58:39)

Offline

#11 2015-01-03 12:01:42

AlexanderHolmgaard
Member
Registered: 2014-11-18
Posts: 57

Re: Multitouch gestures with Synaptics and Touchegg

I want to give this a shot. Would really like to make MT gestures work..
But when I try to install your patch, it says:

error: target not found: X-ABI-XINPUT_VERSION=19

and then I can't get any further.. Any suggestions on this? Would love to have MT gestures work, and can't seem to find any ways to do this!! Please help smile

Offline

#12 2015-02-13 22:24:23

Gamonics
Member
From: Rhode Island, USA
Registered: 2015-02-10
Posts: 40
Website

Re: Multitouch gestures with Synaptics and Touchegg

I read about this on the wiki, and it sounds great.

But reading more about it above, I can't help but wonder: is this working for anyone? The package is marked as "Unsupported package: Potentially dangerous!" when I attempt to install it using yaourt. And AlexanderHolmgaard wrote last month that he couldn't make it work.

Should the wiki get revised to eliminate the reference to the package?

Offline

#13 2015-02-14 07:38:42

Gamonics
Member
From: Rhode Island, USA
Registered: 2015-02-10
Posts: 40
Website

Re: Multitouch gestures with Synaptics and Touchegg

So is "Unsupported package: Potentially dangerous!" just a warning message on every package from AUR? Because I've tried using it to install three different packages now and get the same warning on all of them. I had previously used makepkg -s for installing packages from AUR (never got such a warning then), but had the impression that yaourt would be quicker.

Offline

Board footer

Powered by FluxBB