Re: Orca Laptop keybindings.



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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]