[nvda] revision 250 - keymap files, long-life appModules, other bug fixes.

Hi all,

Revision 250 makes some very big changes to appModules and keymaps.

Now it is possible for people to design their own keymaps for appModules (such as for the default appModule). keymaps can be chosen by their keyboard layout, depending on what keyboardLayout in the keyboard section of nvda.ini is set to.

A default appModule for the desktop keyboard layout (appModules/_default_desktop.kbd) has been included in this revision. Use this as the basis for other default keymap layouts. The keyboardLayout setting in nvda.ini can in theory be any string, but for example, you could set it to 'laptop' and make a _default_laptop.kbd and it would use that.

It also handles the case where the chosen keyboard layout doesn't exist, and then loads the desktop one instead, if that exists.

Default is handled differently from all other appModules in that it is one instance that always stays around, so if you move to an application that doesn't have its own appModule, default won't have to be reloaded.

Also, when an appModule is first loaded, it copies default's keymap in to itself before it loads its own keymap.

I am personally not going to try creating a laptop keyboard layout, I don't really use them, but anyone is welcome to make one and send it to me and I can include it in NVDA. However, of course I can't have like 6 laptop layouts, so in the end we will have to choose one.

There is now a 'key list.txt' in the trunk directory, this lists all possible keys you can use for NVDA keymaps.

The extended insert key (insert key not on the number pad) is now functioning as an NVDA insert key, so this hopefully should also make it easier for users of laptops. I did try this once before and it caused some issues, but lets see how it goes this time.

App modules now stay around for the life of the application, rather than being created and deleted each time an application is moved back and forth from the foreground. Also virtualBuffers now get created and killed off properly when their window gets focus for the first time, or gets hidden.

There are one or two other changes, the changelog is as follows:

*Redesigned the handling of appModules so that they now stay around for the life of the application rather than for just when the application is active. Of course though key commands etc will only work when the application is active. *Added a 'keyboardLayout' setting to the keyboard section of nvda.ini. This is a string, and by default it is 'desktop'. In theory this can be anything, but another value that will be most likely recognised by NVDA would be 'laptop'. *AppModules now load their keymaps from a keymap file in the appModules directory. the keymap file is named as <app module name>_<keyboard layout>.kbd. (example: MS Excel's desktop keyboard layout would be excel_desktop.kbd. default (_default) would be _default_desktop.kbd). *Moved all the key bindings out of the default appModule in to its _default_desktop.kbd file. *Enabled the extendedInsert key to be used as the insert key in NVDA scripts. Previously only the numpad insert could be used. There were some bugs when this was done once previously, but so far things seem to be ok. This will now mean hopefully that Laptop users won't have too much trouble in making laptop keymaps since they can now still use the insert key. *Disabled sayAll functionality in dos console windows because it doesn't really make sence, plus it seems to just crash NVDA anyway. *Fixed up the logic that manages the life of a virtualBuffer. Now they should be definitly created and killed off properly when a window gets focus or gets hidden. *Added a 'keyName' function to keyboardHandler.py. This is used when you need to print a key name, for instance in debug.log. keyName is the reverse of key. *Cleaned up what is sent to debug.log. debug.log now gives a much clearer picture of what the user was doing with NVDA, though please double-check your log file before you ever send it to someone for debugging purposes, it does contain the names and types of all objects you interacted with. *NVDAObject_richEdit objects no longer have the entire text of the document as their value.

Mick

To post messages to the list send email to
nvda@xxxxxxxxxxxxx
To unsubscribe from the list send a blank message to:
nvda-request@xxxxxxxxxxxxx
with 'unsubscribe' in the Subject field.
Thank you for your continued support of Nonvisual Desktop Access, an open 
source free screen reader for Microsoft Windows:
http://www.kulgan.net/nvda/

Other related posts: