syslinux-3.08-2 sources from FC4
[bootcd.git] / syslinux / menu / README
1           Text User Interface using comboot
2           ---------------------------------
3
4 This is a menu system written by Murali Krishnan Ganapathy and ported
5 from OpenWatcom to gcc by HPA. It is currently being maintained by the
6 original author.
7
8 To configure the menus, you need to set up a menu configuration file
9 to have the menu items you desire, then build the menu system using
10 make.  You can use either simple.c or complex.c as a starting point
11 for your own menu configuration file; then add the name with a .c32
12 extension to the MENUS list in the Makefile.
13
14 The resulting code is a 32-bit COMBOOT code, and hence can be executed
15 only under syslinux. You can use tools like bochs to help debug your
16 code. 
17
18 Menu Features currently supported are:
19 * menu items, 
20 * submenus, 
21 * disabled items,
22 * checkboxes,
23 * invisible items (useful for dynamic menus), and
24 * Radio menus,
25 * Context sensitive help
26 * Authenticated users 
27 * Editing commands associated with items
28
29 The keys used are:
30
31 * Arrow Keys, PgUp, PgDn, Home, End Keys
32 * Space to switch state of a checkbox
33 * Enter to choose the item
34 * Escape to exit from it
35 * Shortcut keys
36
37 Features
38 --------
39 This is a general purpose menu system implemented using only BIOS calls, 
40 so it can be executed in a COMBOOT environment as well. It is highly
41 customizable. Some features include:
42
43 * Status line
44     Display any help information associated with each menu item.
45 * Window
46     Specify a window within which the menu system draws all its menu's.
47     It is upto the user to ensure that the menu's fit within the window.
48 * Positioning submenus
49     By default, each submenu is positioned just below the corresponding 
50     entry of the parent menu. However, the user may position each menu
51     at a specific location of his choice. This is useful, when the menu's
52     have lots of options.
53 * Registering handlers for each menu item 
54     This is mainly used for checkboxes and radiomenu's, where a selection may
55     result in disabling other menu items/checkboxes 
56 * Global Screen Handler
57     This is called every time the menu is redrawn. The user can display
58     additional information (usually outside the window where the menu is 
59     being displayed). See the complex.c for an example, where the global
60     handler is used to display the choices made so far.
61 * Global Keys Handler
62     This is called every time the user presses a key which the menu
63     system does not understand. This can be used to display context
64     sensitive help. See complex.c for how to use this hook to implement
65     a context sensitive help system as well as "On the fly" editing 
66     of commands associated with menus. 
67 * Shortcut Keys
68     With each item one can register a shortcut key from [A-Za-z0-9]. 
69     Pressing a key within that range, will take you to the next item
70     with that shortcut key (so you can have multiple items with the
71     same shortcut key). The default shortcut key for each item, is 
72     the lower case version of the first char of the item in the range 
73     [A-Za-z0-9].
74 * Escape Keys
75     Each item entry can have a substring enclosed in < and >. This part
76     is highlighted. Can be used to highlight the shortcut keys. By default
77     if an item has a <, then the first char inside < and > in the range
78     [A-Za-z0-9] is converted to lower case and set as the shortcut key.
79 * Ontimeout handler
80     The user can register an ontimeout handler, which gets called if 
81     no key has been pressed for a user specific amount of time (default 5 min).
82     For an example see the complex.c file.
83
84 Credits
85 -------
86 * The Watcom developers and Peter Anvin for figuring out an OS 
87   independent startup code.
88 * Thomas for porting the crypt function and removing all C library 
89   dependencies
90 * Peter Anvin for porting the code to GCC 
91
92 - Murali (gmurali+guicd@cs.uchicago.edu)
93