   []
   (. *applet* :keyCode))
 
-(defn lights [] (.lights *applet*))
+(defn lights
+  "Sets the default ambient light, directional light, falloff, and
+  specular values. The defaults are:
+
+  (ambient-light 128 128 128)
+  (directional-light 128 128 128 0 0 -1)
+  (light-falloff 1 0 0)
+  (light-specular 0 0 0).
+
+  Lights need to be included in the draw to remain persistent in a
+  looping program. Placing them in the setup of a looping program
+  will cause them to only have an effect the first time through the
+  loop."
+  []
+  (.lights *applet*))
 
 (defn light-specular
   [x y z]

     (.frameRate *applet* (float new-rate))))

(defn frustum
  [l r b t near far]
  (.frustum *applet* (float l) (float r) (float b) (float t)
            (float near) (float far)))

(defn get-pixel
  ([] (.get *applet*))
  ([x y] (.get *applet* (int x) (int y)))
  ([x y w h] (.get *applet* (int x) (int y) (int w) (int h))))

(defn green
  "Extracts the green value from a color, scaled to match current


(defn load-matrix [] (.loadMatrix *applet*))

(defn load-pixels
  "Loads the pixel data for the display window into the pixels[]
  array. This function must always be called before reading from or
  writing to pixels.

  Certain renderers may or may not seem to require load-pixels or
  update-pixels. However, the rule is that any time you want to
  manipulate the pixels array, you must first call load-pixels, and
  after changes have been made, call updatePixels. Even if the
  renderer may not seem to use this function in the current Processing
  release, this will always be subject to change."
  []
  (.loadPixels  *applet*))

(defn load-shape
  "Load a geometry from a file as a PShape."
