[BRLTTY] BRLTTY in GRUB

Mesar Hameed mesar.hameed at gmail.com
Fri Mar 16 11:00:08 EDT 2012


Sorry for top posting,

I think a confusion of terms is occuring.

grub screen, actual screen
screen driver, grub renderer.

@Vladimir, Dave is suggesting that you do write a renderer, as long as it is not behaving as a normal screen.
I.e. brltty is able to request information from the renderer, i.e. previous line, previous word, cursor pos etc.
Please keep up the good work and many braille users are looking forward for access in grub.

@dave please point Vladimir to the specific core functions that he should be interacting with.
this should help him not get confused with internals, 
so that we can use brltty's modular structure to enable braille support for any supported braille device.


Thanks.
Mesar
On Fri 16/03/12,15:16, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> First of all I want to apologise for my tone. I was under severe
> lack of sleep these days and will be happy if we could forget my
> out-of-place remarks and get on with real stuff.
> On 15.03.2012 23:40, Dave Mielke wrote:
> >[quoted lines by Vladimir 'φ-coder/phcoder' Serbinenko on 2012/03/15 at 22:27 +0100]
> >
> >>Samuel already said it: I just want to have something that works at
> >>least minimally to begin with. To make whole brltty at least compile
> >>would mean twice as much work.
> >As I've already said, I'd be glad to do the work of making brltty compile if
> >you'd be so kind as to tell me how to set up a build environment for Grub. I
> >think it's the better approach, and I'm not just compliaining - I'm offering to
> >help.
> bzr branch http://bzr.savannah.gnu.org/r/grub/branches/brltty/
> Rest of instructions are in INSTALL. I can upload a tarball if you prefer.
> Another thing I forgot to mention is that GRUB's exit (), fatal ()
> and so on calls can be used only in critical situation like an
> important memory corruption. I have #if 0-ed out few function which
> use exit ().
> >
> >>If you think that it's better to have nothing at all rather than something to
> >>start with then I'm at wrong address.
> >That's your judgement call. If you aren't interested in my thoughts, opinions,
> >and suggestions, then perhaps you are.
> I'm, lack of sleep :(.
> >>>>  common = braille/brltty_wrap/log.c;
> >>>>GRUB has no file writing facilities
> >>>AGain, replacing a whole file just for that isn't good.
> >>Again, putting a dummy there to get something working at all for the
> >>first stage is more important than to get tiny bits right and the
> >>whole not compiling at all.
> >You've been speaking as though this is your permanent goal. If my understanding
> >has been incorrect on this point then I stand corrected.
> The prefered way to handle logs in GRUB is grub_dprintf. I'll see
> how I can abstract it for brltty.
> >>>>  common = braille/brltty_wrap/serial.c;
> >>>>Platform-specific.
> >>>Parts of it, yes, but not all of it. Again, replacinb the whole file isn't
> >>>right.
> >>Most of this file should be split the same way as usb.c is.
> >I've already said that I know serial.c to be one of the three biggest offenders
> >in this area. One of the problems with splitting it up, though, is the fact
> >that platform-dependent type definitions are used internally so that things
> >like attribute caching can be all done in common, portable code.
> GRUB already caches attributes but double caching makes no harm.
> >>>No threads. The whole point of async is to let a single thread handle many
> >>>events.
> >>GRUB works completely differently from POSIX-compliant OSes. GRUB is
> >>at most similar to msdos in some aspects (like being single-thread)
> >>but offers full features in others (like Unicode).
> >As I said, async doesn't rely on threads. It allows the single main program
> >thread to handle multiple tasks.
> I'm currently not able to make it work at all. I got this impression
> from reading the code. But if async code does a rescan then we'll
> need a cache layer to avoid real rescans.
> >>>>  common = braille/brltty_wrap/ktb.c;
> >>>>Currently dummy for keys.
> >>>Totally bad idea.
> >>It makes the whole compile.
> >It also renders the controls on the braille devices entirely useless.
> For the first prototype I want to make keys useless. Just so I can
> check only half of the code.
> >>>>In GRUB renderer is separated from info. It's easier to have good
> >>>>Braille display by making braille another renderer rather than rendering
> >>>>in standard screen and then having a reader.
> >>>Why not render the screen content into a string array,
> >>It's possible to make a virtual 80x24 terminal. However special
> >>structure of GRUB and its small code size has already allowed us to
> >>find better solutions to problems than what is applicable to a big OS
> >>where you can't change all components to improve input to your
> >>command. In this case I thought that having the complete model would
> >>allow better braille rendering. The solution of rendering into 80x24
> >>and then attempting to parse seems to me as a kludge.
> >A braille user needs to be able to see the whole screen, just like you like to
> >see the whole screen. Do you really think it's somehow better to have two
> >completely different renders, both of which, independently, know what should be
> >on the whole screen? Isn't it better for the screen to be rendered logically
> >once, and then to have various presenation layers to turn that logical
> >representation into physical ones?
> GRUB can work in one of three modes:
> - menu mode. In this case a model is the list of entries and
> currently chosen entry
> - editor mode. In this case a model is the list of lines and current
> position.
> - cmdline editing mode. In this case the model is current line and position.
> - text mode. In this case a model is the incoming flow of strings
> (not characters as characters aren't enough for bidi), some of them
> highlighted. Some of them contain line breaks.
> In any of the modes then one instance of renderer is attached per
> output terminal which takes its characteristics into account. In
> case of menu we have 2 different renderers: textual and graphical.
> Terminal code also keeping previous text output while in text or
> cmdline mode.
> We already use this to represent the same info on different
> terminals: E.g.
> http://robertmh.wordpress.com/2009/12/25/multiple-grub-terminals/
> So the may not even be a textual representation like what you refer
> to (e.g. in case of gfxmenu). So we probably need some wrap renderer
> between GRUB and BRLTTY. One possibility is to render to 80x24 using
> textual renderer but skipping some decorations like borders.
> >
> >It's not good, by the way, to go down a path which would allow the braille
> >screen to have different content than what's shown on the monitor. If a braille
> >user and a sighted person are working together, it's critical that they're both
> >seeing exactly the same data in exactly the same layout. The importance of this
> >cannot be understated.
> >
> >Given the above, can you now see the sense in first rendering the screen into a
> >logical representation? It doesn't need to be something hard-coded like 80x24.
> As referenced before the may be no textual screen at all. Or the may
> be several. We can choose any size which results in best brltty
> results, even infty x infty, or give brltty raw model but it would
> break the structure to use a parameter from another terminal which
> may or may not exist.
> >>>Also, given the lack of core support, no user with a braille display smaller
> >>>than 40 cells will be able to use it.
> >>40 is a parameter
> >I still maintain that Grub shouldn't need to care about the properties of the
> >braille device. Rendering good braille isn't as simple as putting text on the
> >display.
> It may make sense to tweak text renderer to a given brltty device.
> 
> 
> -- 
> Regards
> Vladimir 'φ-coder/phcoder' Serbinenko
> 
> _______________________________________________
> This message was sent via the BRLTTY mailing list.
> To post a message, send an e-mail to: BRLTTY at mielke.cc
> For general information, go to: http://mielke.cc/mailman/listinfo/brltty


More information about the BRLTTY mailing list