Henrick:

We wrote a spec for feisty to add accessibility functionality to the login manager, GDM. https://wiki.ubuntu.com/Accessibility/Specs/AccessGDM

This does not look like it will happen as no work has been done in Ubuntu or upstream on making the themed greeter (which everyone uses by default) accessible. The folks at SUN have made the old-style one work with Orca on Solaris.

Some a11y functionality works with gdmgreeter.  You would probably find
that Orca and GOK work okay with gdmgreeter, but there are bugs to
be fixed.   gdmlogin works better and supports changing the theme
to HighContrast/LowContrast, etc.

For me at least, even that still just breaks on Ubuntu Feisty. Has anyone tried getting this to work in Ubuntu? The Orca changelog for 2.17.4 suggests adding

<Control>o 1 1000 10000 /bin/sh -c "GTK_MODULES=gail:atk-bridge ctrun -l child -i none orca -n
-d main-window"

to /etc/X11/gdm/modules/AccessKeyMouseEvents

A few things you should be aware of:

1) You should *not* need to set GTK_MODULES in the command line.  Should
   be okay to just call "orca -n -d main-window".  Unless this is some
   weird Orca issue.

2) You should not include the "ctrun -l child -i none" on Ubunutu.  This
   is Solaris specific stuff to make the AT programs work with SVC (more
   specifically to ensure GDM doesn't restart if the AT programs crash).

3) You may not need to use the /bin/sh -c "...".   Might be okay to have
   the line look like this:

   <Control>o  1 1000 10000 ocra -n -d main-window

   You will need to test to see if the /bin/sh -c "..." syntax is
   needed on your distro.

4) Some AT programs won't start unless the gdm user has a writable
   $HOME directory.  GOK definately has this problem.  See
   bugzilla.gnome.org bug #383514.

5) Make sure you've read section 9.1 of the GDM docs:

   http://www.gnome.org/projects/gdm/docs/2.16/accessibility.html

   Note laste paragraph of section 9.1 which has a few tips for figuring
   out what the problem may be.

   Especially note that when you hit the gesture, if you see a little
   hourglass then the gesture listener noticed the event and tried to
   start the AT program.  If you do not see an hourglass then GDM did
   not register the gesture.

6) Note that the AccessKeyMouseEvents file has these columns:

# <modifier>[<modifier>...]key #times duration timeout executable_path +args

  Note that column 3 is duration in ms so a value of 1000 means you
  need to hold the key-combo down for 1 second for it to register.
  Make sure you are holding the key down if duration is required.
  Set duration to 0 if you just want to hit the key and have the
  program launch immediately.

7) For debugging purposes, it can be useful to create a gesture that
   launches an xterm.  Then start up the xterm from GDM and try to run
   the command in AccessKeyMouseEvents by hand in the terminal.  Note
   error messages that might be echoed to the screen.

   This is obviously very insecure, so turn off this gesture when done
   debugging.

Hope this helps you get a11y working!  If you have suggestions on
how to improve the docs then let me know and I would be happy to improve
them.

Brian

Has anyone tried this? If/when it breaks are there any useful log files produced?

Henrik


# This is the configuration file for the keymouselistener.so module.
# The confiuration syntax is as follows:
#
# For keyboard gestures:
#
# <modifier>[<modifier>...]key  #times duration timeout executable_path +args
#
# For executable_path give the full executable path path of the program or the
# DefaultPath is used.  For key, this can be one of the normal keys such as 'k'
# for the letter 'k', or 'F10' for the F10 key.  If you wish to use one of the
# 'modifier' keys you have to specify which one exactly, meaning usually
# appending _L or _R depending on if it's the left or right one.  The useful
# ones are: Shift_L, Shift_R, Control_L, Control_R, Meta_L, Meta_R, Alt_L, 
Alt_R.
# Do note that the modifier is optional.
#
# e.g.
#
# <Control>k  5 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/gok --login --access-method=directselection"
#
# Means press Contol-k 5 times, holding each keypress down for at least 1000ms
# (1s) each time and with no greater interval than 10000ms (10s) between each
# event in the sequence.  A duration value of 0 indicates that a keypress of
# any length is accepted.  The timeout value is only meaningful if the #times
# value is > 1.  Completing the above example sequence will invoke the gnome on
# screen keyboard program, gok.  Note that you cannot release the <Control> key
# while pressing otherwise the sequence will be lost.
#
# e.g.
# Shift_L  5 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/gok --login --access-method=directselection"
# Shift_R  5 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/gok --login --access-method=directselection"
#
# Will start gok if you press either shift key 5 times holding it down for more
# then 1 second each time.
#
# For mouse button gestures the format is the same except the mouse button 
number
# is specified instead of a key gesture:
#
# <Mouse#>  #times duration timeout  executable_path +args
#
# e.g.
#
# <Mouse2>  4 3000 6000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/orca -n -d main-window"
#
# Note that mouse numbers are 1-based so <Mouse1> is the left mouse button,
# <Mouse3> is the right mouse button and <Mouse2> is the middle mouse button.
#
# It is possible to invoke multiple actions from a single gesture using the 
<Add>
# keyword. Actions specified with <Add> are invoked by the previous gesture
# defined in the file.  If the <Add> action is the first action defined in the
# file, then it is ignored.
#
# e.g.
#
# <Add>  /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gnome-mag"
#

# hold right or left mouse button 3 times for 3 seconds each time
#
<Mouse1> 3 3000 10000 /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gok 
--login --access-method=directselection"

# we add the right mouse button as it may be the left mouse button
# for a left handed user
#
<Mouse3> 3 3000 10000 /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gok 
--login --access-method=directselection"

<Switch1> 1 5000 0 /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gok 
--login --access-method=automaticscanning --scan-action=switch1 
--select-action=switch1"
<Switch2> 3 50 3000 /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gok 
--login --access-method=inversescanning --scan-action=switch1 
--select-action=switch2"
<Switch3> 3 1000 10000 /bin/sh -c "/usr/bin/ctrun -l child -i none /usr/bin/gok 
--login  --access-method=automaticscanning --scan-action=switch3 
--select-action=switch3"

# press ctrl-s for 1 second to launch orca in speech mode
#
<Control>s  1 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/orca -n -d main-window"

# press ctrl-m for 1 second to launch orca in mag mode
#
<Control>m  1 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/orca -n -d main-window -d speech -e magnifier"

# press ctrl-o or ctrl-g for 1 second to launch orca in speech and mag mode
#
<Control>o  1 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/orca -n -d main-window -e magnifier"
<Control>g  1 1000 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/bin/orca -n -d main-window -e magnifier"

# Start GOK with direct selection mode.
#
<Control>k  1 0 10000  /usr/bin/gok --login --access-method=directselection
<Control>l  1 0 10000  /usr/bin/gok 
<Control>t  1 0 10000  /bin/sh -c "/usr/bin/ctrun -l child -i none 
/usr/openwin/bin/xterm"

-- 
Ubuntu-accessibility mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-accessibility

Reply via email to