Index: /trunk/ccl/hemlock/src/cocoa-hemlock.lisp
===================================================================
--- /trunk/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 739)
+++ /trunk/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 740)
@@ -19,6 +19,11 @@
 
 (defun dequeue-key-event (q)
+  (unless (listen-editor-input q)
+    (let* ((document (buffer-document (current-buffer))))
+      (when document
+        (document-set-point-position document))))
   (ccl::wait-on-semaphore (frame-event-queue-signal q))
   (ccl::locked-dll-header-dequeue q))
+
 
 (defun unget-key-event (event q)
@@ -27,4 +32,9 @@
   (ccl::signal-semaphore (frame-event-queue-signal q)))
 
+(defun timed-wait-for-key-event (q seconds)
+  (let* ((signal (frame-event-queue-signal q)))
+    (when (ccl:timed-wait-on-semaphore signal seconds)
+      (ccl:signal-semaphore signal)
+      t)))
 
 
@@ -64,5 +74,5 @@
   (declare (ignore ignore-pending-aborts))
   (do* ((e (dequeue-key-event q) (dequeue-key-event q)))
-       ((typep e 'hemlock-ext:key-event)
+       ((typep e 'hemlock-ext:key-event)        
         (setq *last-key-event-typed* e))
     (if (typep e 'buffer-operation)
