Giter Site home page Giter Site logo

imbushuo / mac-precision-touchpad Goto Github PK

View Code? Open in Web Editor NEW
8.7K 201.0 558.0 571 KB

Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad

License: Other

C 91.96% C# 3.74% PowerShell 4.29%
windows-precision-touchpad driver apple-macbook hid usb-hid windows-driver trackpad spi bluetooth bluetooth-hid

mac-precision-touchpad's Introduction

Windows Precision Touchpad Implementation for Apple MacBook family/Magic Trackpad 2

Build Status

This project implements Windows Precision Touchpad Protocol for Apple MacBook family/Magic Trackpad 2 on Windows 10. Both USB (traditional and T2), SPI and Bluetooth trackpads are supported.

Donation?

A few people asked me why I removed donation. My current financial situation doesn't require me to accept donation for the budget of future development. If you are considering donation, please consider other meaningful projects and foundations, such as Electronic Frontier Foundation.

Official Driver?

Bootcamp 6.1.5 offers official driver for T2-based model and Magic Trackpad 2. You can also consider using the official driver if you have such Mac. If you have an older model (e.g. MacBooks before 2018/2019), this is the only implementation for these models (yet).

Future Plans and feature tracking

Use the Azure DevOps Board to track feature and device support plans. Bug reports should go to Github issues.

See it in action (YouTube video)

Watch the video

Converged Installation Guide

IMPORTANT: Given changes in Microsoft driver code signing policy, and the compliance need of EV certificate, CI auto builds beyond 2021/01/06 04:00AM EST will not be automatically signed with normal code signing certificate. These builds are still supposed via TestSigning, but not recommended for normal users. Proper WHQL and EV dual-signed packages will be released manually, which can be downloaded from the release page.

  1. Make sure you uninstalled Trackpad++ completely if you have previously does so
  2. Go to the release tab in Github and download the newest version for your architecture
  3. Right click AmtPtpDevice.inf and install it
  4. If you have a Magic Trackpad 2 and want to use it in Bluetooth mode: manaully pair it in PC Settings.

Note: it is unnecessary to enable test signing, or install the certificate manually. Doing so may cause problems in installation. See this issue for detailed explanation.

Also Uninstallation (extremely important for reinstallation Trackpad++ and such)

See also here.

  1. Go to device manager
  2. Find the "Apple Precision Touch Device", "Apple Multi-touch Trackpad HID filter" and "Apple Multi-touch Auxiliary Services"
  3. Right click "remove the device" and also check "uninstall driver"
  4. Rescan devices

Installation with Chocolatey

The drivers are available as a Chocolatey package. To install using Chocolatey run:

choco install mac-precision-touchpad

For developers

  • SPI/T2 version is kernel-mode driver, using KMDF Framework v1.23. Bluetooth driver uses KMDF Framework 1.15. Windows 10 Driver Development Kit Version 2004 or higher is required for development and testing.
  • USB version is a user-mode driver, using UMDF Framework v2.15. Windows 10 Driver Development Kit Version 2004 or higher is required for development and testing.
  • ReleaseSigned configuration is reserved for production build only, and it will be rendered as unsigned if you attempt to build using that configuration. (Historically it's signed, but due to EV certificate's requirements, the process has changed.)

Device support

There is a bring-up issue for certain MacBook Pro and MacBook Air. I am looking into it. If you have such device with Windows installed, please contact me so I can look into the issue remotely (as I don't have many devices).

  • Non-Retina MacBook
  • Some non-Retina MacBook Pro (2011 and 2012)
  • MacBook Pro with Retina Display (MacBookPro 10,1, MacBookPro10,2 & MacBookPro11,1)
  • All recent MacBook Air (Please report if your model is not supported)
  • MacBook Pro with Retina Display (2013, 2014, 2015, 13-inch & 15-inch)
  • New MacBook (12-inch)
  • MacBook Pro 2015, 2016, 2017 (a few SPI devices are in work-in-progress state)
  • T2-based devices: MacBook Air 2018, MacBook Pro 2017/2018/2019/2020: Use default fallback, experience might not be optimal. Open a issue if you encountered dead touch regions.
  • Magic Trackpad 2 & 3 (USB)
  • Magic Trackpad 2 & 3 (Bluetooth connection)

Roadmap

  • Touchpad Device Power Management
  • Touchpad Protocol Stack Implementation
  • Touchpad Raw Input Output (in Driver Trace)
  • HID Protocol Implementation (PTP Touch)
  • HID Protocol Implementation (Configuration)
  • Device Test (Magic Trackpad 2)
  • Refine input experience (tip switch detection and pressure)
  • Refine input experience (gesture experience)
  • More Models
  • SPI
  • KM Driver cross-cert
  • Bluetooth
  • Defuzz
  • Input sensitivity configuration

Acknowledgements

UPDATE 2021/05: She got an M1 Mac now.

People familiar with me know that I don't use Apple MacBook (so development work of this driver occurs on a Surface Pro 4). People probably think it doesn't make sense that I started this project. The motivation behind this project origin from complaints from my girlfriend. Hearing about frequent complains about Dell XPS 13's touchpad (though it passed Precision Touchpad certification), I decided to start this project, so by the time she switches to MacBook Pro, she will have excellent touchpad experience out-of-box, even on Windows. This driver is made for you, but also for everyone.

I would like to thank projects like magictrackpad2-dkms and macbook12-spi-driver that inspire me. I would also like to thank my friends for providing me immense help on devices and testing.

License

  • USB driver is licensed under GPLv2.
  • SPI driver is licensed under MIT.

mac-precision-touchpad's People

Contributors

dependabot[bot] avatar imbushuo avatar kazenoai avatar m13253 avatar masonbergstrom avatar nearix67 avatar nighthawk469 avatar pauby avatar terry2001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mac-precision-touchpad's Issues

CI Builds

Hey,

Would it be possible to get access to the CI builds that come from each branch? The VSTS build badge says that my MSA doesn't have access to that repo. I want to try some of the hid-v2 fixes but as I don't have a valid signing certificate I'd have to remove the 2014 version and install an unsigned version.

Thanks so much for everything you're doing!

Installation issue

I apologize if this is a stupid question, but I'm having trouble installing this.
Trying to use a magic trackpad 2 with a windows 10 laptop (Dell).
Downloaded the zip file, added the certificate file to trusted root. Plugged in the trackpad, went to device manager, found it, tried to update the driver. Browse computer, have disk, tried pointing it to the .inf file. But I keep getting an error saying this driver isn't compatible for use with this device. Did I miss a step?
Thank you!

Driver Not Showing (Not Working) in Macbook Air 13" Mid-2013 Model

I installed the certificate to "Trusted Root Certificate Authorities" and installed the .inf file yet the driver (or Bingxing Wang) doesn't show up when updating the driver of my HID-compliant mouse (the "Show compatible hardware" is unticked). Or is it just that the recent release does not include Macbook Air support?

Pinch-to-zoom is broken on MT2

The overall reliability has vastly improved with the latest release, but the pinch-to-zoom gesture, which used to work, is no longer recognised.

Trackpad frequently rejecting input (one finger/normal mousing)

(Sorry if this is too related to the two finger bug)

My Magic Trackpad 2 is performing inconsistently with normal mousing (one finger). It rejects at least 3 out of every five swipes I do. I've tried different angles/holding finger flat vs the tip but it behaves the same either way. I'm also getting the two finger bug with scrolling, but is anyone else having an issue moving the mouse normally? Wondering if it's on my end or not. Thanks!

Magic Trackpad 1

Is it possible to add support for Magic Trackpad 1?

Dependending on how hard it is to set up a development environment, and how much development is needed, I could perhaps contribute the support myself. How hard would it be to implement?

The 15-inch Late 2013 (Haswell) Macbook Pro is not supported.

Hello.
Awesome work! It seems the driver does not support the 15-inch version of the laptop, although the 13-inch restriction is not mentioned anywhere on the GitHub page.

Hardware IDs for "Apple Multi-Touch" reported in my device manager:

USB\VID_05AC&PID_0262&REV_0225&MI_01
USB\VID_05AC&PID_0262&MI_01

Hardware IDs found in the .inf file:

%DeviceName%=AmtPtpDevice_Install, USB\Vid_05ac&Pid_0259&MI_01 ; MacBookPro 10,2 & 11,1 (Mid 2012 & Late 2013) ANSI
%DeviceName%=AmtPtpDevice_Install, USB\Vid_05ac&Pid_025a&MI_01 ; MacBookPro 10,2 & 11,1 (Mid 2012 & Late 2013) ISO
%DeviceName%=AmtPtpDevice_Install, USB\Vid_05ac&Pid_025b&MI_01 ; MacBookPro 10,2 & 11,1 (Mid 2012 & Late 2013) JIS

; WellSpring Data Type 5
%DeviceName%=AmtPtpDevice_Install, USB\Vid_05ac&Pid_0265&MI_01 ; Apple Magic Trackpad 2 (USB)

installation

apologies if this might seem stupid.
cant install the .inf file on MBPr late 2012 10,2
repeatedly get warning of 'digital signature information'
have I missed a step?
attempted to update touchpad driver via device manager - doesn't recognise .inf file as appropriate driver...

have been eagerly awaiting a precision driver for bootcamp. long overdue!

MacBook Air 13" Mid-2013 (Not working)

I installed the driver on my Macbook Air 13" (mid-2013 model) but it doesn't show up in the drivers list on my trackpad driver when updating it. Does the recent release support the macbook air 13" 2013 model or did I do something wrong in the installation?

I installed it by going to the x64\ReleaseSigned and then installing the certificate and going to x64\ReleaseSigned\AmtPtpDevice and installing the .inf file.

Two-fingers gesture still hard to trigger

I have tried latest release (Drivers.2014) with magic trackpad 2 on Windows 10 1607 14393.1944. Two-fingers gesture still hard to trigger. Sometime it recognize as three-fingers gesture.

Report contact ID size too small

The structure PTP_CONTACT's ContactID field has a size of 3 bits. However, during touch processing in AmtPtpServiceTouchInputInterruptType5, the ContactID is set using the contact ID from f_type5, which ranges from 0 to 11 and therefore is too large for this field:

report.Contacts[i].ContactID = f_type5->ContactIdentifier.Id;

Is it possible to increase the size of this field to 4 bits to accomodate the larger contact ID?

Input lag on MT2

When moving the cursor, there seems to be a small but perceptible delay compared to macOS.

Testing driver on MacBookPro11,5 (15")

I've got a 15" Mid-2015 Retina MBP with the following vendor/product IDs:

VID_05AC
PID_0274

I was wondering if there was a specific branch I should check out and build if I wanted to test this driver on my machine. I'm running Windows 10 x64 1709 (OS Build 16299.192).

Also, is Visual Studio required to build drivers? I have vscode installed and the dotnet stuff running, but afaik that might not be enough.

Cursor offten freeze for 2 - 3 s. Touchpad 2

Hello,

I just install a driver from zip archive. When I tap on icon for open application, the cursor will freeze on this icon for 2-3s sometime. Also sometimes it freeses when i lift my finger from the surface of the touchpad and take it down for next moving with cursor.

[Note] Next stage driver plan

Here's a list of things to do for the next stage. This issue will be split into several projects later.

SPI trackpads

Apple SPI device drivers use Windows Simple Peripheral Bus Extension Driver model, so writing a driver for SPI-based devices should not be too difficult (WDF provides everything). And a good news is we don't need a KMDF driver for SpbCx peripherals. Only SPB controller needs that and Intel has done everything for us.

S3/S4 wake

This issue has workaround implemented during first MacBook Pro port. I have no idea why it doesn't work on certain models. If you hit this issue, capture a trace log file and send it to me for further diagnostics.

HID descriptor library

As more models are going to be supported, hard-coding HID descriptors is not a sustainable way from maintenance's perspective. All HID descriptors that report to OS should be generated from a library. This library will accept a list of HID attributes and builds an HID descriptor automatically.

Shared library and difference drivers

SPI-based models will not share the driver with USB-based models, as they have different IO targets and Windows Driver Model has no support for such hybrid scenario AFAIK. But they will share most parts of Wellspring logic control and upper HID services. Shared components should be moved into a separate static library.

Signal processing

Mathematical approaches will significantly improve the experience.

randomly disabled after reboot/startup

Strangely, sometimes the driver fails to initialize after restarting or booting. No cursor, no nothing. Have to go into device manager, replace precision drivers with apple multi-touch drivers, then reinstall precision to get it up and running again.

Installation

ok laugh, but... front end designer recently moved from macOS to Windows 10 - have a MTP2 want to use with this machine, but how to install after extracting the zip.

Uninstallation

Hi, I installed but having the same issues as #38

I would like to uninstall the drivers as it is unusable at the moment. How do I do that?

sensitivity

even on the highest sensitivity under touchpad settings... on a MBPr retina late 2012....
doesn't seem to always register when touched lightly.
for example, tips of fingers isn't as responsive. works well with the 'pads' of finger.

otherwise a fantastic piece of work and huge credit to those responsible. its great, I love it.

AB#713

MacBookPro8,3 (17" Late 2011) Support

Greetings,

I'm following this project with great interest and will absolutely be donating to your fine work. Would love to see support for this model. There are two devices in device manager - not sure if you need both, but here is a screenshot with associated info:

macbookpro8 3 17 inch late 2011

Apple Multitouch:
HID\VID_05AC&PID_0252&REV_0118&MI_01

Apple Multitouch Mouse:
HID\VID_05AC&PID_0252&REV_0118&MI_02

Thanks!

Delay of pressing

The driver has a slight delay, touching the trackpad with a finger to make a click.
For example: click on start

Support for MacBook Pro9,2 (Mid-2012, 13-inch)

When I install the .inf file to Apple Multi-Touch, I get an error that the driver cannot start. PID: 0x0252 VID: 0x05ac. Do you intend to support this model MacBook? It does use USB rather than SPI

SPI/SPBCx with UMDF

Is it possible to implement SPI/SPBCx drivers with UMDF? I am not sure as Microsoft doesn't provide sufficient documentation on Windows SPI/SPBCx development w/ UMDF.

If you are interested in that (which is critical for newer MacBook/MacBook Pro models), contact me or tell me what you know under this issue.

MacBook Pro 2017

Hi, thank you for your great work!!
I am really interested in a precision touchpad driver for the MacBook Pro 2017. Can you tell me if/when this model will be supported?

paint not working !!

excellent contribution! I'm definitely thinking about making a donation. But I'm missing something to decide, I have a problem and that is using a PC that is not MAC (it's a HP desktop PC) with Windows 10 and I'm using a magic trackpad 2 and the gestures work with 3 and 4 fingers, they work click and double click ... but it does not work "paint" I can not press a finger clicking and moving another finger to select several things at the same time or to paint text ... PS: Sorry but I used a translator my language is not English. Thank you !!

"The folder you specified doesn't contain a compatible software driver for your device"

I'm trying to get your recently released Milestone 3 drivers to work with my Magic Trackpad 2, and I feel like I'm failing on something basic, so excuse me for posting this under Issues.

Basically I get this dialog whenever I point my (what Windows detects as) "HID-compliant mouse" to use your INF file. I double-checked that I picked the right platform (x64), and that I didn't pick the wrong mouse device, so I know it's not that. Any idea what the issue might be?

My Windows version is Windows 10 Pro, version 1703, build 15063.540.

By the way, I'm excited to see a project like this and I'd be glad to help out in any way I can. I can't say I've done any driver development, but I've done plenty of C++ (and some C) in Visual Studio. I'd happily do testing as well. My email's in my profile.

Macbook Pro Late 2011 (MacBook Pro 8.1) Device Cant Start

Tried installing it onto the Apple Multitouch, and Apple Multitouch mouse devices, neither will work. Device cannot start error 10. Mouse falls back to the windows default driver for touchpads (loosing even the basic Apple scroll)
capture

Magic trackpad 2

when i select minimized application from main panel,
application shows, but cursor freeze until i tap again on trackapad surface

Regular PC with MT2 and BT

Could not install these drivers after pairing the device through bluetooth. I am using a non-Apple PC desktop with a BT USB adapter. I am using other drivers from MagicUtilities, which seem to work, but they are not very smooth.. After manually loading the driver for the HID Apple Multi-Touch Pro in the device manager and restarting, I lose all connectivity. I read in another post the bluetooth might not work? Is this correct?

image

The sensitivity is too high on MT2

The sensitivity is so high that I can actually move the cursor without my finger even coming into contact with the surface of the trackpad. One of the side effects of the bug is that inertial scrolling is sometimes interrupted prematurely unless you immediately remove the fingers from the trackpad after making the scroll gesture. Changing the sensitivity in the trackpad settings does not do anything.

Help me install it

Hello, I downloaded the driver from the release tab and found four folders called ARM64, ARM, Win32 and x64. The installation instructions here on GitHub says to install the inf file, but not in which folder the inf file I should install is. Also in the release section, there are two drivers released on the same day 1802.M2 Interim and 1802 Interim which should I install on my MacBook? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.