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