## Menu Basics

You have already had some exposure to using menus in DLG, but it's time to codify that information somewhat. As noted, DLG menus are text-based, which makes sense for a BBS. Hidden from view are a number of features that make them even more powerful.

### Hot Keys

Hot Keys makes your menus react to users' keystrokes without the user hitting return. You may have noticed as you set your system up that most menus responded to your keystrokes immediately. This feature, while seemingly minor, is hard to give up once you get used to it.

Hot keys can be disabled by the user. When they do this, they must hit return to get DLG to respond to a selection. The advantage is that they can stack commands before hitting return (more on that in a moment).

Hot keys do not work for most numeric entry, however, as it's difficult to predict how many digits are going to be typed in.

### Command Stacking

Command Stacking is a method of sticking several sequential commands together before feeding them to DLG's command processor. When DLG is executing a command stack, it does not pause to display menus, but continues on through to the next keystroke. This gives the power user the ability to navigate the BBS in a phenomenally short time.

An example can be seen if you go to the File menu. Suppose you were browsing files when you received notification that you had received a private message. You could backtrack by hitting M then M again to get to the message menu, or you could enter the command stack MM and get there immediately.

The astute reader may have noted that the command stacking can not work if hot keys are turned on. This would be completely true if not for a bit of cleverness embedded in the hotkey command processor.

To stack commands while using hotkeys, simply start your command with a semicolon, ";". The command processor sees the semicolon and immediately goes into stacking mode. WARNING Once you have entered stacking mode, you cannot get out until you hit RETURN.

The semicolon has one other special function. When embedded in a command stack, it simulates the RETURN key. Thus, to exit the file area browser and enter the message area browser in area 200, you could use the command stack:

         ;MMJ200;

to jump into that message area (the "J" command is for "Jump to Area" in this case).

### Smart Menus

We've referred to Smart Menus before in without going into detail. Smart Menus are context sensitive menus that provide the user with only the options that make sense. You will most often see this take place when a user has insufficient access for a certain action -- for example, not having upload access to a file area will eliminate the Upload command from the file menu.

Another example of Smart Menus at work is when an action simply isn't relevant. For example, if a user has not read any messages, that user can't very well forward a message to someone else. Thus, the Forward command would be missing. Once the user had read a message, the Forward command would be available.

### Help Levels

Each user has assigned a help level that DLG uses to determine how to display a menu to the user. There are three help levels:

Novice
  The user is shown all menus in full, except for the Message and File browser menus, which are always shown in Intermediate mode.
Intermediate
  The user is shown a list of valid keystrokes and the command prompt only.
Expert
  The user is only shown the command prompt.

The user can always get the full Novice level menu by selecting the ? command at the command prompt.