やめて basta

Detección de golpes para MacBook Apple Silicon.

Golpea el portátil, hace un ruido. Lo interesante es que funcione: el sensor no está documentado, CoreMotion no lo ve, y distinguir un golpe de un choque en el escritorio necesita el giroscopio.

macOS 13+ · portátiles Apple Silicon · M2 y posteriores, o M1 Pro/Max

Icono de yamete: un MacBook de dibujos sonrojado
aceleración 0.8 g
rotación 60 °/s

0.52 g 47.7 °/s dispara

Dos grabaciones reales, mismos ejes. El golpe de escritorio es el impacto mayor en un 39 % y el detector lo descarta: apenas gira la máquina.

El discriminador

El golpe más fuerte es el que hay que tirar

Un choque a través del escritorio mueve la máquina más que un golpe en la tapa. Ordenar por fuerza construye algo que se dispara con el mueble.

rotación, °/s
Bump the desk Slap the lid Trackpad click Typing 60 0.8 g
g
Cuatro grabaciones reales. Horizontal: aceleración pico; vertical: rotación pico. Solo el golpe está lo bastante alto en rotación para pasar el filtro del giroscopio.

Sensibilidad

Qué captura, y en qué se equivoca

40 golpes grabados y 150 segundos de tecleo, trackpad, golpes de escritorio, movimiento de tapa y un portátil quieto que deben quedarse en silencio. Un deslizador los recorre.

0.50
Golpes capturados 35 / 40
Falsos positivos 0

El valor predeterminado.

Acciones

Luego pasa algo

Tres tipos de respuesta, filtrados por la fuerza del golpe. Cada una puede leer el golpe al que responde.

Reproducir un sonido

Apunta a archivos o a una carpeta entera: elige uno cada vez, en orden o al azar, nunca el mismo dos veces seguidas. El volumen puede seguir la fuerza.

# out of the box
/System/Library/
  Sounds/Sosumi.aiff

Llamar a un webhook

Cualquier método, cabeceras y cuerpo. URL y cuerpo con plantillas: Home Assistant, Atajos o IFTTT sin casos especiales.

# POST body
{
  "tier": "{{tier}}",
  "g": {{peak_g}}
}

Ejecutar un comando

El golpe llega dos veces: variables de entorno para one-liners de shell, y JSON por stdin para quien prefiera parsearlo.

$ osascript -e "set volume 0"
# $YAMETE_TIER → major
# $YAMETE_PEAK_G → 0.52

Tras un interruptor avanzado

Espera 200 ms primero

La detección es tan rápida que un sonido puede empezar mientras el golpe físico aún se oye. La respuesta debe llegar después del impacto. 200 ms de oído, ajustable por acción.

Severidad y confianza son preguntas distintas

Cuántos detectores votaron responde «¿fue un impacto?». La fuerza es amplitud, y solo ella decide si una acción major se dispara.

La app

Vive en la barra de menús

Abrirla inicia la detección; cerrarla la detiene. El demonio hace el trabajo real por un socket unix; la ventana es un controlador que se conecta.

The window follows the system appearance rather than picking a look. A menu bar utility that ignores light and dark reads as broken rather than styled.

It ships the daemon inside itself and owns its lifetime, so there is nothing to install separately and nothing left running when you quit. If a daemon is already running the app attaches to it and leaves it alone.

You can also skip the app. The daemon runs on its own as a user LaunchAgent, and the protocol is newline-delimited JSON — you can drive it by hand with nc -U.

En tu Mac

Nada se va salvo que lo envíes tú

Detección, config y logs se quedan en tu carpeta de usuario. Sin cuenta, sin nube Chipcolate, sin SDK de analytics. Las únicas redes son las que configures.

  • Solo local

    Las muestras del sensor se procesan en el dispositivo. La telemetría del scope es un flujo de socket local a la app, apagado si nadie mira.

  • Sin cuenta

    Sin registro, sin perfil, sin servidor nuestro. Desinstala y borra unas rutas bajo ~/Library.

  • Tus acciones

    Los sonidos se quedan locales. Webhooks y comandos solo hablan con endpoints o programas que pongas tú.

Política completa Preguntas en GitHub Issues

Instalación

Si tu Mac puede ejecutarlo

Funciona en
Portátiles Apple Silicon con macOS 13 o posterior — M2 y posteriores, más M1 Pro y M1 Max.
Sin sensor
MacBook Pro M1 (2020), Air M1, todos los de sobremesa e Intel. yamete probe lo dice claro en lugar de colgarse.
Pide
Supervisión de entrada en el primer arranque. macOS lo exige para cualquier acceso HID, incluido un sensor de movimiento que no es un dispositivo de entrada útil.

Firmado y notarizado · Apple Silicon · abre el DMG y arrástralo

O solo el demonio

Funciona bien sin la app: así se desarrolló el detector. Un LaunchAgent de usuario mantiene la detección sin nada en pantalla.

# probe
yamete probe

# watch
yamete watch --scores

# install
yamete install --copy

Todo — detector, corpus y herramientas de ajuste — está en github.com/chipcolate/yamete .