CGEvent.h
1 /* 2 This file is part of Darling. 3 4 Copyright (C) 2019-2020 Lubos Dolezel 5 6 Darling is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 Darling is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with Darling. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef _CGEVENT_H_ 21 #define _CGEVENT_H_ 22 23 #include <CoreGraphics/CGEventTypes.h> 24 #include <CoreGraphics/CGGeometry.h> 25 #include <CoreGraphics/CGError.h> 26 #include <CoreGraphics/CGRemoteOperation.h> 27 #include <CoreGraphics/CoreGraphicsPrivate.h> 28 29 __BEGIN_DECLS 30 31 extern CFTypeID CGEventGetTypeID(void); 32 33 extern CGEventRef _Nullable CGEventCreate(CGEventSourceRef _Nullable source); 34 extern CFDataRef _Nullable CGEventCreateData( 35 CFAllocatorRef _Nullable allocator, 36 CGEventRef _Nullable event); 37 38 extern CGEventRef _Nullable CGEventCreateFromData( 39 CFAllocatorRef _Nullable allocator, CFDataRef _Nullable data); 40 extern CGEventRef _Nullable CGEventCreateMouseEvent( 41 CGEventSourceRef _Nullable source, 42 CGEventType mouseType, CGPoint mouseCursorPosition, 43 CGMouseButton mouseButton); 44 extern CGEventRef _Nullable CGEventCreateKeyboardEvent( 45 CGEventSourceRef _Nullable source, 46 CGKeyCode virtualKey, bool keyDown); 47 extern CGEventRef _Nullable CGEventCreateScrollWheelEvent( 48 CGEventSourceRef _Nullable source, 49 CGScrollEventUnit units, uint32_t wheelCount, int32_t wheel1, ...); 50 51 52 53 extern CGEventRef _Nullable CGEventCreateScrollWheelEvent2( 54 CGEventSourceRef _Nullable source, 55 CGScrollEventUnit units, uint32_t wheelCount, int32_t wheel1, int32_t wheel2, int32_t wheel3); 56 57 58 59 extern CGEventRef _Nullable CGEventCreateCopy(CGEventRef _Nullable event); 60 extern CGEventSourceRef _Nullable CGEventCreateSourceFromEvent( 61 CGEventRef _Nullable event); 62 63 64 65 extern void CGEventSetSource(CGEventRef _Nullable event, 66 CGEventSourceRef _Nullable source); 67 68 extern CGEventType CGEventGetType(CGEventRef _Nullable event); 69 70 extern void CGEventSetType(CGEventRef _Nullable event, CGEventType type); 71 72 extern CGEventTimestamp CGEventGetTimestamp(CGEventRef _Nullable event); 73 74 extern void CGEventSetTimestamp(CGEventRef _Nullable event, 75 CGEventTimestamp timestamp); 76 77 extern CGPoint CGEventGetLocation(CGEventRef _Nullable event); 78 79 extern CGPoint CGEventGetUnflippedLocation(CGEventRef _Nullable event); 80 81 extern void CGEventSetLocation(CGEventRef _Nullable event, CGPoint location); 82 83 84 extern CGEventFlags CGEventGetFlags(CGEventRef _Nullable event); 85 86 extern void CGEventSetFlags(CGEventRef _Nullable event, CGEventFlags flags); 87 88 extern void CGEventKeyboardGetUnicodeString(CGEventRef _Nullable event, 89 UniCharCount maxStringLength, UniCharCount *_Nullable actualStringLength, 90 UniChar * _Nullable unicodeString); 91 92 extern void CGEventKeyboardSetUnicodeString(CGEventRef _Nullable event, 93 UniCharCount stringLength, const UniChar * _Nullable unicodeString); 94 95 extern int64_t CGEventGetIntegerValueField(CGEventRef _Nullable event, 96 CGEventField field); 97 98 extern void CGEventSetIntegerValueField(CGEventRef _Nullable event, 99 CGEventField field, int64_t value); 100 101 extern double CGEventGetDoubleValueField(CGEventRef _Nullable event, 102 CGEventField field); 103 extern void CGEventSetDoubleValueField(CGEventRef _Nullable event, 104 CGEventField field, double value); 105 106 extern CFMachPortRef _Nullable CGEventTapCreate(CGEventTapLocation tap, 107 CGEventTapPlacement place, CGEventTapOptions options, 108 CGEventMask eventsOfInterest, CGEventTapCallBack callback, 109 void * _Nullable userInfo); 110 111 112 extern CFMachPortRef _Nullable CGEventTapCreateForPSN( 113 void * processSerialNumber, 114 CGEventTapPlacement place, CGEventTapOptions options, 115 CGEventMask eventsOfInterest, CGEventTapCallBack callback, 116 void *_Nullable userInfo); 117 118 extern CFMachPortRef _Nullable CGEventTapCreateForPid(pid_t pid, 119 CGEventTapPlacement place, CGEventTapOptions options, 120 CGEventMask eventsOfInterest, CGEventTapCallBack callback, 121 void * _Nullable userInfo); 122 extern void CGEventTapEnable(CFMachPortRef tap, bool enable); 123 124 extern bool CGEventTapIsEnabled(CFMachPortRef tap); 125 extern void CGEventTapPostEvent(CGEventTapProxy _Nullable proxy, 126 CGEventRef _Nullable event); 127 128 extern void CGEventPost(CGEventTapLocation tap, CGEventRef _Nullable event); 129 extern void CGEventPostToPSN(void * _Nullable processSerialNumber, 130 CGEventRef _Nullable event); 131 132 extern void CGEventPostToPid( pid_t pid, 133 CGEventRef _Nullable event); 134 135 extern CGError CGGetEventTapList(uint32_t maxNumberOfTaps, 136 CGEventTapInformation * _Nullable tapList, 137 uint32_t * _Nullable eventTapCount); 138 139 __END_DECLS 140 141 #endif