Index: /branches/ide-1.0/ccl/hemlock/src/key-event.lisp
===================================================================
--- /branches/ide-1.0/ccl/hemlock/src/key-event.lisp	(revision 6702)
+++ /branches/ide-1.0/ccl/hemlock/src/key-event.lisp	(revision 6703)
@@ -58,10 +58,13 @@
   "This returns the list of all names for keysym.  If keysym is undefined,
    this returns nil."
-  (gethash keysym *keysyms-to-names*))
+  (or (gethash keysym *keysyms-to-names*)
+      (let* ((name (char-name (code-char keysym))))
+        (when name (setf (gethash keysym *keysyms-to-names*)
+                         (list name))))))
 
 (defun keysym-preferred-name (keysym)
   "This returns the preferred name for keysym, how it is typically printed.
    If keysym is undefined, this returns nil."
-  (car (gethash keysym *keysyms-to-names*)))
+  (car (keysym-names keysym)))
 
 
@@ -452,5 +455,6 @@
   "Returns the character associated with key-event. This is SETF'able."
   (check-type key-event key-event)
-  (gethash key-event *key-event-characters*))
+  (or (gethash key-event *key-event-characters*)
+      (code-char (key-event-keysym key-event))))
 
 (defun %set-key-event-char (key-event character)
@@ -575,5 +579,4 @@
   (setf *modifier-translations* ())
   (setf *modifiers-to-internal-masks* ())
-  (setf *mouse-translation-info* (make-array 6 :initial-element nil))
   (setf *modifier-count* 0)
   (setf *all-modifier-names* ())
