On Thu, Mar 30, 2006 at 12:31:14AM EST, Willie Walker wrote:
For laptop use, I was thinking of adding another/an alternative modifier key, due to the position of insert on many laptop keyboards not being in a useful position. I would then assign keys U I O for line navigation, J K L for word, and N M < for character. I would then employ a control modifier to perform other commands that are performed with insert + 1, 3, 7, 9 etc on the number pad. In a few Windows products like JAWS, as well as Speakup, the capslock key is used as such a modifier. The only problem with this is the fact that capslock gets turned on and off as you use it to perform other commands, so like JAWS and speakup, it would be nice to be able to keep it turned off when being used as a modifier, and double-tap it to turn on or off like JAWS, or use shift+ Capslock like speakup.Gotcha. The Capslock key is definitely a struggle because it locks/ unlocks when you press it. It was our first choice, but the locking behavior is the main reason why we chose another key.
I understand, but I can't really think of any other key that is usable, hense the need for custom bindings as you state below.
This discussion, however, leads me to believe that we have some new requirements for Orca: 1) The key(s) to set/unset the Orca modifier needs to be customizable. The main reason for this is to provide a more convenient modifier for different keyboard layouts. 2) One should be able to override the global Orca keybindings as well as the keybindings per script. The main reason for this is to provide different layouts for desktop and laptop keyboards, if necessary. Another reason is to allow users to set up their own layouts if necessary.
Agreed on both points. This is the same as what JAWS offers users for global and script keybindings, giving plenty of flexability to users.
This isn't easily done with the current Orca code, but I think it would be a relatively straightforward thing to do if we don't over- engineer it ;-). My initial thoughts would be: o Move the hardcoded "Insert" references in orca.py to settings.py, adding a "orcaModifierKeys"/ORCA_MODIFIER_KEYS list that specifies a list of key strings to be used as the Orca modifier. o Move the keybindings setup in orca.py:init() to settings.py - perhaps a method called setupGlobalKeybindings. o Move the keybindings setup in default.py:__init__ to a method called default.py:setupKeybindings. One could then override/extend this method in custom scripts per user. o Since laptop and desktop keyboards are so common, one might consider a new setting "laptopMode"/LAPTOP_MODE or something like that. This could be used in default.py:setupKeybindings method to determine which keys to use.
I was thinking something like this would need to be done.
The limitations of this approach include: o Not being able to specify a combination of keys to be the ORCA_MODIFIER. o Dealing with locking modifiers, such as the Capslock key.
This could be a problem for laptop mode keybindings, but yes, understandable.
Luke, is this something you'd be willing to further refine and implement? I'd be happy to evaluate and incorporate a patch.
I am no python expert, and I am just starting to get my head around the orca code. Probably if I take it one step at a time, and ensure nothing breaks in the meantime. :) It will take a while, but I am willing to give it a shot. I'd probably just make all changes localy, and merge any new CVS updates before making a patch. I'm going to send out an email to a few linux accessibility lists in the meantime to get discussion going on what people would like to see in a default laptop keymap, which should give me time to learn and move the necessary bits around. -- Luke Yelavich GPG key: 0xD06320CE (http://www.themuso.com/themuso-gpg-key.txt) Email & MSN: themuso themuso com ICQ: 18444344
Attachment:
signature.asc
Description: Digital signature