import Cocoa import ApplicationServices func inspect() { guard let frontApp = NSWorkspace.shared.frontmostApplication else { print("No front app") return } print("Front App:", frontApp.localizedName ?? "", "PID:", frontApp.processIdentifier) let trusted = AXIsProcessTrusted() print("AXIsProcessTrusted:", trusted) let appElem = AXUIElementCreateApplication(frontApp.processIdentifier) var focusedElemObj: CFTypeRef? let err = AXUIElementCopyAttributeValue(appElem, kAXFocusedUIElementAttribute as CFString, &focusedElemObj) print("kAXFocusedUIElement error:", err.rawValue) if err == .success, let elem = focusedElemObj { let axElem = elem as! AXUIElement var roleObj: CFTypeRef? AXUIElementCopyAttributeValue(axElem, kAXRoleAttribute as CFString, &roleObj) print("Role:", roleObj ?? "none") var valObj: CFTypeRef? let valErr = AXUIElementCopyAttributeValue(axElem, kAXValueAttribute as CFString, &valObj) print("Value err:", valErr.rawValue, "Value:", valObj ?? "nil") var selectedTextObj: CFTypeRef? let selTxtErr = AXUIElementCopyAttributeValue(axElem, kAXSelectedTextAttribute as CFString, &selectedTextObj) print("SelectedText err:", selTxtErr.rawValue, "SelectedText:", selectedTextObj ?? "nil") var rangeObj: CFTypeRef? let rangeErr = AXUIElementCopyAttributeValue(axElem, kAXSelectedTextRangeAttribute as CFString, &rangeObj) print("Range err:", rangeErr.rawValue) if rangeErr == .success, let axRange = rangeObj { var range = CFRange() if AXValueGetValue(axRange as! AXValue, .cfRange, &range) { print("CFRange: loc=\(range.location), len=\(range.length)") } } } } inspect()