Index: main/cdk.lisp
===================================================================
--- main/cdk.lisp	(revision main,8)
+++ main/cdk.lisp	(revision main,10)
@@ -132,4 +132,9 @@
     (move-and-add-char window y (+ x i) (aref s i))))
 
+(defcfun ("wmove" c-wmove) :int
+  (window :pointer)
+  (y :int)
+  (x :int))
+
 (defcfun ("wrefresh" c-refresh-window) :int
   (window :pointer))
Index: main/flat-menu.lisp
===================================================================
--- main/flat-menu.lisp	(revision main,9)
+++ main/flat-menu.lisp	(revision main,10)
@@ -1,5 +1,6 @@
 (defpackage #:flat-menu
   (:use #:cl #:cffi)
-  (:export))
+  (:export #:*shortcut-style* #:*highlight-style* #:menu #:selected
+           #:make-menu))
 
 (in-package #:flat-menu)
@@ -11,15 +12,26 @@
    (shortcut-pos :initarg :shortcut-pos)))
 
+(defun break-text (text shortcut-pos)
+  (if shortcut-pos
+      (values (subseq text 0 shortcut-pos)
+              (string (aref text shortcut-pos))
+              (subseq text (1+ shortcut-pos)))
+      (values "" "" text)))
+
+(defparameter *shortcut-style* (expt 2 17))
+(defparameter *highlight-style* (expt 2 #|21|# 18))
+
 (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))))
+    (multiple-value-bind (s1 s2 s3) (break-text text shortcut-pos)
+      (when highlight
+        (cdk::c-wattron window *highlight-style*))
+      (cdk::move-and-add-string window row column s1)
+      (cdk::c-wattron window *shortcut-style*)
+      (cdk::move-and-add-string window row (incf column (length s1)) s2)
+      (cdk::c-wattroff window *shortcut-style*)
+      (cdk::move-and-add-string window row (incf column (length s2)) s3)
+      (when highlight
+        (cdk::c-wattroff window *highlight-style*)))))
 
 
@@ -59,5 +71,22 @@
   (setf (selected menu) 0))
 
+
+
+(defun parse-entry (entry)
+  (destructuring-bind (text shortcut-pos) entry
+    (make-instance 'entry :text text :shortcut-pos shortcut-pos)))
+
+(defun make-menu (window row column entries)
+  (let ((entries (map 'vector #'parse-entry entries)))
+    (make-instance 'menu
+                   :window window
+                   :row row
+                   :column column
+                   :entries entries)))
+
+  
+
 (defun activate-menu (menu)
+  "Some simple behavior just for testing."
   (with-slots (window) menu
     (with-accessors ((selected selected)) menu
@@ -69,5 +98,5 @@
              ((= ch 259)
               (decf selected))
-             (t (break))))))))
+             (t (return))))))))
 
 (defun test ()
@@ -77,13 +106,6 @@
     (cdk::c-nonl)
     (cdk::c-keypad screen t)
-    (cdk::c-init-color)
     (cdk::c-erase-window screen)
-    (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)
-        (format t "Here~%")
-        (read-line)))
-    (cdk::c-refresh-window screen)
-    (read-line)
+    (let ((menu (make-menu screen 5 10 '(("Hello, world!" 7) ("Goodbye, galaxy!" 9)))))
+      (activate-menu menu))
     (cdk::c-end-curses)))
