hammerspoon/Hammerspoon/MJAccessibilityUtils.m

31 lines
1.1 KiB
Objective-C

#import "MJAccessibilityUtils.h"
#import "HSLogger.h"
extern Boolean AXIsProcessTrustedWithOptions(CFDictionaryRef options) __attribute__((weak_import));
extern CFStringRef kAXTrustedCheckOptionPrompt __attribute__((weak_import));
BOOL MJAccessibilityIsEnabled(void) {
BOOL isEnabled = NO;
if (AXIsProcessTrustedWithOptions != NULL)
isEnabled = AXIsProcessTrustedWithOptions(NULL);
else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
isEnabled = AXAPIEnabled();
#pragma clang diagnostic pop
HSNSLOG(@"Accessibility is: %@", isEnabled ? @"ENABLED" : @"DISABLED");
return isEnabled;
}
void MJAccessibilityOpenPanel(void) {
if (AXIsProcessTrustedWithOptions != NULL) {
AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)@{(__bridge id)kAXTrustedCheckOptionPrompt: @YES});
}
else {
static NSString* script = @"tell application \"System Preferences\"\nactivate\nset current pane to pane \"com.apple.preference.universalaccess\"\nend tell";
[[[NSAppleScript alloc] initWithSource:script] executeAndReturnError:nil];
}
}