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