Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Capture all inbuilt trackpad events and cancel some touch events

I'm trying to capture all trackpad events at OS level and disable few of them - say the ones in left half of trackpad. Following this question, I could level listen to events in current window view with following code.


final class AppKitTouchesView: NSView {
    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
        // We're interested in `.indirect` touches only.
        allowedTouchTypes = [.indirect]
        // We'd like to receive resting touches as well.
        wantsRestingTouches = true
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func handleTouches(with event: NSEvent) {
        // 1. Change `in` parameter to listen events at OS level
        // 2. Disable all events with `touch.normalizedPosition.x < 0.5`
        let touches = event.touches(matching: .touching, in: self)
    }

    override func touchesBegan(with event: NSEvent) {
        handleTouches(with: event)
    }

    override func touchesEnded(with event: NSEvent) {
        handleTouches(with: event)
    }

    override func touchesMoved(with event: NSEvent) {
        handleTouches(with: event)
    }

    override func touchesCancelled(with event: NSEvent) {
        handleTouches(with: event)
    }
}

I'd to accomplish two things further.

  1. Change in parameter to listen events at OS level
  2. Disable all touch events on some condition - say touch.normalizedPosition.x < 0.5
Capture all inbuilt trackpad events and cancel some touch events
 
 
Q