ControllerKeys Privacy Policy

How ControllerKeys handles local data, permissions, and network activity.

Last updated: June 16, 2026

Overview

ControllerKeys is a macOS utility by Kevin Tang that maps game controllers to keyboard input, mouse input, macros, scripts, webhooks, OBS commands, and system actions.

The app is designed to keep your configuration local. ControllerKeys does not run a third-party analytics SDK, and never sends your controller input, key presses, profiles, macros, scripts, quick text, or configuration to Kevin Tang or anyone else. The app does send a small amount of anonymous usage data — described in Anonymous Usage Analytics below — so its developer can see how many people use it and which app versions and Macs to support. That data contains no personal information and can be turned off in Settings.

Anonymous Usage Analytics

Because ControllerKeys is distributed free (through GitHub and Homebrew) with an optional paid license, the app sends a small anonymous ping so its developer can understand its user base — how many active installs there are, which app and macOS versions are in use, and roughly where users are — and prioritize support and updates accordingly.

What is sent:

What is not sent: your name, email, controller input, key presses, profiles, macros, scripts, quick text, or any configuration. Approximate country is determined from your network connection at the server's edge — your IP address is not stored; only a one-way salted hash is kept, used to roughly de-duplicate installs.

The app's automatic update check (via the Sparkle framework) also includes anonymized system information — app version, macOS version, Mac model, CPU, and memory — with each check. This is standard Sparkle system profiling.

The analytics endpoint is operated by Kevin Tang and runs on Cloudflare. You can turn all of this off in ControllerKeys → Settings → General → Privacy → "Share Anonymous Usage Data".

Data Stored Locally

ControllerKeys stores app configuration on your Mac. This can include:

Current app data is generally stored under ~/.config/controllerkeys/ and related macOS preference/storage locations. Older installs may still have migrated data under ~/.controllerkeys/ or ~/.xbox-controller-mapper/. If you export a profile, you choose where that exported file goes.

Permissions

ControllerKeys needs macOS Accessibility permission to simulate keyboard and mouse input system-wide. Some features may also require Input Monitoring or other macOS permissions depending on your settings and macOS version.

These permissions are used so the app can perform the mappings you configure. They do not give ControllerKeys a reason to upload your data, and the app does not use them for telemetry.

Network Activity

Apart from the anonymous analytics ping and the automatic update check described above (both of which can be disabled), ControllerKeys makes network requests only when a feature you use requires it, including:

For user-configured webhooks, scripts, shell commands, OBS commands, and imported profiles, you are choosing the endpoint or code path. Review third-party profiles before importing them.

Third-Party Services

ControllerKeys is sold through Gumroad. Gumroad handles purchases, payment processing, receipts, and related customer/payment data under Gumroad's own policies.

The anonymous app analytics and the app's update feed are served through Cloudflare, which processes the network request (including your IP address) in order to deliver the response and provide approximate location, under Cloudflare's own policies. App updates use the Sparkle framework.

The ControllerKeys website at kevintang.xyz may use Google Analytics to understand page traffic. That website analytics is separate from the macOS app itself.

Crash Reports, Support, and Feedback

If you email support, open a GitHub issue, post in Discord, or otherwise contact Kevin Tang, the information you provide in that message may be used to respond to you and improve the app.

Please do not send private profile files, secrets, API keys, webhook tokens, or shell commands containing credentials unless you have reviewed and intentionally redacted them.

Profile Sharing and Imports

ControllerKeys profiles can be exported and shared. Exported profiles may include mappings, macros, scripts, shell commands, webhook URLs, OBS commands, app identifiers, quick text, and other settings you configured.

Before sharing a profile, review it for private text, commands, URLs, tokens, or app-specific information. Before importing a profile from someone else, review any code-execution surfaces such as shell commands, JavaScript scripts, webhook follow-up commands, and URLs.

Children's Privacy

ControllerKeys is not directed to children under 13, and Kevin Tang does not knowingly collect personal information from children through ControllerKeys.

Changes

This policy may be updated from time to time. The latest version will be posted on this page with the updated date above.

Contact

Questions about this privacy policy can be sent to Kevin Tang through the contact information on kevintang.xyz.