I've been writing a kext for the cypress touchpad (available on dell xps 12, 13, 15z and others).
I'm opening this topic in order to post here future updates/news on it.
Sources are based on rehabman VoodooPS2Controller in which I've added support for the cypress PS2 protocol.
It can be now considered as stable and basic parameters can now be changed in prefpane.
Source code and kext download is available here :
- tap to click
- dragging *New*
- triple tap draglock (one tap to end) *New*
- two fingers scrolling (no smooth momentum)
- two fingers tap for right click
- 3 fingers tap/window move/select
- 4 fingers swipe: need to have set on System Preferences => keyboard input shortcut to control+command+[up/down/left/right]
- 5 fingers lock screen : keep your 5 fingers for arround a second and leave the pad
- 5 fingers sleep mode : keep your fingers for at least 3 secs
- Basic Settings can now be changed on : System Preferences => Trackpad
- advanced settings can now be tested quickly via the new prefpane and then be set definitively on the VoodooPS2Trackpad.kext/Info.plist *New*
Best Regards to all,
Installation Note: Backup all your actual PS2 related kext ! since this version is forked from rehabman's one: you did not need AppleACPIPS2Nub.kext/ApplePS2Controller.kext and must remove it if you have it or you will crash.
v0.7 is out ! Everyone should use this release ! this version makes some bug corrections, working optimizations, and brings now a prefpane for quick parameters testing and allow to know easily which good values to set on the VoodooPS2Trackpad.kext/Info.plist
- corrected bugs and added optimizations
- cleaned a bit the code
- added kalman filtering (smooth) on multifinger gestures and pressure calc
- added viable communication between kext and prefpane
- added a prefpane that allows changing advanced settings in live and quick Info.plist edition
- all values can now be set with the VoodooPS2Trackpad Info.plist
- changed all taps to use real timers (better finger tapping for 1 to 5 fingers)
- cleaned a bit the code
- enhanced 4 fingers swipes
- scrolling speed can be now scalled on the trackpad preferences
- 5 fingers lock screen : keep your 5 fingers for arround a second and leave the pad : it launches the OSX shortcut keys for screen locking (Control+Shift+Eject)
- 5 fingers sleep mode : keep your fingers for at least 3 secs : it launches the OSX sleep shortcut keys (Command+Option(Alt)+Eject)
- 2 fingers tap right click : 2 fingers tap gives a right click
- Handles Buggy firmwares (v34, v35) that do not follow cypress own documentation (?!) sending 0x04 header packet instead of 0x20 for 4 fingers packets.
- Now basic settings can be modified on System Preferences => Trackpad !
- Added tap to click for XPS 15z ( framerate superior on firmware v34 v35 to firmware v11)
- corrected bug for firmwares superior to v11 that does not handle rate and resolution to 200dpi 8count/mm
- v0.3 :
- Added 3 fingers tap/window move
- Added 4 fingers swipe
- smoothed mouse moves
- first release : basic features => tap to click, 2 fingers scrolling
Q:Could you add gesture XXXX ?
A: Short answer: maybe. Long Answer : For now we are limitated on PS2 dev to voodooPS2 basics, in order to implement all possible gestures, we need to change from IOHIDPointer to a new class (IOHIDFamily ?), but that represents a LOT of work since using a "Upper" class also means get rawer implementation to graphical hooks ... in other words, when someone will find a way to implement a trackpad (whichever material) using a Upper class, others will then follow. it does not means i will not work on that, i will, at least try to, but the workload being quite huge, don't expect it soon (on the next months) from my part at least. If you have in mind a feature, make an issue, and i would tell you if it's possible or not.
Q:I have a bug/freeze/hang/whatsoever using your kext, what should i do ?
A: Firstly, you need to be sure that you have followed the per-requisites on the installation note on main page, by removing all other mouse related kexts (AppleACPIPS2Nub.kext/ApplePS2Controller.kext), but also other "plugin" kexts like smoothmouse. if you are sure on that, then check your permissions. Finally, if everything is checked, use the following debug kext downloadable here(will keep link updated)
Try to reproduce the bug with this kext loaded (you can also build one with the latest sources and use the debug version). Once the bug occurs, you have 2 things to do :
- write down date(s)/time(s) it occurs
- extract logs by using the following commands and sent it to me: sudo cat /var/log/system.log | grep -i cypress > ~/cypress_dump.txt
- a link to download your cypress_dump.txt (or put it in attachment)
- mention the time(s)/date(s) it occured
- its type (hang, jerkyness, freeze or KP) ?
- is it at boot ?
- is it using a specific feature ?
I do all this just because i like to code, and i like OsX, so I'll try to do the best i can to get it working on most different computers. Again, if you have a problem, don't hesitate, contact me and send me logs.