Fix stop toggle not reaching OpenWhispr on key release

Add --clearmodifiers to xdotool so held Ctrl/Alt don't corrupt the
simulated Ctrl+` into Ctrl+Alt+`. Also add 50ms delay before stop
to let key release propagate to X11.

https://claude.ai/code/session_01XKYC1basxdwtHy71tky7xm
This commit is contained in:
Claude
2026-03-25 20:33:03 +00:00
parent 150485ee01
commit 9137bd2d80
+8 -1
View File
@@ -13,6 +13,7 @@ Usage: sudo python3 openwhispr-ptt.py
import subprocess import subprocess
import signal import signal
import sys import sys
import time
try: try:
import evdev import evdev
@@ -35,9 +36,14 @@ is_recording = False
def send_whispr_toggle(): def send_whispr_toggle():
"""Send Ctrl+` to OpenWhispr via xdotool.
Uses --clearmodifiers to release any physically held keys first,
so the simulated Ctrl+` isn't mangled into Ctrl+Alt+`.
"""
try: try:
subprocess.run( subprocess.run(
["xdotool", "key", WHISPR_HOTKEY], ["xdotool", "key", "--clearmodifiers", WHISPR_HOTKEY],
timeout=2, timeout=2,
capture_output=True, capture_output=True,
) )
@@ -108,6 +114,7 @@ def main():
# Stop when either released # Stop when either released
if is_recording and not (ctrl_held and alt_held): if is_recording and not (ctrl_held and alt_held):
time.sleep(0.05) # Let key release propagate to X11
send_whispr_toggle() send_whispr_toggle()
is_recording = False is_recording = False
print("\033[0m○ Stopped", flush=True) print("\033[0m○ Stopped", flush=True)