New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New-style settings and three finger drag #90

Closed
wants to merge 16 commits into
base: master
from

Conversation

Projects
None yet
9 participants
@usr-sse2

usr-sse2 commented Oct 30, 2016

These commits introduce the following improvements for Synaptics touchpad driver:

  1. Support for new-style (animated) Trackpad preference pane. This works on macOS Sierra and doesn't need ioio.
  2. Three-finger drag, like on MacBooks.
  3. Improved debug logging: use named touchmodes instead of numeric values
  4. Left and right click corners can be swapped for left-handed users convenience.

Trackpad options can be configured there:
2016-10-30 22 15 54

  • secondary click (all values)
  • tap to click
  • tracking speed

2016-10-30 22 16 11

  • swipe between full-screen apps (only three fingers, simulates ctrl-arrow)
  • mission control and app exposé (only three fingers, simulates ctrl-arrow)

2016-10-30 22 16 57

  • double-click speed
  • scrolling speed
  • scrolling (all values)
  • dragging (all values)

Some gestures are made mutual-exclusive or dependent by Apple, for example, enabling three-finger drag disables three-finger swipes and vice versa, and one-finger dragging requires tapping and thus enables it.

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Oct 30, 2016

Note that although three-finger dragging is usable, it still has some minor issues (e. g. rare 'jumps' when finger count changes from 1 or 2 to 3 during the touch, or inability to complete dragging without waiting for the timer).

usr-sse2 commented Oct 30, 2016

Note that although three-finger dragging is usable, it still has some minor issues (e. g. rare 'jumps' when finger count changes from 1 or 2 to 3 during the touch, or inability to complete dragging without waiting for the timer).

@the-braveknight

This comment has been minimized.

Show comment
Hide comment
@the-braveknight

the-braveknight Oct 30, 2016

Wow that looks nice! Finally a solution for the trackpad PrefPane. I just wish it supported my ELAN trackpad... :(

the-braveknight commented Oct 30, 2016

Wow that looks nice! Finally a solution for the trackpad PrefPane. I just wish it supported my ELAN trackpad... :(

@ilyamodder

This comment has been minimized.

Show comment
Hide comment
@ilyamodder

ilyamodder Nov 1, 2016

It does not work properly on El Capitan: the trackpad recognizes as a mouse, and trackpad preference pane says "no bluetooth trackpads found". Maybe it's works so with my hardware, not tested on Sierra.

ilyamodder commented Nov 1, 2016

It does not work properly on El Capitan: the trackpad recognizes as a mouse, and trackpad preference pane says "no bluetooth trackpads found". Maybe it's works so with my hardware, not tested on Sierra.

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 1, 2016

@ilyamodder, try manually kextloading VoodooPS2Trackpad.kext. If it works, try rebuilding the kernelcache.
I tested on an old machine with Snow Leopard and it works as a trackpad, but doesn't enable the "new" gestures.
I'll install El Capitan and check on it.

usr-sse2 commented Nov 1, 2016

@ilyamodder, try manually kextloading VoodooPS2Trackpad.kext. If it works, try rebuilding the kernelcache.
I tested on an old machine with Snow Leopard and it works as a trackpad, but doesn't enable the "new" gestures.
I'll install El Capitan and check on it.

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 1, 2016

@ilyamodder, I figured out that for Snow Leopard the new way of detecting multitouch trackpad (via ApplePreferenceIdentifier property in ioreg) doesn't work, so I got it to work by setting the class of the driver to AppleUSBMultitouchDriver. Originally I used this idea on Sierra, but switched to ApplePreferenceIdentifier because we can't make 3 classes with the same name in one kext (for Synaptics, ALPS and Sentellic).

usr-sse2 commented Nov 1, 2016

@ilyamodder, I figured out that for Snow Leopard the new way of detecting multitouch trackpad (via ApplePreferenceIdentifier property in ioreg) doesn't work, so I got it to work by setting the class of the driver to AppleUSBMultitouchDriver. Originally I used this idea on Sierra, but switched to ApplePreferenceIdentifier because we can't make 3 classes with the same name in one kext (for Synaptics, ALPS and Sentellic).

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 1, 2016

@ilyamodder, try this variant (f88976f)

usr-sse2 commented Nov 1, 2016

@ilyamodder, try this variant (f88976f)

@ilyamodder

This comment has been minimized.

Show comment
Hide comment
@ilyamodder

ilyamodder Nov 1, 2016

@usr-sse2, thanks! I'll try it later.

ilyamodder commented Nov 1, 2016

@usr-sse2, thanks! I'll try it later.

@ilyamodder

This comment has been minimized.

Show comment
Hide comment
@ilyamodder

ilyamodder Nov 1, 2016

No changes between old and new versions.

ilyamodder commented Nov 1, 2016

No changes between old and new versions.

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 1, 2016

Ok, I'm already downloading El Capitan.

usr-sse2 commented Nov 1, 2016

Ok, I'm already downloading El Capitan.

@tluck

This comment has been minimized.

Show comment
Hide comment
@tluck

tluck Nov 2, 2016

Excellent work. I tested implemented on my Lenovo T420 and T460 (which has code mods for its 3 physical buttons).

a question: does the scrolling in Safari or Chrome move images/content smoothly in Sierra? In Sierra the scrolling in Safari is more like a wheel mouse scroll - bigger jumps - like a line at a time versus a few pixels. I have a apple magic mouse and In El Cap the TrackPad and ClickPad scrolling is very similar. but in Sierra it is very jittery. Thoughts or suggestions?

tluck commented Nov 2, 2016

Excellent work. I tested implemented on my Lenovo T420 and T460 (which has code mods for its 3 physical buttons).

a question: does the scrolling in Safari or Chrome move images/content smoothly in Sierra? In Sierra the scrolling in Safari is more like a wheel mouse scroll - bigger jumps - like a line at a time versus a few pixels. I have a apple magic mouse and In El Cap the TrackPad and ClickPad scrolling is very similar. but in Sierra it is very jittery. Thoughts or suggestions?

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 3, 2016

@ilyamodder, I've installed El Capitan and it just works, even without the latest commit. What does kextstat show? Did you try manually kextloading VoodooPS2Trackpad?
screen shot 2016-11-03 at 12 06 11

usr-sse2 commented Nov 3, 2016

@ilyamodder, I've installed El Capitan and it just works, even without the latest commit. What does kextstat show? Did you try manually kextloading VoodooPS2Trackpad?
screen shot 2016-11-03 at 12 06 11

@jakibaki

This comment has been minimized.

Show comment
Hide comment
@jakibaki

jakibaki Nov 3, 2016

@tluck sorry for going of topic but can you upload your modded kexts with this patch?

A friend of mine has an x240 (with the x260 touchpad I think the same as the t460) and I have an x220 (same or similar touchpad as the t420).

jakibaki commented Nov 3, 2016

@tluck sorry for going of topic but can you upload your modded kexts with this patch?

A friend of mine has an x240 (with the x260 touchpad I think the same as the t460) and I have an x220 (same or similar touchpad as the t420).

@the-braveknight

This comment has been minimized.

Show comment
Hide comment
@the-braveknight

the-braveknight Nov 3, 2016

I would really love to use this kext for my ELAN trackpad instead of ApplePS2SmartTouchPad.kext which is very buggy and unreliable... Is it not possible for you to implement ELAN support in VoodooPS2?

the-braveknight commented Nov 3, 2016

I would really love to use this kext for my ELAN trackpad instead of ApplePS2SmartTouchPad.kext which is very buggy and unreliable... Is it not possible for you to implement ELAN support in VoodooPS2?

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 3, 2016

@the-braveknight, the author of AppleSmartElanTouchpad spent years developing his driver. How do you expect me to make something better than that in a couple of days, without even having the hardware? VoodooPS2Trackpad is actually three separate drivers - for Synaptics, Sentellic and ALPS. It's not a generic framework to add different device support to.

usr-sse2 commented Nov 3, 2016

@the-braveknight, the author of AppleSmartElanTouchpad spent years developing his driver. How do you expect me to make something better than that in a couple of days, without even having the hardware? VoodooPS2Trackpad is actually three separate drivers - for Synaptics, Sentellic and ALPS. It's not a generic framework to add different device support to.

@the-braveknight

This comment has been minimized.

Show comment
Hide comment
@the-braveknight

the-braveknight Nov 3, 2016

I understand... Especially when the ELAN kext author has not released the source code... :(

the-braveknight commented Nov 3, 2016

I understand... Especially when the ELAN kext author has not released the source code... :(

@tluck

This comment has been minimized.

Show comment
Hide comment
@tluck

tluck Nov 3, 2016

@jakibaki - see the zip here for the revised compiled kext - i will update my github repo with the mods. i basically pulled this repo down and added some logic to handle 3 real buttons (TrackPoint): http://www.insanelymac.com/forum/topic/285678-lenovo-thinkpad-t420-with-uefi-only/page-25#entry1952283

@usr-sse2 - i am wondering why i don't see the 3 finger drag option in Accessibility/Mouse & Trackpad options. under Enable dragging - i get "with/without drag lock" in the pull down?

tluck commented Nov 3, 2016

@jakibaki - see the zip here for the revised compiled kext - i will update my github repo with the mods. i basically pulled this repo down and added some logic to handle 3 real buttons (TrackPoint): http://www.insanelymac.com/forum/topic/285678-lenovo-thinkpad-t420-with-uefi-only/page-25#entry1952283

@usr-sse2 - i am wondering why i don't see the 3 finger drag option in Accessibility/Mouse & Trackpad options. under Enable dragging - i get "with/without drag lock" in the pull down?

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 3, 2016

@tluck, what's the value of TrackpadThreeFingerDrag property of AppleUSBMultitouchDriver or ApplePS2SynapticsTouchPad in your ioreg? If you can't see this option in settings, this is probably false. Don't know who sets it to false.
Here https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/pull/90/files#diff-139154da8e372a3c25a75bbfe0197629R1519 a line that sets its value is specially commented out, so it would remain its value from the plist.
Are you using any additional programs that do something with the trackpad? Have you restored the original Trackpad.prefpane if you rolled it back?

usr-sse2 commented Nov 3, 2016

@tluck, what's the value of TrackpadThreeFingerDrag property of AppleUSBMultitouchDriver or ApplePS2SynapticsTouchPad in your ioreg? If you can't see this option in settings, this is probably false. Don't know who sets it to false.
Here https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/pull/90/files#diff-139154da8e372a3c25a75bbfe0197629R1519 a line that sets its value is specially commented out, so it would remain its value from the plist.
Are you using any additional programs that do something with the trackpad? Have you restored the original Trackpad.prefpane if you rolled it back?

@tluck

This comment has been minimized.

Show comment
Hide comment
@tluck

tluck Nov 3, 2016

Ok thanks. probably little value!

i like the drag/draglock feature currently in play for my Lenovo Trackpad/Clickpads. I was wondering if i was missing something as the drag option was different. so just looking for validation etc. that plus, the vertical scroll in sierra safari is jumpy (acts like wheel scroll) - so thought maybe something wasn't set right?

tluck commented Nov 3, 2016

Ok thanks. probably little value!

i like the drag/draglock feature currently in play for my Lenovo Trackpad/Clickpads. I was wondering if i was missing something as the drag option was different. so just looking for validation etc. that plus, the vertical scroll in sierra safari is jumpy (acts like wheel scroll) - so thought maybe something wasn't set right?

@jakibaki

This comment has been minimized.

Show comment
Hide comment
@jakibaki

jakibaki commented Nov 3, 2016

@tluck: thanks!

@tluck

This comment has been minimized.

Show comment
Hide comment
@tluck

tluck Nov 4, 2016

well interesting... just installed 10.12.2 beta and scrolling is very smooth in safari.
i set TrackpadThreeFingerDrag true in info.plist - and i get the option now in Accessibility menu. doesn't seem to work i.e. drag anything - but i frankly like click/drag anyway.
great work on this. thanks again. i have merged in my ClickPad mods and it is working great on both T420 and T460.

tluck commented Nov 4, 2016

well interesting... just installed 10.12.2 beta and scrolling is very smooth in safari.
i set TrackpadThreeFingerDrag true in info.plist - and i get the option now in Accessibility menu. doesn't seem to work i.e. drag anything - but i frankly like click/drag anyway.
great work on this. thanks again. i have merged in my ClickPad mods and it is working great on both T420 and T460.

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 6, 2016

@tluck,

  1. it's strange that three-finger drag doesn't work, I have both Lenovo (but buttonless) and non-Lenovo notebooks with Synaptics touchpads and it works on them. do three-finger swipes work for you? (if enabled in System Preferences and set to three fingers)
  2. why was TrackpadThreeFingerDrag false in your Info.plist? is it because of your commits for the third button?
  3. compile a debug version and post a log of what's happening when trying to drag with three fingers:
    log stream --predicate 'processID == 0'

usr-sse2 commented Nov 6, 2016

@tluck,

  1. it's strange that three-finger drag doesn't work, I have both Lenovo (but buttonless) and non-Lenovo notebooks with Synaptics touchpads and it works on them. do three-finger swipes work for you? (if enabled in System Preferences and set to three fingers)
  2. why was TrackpadThreeFingerDrag false in your Info.plist? is it because of your commits for the third button?
  3. compile a debug version and post a log of what's happening when trying to drag with three fingers:
    log stream --predicate 'processID == 0'
@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 7, 2016

c23bc4f Fixed scrolling on Sierra. A simple change to Info.plist has done the thing, with no hacking with private methods.

usr-sse2 commented Nov 7, 2016

c23bc4f Fixed scrolling on Sierra. A simple change to Info.plist has done the thing, with no hacking with private methods.

@tluck

This comment has been minimized.

Show comment
Hide comment
@tluck

tluck Nov 7, 2016

Very nice indeed. These new scroll settings work on the Lenovo T420 and T460 - very smooth scrolling for Safari.

getting back to ThreeFingerDrag.

I would not think that this issue has anything to do with the T460 clickPad button implementation - this is a simple fix to read the 3 TrackPoint Buttons - which are implemented in a different manor as compared to the T420 with its 2 sets of buttons.
see this file for fairly simple changes to read the left/middle/right buttons vs clickPad edge.
https://github.com/tluck/OS-X-Voodoo-PS2-Controller/blob/master/clickpad-patch.txt

So when i turn on (set true) TrackpadThreeFingerDrag in the Info.plist, I get the option to set Drag using 3 fingers in Accessibility/TrackPad - however trying to use it - dragging this way doesn't seem to work. Where as the "click/drag with/without drag lock" works fine.
3 finger swipe left/right (back/forward) works fine.

It seems when 3 finger drag is enabled there is some conflict with these other features - dragging ceases to work. Since personally I prefer click/drag - I have not pursued investigating.

thanks again!

tluck commented Nov 7, 2016

Very nice indeed. These new scroll settings work on the Lenovo T420 and T460 - very smooth scrolling for Safari.

getting back to ThreeFingerDrag.

I would not think that this issue has anything to do with the T460 clickPad button implementation - this is a simple fix to read the 3 TrackPoint Buttons - which are implemented in a different manor as compared to the T420 with its 2 sets of buttons.
see this file for fairly simple changes to read the left/middle/right buttons vs clickPad edge.
https://github.com/tluck/OS-X-Voodoo-PS2-Controller/blob/master/clickpad-patch.txt

So when i turn on (set true) TrackpadThreeFingerDrag in the Info.plist, I get the option to set Drag using 3 fingers in Accessibility/TrackPad - however trying to use it - dragging this way doesn't seem to work. Where as the "click/drag with/without drag lock" works fine.
3 finger swipe left/right (back/forward) works fine.

It seems when 3 finger drag is enabled there is some conflict with these other features - dragging ceases to work. Since personally I prefer click/drag - I have not pursued investigating.

thanks again!

@usr-sse2

This comment has been minimized.

Show comment
Hide comment
@usr-sse2

usr-sse2 Nov 8, 2016

Removed unnecessary changes to plists (key reordering) by rewriting history.
Added a strange workaround for Caps Lock problem, but haven't tested on previous OS X versions. It works bad when two keyboards (PS/2 and USB) are used together.

usr-sse2 commented Nov 8, 2016

Removed unnecessary changes to plists (key reordering) by rewriting history.
Added a strange workaround for Caps Lock problem, but haven't tested on previous OS X versions. It works bad when two keyboards (PS/2 and USB) are used together.

@vaslobas

This comment has been minimized.

Show comment
Hide comment
@vaslobas

vaslobas Nov 25, 2016

@usr-sse2 Can u please share compiled kext? Thanks!

vaslobas commented Nov 25, 2016

@usr-sse2 Can u please share compiled kext? Thanks!

@x4080

This comment has been minimized.

Show comment
Hide comment
@x4080

x4080 Nov 30, 2016

@usr-sse2, I'm interested in the kext also, or how to combine your commit to the original source quickly? Or you can share your mod source? Or the kext will be fine

Thanks

Edit: Ignore this one, already read @usr-sse2 info on building it myself

x4080 commented Nov 30, 2016

@usr-sse2, I'm interested in the kext also, or how to combine your commit to the original source quickly? Or you can share your mod source? Or the kext will be fine

Thanks

Edit: Ignore this one, already read @usr-sse2 info on building it myself

@x4080 x4080 referenced this pull request Nov 30, 2016

Closed

Can vodoops2 tap drag ? #98

@x4080

This comment has been minimized.

Show comment
Hide comment
@x4080

x4080 Nov 30, 2016

@usr-sse2 I wondered if 4 fingers gesture is working? I think about using 4fingers to do run launchpad?

x4080 commented Nov 30, 2016

@usr-sse2 I wondered if 4 fingers gesture is working? I think about using 4fingers to do run launchpad?

@x4080

This comment has been minimized.

Show comment
Hide comment
@x4080

x4080 Nov 30, 2016

@tluck , I'm using your kext and works fine, then I tried to compile my self the code from @usr-sse2, and the one that I compile myself cannot work (keyboard and trackpad is not detecting types/touches), is there anything else that I have to change? I'm using synaptics trackpad (xps 9350)

Thanks

x4080 commented Nov 30, 2016

@tluck , I'm using your kext and works fine, then I tried to compile my self the code from @usr-sse2, and the one that I compile myself cannot work (keyboard and trackpad is not detecting types/touches), is there anything else that I have to change? I'm using synaptics trackpad (xps 9350)

Thanks

@x4080

This comment has been minimized.

Show comment
Hide comment
@x4080

x4080 Dec 2, 2016

Never mind, solve it with target as all

x4080 commented Dec 2, 2016

Never mind, solve it with target as all

@RehabMan

This comment has been minimized.

Show comment
Hide comment
@RehabMan

RehabMan Dec 8, 2016

Owner

Thanks for submitting, but I will not pull these changes (too many gratuitous changes).
I have cherry picked a few changes and implemented other fixes for v1.8.25.
I will continue to watch the usr-sse2 fork for anything interesting.

Owner

RehabMan commented Dec 8, 2016

Thanks for submitting, but I will not pull these changes (too many gratuitous changes).
I have cherry picked a few changes and implemented other fixes for v1.8.25.
I will continue to watch the usr-sse2 fork for anything interesting.

@RehabMan RehabMan closed this Dec 8, 2016

@matrixbud

This comment has been minimized.

Show comment
Hide comment
@matrixbud

matrixbud Apr 15, 2017

I have the Caps-Lock bug in Sierra 10.12.4 using a Microsoft Wireless Comfort Keyboard 5000. That is, it requires 2 taps to change back and forth between regular and caps lock. Is there any fix for this?

matrixbud commented Apr 15, 2017

I have the Caps-Lock bug in Sierra 10.12.4 using a Microsoft Wireless Comfort Keyboard 5000. That is, it requires 2 taps to change back and forth between regular and caps lock. Is there any fix for this?

@RehabMan

This comment has been minimized.

Show comment
Hide comment
@RehabMan

RehabMan Apr 15, 2017

Owner

Maybe you should reproduce the problem on a real Mac, then report the bug to Apple.
I did a workaround in my PS2 keyboard driver, but that won't help you with what is essentially a USB keyboard.

Owner

RehabMan commented Apr 15, 2017

Maybe you should reproduce the problem on a real Mac, then report the bug to Apple.
I did a workaround in my PS2 keyboard driver, but that won't help you with what is essentially a USB keyboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment