[BRLTTY] Some more about SBL (Re: attribute tracking, was re: Recommended live distribution)

Klaus Knopper brltty at knopper.net
Wed Sep 19 20:17:15 EDT 2012


Hello S.M.,

On Wed, Sep 19, 2012 at 06:18:47PM -0400, S. Massy wrote:
> On Wed, Sep 19, 2012 at 02:04:28PM -0400, Nicolas Pitre wrote:
> > On Wed, 19 Sep 2012, Dave Mielke wrote:
> > 
> > > [quoted lines by Klaus Knopper on 2012/09/19 at 17:38 +0200]
> > > 
> > > >What about attribute cursor routing, automatic profile detection and
> > > >selection etc.?
> > > 
> > > i'm all for adding useful features. Perhaps you could describe how each of 
> > > these works so that we can try to get it right the first time.
> > > 
> > > For example, I understand what attribute-based routing is, but what I don't 
> > > know is the best way to define it.
> > > 
> > > I think I know what you mean by profiles - changing brltty's settings based on 
> > > the current foreground probram - but I'm not sure how detecting which program 
> > > is currently in the foreground is best done, especially given screen-managed 
> > > windows, ssh sessions, etc.
> > 
> > Let's answer this last question first.  The best approach would probably 
> > involve screen content signature. So, given a set of application profile 
> > specifications, the first item in each profile would describe some 
> > screen content that has to match for the profile to be activated.  That 
> > match would need to be reconfirmed whenever the screen content changes, 
> > and if the match fails then the search for another profile would happen.
>
> I wonder what would be some reasonable use-cases for such "profiles".
> Can't come up with a whole lot off the top of my head. This is the kind
> of feature more useful for GUIs than consoles usually.

Answering your and Daves question simultaneously: The "profile" feature
in SBL works like this:

1. SBL detects the program running on the current text console by
reading its associated processes command name. For example, "elinks".

2. SBL automatically sets volume, pitch, speech, language, braille
modes, charmode or linemode and attribute cursor tracking and other
behaviour specific to this program, in this example from a config file
/etc/sbl/profile/elinks.

3. If you switch consoles, or start a different program, SBL will adjust
its settings to this program again with no manual interaction needed.

4. It's also possible to switch between 4 preconfigured profiles
manually by hotkeys, and switch off automatic profile detection whenever
desired.

The automatic handling of diffrent programs in the screenreader is very
practical especially for beginners who don't know the commandline as
well: By adding a profile for dialog, elinks, mutt, lynx, bash and other
programs you frequently use, each program can be assigned the optimal
screenreader settings rather than having to adjust the screenreader
manually. For example, elinks reads the highlighted hyperlinks by default and
thus allows you to quickly jump through a websites navigation, while mutt
reads the highlighted mails title, while in bash, the screenreader just
follows the text cursor and reads the entire line or char-by-char.

Answering your second mail:
SBL consists of a braille driver (brld), a keyboard handler (kbdsniffd),
and the screen reader (sbl), all running as separate processes that
communicate via unix sockets or TCP. The text console screen reader part
of SBL currently works best with a text screen size of 80x25,
which is what I set automatically in the ADRIANE frame buffer setup (we need
the frame buffer mode in order to be able to start video with mplayer
and other graphical display programs as well, for conveniennce and
sighted assistance, without needing to start X first). The 80x25 screen
size also blends with 40 or 80 char braille devices nicely, so,
I did not see much advantage in using higher screen sizes. Because of that,
the question of detecting screen sizes automatically, did not arise for
me yet. The braille part of SBL (brld) on the other hand, is also reused
for orca, which is what brltty probably does as well when
switching between text and X mode.

SBL has (almost) no own autodetection of braille devices, I use a script
for this in Knoppix/Adriane, like for most parts of the hardware
detection. So, in Knoppix, USB braille devices should get autodetected
(which is not an SBL feature), and bluetooth devices have to be set up once
with a preferences dialog (which is operating with speech-only until
braille gets active). In some non-autodetectable cases where the
protocol does not reveal any device information, you can use the same
dialog to set up braille with no sighted help using speech and keyboard
navigation. One of the design goals of ADRIANE was that it should
function with or without braille, which around 2005, just was not
possible with brltty.

Because SBL worked very well with autodetection in the ADRIANE setup, I
removed the brltty-specific boot options because I felt they were no
longer needed, and it was not easy to type them without having a talking
bootloader anyways.

Regards
-Klaus


More information about the BRLTTY mailing list