个人效率Reddit 原帖

Update on QUICOPY (menu-bar text shortcuts): finally got it working inside Zed and VS Code terminals after a Carbon vs NSEvent rabbit hole

完整上下文原始内容 · Reddit

Hey r/macapps. Solo dev here. I built QUICOPY last year because I kept retyping the same AI prompts into ChatGPT every day, and existing text expanders all felt like overkill (TextExpander's abbreviation system, Raycast's launcher trip, etc). I just wanted: press one key, get my text. So I built that. Posting because I just shipped 1.1 and want to share something I tripped over hard. The bug that took weeks to figure out In 1.0, the shortcut would fire perfectly in Notes, Mail, Slack, Chrome, but quietly do nothing inside Zed's built-in terminal. Same in VS Code's integrated terminal. No error, just silence. It turns out macOS's RegisterEventHotKey (Carbon, from 2001) doesn't fire when the frontmost app consumes the key event itself, which is exactly what self-drawn terminal UIs do. Zed, VS Code's integrated terminal, Ghostty's embedded modes, all fall in this bucket. iTerm2 and Warp don't, which is why nobody complained about them. The fix was moving shortcut capture upstream to NSEvent.addGlobalMonitorForEvents. Works regardless of whether the frontmost app consumes the event. Sounds obvious in hindsight; took me a long time to find. Full technical write-up if anyone's into this kind of thing: https://www.quicopy.com/blog/macos-shortcut-dispatch-zed Other 1.1 changes Paste delivery rewritten to be robust when the foreground app draws its own text UI (Edit menu missing? still works) Small fix: pressing a bound shortcut while my own popover was visible no longer shows a harmless-but-ugly error toast Comparison vs TextExpander: no abbreviation codes to memorize, one keypress vs typing a trigger. $9.99 lifetime instead of $40/year subscription. vs Raycast snippets: no launcher step, one keypress vs three (open, type, Enter). vs macOS System Settings shortcuts: works in any app including sandboxed Electron and editor-embedded terminals. Pricing $1.99/month with a 7-day free trial, or $9.99 one-time lifetime purchase Mac App Store: https://apps.apple.com/app/quicopy/id6761418490 Happy to talk about the Carbon to NSEvent migration, why I went with AppleScript System Events for paste delivery instead of CGEvent (sandbox blocks the latter, wrote about that too if anyone's curious), or just take whatever questions you have.

01需求标签
个人效率功能改进桌面应用候选方案待验证

已收集讨论

9 条已收集

9条已收集9条 Reddit 标称评论
u/Sockerjam

Interesting to read about the bug you encountered and how you solved it! Well done!

u/Such-Explanation-447楼主回复

Thanks! That one was a fun rabbit hole. "Silently does nothing" is honestly the worst flavor of bug to chase, no error, no log, just behavior that doesn't happen.

u/Such-Explanation-447楼主回复

Snippety's solid, been around longer than mine. Out of curiosity, are you using it with abbreviation triggers (typing ";sig" to expand) or with the picker? My main differentiator with QUICOPY is direct shortcut binding (one keypress per snippet, no abbreviation to type, no list to scan), but I know that approach doesn't fit every flow.

u/GroggInTheCosmos回复

Those I use all the time with the abbrv trigger and the rest with the picker. I have too many other shortcuts mapped to ⌃ ⌥ ⌘ ⇧ (CAPS), ⌃ ⌥ ⇧ (Left ⌥) and ⌃ ⌥ ⌘ (Left ⌘) already, so this would not be a major win for me :)

u/siimsiim

This is the kind of bug report that actually sells the app, because it explains where trust was breaking. The next sticky feature might be a per app conflict map or a tiny "shortcut captured but paste blocked here" hint, since terminals are where people assume the app is flaky. Once a tool touches global shortcuts, confidence cues matter almost as much as raw speed.

u/Such-Explanation-447楼主回复

This is genuinely useful framing, thanks for taking the time. The "shortcut captured but paste blocked here" hint is something I've sketched a couple of times but kept punting on because I wasn't sure what to put in the UI. Your phrasing gives me a clear target: a tiny indicator on press that distinguishes "key not received" vs "received but paste path failed." Going on the v1.2 list. The per-app conflict map is harder. The honest version is: I know which apps I've personally tested, but the long tail is invisible to me until users hit it. I've been thinking about a community-sourced approach (something like "users with this app installed reported X behavior") but I worry it just becomes a stale wiki. Curious if you've seen anyone do this well. You're right that for global-shortcut tools, confidence cues matter as much as raw speed. The sub-100ms response time means nothing if the user is silently confused about whether it fired.

u/[deleted]

这条评论已在来源处删除。

u/Such-Explanation-447楼主回复

Thanks, that's nice to hear. Spent way more time on the menu bar UI than the paste pipeline, honestly. Wanted it to feel like part of macOS rather than something bolted on top. If you do try it and find anything that feels off, I'd genuinely want to hear it.