中文 | English
A lightweight macOS menu bar utility that automatically presses Enter after Typeless or 闪电说 (shandianshuo) finishes voice-to-text input and pastes text via Cmd+V.
Voice input tools like Typeless and shandianshuo usually paste recognized text into the current input box using Cmd+V.
In many chat apps and web chat boxes, you still need to press Enter manually to send the message.
This tool listens for that paste action, waits briefly, and simulates an Enter keypress—so you can keep your hands off the keyboard.
- ✅ Menu bar app (
↩icon) - ✅ Supports Typeless and shandianshuo
- ✅ PID-filtered trigger (only reacts to target processes)
- ✅ Configurable delay (default: 500ms)
- ✅ Global shortcut toggle (
Ctrl + Shift + Enter) - ✅ Script toggle via
SIGUSR1(./toggle.sh) - ✅
launchdauto-start support
- Scans the process list every 30 seconds and finds target processes by name (
Typeless/shandianshuo) - Listens for global
keyDownevents usingCGEvent Tap - Filters events by source PID (only target process events are considered)
- When
Cmd+Vis detected from a target process, starts a delay timer - Simulates an
Enterkeypress when the timer fires - If another
Cmd+Varrives before the timer fires, the timer is reset
chmod +x build.sh
./build.shRequires Xcode Command Line Tools (if not already installed):
xcode-select --install./target-autoenterOn first launch, macOS will require Accessibility permission.
If permission is missing, the app will show an alert with the current binary path.
- Open System Settings
- Go to Privacy & Security → Accessibility
- Click + (you may need to unlock first)
- Add the
target-autoenterbinary - Make sure the toggle is enabled
- Relaunch the app:
./target-autoenter
Note: macOS Accessibility permission is usually tied to the binary hash.
If you recompile (./build.sh) and it asks again, remove the old entry and re-add the new binary.
After launching, a ↩ icon appears in the menu bar.
Click it to open the menu:
- AutoEnter: toggle auto-send on/off
- Quit: quit the app
Status display:
- Enabled: icon at normal opacity
- Disabled: icon dimmed
Default global shortcut:
Ctrl + Shift + Enter
This toggles AutoEnter on/off and shows a centered HUD (ON / OFF) on screen.
To change the shortcut, edit the shortcut check logic in target-autoenter.m (inside event_callback) and recompile.
Common modifier flags:
| Flag | Key |
|---|---|
kCGEventFlagMaskControl |
Ctrl |
kCGEventFlagMaskShift |
Shift |
kCGEventFlagMaskCommand |
Cmd |
kCGEventFlagMaskAlternate |
Option |
./toggle.shThis sends a SIGUSR1 signal to the running app to toggle the on/off state.
Edit the constant in target-autoenter.m:
static const CFTimeInterval DELAY_SEC = 0.5; // set your preferred delay (seconds)Then rebuild:
./build.shSuggestions:
- If sending is sometimes too fast (text not fully pasted yet), increase to
0.6 ~ 0.8 - If it feels too slow, decrease to
0.3 ~ 0.45
Open com.user.target-autoenter.plist and replace the binary path with the actual path on your machine:
<string>/path/to/target-autoenter</string>Example:
<string>/Users/andrew/Downloads/typeless-autoenter-main/target-autoenter</string>cp com.user.target-autoenter.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.user.target-autoenter.plistIf you modified the plist, it's safer to unload first and then load again:
launchctl unload ~/Library/LaunchAgents/com.user.target-autoenter.plist 2>/dev/null || true launchctl load ~/Library/LaunchAgents/com.user.target-autoenter.plist
This usually happens because you recompiled the binary and its hash changed. Fix it by:
- Removing the old
target-autoenterentry from Accessibility - Re-adding the newly compiled
target-autoenter - Running the app again
Possible reasons:
- The current app uses Enter for newline instead of send
- The delay is too short and the text is not fully pasted yet (increase
DELAY_SEC) - AutoEnter is currently disabled (check menu bar icon / shortcut)
WeChat compatibility note:
On WeChat for macOS, synthetic Enter may be treated as a newline when “Enter to send” is enabled. If this happens, change WeChat’s “Send Message” shortcut toCmd + Enter.
The current version triggers based on “target voice input process (Typeless / shandianshuo) + Cmd+V paste event”.
If you want stricter app-level whitelisting (only auto-send in specific chat apps), you can extend the logic further.
This project is adapted from ConstantineLiu/typeless-autoenter, which is licensed under the MIT License.
Main modifications in this repo include:
- Added support for shandianshuo
- Updated target process detection logic (compatible with Typeless / shandianshuo)
- Renamed binary, script, and plist to
target-autoenter - Adapted and validated the auto-send flow for voice-to-text paste behavior
Thanks to the original author for the idea and implementation.
This project is released under the MIT License.
Please keep the license text and original copyright notice when redistributing or modifying.