Research prototype · webcam Morse text entry

Blink in Morse.
The webcam types it.

MorsEye turns deliberate eye closures into dots and dashes, and learns to ignore the 15–20 blinks a minute you don't mean. A few seconds of personal calibration replace a one-size-fits-all threshold.

Runs in your browser. Camera frames never leave your device.

An eye drawn from 30 landmark points, blinking “HI” in Morse code The upper lid closes four times briefly for the letter H, pauses, then closes twice for the letter I. Each closure is inked onto a paper tape below the eye, and each letter appears under its marks when the decoder commits it.
Eye aspect ratio (EAR) of the drawing Calibrated threshold Eye counted as closed

Each closure in this animation lasts 400 ms, inside the dot band (200–600 ms). A letter is committed after 1200 ms with the eyes open. These are the app’s current settings.

Results · a public-video check and one exploratory session

What the data show

“It works on my face” is not a result, so the claim was put to a test. The planned multi-session study stopped after one session without labelled closure times, so its main tests were not run. What remains: other people’s natural blinks in a public video dataset (a secondary, not blind analysis), and one recorded session of the author (exploratory).

Natural blinks ignored

– → – per min

False triggers per minute on – natural blinks of – people (Eyeblink8), with the blendshape detector, before and after the – ms reject window.

Same window, other signal

– → – per min

The same reject window barely helps the classic eye-aspect-ratio detector: it measures the same blinks as longer, so few fall under the window.

Short closures ran long

– ms

Median length of the author’s cued short closures in one session, as measured by the camera: above the – ms dot limit, so – of – would have been typed as dashes.

Every number here is generated from the data by the analysis scripts. The public-video figures are means over – videos; the session figures come from one session and are exploratory.

Study design, results and the paper

How it works

From camera frame to letter

  1. 1

    Camera

    About 30 frames a second from an ordinary laptop webcam.

  2. 2

    Face landmarks

    MediaPipe finds 478 points on the face, on your device.

  3. 3

    Eye signal

    Eye aspect ratio from six points per eye, or blink scores.

  4. 4

    Detector

    A threshold fitted to you, with hysteresis, finds each closure.

  5. 5

    Segmenter

    The closure’s duration decides: ignore, dot, dash or delete.

  6. 6

    Decoder

    Pauses end letters and words; the text can be spoken aloud.

Closure duration decides the symbol

Spontaneous blinks are short, so anything shorter than the reject window is ignored. These are the starting values; the final ones will be chosen from the Study A duration data.

See the pipeline step by step

Closure duration bands and pause rules
Eyes closed for Means
under 200 ms Ignored (probably a natural blink)
200–600 ms Dot
600–1400 ms Dash
1400–2000 ms Nothing; two of these within 4 s pause or resume input
2000 ms or more Delete the last character
Eyes open for Means
1200 ms End of letter
3000 ms Space (once)

Honest status

What it is, and what it is not

  • A research prototype. It is being evaluated by one able-bodied adult, its author. It has not been tested with people with motor impairments, and no clinical claim is made.
  • One person. The deliberate-blink and typing results come from the author alone, who is also the labeller, on one laptop camera. A public dataset of four other people checks the natural-blink results.
  • Cued closures. Deliberate blinks in the study are made in response to cues, not from a user’s own intent to write.
  • Webcam timing. At 30 frames a second each frame is 33 ms long, which limits how precisely a closure can be timed.
  • Private by design. No server, accounts or analytics. Study recordings stay on the experimenter’s laptop; only features, never faces, are published.

All threats to validity