diff --git a/hemlock/abbrev.lisp b/hemlock/abbrev.lisp
index 535ed4d969010561a167327890cc2d01b89b2fab..af95ba787e1974a0700c0490da9ad6830cd81fc0 100644
--- a/hemlock/abbrev.lisp
+++ b/hemlock/abbrev.lisp
@@ -510,7 +510,7 @@
 	     :default (value abbrev-pathname-defaults)
 	     :must-exist nil)))
   (with-open-file (file (value abbrev-pathname-defaults) :direction :input
-			:element-type 'string-char :if-does-not-exist :error)
+			:element-type 'base-character :if-does-not-exist :error)
     (read-abbrevs file)))
 
 
@@ -584,7 +584,7 @@
 	   :help "Name of the file to write current abbrevs to."
 	   :must-exist nil)))
   (with-open-file (file filename :direction :output
-			:element-type 'string-char :if-exists :supersede
+			:element-type 'base-character :if-exists :supersede
 			:if-does-not-exist :create)
     (multiple-value-bind (x mode-tables) (count-abbrevs)
       (declare (ignore x))
@@ -626,7 +626,8 @@
 
 
 (defun write-incremental (mode filename)
-  (with-open-file (file filename :direction :output :element-type 'string-char
+  (with-open-file (file filename :direction :output
+			:element-type 'base-character
 			:if-exists mode :if-does-not-exist :create)
     (dolist (def *new-abbrevs*)
       (let ((abb (car def))
diff --git a/hemlock/key-event.lisp b/hemlock/key-event.lisp
index 0e0defca4781899bae9c856809ea1116b30d8427..d2579b5797563cb40405a08c6f72195473a20466 100644
--- a/hemlock/key-event.lisp
+++ b/hemlock/key-event.lisp
@@ -111,7 +111,7 @@
 
 ;;; TRANSLATE-KEY-EVENT -- Public.
 ;;;
-#+nil
+#+clx
 (defun translate-key-event (display scan-code bits)
   "Translates the X scan-code and X bits to a key-event.  First this maps
    scan-code to an X keysym using XLIB:KEYCODE->KEYSYM looking at bits and
@@ -317,7 +317,7 @@
 ;;; modifier identifier.
 ;;;
 (defvar *id-namestring*
-  (make-array 30 :adjustable t :fill-pointer 0 :element-type 'string-char))
+  (make-array 30 :adjustable t :fill-pointer 0 :element-type 'base-character))
 
 ;;; PARSE-KEY-FUN -- Internal.
 ;;;
@@ -472,7 +472,7 @@
 
 ;;; DEFINE-CLX-MODIFIER -- Public.
 ;;;
-(defun <define-clx-modifier (clx-mask modifier-name)
+(defun define-clx-modifier (clx-mask modifier-name)
   "This establishes a mapping from clx-mask to a define key-event modifier-name.
    TRANSLATE-KEY-EVENT and TRANSLATE-MOUSE-KEY-EVENT can only return key-events
    with bits defined by this routine."
@@ -540,13 +540,14 @@
   (let* ((high-byte (ash keysym -8))
 	 (low-byte-vector (svref *keysym-high-bytes* high-byte)))
     (unless low-byte-vector
-      (let ((new-vector (make-array 256)))
+      (let ((new-vector (make-array 256 :initial-element nil)))
 	(setf (svref *keysym-high-bytes* high-byte) new-vector)
 	(setf low-byte-vector new-vector)))
     (let* ((low-byte (ldb (byte 8 0) keysym))
 	   (bit-vector (svref low-byte-vector low-byte)))
       (unless bit-vector
-	(let ((new-vector (make-array modifier-bits-limit)))
+	(let ((new-vector (make-array modifier-bits-limit
+				      :initial-element nil)))
 	  (setf (svref low-byte-vector low-byte) new-vector)
 	  (setf bit-vector new-vector)))
       (let ((key-event (svref bit-vector bits)))
@@ -728,7 +729,8 @@
   (setf *all-modifier-names* ())
   (setf *keysym-high-bytes* (make-array 256 :initial-element nil))
   (setf *key-event-characters* (make-hash-table))
-  (setf *character-key-events* (make-array char-code-limit :initial-element nil))
+  (setf *character-key-events*
+	(make-array char-code-limit :initial-element nil))
   
   (define-key-event-modifier "Hyper" "H")
   (define-key-event-modifier "Super" "S")
@@ -736,10 +738,8 @@
   (define-key-event-modifier "Control" "C")
   (define-key-event-modifier "Shift" "Shift")
   (define-key-event-modifier "Lock" "Lock")
-#|  
-  (define-clx-modifier (xlib:make-state-mask :shift) "Shift")
-  (define-clx-modifier (xlib:make-state-mask :mod-1) "Meta")
-  (define-clx-modifier (xlib:make-state-mask :control) "Control")
-  (define-clx-modifier (xlib:make-state-mask :lock) "Lock")
-|#
-)
+
+  #+clx (define-clx-modifier (xlib:make-state-mask :shift) "Shift")
+  #+clx (define-clx-modifier (xlib:make-state-mask :mod-1) "Meta")
+  #+clx (define-clx-modifier (xlib:make-state-mask :control) "Control")
+  #+clx (define-clx-modifier (xlib:make-state-mask :lock) "Lock"))
diff --git a/hemlock/lispbuf.lisp b/hemlock/lispbuf.lisp
index ec610bf2a9cef4877e77a35a5239a3f9021eb846..81e58e6adb7f2ca464b283f22d069550897b82fc 100644
--- a/hemlock/lispbuf.lisp
+++ b/hemlock/lispbuf.lisp
@@ -38,7 +38,7 @@
 	thing)
        ((symbolp thing)
 	(symbol-name thing))
-       ((and (characterp thing) (string-char-p thing))
+       ((characterp thing)
 	(string thing))
        (t
 	(message
diff --git a/hemlock/spell-build.lisp b/hemlock/spell-build.lisp
index ab906757fdba46a6b9ddfbb1d64ed7dbb68c9919..afd2b8afa948a579d5cc2060d1db5af1079b0242 100644
--- a/hemlock/spell-build.lisp
+++ b/hemlock/spell-build.lisp
@@ -145,7 +145,7 @@
 	   (entry-count 0))
        (declare (fixnum descriptor-ptr string-ptr entry-count))
        (loop (multiple-value-bind (line eofp) (read-line s nil nil)
-	       (declare (simple-string line))
+	       (declare (type (or null simple-string) line))
 	       (unless line (return (values entry-count string-ptr)))
 	       (incf entry-count)
 	       (when (> entry-count max-entry-count-estimate)
@@ -237,6 +237,6 @@
 	  (write-byte (aref dictionary i) s))
 	(dotimes (i descriptors-size)
 	  (write-byte (aref descriptors i) s))))
-    (with-open-file (s f :direction :output :element-type 'string-char
+    (with-open-file (s f :direction :output :element-type 'base-character
 		         :if-exists :append)
       (write-string string-table s :end string-table-length))))