Hi Jason, I have about 2 minutes, this morning, so please forgive my brevity. Ultrasonix has 2 methods of treating different content differently in this regard. First, Ultrasonix comes with a set of templates for each widget set. Each widget has a template which defines attributes that Ultrasonix finds interesting - is this widget input-sensitive? can this widget be edited? what string should be spoken or displayed in Braille when the user lands on it? what sound should be played? etc. Second, Ultrasonix has a set of screen-reading primitives which can be accessed through TCL scripts. A particular TCL function, for example, is called whenever the down-arrow key is pressed. Users can modify this function to get the behavior desired. Later, Brian. Jason said: As a further note, I understand that UltraSonix is based on a core of screen reader functions which can be controlled by programmable scripts. The latter could presumably be customized for particular applications, to monitor the interface and produce specified feedback when prescribed changes occur. Since the X Window System supports both text-based and graphical applications, there would be no need for an additional screen reader in order to gain the functionality which has been described. I am not familiar with the details of how UltraSonix works in this regard. I once had the privilege of being given a demonstration of IBM Screen Reader for OS/2, in which the screen monitoring and reading functions, the binding of key sequences to speech commands, etc., were accomplished by means of a profile stack, with application-specific profiles at the top and more generic key bindings etc., below. In any event, my general reservations regarding the value of this general approach for complex interfaces and data, still apply. -- --------------- Brian L. Sellden - brian@xxxxxxxxx, http://www.henge.com/~brian Just another hack at Gateway User of Emacspeak 8.0, making Unix talk. What on earth would a man do with himself if something did not stand in his way? -- H.G. Wells