Pause your keyboard with one click.
Wipe it down without typing gibberish — or step away without your cat writing your emails.
Free · macOS 14+ (Apple Silicon & Intel) · Windows 10 & 11
Homebrew: brew install --cask enigmaticzee/tap/paws-off
Website · Features · Install · How it works · FAQ · Development
|
For wiping down your keyboard.
|
For leaving your computer running near curious pets.
|
| 🐾 Lives in your menu bar / tray | Click the paw for the panel; right-click for quick actions (lock for cleaning, lock while away, unlock, quit). Prefer a window? Choose Start in → Window in Settings. |
| ⌨️ Global shortcut | Lock or unlock from any app: ⌃⌥⌘L on Mac, CtrlAltShiftL on Windows. |
| 📊 Your paw stats | Lifetime totals, kept only on your computer, shown as rotating one-liners like "≈ 486 words by paws, never sent". |
| 🔓 Never locks you out | The keyboard is released the moment your computer locks, sleeps, switches user or shuts down, so you can always type your password. |
| 🌗 Light and dark | Follows your system (Auto), or pick Light or Dark in ⚙️ Settings. |
| 🔄 Stays up to date | Checks for a new version when it starts and about once a day, installs it on its own (never while your keyboard is locked) and tells you when it has. Turn it off in Settings. |
📸 More screenshots
![]() Ready to clean |
![]() Custom timer |
![]() Paws off |
![]() Caught a paw |
![]() Menu bar panel |
![]() Settings |
On Windows: the window and the tray pop-up
Mac (paste into Terminal):
curl -fsSL https://enigmaticzee.github.io/PawsOff/install.sh | bashWindows (paste into PowerShell):
irm https://enigmaticzee.github.io/PawsOff/install.ps1 | iexEach downloads the latest release from this page, installs it (just for you, no admin rights on Windows) and opens Paws Off, without the security prompts below. Curious what they do? Read install.sh and install.ps1; they're short. On a Mac, click Grant Access once to let it pause your keyboard.
Paws Off isn't signed with a paid Apple or Microsoft developer certificate yet, so if you download it the usual way, both systems ask you to confirm the first time you open it. It's open source: you can read every line, or build it yourself.
- Download PawsOff-mac.dmg, open it, and drag Paws Off into Applications. (Using Homebrew? See below.)
- Open it once. Double-click Paws Off in Applications. macOS says "Paws Off" Not Opened. Click Done.
- Allow it. Open System Settings → Privacy & Security, scroll down to Security, and next to "Paws Off" was blocked click Open Anyway. Enter your password, then click Open Anyway again.
- Give it keyboard access. In Paws Off, click Grant Access, then switch on Paws Off in System Settings → Privacy & Security → Accessibility.
From then on Paws Off starts in your menu bar: look for the 🐾 at the top of your screen.
Prefer Terminal? Skip steps 2–3 with one command
This removes the "downloaded from the internet" flag that macOS checks, for this app only:
xattr -dr com.apple.quarantine "/Applications/Paws Off.app"The Accessibility switch is on, but nothing gets locked
Open the Paws Off window and click Already switched on? Reset and ask again. This clears a stuck permission (it can happen after moving or reinstalling the app) and asks again.
Prefer the Terminal? Install with Homebrew:
brew install --cask enigmaticzee/tap/paws-offThen do steps 2–4 above once: open the app, click Open Anyway, and give it keyboard access. (The Terminal shortcut in the box above works here too.)
- Updates: Paws Off updates itself, so there's nothing to run. (
brew upgradeskips it on purpose.) - Uninstall:
brew uninstall --cask paws-off. Add--zapto remove its settings too.
- Download PawsOff-Windows-Setup.exe and open it. If SmartScreen says "Windows protected your PC", click More info → Run anyway.
- Click through the short setup. It installs just for you (no admin rights) and can add a desktop shortcut or start Paws Off when you sign in.
- Paws Off lives in the system tray, by the clock: click the 🐾 for the panel. Uninstall any time from Settings → Apps.
keyboard ──▶ Paws Off keyboard hook ──▶ unlocked? ──yes──▶ your apps
│ │
│ no ──▶ swallowed (counted, checked for unlock phrase)
│
└──▶ watching for the shortcut and paw patterns
- Mac: a session event tap (
CGEventTap). Windows: a low-level keyboard hook (WH_KEYBOARD_LL). Both see key presses before any app does: passed straight through while unlocked, dropped while locked. - Paw detection only looks at how many keys are held and for how long, never at what you type, and never fires while the screen is locked.
- Nothing you type is stored or sent. While locked it keeps only the last few characters, enough to spot your unlock phrase, and discards them on unlock. Paw stats are counts only, kept on your computer.
- The only network request is the update check: when it starts and about once a day it asks GitHub whether there's a newer release. Turn it off in Settings.
Is this a keylogger?
No. It has to see key presses to block them, but it never records what you type: while locked it keeps only the last few characters, just enough to spot your unlock phrase, and forgets them on unlock. It sends nothing anywhere except the update check. It's open source, so you can read every line; see How it works and SECURITY.md.
Why does macOS say "Paws Off" can't be opened?
Paws Off isn't notarized by Apple yet (that needs a paid developer account, and it's on the way). macOS asks you to confirm any app like that once: System Settings → Privacy & Security → Open Anyway. Or install with the one-line installer, which skips the prompt.
Why does the Mac version need Accessibility access?
macOS only lets apps with Accessibility access intercept keystrokes. Paws Off uses it only to drop key presses while locked and to notice the shortcut and paw patterns. Windows needs no permission.
Can it block the Touch ID / power button, or Ctrl+Alt+Delete?
No. The system handles those keys itself. If one is pressed, your computer locks and Paws Off releases the keyboard.
Can paw detection go off while I'm gaming or typing fast?
It can: holding four or more letter keys at once looks like a paw. If that's you, turn Paw detection off in ⚙️ Settings. Locking by hand keeps working.
On Windows, some keys still reach an app running as administrator.
Windows doesn't let normal apps block input to apps running with admin rights. Everything else is blocked as usual.
Shipped
- Lives in the menu bar (Mac) and system tray (Windows)
- Paw detection: locks itself when a paw lands on the keys
Up next
- Signed and notarized builds, so there's no first-launch prompt
- Custom global shortcut
git clone https://github.com/EnigmaticZee/PawsOff.git && cd PawsOff
# Mac (needs the Xcode command line tools: xcode-select --install)
./build.sh && open "Paws Off.app" # build and run
Tools/make-dmg.sh # universal app + dist/PawsOff-mac.dmg (needs: pip install dmgbuild)
Tools/make-icons.sh # redraw the app icon everywhere (Mac, Windows, installers, README)
Tools/make-readme-art.sh # refresh the screenshots in this README
# Windows (needs the .NET SDK, run on Windows)
dotnet publish windows/PawsOff.csproj -c Release -o out| Path | What |
|---|---|
Sources/ |
Mac app (SwiftUI + AppKit). KeyboardBlocker.swift holds the event tap and all lock logic; CardView.swift is the UI shown in the window and the menu bar panel. |
windows/ |
Windows app (WPF, .NET Framework 4.8). KeyboardBlocker.cs holds the hook; CardView.xaml is the UI shown in the window and the tray pop-up. |
Vendor/Sparkle/ |
Sparkle 2.10.0, the Mac updater (MIT). |
.github/workflows/build.yml |
Builds both apps on every push; publishes a Release (with the Sparkle appcast) when a v* tag is pushed. |
packaging/winget/, Tools/winget-submit.sh |
winget manifests and the script that submits a release. Homebrew: EnigmaticZee/homebrew-tap. |
Tools/ |
Icon, installer art, DMG, README art and in-app release notes generators. |
site/ |
The website and the one-line installers, published to GitHub Pages (.github/workflows/site.yml); installers.yml tests the installers on clean machines weekly. |
docs/TESTING.md |
The hand-testing checklist for releases. |
docs/DEVELOPMENT.md |
Rules to read before changing code. |
docs/HISTORY.md |
Version history. |
Releasing: ./build.sh <version>, add the version to docs/HISTORY.md, commit, then git tag v<version> && git push --follow-tags. GitHub Actions builds both apps, signs the Mac update and publishes the downloads. Then run Tools/winget-submit.sh <version>.
Contributing: issues and pull requests are welcome. The one rule that matters most: there must always be a way to unlock.
Made with 🐾 by Zee · MIT License
Windows app font: Nunito by the Nunito Project Authors, SIL Open Font License · Updates by Sparkle







