Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[BUG] Global hotkey event tap becomes disabled and drops Function-key presses

Abierto
#657 3 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@altic-dev ya está trabajando en esto.

Desde el 21/7/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

Describe the bug

The global hotkey CGEventTap can become disabled without the tap-disabled callback restoring it. While disabled, physical Function-key presses are not delivered to GlobalHotkeyManager, so an active recording cannot be stopped with the configured Function shortcut. The existing periodic health check eventually detects and recreates the tap, but its 30-second interval leaves the shortcut unresponsive for a noticeable period.

This was reproduced in both Automatic and Toggle activation modes.

Reproduction steps
  1. Configure Function as the primary dictation shortcut.
  2. Start recording.
  3. Continue using FluidVoice until the global event tap becomes disabled.
  4. Press and release Function repeatedly while recording.
  5. Observe that recording continues.
  6. Wait for the health check to recreate the event tap.
  7. Press Function again and observe that recording stops immediately.

The failure is intermittent, but occurred repeatedly in one session.

Expected behavior

The Function shortcut remains available throughout recording. If macOS disables the event tap, FluidVoice detects and restores it immediately or within a very short bounded interval.

Actual behavior

Multiple physical Function presses were absent from the application log while ASR remained active. The log then reported a failed event-tap health check, successfully recreated the tap, and the next Function press stopped recording.

App Version

1.6.4 development build

macOS Version

macOS 26.3 (25D125)

Architecture

Apple Silicon

Logs or crash report
[20:42:14.057] [INFO] [ASRService] START() called - beginning recording session
# Multiple physical Function taps occurred here, with no GlobalHotkeyManager entries
[20:42:57.941] [WARN] [GlobalHotkeyManager] Health check failed, attempting to recover
[20:42:57.941] [INFO] [GlobalHotkeyManager] Event tap successfully created and enabled
[20:42:57.941] [INFO] [GlobalHotkeyManager] Health check recovery successful
[20:42:59.224] [INFO] [GlobalHotkeyManager] Hotkey route | pressed=dictate(mod) | active=dictate | asrRunning=true | action=stop
[20:42:59.226] [INFO] [ASRService] STOP() called - beginning shutdown sequence

Only one FluidVoice process was running. A local mitigation reduces the fallback health-check interval from 30 seconds to 2 seconds and adds detection/recovery timing diagnostics. A durable fix may require reducing work in the event-tap callback or safely moving event processing off the main run loop.

Possibly related: #104 reports push-to-talk getting stuck after key release, and #401 documents latency in the same global event-tap callback.

Lenguaje dominante
Swift
Estrellas
11.9k
Forks
863
Merge medio
1 d 12 h
PR fusionados (30 d)
27

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de altic-dev/FluidVoice

Todos los issues de altic-dev/FluidVoice

Issues similares

Más issues de Swift

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.