This Week in NVDA

During the arduous task of exasperatedly scouring logs, searching tickets and racking my brains in order to construct my previous, infrequent progress reports, I have promised myself several times that I will endeavour to write more frequent (perhaps even weekly!) progress updates to make the process somewhat less painful. Unfortunately, as is far too common for me in such matters, I've never ended up doing this. Still, there's no time like the present, and if I start now, I might even be able to keep it up.

This last week has been quite mind boggling for both Mick and I, although quite exciting for me in particular. I finally started the eagerly awaited task of implementing support for braille displays in NVDA late last week and have spent the majority of this week continuing this work. Frustratingly, much of the week was spent designing and implementing the core framework which I couldn't test in any realistic, practical situation. However, on Friday, I was finally able to see some of this work come to practical fruition. While certainly not ready for general usage, NVDA can now track the focus on a braille display, displaying the focus object and appropriate ancestors as it changes. You can scroll the display back and forward, and cursor routing keys can be used to activate objects. Where the focus is an editable text field, NVDA can display the text and track the caret, indicating (and optionally blinking) the caret in the appropriate position on the display. In these fields, cursor routing keys can be used to route the caret to the associated position. There is a long way still to go, but it's certainly very exciting to finally be well on the way to supporting braille displays in NVDA. NVDA uses the  liblouis braille translation library, which allows for both contracted and uncontracted braille and includes tables for many braille codes. A driver is included for  BRLTTY, which supports the vast majority of braille displays.

Meanwhile, Mick has been delving into the depths of the virtual buffer library once again. While investigating the task of implementing support for text formatting, he decided that the core design of the library needed to be restructured and simplified somewhat. Although the current code serves very well, it is not very object oriented and the way it handles text is somewhat convoluted at best, making changes and enhancements difficult. During this week, he has almost completed this rather daunting redesign and has also been taking the opportunity to document the code as he goes. These changes should not be noticeable to users once the work is done, but they will certainly make future work on the library much simpler. I too worked briefly on the virtual buffer library to write some utility code and fix an unexpected bug I discovered.

On another note, NVDA 0.6p2 is fast approaching 5000 downloads! :) It's at 4935 as I write this.

Comments

No comments.