Go to previous article
Go to next article
Return to 1999 Conference Table of Contents
Klaus Miesenberger and Bernhard Stöger
University of Linz (Austria)
Department Computer Science for Blind Persons
The Oberon System, a special developer's environment for the Oberon programming language, is described. A program developed at the University of Linz making the Oberon System accessible for a blind computer user is discussed.
The Oberon programming language was developed by Wirth  mainly to design an extremely modular programming language for teaching purposes. At our university, the language is used to teach programming to computer science students at a beginner level. One of the various implementations of this language is the so-called Oberon System  developed by Wirth also. Since our working group wants to make studying materials accessible to blind students, we tried to find an accessibility solution for the Oberon System. Our attempts to use general accessibility solutions, also known as screen readers (see Section 3), failed, because the Obeorn System uses special controls hardly recognizable by a screen reader. To make the system accessible, we decided to develop a special accessibility solution.
This system was originally developed as a slim-line operating system written in Oberon that runs on a variety of computer platforms. The GUI used should look the same across all the platforms. It is a special GUI that significantly differs in several aspects from widely spread flavors of the GUI as used with Microsoft Windows and with the Apple Macintosh operating system. Here is a very brief account of the main characteristics of this special GUI:
The Oberon System organizes its objects in so-called viewers. A viewer can be compared to a child or document window in an MDI, but the handling is different in some respects. One of the most significant differences is that the insertion pointer, also known as the caret, can be present only in one viewer at a time. Text elements and graphical objects such as popup elements, fold elements, menus etc. can be placed anywhere within a viewer. To set the caret onto such an element, the left mouse button is used. To evoke an element as a command, the middle mouse button has to be pressed over the object. For selection purposes (drag & drop), the right mouse button is used. If a mouse has only two buttons, the control key can be used as a substitute for the middle mouse button.
In the Oberon System, there are no states. This means that input can be placed anywhere on the screen, and that there are no routines where special keyboard input is expected to read variables from the user. Rather, a variable is read by first typing it anywhere on the screen, then selecting it, then evoking a command to read the variable - the command simply accepts the selected object on the screen as input.
The software is designed to present the basic functions of the Oberon System to the user of a serially connected Braille display. It was designed and developed by Pöcksteiner  in a diploma thesis supervised by the Institute for Practical Computer Science (Prof. Mössenböck) and the Department Computer Science for Blind Persons. Presently, three brands of displays, the Tieman CombiBraille, the Alva ABT/Delphi series and the Handy Tech Modularserie, are supported. Other displays will follow soon.
Oberon2Braille was developed such that it does not change any of the standard components of the Oberon System. Rather, it adds some modules to it, namely:
Oberon2Braille adds a special viewer to the system where the information presented on the Braille display is visualized. This is very helpful for debugging purposes and for teaching environments where a sighted user teaches a blind one or vice versa.
Each of the main functions is evoked by a special key combination on the Braille display. The following discussion of the main functions gives insight into the functionality of the interface .
Since blind people normally are not well advised to use a physical mouse, it is very important to represent the mouse functionality in an alternative, yet ergonomically acceptable way. This is not only important for the Oberon System, but for every GUI made accessible to the blind. To position the mouse pointer onto an object, the so-called cursor routing keys above the Braille modules are used: There is one key above every letter presented on the display, and this key can be used to route the mouse pointer exactly over the character. Now to perform the mouse click, the blind user needs a means to select the mouse key that is to be clicked. If a cursor routing key is pressed without prefixing it with a special key, then left mouse click is assumed, such that the caret will be set to the position indicated by the routing key. If the function "Command" is evoked before pressing the routing key, the middle mouse button is assumed, such that the text portion covered by the mouse pointer is interpreted as a command to the system. Finally, if the function "Select" is evoked, then a subsequent cursor routing key press is interpreted as a right mouse click, such that the text portion between the caret position and the clicked spot is selected.
Oberon2Braille distinguishes between several modes of operation, also referred to as views. In each view, a fixed set of main functions present a different aspect of the interface. Switching from view to view can be easily done by simple key combinations, and there are a couple of situations in which a particular view is evoked automatically.
The Edit View: When activated, you can edit the contents of the current viewer with standard editing functionality. For example, you can use the arrow keys to move the caret within the viewer, such that the Braille display always shows the line containing the caret, the caret itself marking with a special tactile pattern. The edit view is evoked automatically whenever the caret is set in a viewer.
The Look View: When activated, you can use the scroll keys of the Braille display to freely move around in the viewer line by line. It is one of the most convenient and almost unique features of the Oberon2Braille interface that one need not scroll down the screen by the Page Down key to see a new screen when the old one is finished: Rather, the line by line scroll function automatically presents the next line, scrolling it along the bottom of the screen, with no need to change the current screen. When a cursor routing key is pressed over a character in look view, then either the caret is set to that character, or its surrounding is interpreted as a command, or selection is evoked, depending on the mouse control function evoked prior to the routing key press. Look View is automatically activated when a scroll key is pressed from within Edit View: now you can move around the active viewer independent from the caret.
The Menu View: When evoked, the elements of the menu pertaining to the active viewer are displayed in a row. If there are more elements than can be placed on one Braille line, the scroll left and scroll right functions can be used to move within the list. Pressing a cursor routing key after invoking the Command function will activate the corresponding menu item. Typically, this will automatically switch to the Popup View described below.
The Popup View: Is evoked automatically when a popup element is clicked, as is the case from within the menu view (see above). The various choices offered by a popup element are presented in a row. If they do not fit on one Braille line, then the list can be scrolled with the scroll left and right functions, respectively. To activate one particular choice in a popup element, it is enough to press a cursor routing key above one character in the choice - it is not necessary to activate Command mode first.
With these mechanisms to navigate in menus and popup elements, tasks like compiling, searching, storing and closing documents etc. Can be performed.
Although not all graphical elements are currently supported within Oberon2Braille, some important ones can be identified and navigated: They are represented by special Braille characters which do not have a meaning in literal Braille. When clicked with a cursor routing key in Command mode, they perform their proper function. Important examples of supported graphical elements are the so-called fold elements: A fold element serves to conceal part of a program from the user's view. Clicking onto the element will expand the concealed area, making a more detailed inspection or editing process possible. After expanding, the fold element changes its shape, which can be felt in Braille by getting a different special character. Clicking this character will collapse the folded area again.
With the function pair "Mark" / "Go to", one can mark a place in a viewer and later on jump back to it. The function "Close Viewer" will close the active viewer when it was not changed after the last store operation. The function is equivalent to the Edit.Close procedure. If the file was changed after the last store, the System.Close procedure has to be evoked to close it.
We want to express our thankfulness towards Prof. Mössenböck for the support in this work. Thanks also to Mr. Pöcksteiner for his outstanding work which offered a solid basis for the development and application of the system.
Although the use of the system has not been evaluated scientifically the success of the users shows that Oberon2Braille could be recommended for teaching purposes.
 Reiser M. and Wirth, N. (1994). Programming in Oberon: Steps beyond Pascal and Modula. New York: ACM Press; Wokingham: Addison-Wessley
 Reiser M. (1991). The Oberon System, User Guide and Programmer´s Manual. New York: ACM Press; Wokingham: Addison-Wessley
 Pöcksteiner, Ch. (1997). Entwicklung einer Programmierumgebung für blinde Benutzer, University of Linz, 1997
Go to previous article
Go to next article
Return to 1999 Conference Table of Contents
Return to Table of Proceedings