Terminal and keyboard independence refers to the ability of an application to communicate with a user's output device (terminal) and input device (keyboard) without regard to the manufacturer of the device. The control sequences required to manipulate various aspects of the output device (e.g. move cursor, add bold, underscore etc.) varies among manufacturers. Similarly, the sequence of characters generated by a keyboard when certain non-alpha keys are depressed (for example. the function keys, cursor up key etc.) also varies. For MultiValue applications, help exists from the language to provide independence of this variance among devices. These mechanisms, through the use of classes, are also available to other Caché applications.