Index: main/form.lisp
===================================================================
--- main/form.lisp	(revision main,47)
+++ main/form.lisp	(revision main,63)
@@ -226,10 +226,10 @@
 
 
-(defmethod activate ((form form) &optional (callback 'nothing))
+(defmethod activate ((form form) &key (key-callback 'nothing) &allow-other-keys)
   (with-slots (peers) form
     (flet ((callback (key)
              (if (member key '(#\Return #\Newline #\Tab :key-btab))
                  key
-                 (funcall callback key))))
+                 (funcall key-callback key))))
       (let ((focus 0)
             (n (length peers)))
@@ -237,5 +237,5 @@
            (ensure-widget-visible form focus)
            (refresh form)
-           (let ((key (activate (aref peers focus) #'callback)))
+           (let ((key (activate (aref peers focus) :key-callback #'callback)))
              (case key
                ((#\Return #\Newline #\Tab)
Index: main/widget/generic.lisp
===================================================================
--- main/widget/generic.lisp	(revision main,46)
+++ main/widget/generic.lisp	(revision main,63)
@@ -43,3 +43,3 @@
 (defgeneric draw (widget))
 
-(defgeneric activate (widget &optional callback))
+(defgeneric activate (widget &key key-callback &allow-other-keys))
Index: main/widget/label.lisp
===================================================================
--- main/widget/label.lisp	(revision main,46)
+++ main/widget/label.lisp	(revision main,63)
@@ -29,5 +29,4 @@
 (defmethod destroy ((label label)))
 
-(defmethod activate ((label label) &optional callback)
-  (declare (ignore callback))
-  #\Tab)
+(defmethod activate ((label label) &key &allow-other-keys)
+   #\Tab)
Index: main/widget/numberbox.lisp
===================================================================
--- main/widget/numberbox.lisp	(revision main,46)
+++ main/widget/numberbox.lisp	(revision main,63)
@@ -43,11 +43,11 @@
 
 
-(defmethod activate :around ((numberbox numberbox)
-                             &optional (callback 'nothing))
+(defmethod activate ((numberbox numberbox) &key (key-callback 'nothing)
+                     &allow-other-keys)
   (with-slots (data) numberbox
     (with-slots (edit) data
       (setf edit t)
       (setf (insertion-point numberbox) :end)
-      (let ((r (call-next-method numberbox callback)))
+      (let ((r (call-next-method numberbox key-callback)))
         (setf edit nil)
         (setf (insertion-point numberbox) 0)
Index: main/widget/textbox.lisp
===================================================================
--- main/widget/textbox.lisp	(revision main,46)
+++ main/widget/textbox.lisp	(revision main,63)
@@ -89,5 +89,6 @@
 
 
-(defmethod activate ((textbox textbox) &optional (callback 'nothing))
+(defmethod activate ((textbox textbox) &key (key-callback 'nothing)
+                     &allow-other-keys)
   (with-slots (data window active) textbox
     (setf active t)
@@ -119,5 +120,5 @@
                    (if (or (keywordp key)
                            (member key '(#\Return #\Newline #\Tab #\Esc)))
-                       (let ((r (funcall callback key)))
+                       (let ((r (funcall key-callback key)))
                          (when r
                            (setf (insertion-point textbox) 0)
