| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs — The extensible, self-documenting editor, derives its functionality from its powerful extension mechanism. This extension mechanism is used to implement many user-level applications such as mail readers, web browsers, software development environments and so on. This chapter gives directions on how to locate the right Emacs package for addressing specific tasks. The chapter is organized into logical sections that each pertain to a specific class of tasks; in individual subsections within a section give a brief overview of particular Emacs packages that have been speech-enabled.
For a categorized list of speech-enabled applications on theEmacspeak desktop, see http://emacspeak.sf.net/applications.html. In Emacs 24 and later, you can use Emacs’ builtin package manager to install and update packages.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Emacspeak environment provides a rich collection of structured document authoring tools. These are well-suited for working in an eyes-free environment — you clearly do not want to use a What You See Is What You Get (WYSIWYG) authoring tool if you cannot see what you’re getting. Structure-based authoring tools allow you to focus on the act of content creation, leaving the minutiae of visual layout to the computer.
| 10.1.1 Creating Well-formatted Documents | Authoring Content. | |
| 10.1.2 Searching, Replacing, And Spell Checking | Fixing errors. |
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Before authoring a document, decide its primary audience
if the document contains relatively simple content e.g., no mathematical
equations etc.
and is primarily targeted at the WWW, you are probably better off
using HTML.
You can create well-structured HTML documents with the help of package
nxml-mode
for editing XML documents. Another option is to use org-mode to create a Wiki-like text document that can be easily published to multiple output formats including HTML.
Packages org-mode and nxml-mode are speech-enabled by Emacspeak to
provide auditory icons, structured navigation and outlines, as well as
voice locking for audio formatted feedback as you work.
If the document being authored is more complex, you are usually better
off creating it in LaTeX.
Note that LaTeX documents can be converted to HTML either via
package tex4ht — available on the WWW.
The TeX family of typesetting languages is suitable for producing well-formatted documents in an eyes-free environment. Unlike WYSIWYG environments, the author of a TeX or LaTeX document works with the content of the document, leaving it to the formatting system (TeX) to format the document for good visual presentation.
The auctex package is an Emacs extension that facilitates authoring and
maintaining structured documents in TeX and LaTeX. Package
bibtex facilitates maintenance and use of bibtex
bibliography databases. The Texinfo package allows creation of software
documentation that is suitable for both printing as well as online
viewing as hypertext. Emacspeak speech-enables packages auctex,
bibtex and texinfo to provide convenient spoken feedback
as you create documents. For details on using these
packages, see their accompanying online info documentation.
As the document preparation system of choice, Emacspeak supports a fluent speech-enabled interface to editing and formatting LaTeX documents. This interface is provided by speech-enabling auctex mode.
Mode auctex provides efficient keyboard shortcuts for inserting and maintaining LaTeX markup as a document is being authored. All of these editing commands provide succinct auditory feedback when used with Emacspeak. The syntax coloring provided by this mode is extended to provide voice locking — consequently, Emacspeak uses different voices to speak the embedded markup to set it apart from the content.
Mode auctex can be used to create empty document templates and to insert document content at the appropriate places in the template. The mode also enables structured navigation of the document as it is being edited. Emacspeak speech-enables these template creation and structured navigation commands to produce auditory icons and succinct spoken feedback. For example, while editing, the user can quickly browse through the sections of the document and have each section title spoken. Document elements such as paragraphs and bulleted lists can be manipulated as logical units. These features are especially relevant in an eyes-free environment where the user needs to select logical parts of the document without having to point at portions of a visual display.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Incremental search, a process by which the system prompts the user for a search string and moves the selection to the next available match while allowing the user to add more characters to the search string, is the search technique of choice among most Emacs users. As the system successively finds each match, it provides the user the option of continuing the search. Incremental search is a more complex instance of traditional search interaction because in addition to either stopping or continuing the search, the user can modify the current search in a number of ways including specifying a longer (or shorter) search string.
All of the user commands available during incremental search are documented in the online Emacs info manual. These are speech-enabled by Emacspeak to provide spoken prompts as the dialog begins; auditory icons indicate a search hit or search miss as the search progresses. Along with auditory icons search-hit and search-miss the user also hears the current line spoken, and in the case of a search hit, the matching text is aurally highlighted by using the standard audio formatting technique of changing voice characteristic. This feedback proves extremely effective when the search pattern appears several times on a single line; the user is unambiguously cued to the current match.
Search and replace actions are an extension to the basic conversational gestures of a search dialog. In addition to specifying a search string, the user also specifies a replacement string. On the Emacspeak desktop, this functionality is provided by command query-replace. The speech-enabled version of this interaction prompts the user for the search and replacement texts. The auditory feedback during the interactive search and replacement process parallels that described in the case of incremental search. Audio formatting to indicate the occurrence that is about to be replaced proves an effective means of avoiding erroneous modifications to the text being edited. As an example, consider using command query-replace to locate and replace the second occurrence of foo with bar in the text
‘Do not change this fool, but change this food.’
When the search matches the first occurrence of foo in word fool, the aural highlighting helps the user in answering “no” in response to question “should this occurrence be replaced”. In addition to allowing the user to supply a simple “yes or no” answer for each match, command query-replace also allows the user to specify a number of other valid answers as described in the online Emacs documentation.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A more complex instance of conversational gesture “search and replace” is exhibited by standard spell checking dialogues. Spell checking differs from the search and replace dialog described above in that the search and replacement text is guessed by the system based on an available dictionary. Words that are not found in the dictionary are flagged as potential spelling errors, and the system offers an interactive search and replace dialog for each of these possible errors. During this dialog, the system successively selects each occurrence of the possibly erroneous word and offers a set of possible replacements. Unlike in the case of simple search and replace, more than one possible replacement string is offered, since a potential spelling error can be corrected by more than one word appearing in the dictionary.
In the visual interface, such spell checking dialogues are realized by displaying the available choices in a pop-up window and allowing the user to pick a correction Once a correction is selected, the user is offered the choice of interactively replacing the erroneous word with the correction.
The spell checking interface on the Emacspeak desktop is speech-enabled
to provide fluent auditory feedback. The visual interface parallels
that described above and is provided by package ispell which is
part of the standard Emacs distribution. Emacspeak provides a spoken
prompt that is composed of the line
containing the possibly erroneous word (which is aurally highlighted to
set it apart from the rest of the text on that line) and the available
corrections. Each correction is prefixed with a number that the user
can use to select it. Once a correction is selected, the interaction
continues with the query and replace interaction described earlier. The
speech interface to the spell checker is as fluent as the visual
interface. Notice that Emacspeak users do not need to concern
themselves with the details of the visual display such as “the
corrections are displayed in a window at the top of the screen”.
In addition to the standard spell checker described above, newer
versions of Emacs include an “on-the-fly” spell checker that flags
erroneous words as they are typed.
Emacspeak speech-enables package flyspell so that such erroneous
words are aurally highlighted.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Editing documents based on the inherent structure present in the electronic encoding can be very efficient when using spoken interaction. We described mode auctex — a specialized interface to authoring LaTeX documents as a special instance of such structured editing in see Document Authoring.
The Emacspeak desktop allows the user to efficiently author and maintain an electronic document based either on the structure present in the markup (as in the case of mode auctex) or on special outlining constructs that allow the user to impose a desired logical structure on the document. This section describes the effect of speech-enabling such editing tools and points out the advantages in using these in a speech oriented interface.
Template-based authoring — a technique that allows the user to create a document by inserting contents into appropriate positions in a predefined template — goes hand in hand with such structured editing. Finally, structured editing can vastly simplify the creation and maintenance of structured data, for example, the data present in a UNIX password file. Such data files are in fact nothing more than a collection of database records, where each record (or line) consists of a set of fields delimited by a special character. Maintaining such files without exploiting the underlying structure often tends to be error prone. We describe editing modes that can exploit such record structure to provide a fluent editing interface. Finally, we outline a speech-enabled interface to a spreadsheet application as a complex instance of such structured data editing.
| 10.2.1 Outline Editing | Editing and navigating outlines. | |
| 10.2.2 Template-based Authoring | Creating and Filling Templates. | |
| 10.2.3 Maintaining Structured Data | Structured Data. |
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All of the various outline editing interfaces on the Emacs desktop allow the user to hide or show the contents at the different levels of a possibly nested tree structure. Components of this tree structure can be manipulated as a unit, e.g., entire subtrees can be deleted or copied. Outline editing thus provides an efficient means of obtaining quick overviews of a document.
The visual interface displays such hidden content as a series of ellipses following the visible outline heading. Emacspeak produces auditory icon ellipses when speaking such outline headings.
The basic outline mode allows the user to specify the syntax
and level of outline header lines as a regular expression. This
simple technique can be used to advantage in the structured navigation
of large electronic texts such as those available on the Internet from
online book projects such as project Gutenberg and the Internet
Wiretap. For example, when this feature is activated while reading
the electronic text of a Shakespearean play, the different acts can be
recognized as separate nodes in the logical structure of the document.
The user can then hide the document body with a single keystroke,
navigate the outline headings to find a particular act, and have that
portion rendered either visually or aurally. Hiding an outline level
produces auditory icon close-object; exposing a hidden level
produces auditory icon open-object.
For details on using mode outline, see the relevant section of
the online Emacs info manual.
The basic outline facility described above is applicable to all content being edited or browsed on the Emacspeak desktop. In addition, Emacspeak has other specialized outline editing modes such as folding mode that provide extended outlining facilities. In mode folding, the user can create (possibly nested) folds — logical containers of content that are delimited by a special fold mark. The fold mark is typically a text string that is chosen based on the type of content that is being manipulated. Thus, when folding a C~program source file, fold marks are created from C~comments. The user can open or close any or all folds in a document, and these actions are accompanied by auditory icons open-object and close-object. By entering a fold, all editing actions are restricted to the contents of that fold; this proves a simple yet convenient way of constraining editing actions such as search and replace to specific portions of large documents. Folds can be manipulated as a unit and can be deleted, copied or moved.
Mode folding proves especially effective in maintaining large software modules. The technique can be used to advantage by creating folds for different sections in a module and by further placing each function appearing in a particular % section in a fold of its own. Complex functions can themselves be folded into sections where each section reflects a different stage in the algorithm implemented by that function. Thus, the technique of folding can be used as an effective aid in literate programming. I typically write software modules by first creating an outline structure using folds that reflect the various components of that module. Next, I populate each fold with the function signatures and documentation for the functions in each section. When I am satisfied with the overall architecture of the module, I fill in the function skeletons with actual program code. This technique is used extensively in maintaining the Emacspeak code base.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacspeak supports two powerful template-based authoring subsystems that enable the user to quickly create and fill in templates. Dmacro (short for “dynamic macros”) allows the user to define and invoke template-based macros that are specialized for creating different types of content. For example, when programming in C, the user can invoke dynamic macros that insert skeletons of standard C constructs with a few keystrokes. This form of editing has numerous advantages in creating consistently structured code when developing large software modules. Emacspeak speech-enables mode dmacro to provide succinct spoken feedback as templates are created and filled. The user invokes dmacro via command insert dmacro, which is typically bound to a single key. This results in a dialog where the user is prompted to pick one of the dynamic macros available in the current context. If the users choice can be uniquely completed, that completion is spoken; otherwise, the list of possible completions based on the available partial input is spoken, accompanied by auditory icon help.
An alternative template-editing facility is provided by mode tempo This mode is designed to be used in creating template-based editing tools for specific markup languages; a good example is mode html-helper, a mode for creating and updating HTML documents for publishing on the WWW (see see Document Authoring).
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Consider the following entry from file /etc/passwd
on my laptop.
‘aster:KoUxwQ2:501:100:Aster Labrador:/home/aster:/bin/bash’
File /etc/passwd is a simple instance of a text file
that stores structured data records as a series of fields delimited by
a special character. Each item in the file acquires
meaning from the position in which it occurs for
example, the fifth field contains the user name, Aster Labrador.
More generally, structured data where each field in a record has
meaning is found throughout the desktop in applications ranging
from entries in a rolodex to rows in a spreadsheet.
Typically, users do not directly edit the stored representation of the data. Instead, application front-ends provide a more human-centric (and hopefully less error prone) user interface for modifying and maintaining the data. Thus, spreadsheet applications present the data as a two dimensional table that is automatically updated to reflect changes in the underlying data. The two dimensional table is perhaps the most commonly found visual front-end to structured data tables with row and column headers prove a succinct way of implicitly displaying the meaning along with the value of the fields making up each data record.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section describes packages that allow you to browse structured information — these are distinct from the tools described in Structured Editing And Templates, in that they are typically used for working with content that is read-only e.g., online documentation.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Note that there is newer material at http://emacspeak.blogspot.com/2014/05/emacspeak-eww-updates-for-complete.html and in See emacspeak-eww. For Emacs 24.4 and later, note that the built-in Web browser EWW is also the browser of choice for emacspeak. W3 still has its place, especially when working out with fill-out forms.
— T. V. Raman, October 2014.
This document, “The State of Web Browsing in Emacspeak” describes the primary web browsers in use under emacspeak and ways they might be used more efficiently.
Version 1.0 — February, 2007.
Copyright © 2007 Robert D. Crawford rdc1x@comcast.net
| 10.4.1 Intro | Why this document and what it is about | |
| 10.4.2 emacs-w3 | Browsing the web with emacs/w3 | |
| 10.4.3 Add-ons | Add-ons to make life better | |
| 10.4.4 Conclusion | Wrapping it up |
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Web browsing in emacspeak can be made as simple or as complicated as you wish to make it. On the one hand, all that need be done is to open a web browser and fetch a particular url. This works fine in many cases with exceptions being things like html tables. On the other hand, if you spend a little time learning a particular browser and its functionality, web browsing can be made more efficient and the web more navigable.
This document is intended to be an introduction to the 2 primary browsers that run under emacs: emacs/w3 and EWW. I also intend to introduce a couple of add-on packages intended to make life easier and to address specific shortcomings.
The primary reason for this documentation is the fact that a lot of the documentation of the various functions tells exactly what it does, but not why or in what circumstance one might use it. Hopefully I can remedy that here.
While this document is geared toward emacspeak users, it might be helpful for other users as well. I have tried to note where functions are specific to emacspeak.
This document assumes emacs is installed. If reading the section on a particular browser and trying out the associated functions, it, of course, assumes that the browser is installed and working. For features specific to emacspeak, a working install of emacspeak is necessary. It is far beyond the scope of this document to help with the installation of these programs.
For help with installing any of the above bits of software, the following mailing lists and / or newsgroups are available:
gnu.emacs.help
It is highly suggested that the mailing list archives, google, and the relevant documentation be consulted before posting messages to any mailing list. Nothing is more irritating than answering the same questions over and over. Those of you with kids know what I am talking about.
It is also assumed that the reader is comfortable with using emacs itself. Understanding the convention for communicating keystrokes to run commands, navigating documents, and the like are not covered.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
emacs/w3 is a web browser written completely in emacs lisp. It has some really nice features applicable to the emacspeak community such as the ability to navigate tables and support for the w3c’s aural cascading stylesheets.
As mentioned above, the ability to navigate tables is a super help. emacs/w3 also has support for cascading stylesheets. This allows incredible control of voices used for what would normally be visual attributes of the text such as bold, italics, preformatted text and the like.
Another advantage of emacs/w3 is that it is written completely in emacs lisp. With some effort, emacs/w3 is very customizable and quite extendable.
Rendering can be slow. Sometimes it can be painfully, excruciatingly
slow. That might be a slight exaggeration, but slow it is. This is
because it is written in lisp... something I mentioned just above as a
strength. It is a trade-off, but one that some see as worth it.
There are, however, some things that can be done to speed up the browsing
process. See
See emacspeak-w3-xsl-transform,
for more information.
Another disadvantage is that emacs/w3 chokes on some pages. Sometimes it gives error messages and doesn’t display anything. Sometimes it does this to some people and doesn’t do it to others as we saw on the emacspeak mailing list a short time ago. Sometimes it gives error messages and renders the page anyway.
One other major annoyance of emacs/w3 is that sometimes it simply stops doing anything while rendering a page. There is a way I have found to get around this. I hit C-g. I usually wait five to ten seconds and then simply quit, using C-g. Not always, but usually, the page has already completed downloading and is being rendered and it therefore is not a problem.
emacs/w3 also has no bookmark functionality. This can be remedied in several ways. One simple way, mentioned below, is to use the emacs package bmk-mgr. Another way is to use org mode with remember which is the method used by Dr. Raman, the author of emacspeak. See See bmk-mgr, later in this manual, for more information.
History back and next in the browser also seem to be broken but this is not generally a problem for me as I never look back.
Many functions for efficient navigation of the internet are native to emacs/w3. Some of the most useful functions are listed below
Unlike emacs-w3m, the information presented by describe-mode is very
complete, but a little terse. All the function names are listed and
asking for help on particular functions works well. That being said,
use this list to augment, not replace, the built-in help that is
available in emacs.
C-f will open a new buffer containing the cell point is in. In most instances, this works very well. Imagine you are looking at a page that is divided into 4 distinct areas: a cell at the top of the page that contains a banner and some navigation, and a “body” area that is divided into three sections consisting of more navigation, an article, and advertisement. If point is in the main article cell, using C-f will open another buffer that contains only the text of that cell, the article you are interested in.
One caveat is that this does not always work as advertised. Sometimes the leftmost character of each line is missing. At least it makes for interesting reading. Usually when I have this problem I simply exit that buffer and linearize the tables in the original page.
The m key executes a very useful command. It will complete a link on the page. Imagine that you are reading through a document and you hear a link that you need to visit. You could tab through all the links until you hear the one you want or you could hit the m key and enter the link text at the prompt. Completion is available and it is not case-sensitive. Efficient, no?
The period in a cell will speak the contents of that particular cell. This command is, in my opinion, most useful when navigating tables with cells that have only one paragraph or less. I tend to not read whole articles in this manner because, inevitably, someone will interrupt me and I will lose my place.
The equals key, while in a table cell will give you the cell information. It tells you the row and column position, the size of the table, and at what nesting level the table is.
The pipe key, is used to read the table column. As this command seems to read the rectangle the column is in, this command is most useful when used in a table where there is no column spanning, i.e. all rows and columns are uniform.
Here is a list of table navigation commands:
As you can see, table navigation in w3 can be easy and fun.
An incredible amount of work has been done by the emacspeak community to make emacs/w3 accessible to those with visual impairments. Here is an explanation of some of those functions.
The command C-t will toggle the visibility of table borders. This command might be useful where you want to hear all punctuation symbols on a page but the table characters get in the way.
The quote key will execute a command that allows you to skim the contents of the buffer. it will read the page, paragraph-by-paragraph, pausing between paragraphs to prompt you to move on by pressing SPACE. If you hit SPACE in the middle of a paragraph, it skips to the next paragraph.
Another skimming command is bound to the z key. This will allow you to zip through web pages by logical blocks such as div, paragraph, and table tags.
Using the imenu facilities is another way of skimming the document and getting to the information you desire. imenu works especially well for well-structured documents. The first thing that need be done is to copy the w3-imenu.el file from the contrib directory of the w3 directory to somewhere in your load path. I am using the cvs version of w3 and my w3 directory is under /home/rdc/sourceforge. The easiest thing to do is probably to do an M-x locate and search for w3-imenu.el to see where it is. After locating the file, move it into your load path. In my case I have it under /home/rdc/share/emacs/site-lisp/.
There are two ways to use the imenu facilities: automatically and manually. Since I do not use imenu on every site, I prefer to invoke it manually to save the time required to build the index.
Once things are in place, invoke imenu with the j key. This will ask you for an index position. Hitting TAB will give you a list of the possible index positions. Another way of navigating the document would now be to use the keys M-n and M-p to go to the next and previous index positions. Note that you have to build an index for a page before you can use these commands.
Cap A and cap R serve the same function. Cap A browses the Atom feed at point and cap R browses the rss feed at point. This is useful to sample the feed, so to speak, before going through the trouble of configuring your feed reader to fetch the feed. It might also be useful to grab the headlines from a page and present them in a more concise, readable format. If using the sort-tables xsl transform, there will be a link at the top of the page if there is an rss feed available. See See emacspeak atom and emacspeak rss, for more information.
Google provides many useful tools for web surfers. The following commands are useful to access much google goodness.
Cap C extracts the current page from the google cache. With a prefix argument it will extract the link under point. This is useful for those times when a particular site is down... maybe it is in the cache... maybe it is not. It can also be used for when particular pages are removed from a site like in the case of a government conspiracy. Are we at war with Eurasia or East Asia?
The slash key will search google for pages similar to the current page.
The command g will do a google search restricted to the site of the document.
The l command googles for who links to this page.
The command t runs the url under point through the google transcoder. This is useful for sites that are heavy on the use of tables and the xsl transforms are not helpful. It also works on some sites that use javascript to go to the next page in the story, such as Reuters. Using a prefix argument with this command will untranscode the url under point for pages that are currently transcoded.
Cap T will jump to the first occurrence of the title in the document. Multiple consecutive executions of this command will jump to further occurrences. This command is probably one of the most useful timesavers while web browsing.
M-s jumps to the “submit” button for the form you are editing.
M-r plays the media stream at point with the default media player.
The y command will rewrite the url of the url under point. This is useful for those sites you frequent. Often, sites that have printer friendly content have a specific way in which the url is written. For The first time you run this command in a particular buffer you are prompted for a pattern to use. The pattern is in the form of
‘("from string" "to string")’
The opening paren is supplied. Remember to quote the strings or you will get an error. From this point on, until you kill the buffer in which you wrote the rule, hitting y on a link will use this rewrite rule to visit the page. If you mistyped the rule, providing a numeric argument will allow you to rewrite the rewrite rule. I love alliteration.
Saving the best for last, e is the xsl map prefix. As I mentioned in the section on emacs-w3m, xsl transforms are some powerful magic that takes a web page and transforms it in some way. Linearizing tables is a good example, and the one I use most often.
The keystroke e a prompts for an xsl transform to apply to the current page. If you know the name of the particular transform you want you can use tab completion to select it. Otherwise, you can hit TAB to get a buffer that contains the list of choices.
If you know that you want a particular transform done automatically you can use the command e s to select a transform and then e o to turn xslt on (the same command will turn xslt off). Then, every page opened from that point on will have the transform applied.
There is the variable
emacspeak-w3-xsl-transform that can be set via the usual
methods. This variable specifies a transform to use before displaying
a web page. There is an advantage to turning on xsl transforms all
the time. If you use the identity.xsl, the
linearize-tables.xsl or the sort-tables.xsl it can
actually speed up rendering of the page. This is because the
transforms provide clean and balanced html to the renderer.
Additionally, using sort-tables.xsl or
linearize-tables.xsl will provide a little more boost as
rendering nested tables is particularly difficult for a web browser.
Sometimes it is just easier to read the printer friendly version of a story instead of having to linearize the tables and search for the content. Also, some sites, like the New York Times, I believe, make you navigate several pages to read the whole story, but if you select a “Print this story” link you can read the entire story on one page formatted without a lot of the cruft on the normal page. This is where the e Cap P command comes in. It will extract all the print streams from the current document.
Closely associated commands are e r and e Cap R which extract the media streams from the current page and from the link under point, respectively.
The command e y is another command that is useful for frequented sites. It does the same as the y command above in that it rewrites the url at point and follows it. In addition, it filters the output by a particular CSS class.
The command e e does more magic to the url at point. It processes the url using a specific function. For example, it can be used in retrieving radio content from the BBC. If you execute C-e u and type in BBC Channel On Demand or use tab completion to get the same, and then type in radio4 you will be presented with a page containing a plethora of links to other pages containing information about particular shows. On these pages there is, somewhere, a link that will play the program. If you hit enter on one of the links on the first page, you will be taken to one of these description pages. By using the e e command on a link you cut out this middle step and proceed directly to playing the program you are interested in.
If there is no executor defined for a current buffer, hitting TAB
after e e will give you a list of possibilities to choose from.
One nice feature of this function is that it can be used for any
function. If you cannot remember the keystroke that will play the url
under point in emacspeak-m-player, but you know what it is called, you
can hit e e and then enter the name of the function. Nice.
The e f command will run the current page through an XPath filter and return the results. For more information on XPath, see http://en.wikipedia.org/wiki/XPath. If you wanted to see only the links on a page, when prompted enter //a and you will be returned every link on the page. If you wanted to see only the contents of “p” tags, you would enter //p. This can be useful for many things, form elements included. Giving this command a prefix argument will reverse the filter, giving you everything but the content of the specified tag.
A related command can be invoked with the e p keystroke. This command does the same as the filter above but works on the url under point.
As I mentioned above, using C-g when it seems the browser is not responding will often display the page with no ill effects. Your mileage may vary. Taxes, tags and title are extra.
Also mentioned above is the use of sort-tables or identity as an xsl transform to speed up the rendering of pages. Every little bit helps.
Another useful tip is the use of the k key. This key will place the current url in the kill-ring for later yanking. If a page will not render correctly, using k will get the url and allow me to pass it to emacs-w3m. The counterpart to this command, cap K puts the url under point in the kill-ring.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Some of these are emacspeak specific, some are not. You can usually tell by the name.
I love this package. Since changing my primary browser to emacs/w3 I
have really been giving the url-template package a workout. The
url-template package contains templates that prompt you for
information to supply to various sites to retrieve information without
all the fuss of having to go to the site and navigate it. One really
nice thing about url-templates is the fact that they need not be web
pages. Media streams can also be made into url-templates.
The way to get to the templates is with the command C-e u. A TAB at the prompt will give you a list of the available templates. You should go now and have a look at the info manual section on See URL Templates, and read it. I’ll wait here.
By the way, the ones I find most useful are the “Google Hits”, “emacswiki search” “NPR On Demand” and “Weather forecast from Weather Underground”.
These are fairly simple rss and atom browsers for the emacspeak desktop. Using the Customize interface you add feeds in the form of titles and urls. Then you call the readers with C-e C-u for rss feeds and use M-x emacspeak-atom-browse for atom feeds. There is also emacspeak support for newsticker, an rss / atom reader that is a part of emacs 22, but I have never used it.
I personally use See gnus, for rss feeds but setting gnus up for only that purpose is like hunting rabbits with a bazooka.
emacspeak-websearch provides more search options than you can shake a
stick at. emacspeak-websearch provides search for dictionaries, news
sites, software sites, google tools, weather, currency converter and
much more. It can be accessed with the keystroke C-e ?. At the
prompt, you can enter another question mark to get a list of the
available search options. You will then be prompted for the necessary
information. One of the nice things about this package is that, when
using w3 it attempts to jump to and read the most relevant information
on the result page.
See emacspeak-websearch, for more information.
This is a newcomer to the emacspeak world. In the interest of full disclosure, I am the one that wrote the emacspeak module that makes this package accessible. It is a bookmarks manager that works with both emacs/w3 and emacs-w3m. As of the writing of this document there are still some issues, especially when using it on emacs version 22, but those are being worked on. I think this is a good solution to the problem of emacs/w3 not having bookmarks functionality and providing one central bookmark location for those who regularly use both browsers. See http://www.emacswiki.org/cgi-bin/wiki/EmacsBmkMgr, for more information.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
emacspeak makes the internet not only accessible to those with visual impairments, but it makes browsing and information retrieval quick and efficient. If a user will spend a little time up front to learn the tools available to access the web, the increase in efficiency and ability will more than make up for the time spent. The nice thing about these tools is that you can integrate them in your day-to-day as you have the time. While it is not necessary to use everything mentioned in the above document, if you add some of these tools to your repertoire you will not be sorry.
In the end, no one makes you use a hammer to drive nails but it sure beats using a banana.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Working with messaging applications involves both authoring and browsing content. Emacspeak provides a rich set of speech-enabled messaging tools. Further, all of the tools described in the previous sections integrate smoothly with the messaging applications described here; this means that you do not need to re-learn a new set of work habits when dealing with content in your messaging application.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Files containing program source code form a very specific class of structured documents. Unlike documents meant for human consumption that are often only loosely structured, program source (as a concession to the computer’s intolerance of lack of structure) are per force well-structured and adhere to a fairly stringent syntax.
The Emacs environment provides editing modes that are specific to creating and maintaining software written in most popular programming languages. Many of these editing modes are speech-enabled by Emacspeak. Speech-enabling these modes includes providing a rich set of navigational commands that allow you to move through the source efficiently. In addition, Emacspeak’s core voice-lock facilities are used to produce audio formatted output — this helps you spot errors quickly.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In addition to providing specialized editing modes for creating and maintaining program source, Emacs provides a rich set of software development tools that can be combined to create powerful Integrated Development Environments (IDE). These IDEs are speech-enabled by Emacspeak to provide a versatile and powerful environment for eyes-free software development.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs provides an integrated environment for performing all of ones day-to-day computing tasks ranging from electronic messaging to software development. The environment derives its power from the fact that this integration allows for content to be handled across different tasks in a seamless manner. In order to work effectively with large Emacs sessions with many documents and applications open at the same time, the Emacspeak desktop provides a powerful collection of desktop management tools designed to help the user easily locate objects that pertain to a given task.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section describes speech-enabled tools designed to aid in personal information management such as maintaining a daily calendar.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spreadsheet applications present a two dimensional view of structured data
where the field values are (possibly) mutually dependent. On the Emacspeak
desktop, a speech-enabled spreadsheet application can be used to manipulate
such data-driven documents
ranging from simple cheque books and expense
reports to complex investment portfolios. Where the traditional visual
interface to spreadsheets is typically independent of the semantics of the
data stored in the spreadsheet, the speech-enabled interface is derived from
the meaning of the various fields making up the data. When presenting such
information on a visual display, implicit visual
layout can be used to cue the user to the meaning of different data fields.
On the other hand, in the case of an actively scrolling auditory display, the
spoken output needs to explicitly convey both the value and interpretation of
the different data items. In addition, the interface needs to enable an
active dialog between user and application where the user is able to query
the system about the possible meaning of a particular item of data. Finally,
the aural interface needs to enable multiple views of the display.
In the visual interface, such multiple views are automatically
enabled by the two dimensional layout combined with the eye’s ability to move
rapidly around the layout structure. Thus, while viewing any particular row
of a portfolio, one can immediately see the current total value as well as
the net gain or loss.
The Emacs spread-sheet package dismal can be retrieved from
ftp://cs.nyu.edu/pub/local/fox/dismal.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Forms mode an Emacs mode designed to edit structured data
records like the line shown from file /etc/passwd presents a
user-friendly visual interface that displays the field name along with the field
value. The user can edit the field value and save the file, at which point
the data is written out using the underlying : delimited
representation. Mode forms provides a flexible interface to
associating meaning to the fields of such structured data files.
For details on it use, see the forms-mode section of the online Emacs
info documentation.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Module emacspeak-ocr implements an OCR front-end for the
Emacspeak desktop.
Page image is acquired using tools from package SANE (Scanner
Access Now Easy). The acquired image is run through the OCR engine if
one is available, and the results placed in a buffer that is suitable
for browsing the results. This buffer is placed in mode
emacspeak-ocr-mode a specialized mode for reading and scanning
documents.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacspeak OCR mode is a special major mode for document scanning and OCR.
Pre-requisites:
Make sure your scanner back-end works, and that you have the utilities to scan a document and acquire an image as a tiff file. Then set variable emacspeak-ocr-scan-image-program to point at this utility. By default, this is set to ‘scanimage’ which is the image scanning utility provided by SANE.
By default, this front-end attempts to compress the acquired
tiff image; make sure you have a utility like tiffcp.
Variable emacspeak-ocr-compress-image is set to ‘tiffcp’ by
default; if you use something else, you should customize
this variable.
Next, make sure you have an OCR engine installed and working. By
default this front-end assumes that OCR is available as /usr/bin/ocr.
Once you have ensured that acquiring an image and applying OCR to it work independently of Emacs, you can use this Emacspeak front-end to enable easy OCR access from within Emacspeak.
The Emacspeak OCR front-end is launched by command emacspeak-ocr bound to C-e C-o.
This command switches to a special buffer that has OCR commands bounds to single keystrokes — see the key-binding list at the end of this description. Use Emacs online help facility to look up help on these commands.
Mode emacspeak-ocr-mode provides the necessary functionality to
scan, OCR, read and save documents. By default, scanned
images and the resulting text are saved under directory
~/ocr; see variable emacspeak-ocr-working-directory.
Invoking command emacspeak-ocr-open-working-directory bound
to d will open this directory.
By default, the document being scanned is named ‘untitled’. You can name the document by using command emacspeak-ocr-name-document bound to n. The document name is used in constructing the name of the image and text files.
Here is a list of all emacspeak OCR commands along with their key-bindings and a brief description:
emacspeak-ocr-page Jumps to specified page in the OCR output.
emacspeak-ocr-set-compress-image-options
Interactively update image compression options. Prompts with current setting in the minibuffer. Setting persists for current Emacs session.
emacspeak-ocr-set-scan-image-options Interactively update scan image options. Prompts with current setting in the minibuffer. Setting persists for current Emacs session.
emacspeak-ocr-read-current-page Speaks current page.
emacspeak-ocr-save-current-page Saves current page as a text file.
emacspeak-ocr-page Prompts for a page number and moves to the specified page.
emacspeak-ocr-forward-page Move forward to the next page.
emacspeak-ocr-backward-page Move back to the previous page.
emacspeak-ocr-open-working-directory Open directory containing the results of OCR.
emacspeak-ocr-name-document Name current document.
emacspeak-ocr-recognize-image Launch OCR engine on a scanned image.
emacspeak-ocr-scan-image
Acquire an image using scanimage.
emacspeak-ocr-scan-and-recognize Scan and recognize a page.
emacspeak-ocr-write-document Write all pages of current document to a text file.
bury-buffer Bury the OCR buffer.
emacspeak-ocr-customize Customize Emacspeak OCR settings.
describe-mode Describe OCR mode.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |