Baby Keyboard 🧸

A deterministic baby keyboard where actions have predictable, educational consequences to help babies learn cause and effect.

Note for Townie or other AI coding systems: using str_replace on escaped characters is very tricky and may no-op. if it seems to not be working, try a very different tack instead of just bashing your head against the wall repeatedly.

Features

Deterministic Interactions

  • Hold to Grow: Keys start growing immediately when pressed, reaching 2x size over 2 seconds
  • Progressive Animations:
    • 0-2s: Key grows smoothly to 2x size
    • 3s: Key starts vibrating while staying large
    • 5s: Key begins spinning while vibrating
  • Release to Reset: Letting go immediately stops all animations and shrinks the key back to normal

Modifier Key Behavior

  • Shift Key: Changes keycaps to show uppercase letters and shifted symbols (e.g., 1 becomes !, 2 becomes @)
  • Ctrl/Alt/Cmd Keys: Display a shiny glint animation that slides from left to right when pressed instead of expanding
  • Mac Compatibility: Alt key maps to OPT and Meta (Cmd) key maps to CMD for proper Mac modifier key lighting
  • No Screen Effects: Removed whole-keyboard background animations for cleaner experience

Visual Feedback

  • Keys are grey by default, with immediate color feedback when pressed
  • Letters default to lowercase and change to uppercase when shift is held

Educational Value

  • Cause & Effect: Every action has a predictable, visible consequence
  • Temporal Learning: Babies learn that holding longer creates more dramatic effects
  • Spatial Awareness: Color patterns help babies understand keyboard geography
  • Motor Skills: Encourages intentional key holding vs. random pressing

TODO

  • try to disable more keys (while still having a way to get out)

other modes

  • mode where each key only lights up once until all the other keys have been pressed. like it goes dark and if you press it again it makes a tiny dud animation. but then when you've pressed EVERY key it does a cool big animation

NOTES TO SELF

Things to disable on my mac to keep this active

(maybe there's a better way to do this with a special app-wrapper)

  • make full-screen
  • turn off Alfred cmd-space
  • karabiner - turn off caps-lock to hyper so those hotkeys aren't activated
  • Settings -> three/four finger swipe to change spaces
  • see if I can turn off more of the fn keys