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:
+8
-1
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user