Index: main/flat-menu.lisp
===================================================================
--- main/flat-menu.lisp	(revision main,8)
+++ main/flat-menu.lisp	(revision main,9)
@@ -8,9 +8,18 @@
 
 (defclass entry ()
-  ((text :initarg :text)))
+  ((text :initarg :text)
+   (shortcut-pos :initarg :shortcut-pos)))
 
-(defun draw-entry (entry window row column)
-  (with-slots (text) entry
-    (cdk::move-and-add-string window row column text)))
+(defun %draw-entry (entry window row column highlight)
+  (with-slots (text shortcut-pos) entry
+    (when highlight
+      (cdk::c-wattron window 262144))
+    (cdk::move-and-add-string window row column text)
+    (when shortcut-pos
+      (cdk::c-wattron window 131072)
+      (cdk::move-and-add-string window row (+ column shortcut-pos) (string (aref text shortcut-pos)))
+      (cdk::c-wattroff window 131072))
+    (when highlight
+      (cdk::c-wattroff window 262144))))
 
 
@@ -23,11 +32,11 @@
    (selected :type (integer 0) :initform 0 :accessor selected)))
 
-(defun redraw-selected (menu with-highlight)
-  (with-slots (window row column entries selected) menu
-    (when with-highlight
-      (cdk::c-wattron window 262144))
-    (draw-entry (aref entries selected) window (+ row selected) column)
-    (when with-highlight
-      (cdk::c-wattroff window 262144))))
+(defun draw-entry (menu i &optional highlight)
+  (with-slots (window row column entries) menu
+    (%draw-entry (aref entries i) window (+ row i) column highlight)))
+
+(defun redraw-selected (menu highlight)
+  (with-slots (selected) menu
+    (draw-entry menu selected highlight)))
 
 (defmethod (setf selected) :before (i (menu menu))
@@ -45,4 +54,7 @@
 (defmethod initialize-instance :after ((menu menu) &rest initargs)
   (declare (ignore initargs))
+  (with-slots (entries) menu
+    (dotimes (i (length entries))
+      (draw-entry menu i)))
   (setf (selected menu) 0))
 
@@ -67,6 +79,6 @@
     (cdk::c-init-color)
     (cdk::c-erase-window screen)
-    (let ((entry1 (make-instance 'entry :text "Hello, world!"))
-          (entry2 (make-instance 'entry :text "Goodbye, galaxy!")))
+    (let ((entry1 (make-instance 'entry :text "Hello, world!" :shortcut-pos 0))
+          (entry2 (make-instance 'entry :text "Goodbye, galaxy!" :shortcut-pos 0)))
       (let ((menu (make-instance 'menu :window screen :row 5 :column 10 :entries (vector entry1 entry2))))
         (activate-menu menu)
