;;; kids-unicode-mode.el --- Insert unicode animals/emoji via letter keys  -*- lexical-binding: t; -*-

(defmacro kids-unicode-insert (name)
  `(lambda ()
     (interactive)
     (insert-char (char-from-name ,name))))

(setq kids-unicode-map
      (let ((map (make-sparse-keymap)))
        (keymap-set map "a" (kids-unicode-insert "ANT"))
        (keymap-set map "b" (kids-unicode-insert "BEAR FACE"))
        (keymap-set map "c" (kids-unicode-insert "CAT"))
        (keymap-set map "d" (kids-unicode-insert "DOG"))
        (keymap-set map "e" (kids-unicode-insert "RAT"))
        (keymap-set map "f" (kids-unicode-insert "FOX FACE"))
        (keymap-set map "g" (kids-unicode-insert "GOAT"))
        (keymap-set map "h" (kids-unicode-insert "HAMSTER FACE"))
        (keymap-set map "i" (kids-unicode-insert "SNAKE"))
        (keymap-set map "j" (kids-unicode-insert "JAPANESE OGRE"))
        (keymap-set map "k" (kids-unicode-insert "KANGAROO"))
        (keymap-set map "l" (kids-unicode-insert "LION FACE"))
        (keymap-set map "m" (kids-unicode-insert "MONKEY"))
        (keymap-set map "n" (kids-unicode-insert "JAPANESE GOBLIN"))
        (keymap-set map "o" (kids-unicode-insert "OWL"))
        (keymap-set map "p" (kids-unicode-insert "PENGUIN"))
        (keymap-set map "q" (kids-unicode-insert "OCTOPUS"))
        (keymap-set map "r" (kids-unicode-insert "RABBIT"))
        (keymap-set map "s" (kids-unicode-insert "SHARK"))
        (keymap-set map "t" (kids-unicode-insert "T-REX"))
        (keymap-set map "u" (kids-unicode-insert "DUCK"))
        (keymap-set map "v" (kids-unicode-insert "FISH"))
        (keymap-set map "w" (kids-unicode-insert "WHALE"))
        (keymap-set map "x" (kids-unicode-insert "OX"))
        (keymap-set map "y" (kids-unicode-insert "JELLYFISH"))
        (keymap-set map "z" (kids-unicode-insert "DRAGON FACE"))
        (keymap-set map "0" (kids-unicode-insert "GRINNING FACE"))
        (keymap-set map "1" (kids-unicode-insert "SMILING FACE WITH SMILING EYES"))
        (keymap-set map "2" (kids-unicode-insert "SMILING FACE WITH HEART-SHAPED EYES"))
        (keymap-set map "3" (kids-unicode-insert "FACE WITH TEARS OF JOY"))
        (keymap-set map "4" (kids-unicode-insert "SMILING FACE WITH SUNGLASSES"))
        (keymap-set map "5" (kids-unicode-insert "KISSING FACE"))
        (keymap-set map "6" (kids-unicode-insert "THINKING FACE"))
        (keymap-set map "7" (kids-unicode-insert "SLEEPING FACE"))
        (keymap-set map "8" (kids-unicode-insert "ROLLING ON THE FLOOR LAUGHING"))
        (keymap-set map "9" (kids-unicode-insert "SMILING FACE WITH HALO"))
        (keymap-set map "`" #'repeat)
        map))

(define-minor-mode kids-unicode-mode
  "Toggle kids-unicode mode. When enabled, letters insert unicode animals."
  :lighter " 🦖"
  :keymap kids-unicode-map)

(provide 'kids-unicode-mode)
;;; kids-unicode-model.el ends here
