@c $Id: audio-desktop.texi,v 23.505 2005/11/25 16:30:53 raman Exp $
@node Audio Desktop
@chapter The Emacspeak Audio Desktop.


This chapter describes the Emacspeak audio desktop and gives tips and
tricks for making use of many of Emacs' powerful features.

The desktop is the work area where you organize the tools of
your trade and the information objects relevant to your
current activities.  In the conventional world of visual
GUI-based computing, these tools and information objects
manifest themselves as a collection of icons organized in a
two-dimensional work-area --this organization is designed to
place frequently used objects within easy reach.

Notice that organizing one's work area in terms of visual
icons arranged in a two-dimensional area where such an
organization is optimized for the available "conversational
gestures" of pointing and clicking is an artifact of visual
interaction.

In the spirit of a truly speech-enabled application,
Emacspeak does not simply provide you spoken access to a
particular presentation of your work environment that was
initially designed with the "sign language" of visual
interaction in mind. Instead, Emacspeak enables you to work
with documents and other information objects in a manner
that is optimized to aural, eyes-free interaction.  A
necessary consequence of this setup is that users accustomed
to the purely visual manifestation of today's electronic
desktop do not immediately perceive the Emacspeak
environment as an electronic desktop.  This section of the
manual hopes to introduce you to a work-style that encourages a
different perspective on how one interacts with the computer
in performing day-to-day computing tasks.

The end result in my case has been a marked increase in
personal productivity.

@menu
* Desktop Objects:: Desktop Objects
* Object Oriented Desktop:: Object Oriented Desktop
* Context-Sensitive Interaction:: Context-Sensitive Interaction
@end menu


@node Desktop Objects
@section Objects Making Up The Emacspeak Desktop

A "buffer" is the basic building block of the Emacs and
hence the Emacspeak desktop.  Any information presented by
Emacs is placed in a "buffer".  For example, when perusing
this manual within Emacs, the "file" containing the documentation is
presented in a "buffer".  All information objects such as
WWW pages, email messages, output from user interaction with
command-line shells etc., are presented by Emacs in
individual "buffers".


Buffers provide a base level of user interaction;
Emacs derives its power by allowing applications to
specialize buffers to enable specific types of
user-interaction that is optimized for 
a specific class of information.

@node Object Oriented Desktop
@section An Object-Oriented Desktop

The basic "buffer object" 
can be specialized by Emacs applications to provide optimal
interaction.
This kind of specialization makes the Emacs environment an
object-oriented environment; thus, the basic conversational
gesture of 
"move to the next statement" can be assigned behavior that
is appropriate to the content that the user is currently
navigating.
As an example of such specialization, Emacs provides
"specialized  modes" for working with English text, 
programming languages, markup source e.g. HTML or LaTeX
documents and so on.

@node Context-Sensitive Interaction
@section Emacspeak Specializes Aural Interaction

The content-specific user interaction described above is a
very powerful feature of Emacs, and this is where Emacspeak
derives its power.  Traditionally, the ability to create
buffers specialized for working with specific content-types
has been used by the Emacs community to develop versatile
programming environments, messaging applications such as
mail and news readers, and authoring environments.  The
clean design present in all of these Emacs extensions in
terms of separating application functionality from the
user-interface, combined with the availability of the entire
source code making up these packages under the open-source
model has laid the ground-work for developing Emacspeak as
a versatile aural counterpart to the product of years of
software engineering that has been invested by the Emacs
community.  In short, Emacspeak would not exist in its
present shape or form without this prior effort.

@subsection Audio Formatted Output 

Emacspeak takes advantage of the content-specific knowledge
available within specialized buffers to produce "audio
formatted" output designed to optimize user interaction.
A basic consequence of the above is "voice locking" in
specialized modes; a more interesting consequence is the
implementation of Aural Cascading Style Sheets (ACSS) in
conjunction with the Emacs W3 browser.

@subsection Structured Navigation:

Emacspeak  also exploits content-specific knowledge to provide
structured navigation of different types of 
electronic content. In many cases, such structured
navigation is an extension of what Emacs provides by
default; in other cases, 
Emacspeak implements the necessary extensions to provide the
level of structural navigation needed to work efficiently in
an eyes-free environment.


Notable among such structured navigation is Emacs' powerful outline
feature. Notice for example, that the Emacspeak FAQ (reached via command
@code{emacspeak-view-emacspeak-faq} bound to @kbd{C-e F}) takes
advantage of Emacs' outline mode to allow you to easily move through the
various sections.  An example of content-sensitive navigation is
provided by the imenu package which dynamically creates a "table of
contents" based on the content that is being displayed in a given
buffer.

@subsection  Navigating The Desktop

In addition to navigating individual information objects,
the Emacspeak environment provides speech-enabled navigation
of the various buffers that are currently open on the
Emacspeak desktop via Emacs' built-in list-buffers feature.
Emacs' dired  --directory editor-- for browsing the file
system, along with the new speedbar package 
that combines features from dired and imenu round off the
suite of navigational tools.

@subsection  Everything Is Searchable:

Emacs derives one final advantage from using buffers as the basic
building block for the entire desktop.  Every Emacs buffer is searchable
via a uniform and powerful search interface.  Emacs' incremental search
works efficiently and consistently to enable you locate "objects" of
interest either within a given document or to locate a given object from
among the various objects that are currently open on the Emacspeak
desktop.  This is @b{very powerful} --where a GUI user is typically
limited to quickly locating an object from a relatively small collection
--the size of the collection being a direct function of available
display real-estate-- the Emacspeak user can typically work with a far
larger collection of objects.  This is well-suited to the eyes-free
environment, where display real-estate has no meaning; so bringing up a
list of currently open buffers and performing an incremental search to
locate a specific buffer is just as efficient independent of whether you
have a few dozen or a few hundred buffers open.

To illustrate the above, my typical working Emacs session
lasts between two and three weeks-- over that time I
typically accumulate several hundred open buffers holding a
large variety of content ranging from program source code to
email messages and WWW pages.

Ubiquitous search in the eyes-free environment is critical-- as a
comparison, when using a conventional, purely visual WWW browser, users
have no means of easily "searching" for say the "submit" button on a WWW
page.  This inability is a minor annoyance in visual interaction, and
the typical mouse-enabled user @b{never} uses the find dialog to find a
submit button-- it is simply more efficient to point at the submit
button given the eye's ability to quickly scan the two-dimensional
display.  This luxury is absent in an eyes-free environment; as a
consequence, blind users confronted by the combination of a visual
interface and screen-reader are typically limited to either tabbing
through all the controls on a WWW page, or using the sub-optimal find
dialog.
