43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
#import <AVFoundation/AVFoundation.h>
|
|
#import <AppKit/AppKit.h>
|
|
#import <IOKit/hidsystem/IOHIDLib.h>
|
|
|
|
// https://github.com/codebytere/node-mac-permissions/blob/main/permissions.mm
|
|
|
|
extern "C" bool InputMonitoringAuthStatus(bool prompt) {
|
|
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_15) {
|
|
IOHIDAccessType theType = IOHIDCheckAccess(kIOHIDRequestTypeListenEvent);
|
|
NSLog(@"IOHIDCheckAccess = %d, kIOHIDAccessTypeGranted = %d", theType, kIOHIDAccessTypeGranted);
|
|
switch (theType) {
|
|
case kIOHIDAccessTypeGranted:
|
|
return true;
|
|
break;
|
|
case kIOHIDAccessTypeDenied: {
|
|
if (prompt) {
|
|
NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent";
|
|
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
|
|
}
|
|
break;
|
|
}
|
|
case kIOHIDAccessTypeUnknown: {
|
|
if (prompt) {
|
|
bool result = IOHIDRequestAccess(kIOHIDRequestTypeListenEvent);
|
|
NSLog(@"IOHIDRequestAccess result = %d", result);
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
} else {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
extern "C" float BackingScaleFactor() {
|
|
NSScreen* s = [NSScreen mainScreen];
|
|
if (s) return [s backingScaleFactor];
|
|
return 1;
|
|
}
|