Summary
Add native Input Monitoring (TCC kTCCServiceListenEvent) check/request to the desktop app so global keyboard and pointer events can be observed outside our own windows.
Problem
Without Input Monitoring, the desktop agent cannot:
This is a sibling of #6333 (AX), #6334 (Screen Recording), #6335 (Microphone) and is currently the only "core control" permission with no native check or request path.
Proposal
- Add IOKit FFI block in
apps/tauri/src/macos/permissions.rs:
IOHIDCheckAccess(requestType: u32) -> u32
IOHIDRequestAccess(requestType: u32) -> bool
- Constants:
kIOHIDRequestTypeListenEvent = 1, kIOHIDAccessTypeGranted = 0, kIOHIDAccessTypeDenied = 1, kIOHIDAccessTypeUnknown = 2.
check_input_monitoring() and request_input_monitoring() returning granted / denied / not_determined.
- Extend
open_system_settings() with input_monitoring → Privacy_ListenEvent.
- Surface in onboarding wizard alongside AX / Screen Recording.
- Add
NSInputMonitoringUsageDescription to Info.plist.
Acceptance
- Native check returns correct status without prompting.
- Native request triggers the macOS Input Monitoring dialog on first call.
- Onboarding wizard shows the permission and reflects the current status.
- Deep-link to System Settings → Privacy & Security → Input Monitoring works.
Related
Implemented as part of feat/desktop-onboarding PR (linked when opened).
Summary
Add native Input Monitoring (TCC
kTCCServiceListenEvent) check/request to the desktop app so global keyboard and pointer events can be observed outside our own windows.Problem
Without Input Monitoring, the desktop agent cannot:
This is a sibling of #6333 (AX), #6334 (Screen Recording), #6335 (Microphone) and is currently the only "core control" permission with no native check or request path.
Proposal
apps/tauri/src/macos/permissions.rs:IOHIDCheckAccess(requestType: u32) -> u32IOHIDRequestAccess(requestType: u32) -> boolkIOHIDRequestTypeListenEvent = 1,kIOHIDAccessTypeGranted = 0,kIOHIDAccessTypeDenied = 1,kIOHIDAccessTypeUnknown = 2.check_input_monitoring()andrequest_input_monitoring()returninggranted/denied/not_determined.open_system_settings()withinput_monitoring → Privacy_ListenEvent.NSInputMonitoringUsageDescriptiontoInfo.plist.Acceptance
Related
Implemented as part of
feat/desktop-onboardingPR (linked when opened).