feat(shortcut): replace push-to-talk toggle with two coexisting hotkeys (classic + PTT)#1302
Open
kud wants to merge 4 commits intocjpais:mainfrom
Open
feat(shortcut): replace push-to-talk toggle with two coexisting hotkeys (classic + PTT)#1302kud wants to merge 4 commits intocjpais:mainfrom
kud wants to merge 4 commits intocjpais:mainfrom
Conversation
…configurable bindings - Replace 'push to talk' boolean setting with dedicated 'Push-to-Talk Shortcut' hotkey - PTT now always acts as hold-to-record regardless of global transcription mode - Implement three configurable hotkeys: Classic (toggle), Push-to-Talk (hold), Cancel - Add clear_binding Rust command to explicitly remove any hotkey - Display modifier keys as Unicode symbols (⌃⌥⇧⌘) with L/R prefix for sided variants - Show 'No hotkey' placeholder when binding is unset - Hide reset button for bindings without defaults; display trash icon instead - Add store.save() to settings migration for persistence on first launch - Remove PushToTalk.tsx component (functionality integrated into keybindings)
- Add clearBinding Tauri command for removing shortcuts completely - Show 'No hotkey' placeholder when binding is not set - Display trash icon button to clear active bindings - Hide reset button when no default binding exists - Replace verbose modifier names with Unicode symbols (⌃⌥⇧⌘) - Add L/R prefix for sided variants (L⌃, R⇧, etc.) - Change key combination separator from '+' to space for cleaner display - New TrashIcon SVG component - Remove push_to_talk from AppSettings type
Owner
|
Right now no new features are being merged. I'm open to this, but it will be taken up at a later time as we revisit shortcuts generally. Right now there are an absolute ton of shortcut requests and I can't just merge one without people getting on me about not merging the one they want. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before Submitting This PR
Please confirm you have done the following:
If this is a feature or change that was previously closed/rejected:
Human Written Description
I've been using Handy daily and kept running into the same friction: I'd be mid-conversation and want a quick dictation, but I was in toggle mode and had to go flip the push-to-talk setting first. SuperWhisper solves this elegantly — you have two separate hotkeys, and the behaviour is implicit in which one you press. No settings to toggle, no mental overhead.
This PR replaces the push-to-talk boolean toggle with two coexisting, independently configurable hotkeys: the existing classic toggle shortcut (press once to start, press again to stop and transcribe) and a new dedicated push-to-talk shortcut (hold to record, release to transcribe). Both are always active simultaneously. You just reach for whichever one fits the moment — hold PTT for a quick aside, use the classic toggle for a longer note.
I also cleaned up a few UX rough edges in the shortcut input components while I was there: a trash icon to explicitly clear a binding to empty, a "No hotkey" placeholder when a binding is unset, and modifier keys rendered as Unicode symbols (⌃ ⌥ ⇧ ⌘) so long combos stay readable.
Related Issues/Discussions
Fixes #
Discussion:
Community Feedback
No formal discussion thread yet — happy to start one if that would help. The feature pattern itself is well-established (SuperWhisper, which many Handy users are familiar with, works exactly this way).
Testing
push_to_talkboolean pick up the newtranscribe_with_push_to_talkbinding correctly on first launch, and the new binding persists to disk viastore.save()Screenshots/Videos (if applicable)
AI Assistance
If AI was used: