Skip to content

Instantly share code, notes, and snippets.

@saniul
Created March 26, 2015 03:03
Show Gist options
  • Save saniul/497c3f2683cb228e1de0 to your computer and use it in GitHub Desktop.
Save saniul/497c3f2683cb228e1de0 to your computer and use it in GitHub Desktop.
MacOSX10.10 Private Force Touch APIs
// I think this is the stuff that is responsible for the "bumpy pixels" behavior of the Force Touch trackpad in iMovie
//
// Generated by class-dump 3.5 (64 bit).
//
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//
#pragma mark Function Pointers and Blocks
typedef void (*CDUnknownFunctionPointerType)(void); // return type and parameters are unknown
typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
#pragma mark Named Structures
#pragma mark Typedef'd Structures
typedef struct {
id _field1;
SEL _field2;
SEL _field3;
SEL _field4;
} CDStruct_4fdc8b6f;
typedef struct {
id _field1;
SEL _field2;
void *_field3;
} CDStruct_f8f0024c;
typedef struct {
id _field1;
SEL _field2;
} CDStruct_b2dc443c;
typedef struct {
NSData *stream;
char *currentPtr;
char *endPtr;
} CDStruct_d87b8232;
typedef struct {
unsigned long long serial;
unsigned long long timestamp;
unsigned long long delta;
} CDStruct_c75109f2;
typedef struct {
unsigned long long _field1;
id *_field2;
unsigned long long *_field3;
unsigned long long _field4[5];
} CDStruct_70511ce9;
typedef struct {
char *data;
int len;
} CDStruct_815caf98;
typedef struct {
char _field1;
char _field2;
char _field3;
double _field4;
double _field5;
double _field6;
double _field7;
double _field8;
double _field9;
double _field10;
double _field11;
double _field12;
char _field13;
long long _field14;
char _field15;
double _field16;
} CDStruct_dc60c16d;
typedef struct {
char _field1;
char _field2;
double _field3;
} CDStruct_8e9e3288;
typedef struct {
double minPossiblePosition;
double minAllowablePosition;
double maxAllowablePosition;
double maxPossiblePosition;
char canCollapseBeforeView;
char canCollapseAfterView;
} CDStruct_0a28aba5;
typedef struct {
double _field1;
double _field2;
double _field3;
double _field4;
} CDStruct_d2b197d1;
typedef struct {
float _field1;
int _field2[10];
} CDStruct_6f4e2a38;
typedef struct {
long long _field1;
unsigned int _field2;
} CDStruct_0f3e1ffa;
typedef struct {
long long generationCount;
long long changeCount;
} CDStruct_df2dc5d0;
typedef struct {
short _field1;
short _field2;
short _field3;
short _field4;
int _field5;
int _field6;
int _field7;
int _field8;
int _field9;
int _field10;
unsigned int _field11;
int _field12;
int _field13;
unsigned int _field14;
unsigned int :1;
unsigned int :1;
unsigned int :1;
unsigned int :29;
unsigned int _field15;
unsigned int _field16;
int _field17[1];
} CDStruct_2e65c88c;
typedef struct {
short _field1;
short _field2;
} CDStruct_dd0be819;
typedef struct {
unsigned int _field1;
int _field2;
long long _field3;
unsigned long long _field4;
double _field5;
long long _field6;
struct CVSMPTETime _field7;
unsigned long long _field8;
unsigned long long _field9;
} CDStruct_e50ab651;
typedef struct {
double _currentDate;
double _birthDate;
double _lastDate;
struct {
unsigned int _skipped:1;
unsigned int _reserved:31;
} _flags;
} CDStruct_d41e72e8;
typedef struct {
CDStruct_d2b197d1 _field1;
CDStruct_d2b197d1 _field2;
CDStruct_d2b197d1 _field3;
id *_field4;
CDStruct_d2b197d1 _field5;
id *_field6;
CDStruct_d2b197d1 _field7;
CDStruct_d2b197d1 _field8;
id *_field9;
id _field10;
id _field11;
} CDStruct_309c9dfb;
typedef struct {
struct CGSize _field1;
struct CGSize _field2;
struct CGSize _field3;
unsigned long long _field4;
unsigned long long _field5;
} CDStruct_22276b4c;
typedef struct {
unsigned int :4;
unsigned int :1;
unsigned int :24;
union {
char *_field1;
struct *_field2;
struct __CFDictionary *_field3;
} _field1;
} CDStruct_d48118a8;
typedef struct {
long long _field1;
id _field2;
id _field3;
struct CGRect _field4;
double _field5;
char _field6;
char _field7;
} CDStruct_602775a4;
typedef struct {
unsigned char _field1;
unsigned char _field2;
short _field3;
int _field4;
unsigned char _field5;
char _field6;
unsigned char _field7;
unsigned char _field8;
short _field9;
short _field10;
union {
struct _CGSTabletPointData _field1;
struct _CGSTabletProximityData _field2;
} _field11;
unsigned int :1;
unsigned int :31;
unsigned int _field12;
unsigned int _field13;
unsigned int _field14;
} CDStruct_e29a92ac;
// Ambiguous groups
typedef struct {
unsigned int _inDealloc:1;
unsigned int _reserved:31;
} CDStruct_8f76168e;
typedef struct {
unsigned int isCursorInTarget:1;
unsigned int reserved:31;
} CDStruct_af82842b;
typedef struct {
unsigned int _reserved:32;
} CDStruct_4a40d4f7;
typedef struct {
unsigned int reserved:32;
} CDStruct_9fab449c;
#pragma mark -
//
// File: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
// UUID: 8D38B41E-852C-30F9-9158-FE45FAF0B2F3
//
// Arch: x86_64
// Current version: 1347.53.0
// Compatibility version: 45.0.0
// Source version: 1347.53.0.0.0
// Minimum Mac OS X version: 10.10.0
// SDK version: 10.10.0
//
// Objective-C Garbage Collection: Supported
//
@protocol NSInputAlignmentGuide <NSObject>
- (NSArray *)referenceValues;
- (long long)guideType;
@end
@protocol NSInputAlignmentMatch <NSObject>
- (id <NSInputAlignmentGuide>)alignmentGuide;
- (id <NSInputAlignmentGuide>)itemRepresentativeGuide;
- (id <NSInputAlignmentItem>)item;
@end
@interface NSInputAlignmentFilter : NSObject
{
long long _reserved0;
long long _flags;
id _velocityFilter;
struct dispatch_source_s *_periodicUpdateTimer;
struct CGPoint _currentLocation;
double _currentTimestamp;
double _lastMovementTimestamp;
unsigned long long _modifierFlags;
struct CGPoint _movementSinceLastAlignment;
struct CGPoint _cumulativeMovementSinceLastAlignment;
struct CGPoint _lastAlignmentDistance;
id <NSObject> _references[4];
id _reserved1;
}
+ (unsigned long long)inputEventMask;
+ (unsigned long long)filterInputEventMask;
- (BOOL)processAlignment:(struct CGPoint)arg1 ofReference:(id)arg2 againstGuide:(id)arg3;
- (BOOL)processVerticalAlignment:(double)arg1 ofReference:(id)arg2 againstHorizontalGuide:(id)arg3;
- (BOOL)processHorizontalAlignment:(double)arg1 ofReference:(id)arg2 againstVerticalGuide:(id)arg3;
- (void)updateWithPanRecognizer:(id)arg1;
- (void)updateWithEvent:(id)arg1;
- (id)init;
- (void)dealloc;
- (BOOL)alignDistance:(struct CGPoint)arg1;
- (BOOL)alignVerticalDistance:(double)arg1;
- (BOOL)alignHorizontalDistance:(double)arg1;
- (void)filterActionInputUsingPanRecognizer:(id)arg1;
- (void)filterInputEvent:(id)arg1;
- (void)_requestPeriodicUpdate;
- (void)_schedulePeriodicUpdateWithRecognizer:(id)arg1;
- (BOOL)_modifierFlagsAllowAlignment;
- (BOOL)_shouldAlignVerticalDistance:(double)arg1;
- (BOOL)_shouldAlignHorizontalDistance:(double)arg1;
- (BOOL)_canPerformAlignment;
- (void)_clearPeriodicTimer;
- (struct CGPoint)_filteredVelocity;
- (BOOL)_hasCurrentLocation;
- (struct CGPoint)_currentLocation;
- (double)_currentTimestamp;
- (void)_updateDragOnLocation:(struct CGPoint)arg1 timestamp:(double)arg2 modifierFlags:(unsigned long long)arg3 recognizer:(id)arg4;
- (void)_setSnapDistance:(long long)arg1;
- (void)_setActuationBlock:(CDUnknownBlockType)arg1;
- (BOOL)_isVerticalVelocityAlignable;
- (BOOL)_isHorizontalVelocityAlignable;
@end
@interface NSInputAlignmentController : NSObject
{
id <NSInputAlignmentControllerDelegate> _delegate;
NSMutableArray *_sessions;
id _reserved0;
}
+ (struct CGPoint)alignmentDeltaFromMatches:(id)arg1;
@property __weak id <NSInputAlignmentControllerDelegate> delegate; // @synthesize delegate=_delegate;
- (void)clearAlignmentStateForItem:(id)arg1;
- (void)setAlignmentGuides:(id)arg1 affectingItem:(id)arg2;
- (id)checkAlignmentOfItem:(id)arg1;
- (id)alignItem:(id)arg1 usingFilter:(id)arg2;
- (id)init;
- (void)dealloc;
- (BOOL)_delegateShouldAlignOnMatch:(id)arg1;
- (id)_sessionForItem:(id)arg1;
@end
@interface NSInputAlignmentGuide : NSObject <NSInputAlignmentGuide>
{
long long _guideType;
NSArray *_referenceValues;
}
+ (id)guidesBorderingRect:(struct CGRect)arg1;
+ (id)guideWithType:(long long)arg1 referenceValues:(id)arg2;
- (id)referenceValues;
- (long long)guideType;
- (BOOL)isEqual:(id)arg1;
- (id)initWithType:(long long)arg1 referenceValues:(id)arg2;
- (void)dealloc;
// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;
@end
@interface _NSInputAlignmentGuide : NSObject
{
id <NSInputAlignmentGuide> _guide;
long long _guideType;
NSArray *_referenceValues;
long long _representativeIndex;
}
- (BOOL)isEqual:(id)arg1;
- (double)yDoubleValueAtIndex:(unsigned long long)arg1;
- (double)xDoubleValueAtIndex:(unsigned long long)arg1;
- (struct CGPoint)pointValueAtIndex:(unsigned long long)arg1;
- (id)referenceValues;
- (void)dealloc;
@end
@interface _NSInputAlignmentItem : NSObject
{
id <NSInputAlignmentItem> _item;
NSArray *_representativeGuides;
}
- (void)_updateRepresentativeGuides;
- (void)dealloc;
@end
@interface _NSInputAlignmentMatch : NSObject <NSInputAlignmentMatch>
{
struct CGPoint _delta;
BOOL _alignsX;
BOOL _alignsY;
_NSInputAlignmentItem *_item;
_NSInputAlignmentGuide *_itemRepresentativeGuide;
_NSInputAlignmentGuide *_alignmentGuide;
}
- (id)alignmentGuide;
- (id)itemRepresentativeGuide;
- (id)item;
- (void)dealloc;
// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;
@end
@interface _NSInputAlignmentControllerSession : NSObject
{
_NSInputAlignmentItem *_item;
NSInputAlignmentController *_controller;
NSArray *_alignmentGuidesAffectingItem;
NSInputAlignmentFilter *_activeFilter;
}
- (id)alignItemUsingFilter:(id)arg1;
- (void)setAlignmentGuidesAffectingItem:(id)arg1;
- (id)initWithItem:(id)arg1 controller:(id)arg2;
- (void)dealloc;
@end
// Some extra actuation-/force-feedback-specific APIs
//
// Generated by class-dump 3.5 (64 bit).
//
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//
#pragma mark Function Pointers and Blocks
typedef void (*CDUnknownFunctionPointerType)(void); // return type and parameters are unknown
typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
#pragma mark Named Structures
#pragma mark Typedef'd Structures
typedef struct {
id _field1;
SEL _field2;
SEL _field3;
SEL _field4;
} CDStruct_4fdc8b6f;
typedef struct {
id _field1;
SEL _field2;
void *_field3;
} CDStruct_f8f0024c;
typedef struct {
id _field1;
SEL _field2;
} CDStruct_b2dc443c;
typedef struct {
NSData *stream;
char *currentPtr;
char *endPtr;
} CDStruct_d87b8232;
typedef struct {
unsigned long long serial;
unsigned long long timestamp;
unsigned long long delta;
} CDStruct_c75109f2;
typedef struct {
unsigned long long _field1;
id *_field2;
unsigned long long *_field3;
unsigned long long _field4[5];
} CDStruct_70511ce9;
typedef struct {
char *data;
int len;
} CDStruct_815caf98;
typedef struct {
char _field1;
char _field2;
char _field3;
double _field4;
double _field5;
double _field6;
double _field7;
double _field8;
double _field9;
double _field10;
double _field11;
double _field12;
char _field13;
long long _field14;
char _field15;
double _field16;
} CDStruct_dc60c16d;
typedef struct {
char _field1;
char _field2;
double _field3;
} CDStruct_8e9e3288;
typedef struct {
double minPossiblePosition;
double minAllowablePosition;
double maxAllowablePosition;
double maxPossiblePosition;
char canCollapseBeforeView;
char canCollapseAfterView;
} CDStruct_0a28aba5;
typedef struct {
double _field1;
double _field2;
double _field3;
double _field4;
} CDStruct_d2b197d1;
typedef struct {
float _field1;
int _field2[10];
} CDStruct_6f4e2a38;
typedef struct {
long long _field1;
unsigned int _field2;
} CDStruct_0f3e1ffa;
typedef struct {
long long generationCount;
long long changeCount;
} CDStruct_df2dc5d0;
typedef struct {
short _field1;
short _field2;
short _field3;
short _field4;
int _field5;
int _field6;
int _field7;
int _field8;
int _field9;
int _field10;
unsigned int _field11;
int _field12;
int _field13;
unsigned int _field14;
unsigned int :1;
unsigned int :1;
unsigned int :1;
unsigned int :29;
unsigned int _field15;
unsigned int _field16;
int _field17[1];
} CDStruct_2e65c88c;
typedef struct {
short _field1;
short _field2;
} CDStruct_dd0be819;
typedef struct {
unsigned int _field1;
int _field2;
long long _field3;
unsigned long long _field4;
double _field5;
long long _field6;
struct CVSMPTETime _field7;
unsigned long long _field8;
unsigned long long _field9;
} CDStruct_e50ab651;
typedef struct {
double _currentDate;
double _birthDate;
double _lastDate;
struct {
unsigned int _skipped:1;
unsigned int _reserved:31;
} _flags;
} CDStruct_d41e72e8;
typedef struct {
CDStruct_d2b197d1 _field1;
CDStruct_d2b197d1 _field2;
CDStruct_d2b197d1 _field3;
id *_field4;
CDStruct_d2b197d1 _field5;
id *_field6;
CDStruct_d2b197d1 _field7;
CDStruct_d2b197d1 _field8;
id *_field9;
id _field10;
id _field11;
} CDStruct_309c9dfb;
typedef struct {
struct CGSize _field1;
struct CGSize _field2;
struct CGSize _field3;
unsigned long long _field4;
unsigned long long _field5;
} CDStruct_22276b4c;
typedef struct {
unsigned int :4;
unsigned int :1;
unsigned int :24;
union {
char *_field1;
struct *_field2;
struct __CFDictionary *_field3;
} _field1;
} CDStruct_d48118a8;
typedef struct {
long long _field1;
id _field2;
id _field3;
struct CGRect _field4;
double _field5;
char _field6;
char _field7;
} CDStruct_602775a4;
typedef struct {
unsigned char _field1;
unsigned char _field2;
short _field3;
int _field4;
unsigned char _field5;
char _field6;
unsigned char _field7;
unsigned char _field8;
short _field9;
short _field10;
union {
struct _CGSTabletPointData _field1;
struct _CGSTabletProximityData _field2;
} _field11;
unsigned int :1;
unsigned int :31;
unsigned int _field12;
unsigned int _field13;
unsigned int _field14;
} CDStruct_e29a92ac;
// Ambiguous groups
typedef struct {
unsigned int _inDealloc:1;
unsigned int _reserved:31;
} CDStruct_8f76168e;
typedef struct {
unsigned int isCursorInTarget:1;
unsigned int reserved:31;
} CDStruct_af82842b;
typedef struct {
unsigned int _reserved:32;
} CDStruct_4a40d4f7;
typedef struct {
unsigned int reserved:32;
} CDStruct_9fab449c;
#pragma mark -
//
// File: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
// UUID: 8D38B41E-852C-30F9-9158-FE45FAF0B2F3
//
// Arch: x86_64
// Current version: 1347.53.0
// Compatibility version: 45.0.0
// Source version: 1347.53.0.0.0
// Minimum Mac OS X version: 10.10.0
// SDK version: 10.10.0
//
// Objective-C Garbage Collection: Supported
//
@protocol NSInputFeedbackPerformer <NSObject>
- (void)performFeedbackPattern:(long long)arg1 forTimestamp:(double)arg2;
@end
@interface NSInputFeedbackManager : NSObject
{
}
+ (id)defaultPerformer;
+ (void)_requestVisuallySynchronizedPerformance:(id)arg1 feedbackPattern:(long long)arg2;
+ (void)_peformOutstandingVisuallySyncronizedPerformanceRequests;
@end
@interface NSTouchDevice : NSObject <NSInputFeedbackPerformer>
{
unsigned long long _deviceID;
long long _reserved1;
double _reserved2;
long long _flags;
struct CGSize _surfaceSize;
id _reserved3[3];
}
+ (void)_touchDeviceRemoved:(id)arg1;
+ (void)_touchDeviceAdded:(id)arg1;
+ (BOOL)_hasForceCapableTouchDevice;
+ (BOOL)_hasPressureEnabledTouchDevice;
+ (id)_touchDeviceFromTrueDeviceID:(unsigned long long)arg1;
+ (id)touchDeviceFromDeviceID:(unsigned long long)arg1;
+ (void)actuateWithPattern:(long long)arg1 forEvent:(id)arg2;
+ (id)touchDevices;
+ (id)_touchDeviceWithIOHIDDictionary:(id)arg1;
+ (void)_pressureCapabilitiesPrefChanged:(id)arg1;
+ (void)initialize;
@property(readonly) struct CGSize surfaceSize; // @synthesize surfaceSize=_surfaceSize;
@property(readonly) unsigned long long deviceID; // @synthesize deviceID=_deviceID;
- (BOOL)supportsForce;
- (BOOL)hasActuation;
- (id)_cancelledTouches;
- (id)_touchingTouches;
- (id)_deviceInfo;
- (void)setOverridePressureConfiguration:(id)arg1;
- (void)_actuateWithPattern:(long long)arg1 timestamp:(double)arg2 suppressible:(BOOL)arg3;
- (void)actuateWithPattern:(long long)arg1 timestamp:(double)arg2;
- (void)performFeedbackPattern:(long long)arg1 forTimestamp:(double)arg2;
- (unsigned long long)_trueDeviceID;
- (long long)deviceType;
- (id)_initWithIOHIDDictionary:(id)arg1;
- (id)init;
- (void)dealloc;
@property(readonly, copy) NSString *description;
// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;
@end
__attribute__((visibility("hidden")))
@interface NSTrackpadFeedbackPerformer : NSObject <NSInputFeedbackPerformer>
{
}
- (void)_performFeedbackPattern:(long long)arg1;
- (void)performFeedbackPattern:(long long)arg1 forTimestamp:(double)arg2;
- (void)_performFeedbackPattern:(long long)arg1 when:(unsigned long long)arg2;
// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;
@end
@jbrennan
Copy link

😬

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