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