やめて hör auf

Schlag-Erkennung für Apple-Silicon-MacBooks.

Schlag aufs Notebook, es macht ein Geräusch. Interessant ist, dass es überhaupt funktioniert: Der Sensor ist undokumentiert, CoreMotion sieht ihn nicht, und ein Schlag von einem Tischstoß zu trennen braucht das Gyroskop.

macOS 13+ · Apple-Silicon-Laptops · M2 und neuer, oder M1 Pro/Max

yamete-App-Icon: ein errötendes Cartoon-MacBook
Beschleunigung 0.8 g
Rotation 60 °/s

0.52 g 47.7 °/s erkennt

Zwei echte Aufnahmen, gleiche Achsen. Der Tischstoß ist der größere Impakt um 39 %, und der Detektor verwirft ihn — er dreht die Maschine kaum.

Der Diskriminator

Der härteste Schlag ist der, den man verwirft

Ein Stoß über den Tisch schüttelt die Maschine mehr als ein Schlag auf den Deckel. Nach Härte sortieren baut etwas, das auf Möbel reagiert.

Rotation, °/s
Bump the desk Slap the lid Trackpad click Typing 60 0.8 g
g
Vier echte Aufnahmen. Horizontal: Peak-Beschleunigung; vertikal: Peak-Rotation. Nur der Schlag sitzt hoch genug auf der Rotationsachse für das Gyro-Gate.

Empfindlichkeit

Was es fängt, und was es falsch macht

40 aufgezeichnete Schläge und 150 Sekunden Tippen, Trackpad, Tischstöße, Deckelbewegung und ein unberührtes Notebook, die still bleiben müssen. Ein Schieberegler bewegt sich dazwischen.

0.50
Erkannte Schläge 35 / 40
Falsch positive 0

Der Standard.

Aktionen

Dann passiert etwas

Drei Antwortarten, gefiltert nach Schlaghärte. Jede kann den Schlag lesen, auf den sie reagiert.

Ton abspielen

Dateien oder ein ganzer Ordner: Es wählt jedes Mal einen, der Reihe nach oder zufällig, nie denselben zweimal hintereinander. Die Lautstärke kann der Kraft folgen.

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

Webhook aufrufen

Beliebige Methode, Header und Body. URL und Body sind templatisiert: Home Assistant, Kurzbefehl oder IFTTT ohne Sonderfälle.

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

Befehl ausführen

Der Schlag kommt zweimal an: als Umgebungsvariablen für Shell-One-Liner und als JSON auf stdin für alles, was lieber parst.

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

Hinter einem erweiterten Schalter

Zuerst 200 ms warten

Die Erkennung ist schnell genug, dass ein Ton startet, während der physische Schlag noch hörbar ist. Die Antwort soll nach dem Impakt landen. 200 ms nach Gehör, pro Aktion einstellbar.

Härte und Vertrauen sind verschiedene Fragen

Wie viele Detektoren zustimmten beantwortet „war das ein Impakt?“. Wie hart Sie schlugen ist Amplitude — und die allein entscheidet, ob eine major-Aktion feuert.

Die App

Sie lebt in der Menüleiste

Öffnen startet die Erkennung, Beenden stoppt sie. Der Daemon macht die echte Arbeit über einen Unix-Socket; das Fenster ist ein Controller, der sich anhängt.

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.

Auf Ihrem Mac

Nichts verlässt den Rechner, außer Sie senden es

Erkennung, Config und Logs bleiben im Home-Verzeichnis. Kein Konto, keine Chipcolate-Cloud, kein Analytics-SDK. Die einzigen Netzpfade sind die, die Sie einrichten.

  • Nur lokal

    Sensorsamples bleiben auf dem Gerät. Scope-Telemetrie ist ein lokaler Socket-Stream zur App, aus wenn niemand zuschaut.

  • Kein Konto

    Keine Anmeldung, kein Profil, kein Server von uns. Deinstallieren und ein paar Pfade unter ~/Library löschen.

  • Ihre Aktionen

    Töne bleiben lokal. Webhooks und Befehle sprechen nur mit Endpunkten oder Programmen, die Sie setzen.

Vollständige Datenschutzerklärung Fragen über GitHub Issues

Installation

Ob Ihr Mac es ausführen kann

Läuft auf
Apple-Silicon-Laptops mit macOS 13 oder neuer — M2 und später, plus M1 Pro und M1 Max.
Ohne Sensor
MacBook Pro M1 (2020), Air M1, alle Desktops und alle Intel. yamete probe sagt das klar, statt zu hängen.
Fragt nach
Eingabeüberwachung beim ersten Start. macOS verlangt das für jeden HID-Zugriff, auch für einen Bewegungssensor, der kein sinnvolles Eingabegerät ist.

Signiert und notarisiert · Apple Silicon · DMG öffnen und hineinziehen

Oder nur der Daemon

Läuft gut ohne App — so wurde der Detektor entwickelt. Ein Benutzer-LaunchAgent hält die Erkennung ohne UI am Laufen.

# probe
yamete probe

# watch
yamete watch --scores

# install
yamete install --copy

Alles — Detektor, Korpus und Tuning-Tools — liegt auf github.com/chipcolate/yamete .