Differences between revisions 96 and 97
Revision 96 as of 2013-05-16 05:50:02
Size: 21602
Editor: moomoc
Comment: just a typo
Revision 97 as of 2013-05-16 06:50:26
Size: 22143
Editor: moomoc
Comment: add tip for faster eSpeak
Deletions are marked like this. Additions are marked like this.
Line 530: Line 530:
=== Autostart Of Orca ===
Line 543: Line 545:

=== Sound effects On The GNOME Desktop ===
Line 553: Line 557:
=== faster speaking eSpeak ===

The eSpeak speech synthesis can speak faster by adding a configuration option to
the appropriate voices file. Those voices files can be found under
{{{/usr/lib/i386-linux-gnu/espeak-data/voices/}}}. Pick there your language file
(e. g. en-us or de). Open the appropriate file as administrator in a text editor
and insert the following line:

{{{
speed 150
}}}
This will make eSpeak speak 50 % faster.

=== More Tips ===

Translation(s): English - Français - German - Italiano - Spanish


This page describes the accessibility stack of Debian and provides configuration hints for users. For development details, please look at accessibility-devel.

TODO: magnification tools.

Debian installer accessibility

The Debian installer has braille, speech, and contrast accessibility features which are documented in the installation manual for the stable release, the last upload of the installation manual for the testing release (may be old), as well as the current draft for next upload (also on svn://svn.debian.org/svn/d-i/trunk/manual/en/boot-installer/).

Braille USB devices are automatically detected, serial devices need configuration at boot.

In addition to the existing hardware speech support in the installer of Squeeze (Debian 6.0), software speech is supported in Wheezy (Debian 7.0): when you get at the boot menu, simply press s and enter.

A beep should be emitted at the boot menu prompt, but unfortunately it does not work in 7.0.0, and should get fixed in 7.0.1. One can fix it by editing the ISO image: look for installer boot menu , and replace one of these letters by character 7. This can be done for instance by running:

sed -i -e "s/installer boot menu/installer boot"$'\a'"menu/" debian-7.0.0-amd64-netinst.iso

When installation is done via braille or speech, the same braille and speech parameters will get enabled on the installed system. Orca will also be enabled for the user created at installation.

If speech synthesis does not come up, we need information to find out where the bug is.

First and foremost, we need the exact URL where you have downloaded the installer image, otherwise we won't ever manage to find a bug which could only exist on the image you have used (and which has to be fixed too!)

Inside the installer, press alt-f2 to switch to a shell console, press enter to start the shell, and type

amixer scontrols

and post the output to debian-accessibility@lists.debian.org so we can know whether a sound card was detected and what the volume level names are. If only an error message shows up, or if you do not have resources to be able to read the shell console, please try to run a live CD, make sound work with it, and post the output of lsmod to debian-accessibility@lists.debian.org so we can know what sound driver is missing.

Images for squeeze with software speech can be downloaded from http://people.debian.org/~sthibault/espeakup/ but they don't seem to be working any more due to kernel update in the official archive. As a replacement, the testing images (i.e. Wheezy) can be downloaded from http://www.debian.org/devel/debian-installer , and when given the archive mirror choice, type '<' to get back to main menu, change the priority to lowest, enter the mirror selection part again in the main menu, and then one can choose to install Squeeze instead of Wheezy, and change the priority to high again with the same method.

To record some boot option and thus avoid typing them blindly, one can remaster an image by using the script below:

http://people.debian.org/~sthibault/remaster-append.sh

Braille support

Braille device support is handled by brltty, which is started as a background daemon. Most displays work under brltty, connected via either a serial port, USB or bluetooth. Details on supported braille devices can be found on the brltty website (http://www.mielke.cc/brltty/). It also provides screen reading support for the Linux text console. Screen reading support for the gnome desktop is provided by Orca . It does not drive braille devices itself, it "connects" to brltty via BrlAPI to do so. If Orca does not manage to output braille, make sure that

  • /etc/brlapi.key exists and contains something (the actual content doesn't matter, as long as it is not empty).

  • you have read permission on /etc/brlapi.key

  • brltty is up and running.

Some braille devices have an integrated braille keyboard. Brltty supports simulating keypresses on the text console. For proper simulation on Xorg (handle non-qwerty layouts, in particular), the brltty-x11 package should be installed. It provides xbrlapi, which should be started at Xorg session startup, before starting orca.

The PC keyboard can also be used as a braille keyboard. In /etc/brltty.conf, uncomment key-table keypad, and restart brltty. One can then switch to braille by pressing insert+asterisk on the numpad, and switch back to normal by pressing insert+slash on the numpad. The default is to use the asdfjkl, keys as braille keys, but /etc/brltty/kbd-braille.kti can be modified to use other keys.

One can also type unicode braille patterns (not letters, pure braille, shown as such on the screen) thanks to the console-braille package, which includes keyboard layouts and the setbrlkeys program to load them easily.

Brltty also has very basic graphical screen reading support, which is limited to text fields, e.g. edit's main widget, or gnome-terminal's terminal. This is shipped in the brltty-x11 package, and can be started by running

brltty -b ba -x as

at Xorg session startup. -b ba tells it to connect via BrlAPI to the already-running brltty that drives the actuall braille device. -x as selects the At-Spi driver, which performs graphical screen reading.

Speech support

Debian provides a lot of speech syntheses, a list can be found in the speechsynthesis blend task. Screen readers can often directly use some of the speech syntheses, or use generic interfaces, such as gnomespeech, or speech-dispatcher. Gnome-speech is mostly just a thin common layer. speech-dispatcher is more evolved: it runs as a daemon, which screen readers can connect to in order to emit speech. speech-dispatcher then has several modules to support various speech syntheses.

Speech syntheses are known to have issues with pulseaudio. It is recommended to try to remove the package, or if this is not possible, to disable its use by default by running for instance:

dpkg-divert --add --rename /usr/share/alsa/pulse-alsa.conf

Accessible boot

GRUB can be made to beep when it is ready to take keyboard presses: in /etc/default/grub , uncomment or add the following line:

GRUB_INIT_TUNE="480 440 1"

and run update-grub

An option to get a completely accessible bootloader is to use petitboot. The principle is to make the normal bootloader (e.g. Grub) boot Linux normally, but making it start petitboot and brltty. Petitboot provides the list of kernels to boot, and permits to append parameters, and then uses kexec to boot the desired kernel with the desired options.

This however does not support booting Windows, only Linux.

First, install the petitboot package, create a /boot/petitboot.sh file containing for instance:

   1 #!/bin/sh
   2 /bin/mount none /var -t tmpfs
   3 /bin/mount none /tmp -t tmpfs
   4 /etc/init.d/udev start
   5 /usr/sbin/pb-discover &
   6 /sbin/brltty
   7 /usr/sbin/petitboot-nc -l /tmp/log

And make it executable:

chmod +x /boot/petitboot.sh

Then, create a boot entry for petitboot. For instance, copy/paste from /boot/grub/grub.cfg a Linux entry (which is known to boot fine) to the end of /etc/grub.d/40_custom , append at the end of the linux line (that specifies the vmlinux file) init=/boot/petitboot.sh , and name the menu entry petitboot. You can also choose a hotkey for the entry. So for instance it should look like:

menuentry 'petitboot' --hotkey=p --class debian --class gnu-linux --class gnu --class os {
    ...
    echo 'Loading Linux <version> ...'
    linux /boot/vmlinuz-<version> root=blabla ro init=/boot/petitboot.sh
    echo 'Loading initial ramdisk ...'
    initrd /boot/initrd.img-<version>
}

You may want to keep a backup of the known-to-boot kernel in a safe place, and use that path instead of the Debian-provided file whose upgrades might break.

Eventually, run update-grub to update /boot/grub/grub.cfg.

That way, at boot when you get the grub beep, you have the option to press the "End" key then "Enter", or press the hotkey "p", and that will boot linux, brltty, and petitboot.

If after good testing you really feel safe enough, you can make it the default in grub: in /etc/default/grub, set

GRUB_DEFAULT="petitboot"

and re-run update-grub . You still have the option, when grub beeps, to press "Begin" then "Enter" to boot without petitboot.

Console fonts

The Linux text console font can be tuned to get better accessibility: in /etc/default/console-setup, one can set FONTFACE to Terminus, in order to be able to select bigger fonts such as even FONTSIZE=32x16. That will of course reduce the amount of text displayed on the screen too. To fine-tune the exact amount of text displayed on the screen, SCREEN_WIDTH and SCREEN_HEIGHT can be set.

The console-braille package provides braille fonts, which you can use to type unicode braille patterns, and show braille on the physical screen. This is incompatible with using FONTFACE, as you will need to specify both the normal font and the braille font in the FONT variable, see example in /etc/default/console-setup .

Screen off

To save battery, or to get some privacy, it can be interesting to shut the screen down. There are two approaches, where the first one is simpler, but requires administrator privileges.

Install the package vbetool and use the command

sudo vbetool dpms off

to shut down the monitor and

sudo vbetool dpms on

to reactivate it. It is also a good idea (but not required) to add a setting to your sudoers file to allow this command to be executed without password prompt. Add in /etc/sudoers:

user    ALL=(root) NOPASSWD: /usr/sbin/vbetool

.(where "user" must be replaced with the user name.)

Tip: After some time of inactivity, the monitor will be activated again after a key press. To avoid this you could create a script, called with ./<script_name> & to run it in the background and with the following content:

while [ 1 ]; do; sudo vbetool dpms off; sleep 20; done

The second approach differs for the console and X. On the text console, that can be done through

setterm -blank force

and restored through

setterm -blank poke

That needs to be run directly on the Linux console. When running through screen, you need to redirect the output e.g. to /dev/tty1:

setterm -blank force > /dev/tty1

On the graphical X11 console, that can be done using this script to toggle the display off and on:

   1 #!/bin/sh
   2 output=$(xrandr | grep ' connected ' | awk '{print $1}' | head -1)
   3 screenSize=$(xrandr | awk 'BEGIN {foundOutput=0}
   4     / '$output' / {foundOutput=1}
   5     /\*\+/ {print $1}
   6     /^[^ ]/ {if(foundOutput) exit 0}')
   7 if [ "$screenSize" != "" ]; then
   8     xrandr --output $output --fb $screenSize --off
   9     espeak -v es "Monitor apagado"
  10 else
  11     xrandr --output $output --auto
  12     espeak -v es "Monitor encendido"
  13 fi

Graphical User Interface

Currently, you can access the GNOME and KDE desktops with Orca. Please see the article Orca and the GNOME accessibility guide for more details. For KDE accessibility, the qt-at-spi package needs to be installed, and the QT_ACCESSIBILITY environment variable has to be set to 1:

export QT_ACCESSIBILITY=1

Color Themes for accessibility

The GNOME magnifier supports inverting colors. However, some people prefer other colors for the graphical environment or prefer to have only high contrast without all colors inverted. For this there is a package called gnome-accessibility-themes, where different themes are included. You can install it with

aptitude install gnome-accessibility-themes

These can then be selected in the preferences menu of GNOME.

gdm accessibility

The gdm graphical greeter supports accessibility, orca just needs to be enabled. But in Lenny the default installed gdm doesn't support this feature. So you need, firstly, to remove gdm, and install gdm3 instead.

Then, you can enable orca with either of three ways:

  • It is enabled automatically when accessibility features were enabled to access the Debian Installer
  • It can be enabled by clicking on the "accessibility" icon which brings a configuration panel.
  • It can be enabled by hand by running (for Squeeze):

su -s /bin/sh -c "gconftool-2 --type bool --set /desktop/gnome/applications/at/screen_reader_enabled true" Debian-gdm

or for Wheezy:

su -s /bin/sh -c 'eval $(dbus-launch) ; export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID ; GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true' Debian-gdm || true 

Iceweasel accessibility

The version of iceweasel in Wheezy is not as accessible as later versions. It is recommended to download, install, and use a newer version of firefox on mozilla.com

32bit applications accessibility

If you are running a 64bit system, and use some 32bit applications, having libatk-adaptor installed will not be enough for making 32bit applications accessible: you need to also install the 32bit version of the package. If you have not done it already, enable i386 package installation, as documented in great details on Multiarch/HOWTO:

dpkg --add-architecture i386

Then update the APT database:

apt-get update

and you can now install the 32bit version of the bridge:

apt-get install libatk-adaptor:i386

Java accessibility

To access Java applications, one needs to install the libatk-wrapper-java package. Unfortunately, openjdk has disabled accessibility by default (See 705511), so one has to reenable it by hand, by uncommenting, in /etc/java-6-openjdk/accessibility.properties, the following line:

assistive_technologies=org.GNOME.Accessibility.AtkWrapper

Virtualization

Virtualizations tools are more or less accessible

Xen

Xen uses a command-line interface, so is of course accessible. Setting up a Xen environment is however not so easy. See the Debian Xen wiki pages.

qemu/kvm

qemu/kvm can be run in text-mode, by using the -curses option. Of course, when the guest is in graphical mode, the text interface will not show anything useful, and a screen reader will still be needed inside the guest.

To let that screen reader emit speech, the -soundhw ac97 option can be used to provide the guest with a virtual sound board.

To let the screen reader emit braille, the -usbdevice braille option can be used to provide the guest with a virtual Baum braille device. The braille rendering will be done through the host brltty daemon.

Another way for braille is to pass-through a USB braille device. For instance, if on the host lsusb reports the braille device as:

Bus 001 Device 002: ID 0403:fe72 Baum

Giving the -usbdevice host:0403:fe72 option will give the USB device to the guest, i.e. you must first make sure that nothing like brltty in the host uses it, then run qemu/kvm, and then a brltty daemon inside the guest can access the physical device, as if it was connected to the virtual machine.

Of course, if one has two USB braille devices, one can be used by a brltty running on the host, and the other by a brltty running in the guest.

Troubleshooting

Xorg issues

Xorg may not want to start if no actual physical screen is attached to the video board. This should be reported to the video driver being used, you can cite http://lists.freedesktop.org/archives/xorg/2009-March/044206.html for the rationale behind fixing it.

In the meanwhile, one can use the dummy driver, which will not make use of any graphical card, and still let the gnome desktop start etc. Install the xserver-xorg-video-dummy package, and add the following lines to /etc/X11/xorg.conf (create one if you don't have any):

Section "Device"
    Identifier "noscreendevice"
    Driver     "dummy"
EndSection

The support is however broken since Squeeze, see 696965, the following patch can be applied to fix it:

diff --git a/src/dummy_driver.c b/src/dummy_driver.c
index 6062c39..566a006 100644
--- a/src/dummy_driver.c
+++ b/src/dummy_driver.c
@@ -813,7 +813,7 @@ dummyDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op, poin
     switch (op) {
        case GET_REQUIRED_HW_INTERFACES:
            flag = (CARD32*)ptr;
-           (*flag) = HW_SKIP_CONSOLE;
+           (*flag) = 0;
            return TRUE;
        default:
            return FALSE;

speech-dispatcher issues

Some users use the ibmtts or viavoice speech-synthetiser with orca, and they think that it is not convenient. According to them, the speech synthetiser is slow, its reactivity is slow, and it often crashes. The problem is that no alternative seems to exist, as gnome-speech is no longer supported by ibmtts' vendors.

However, the package who connects ibmtts to gnome-speech is under the LGPL. So, it was packaged and its name in Debian is gnome-speech-ibmtts.

How can you install it? Firstly, install ibmtts or viavoice speech synthetiser. Then, run (as root user):

apt-get install gnome-speech-ibmtts

NOTE: if you install ibmtts after the Debian package, you have to do:  dpkg-reconfigure gnome-speech-ibmtts otherwise, the viavoice config file will not be generated and orca will not see viavoice at the starting of the preferences menu.

NOTE: you likely will need to do, before the first reboot of orca, a backup of your ~/.local/share/orca, then delete the contents of its contents. Do this with:

cp -Rp ~/.local/share/orca ~/.local/share/orcabackup
rm -r ~/.local/share/orca/*

You will need to recreate all your preferences (shortcuts, etc.).

This process allows users who do not want to use speech-dispatcher immediately to find a solution. Anyway, this solution is not ideal for the long-time future, as gnome-speech, or at-spi, will be deprecated with Gnome-3. It can however be a good transition. But it does not work for amd64 architectures. Only i386 is supported.

Note that you do not experience this issue if you migrate from lenny (5.0) to squeeze (6.0), as the migration maintains the necessary configuration so that ibmtts can be accessed via gnome-speech.

Tips and tricks

Autostart Of Orca

Orca can be enabled to start automatically in the Gnome 3 user session by hand by running

eval $(dbus-launch); export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true

It can be enabled to start automatically in the Gnome 2 user session by hand by running

gconftool-2 --type bool --set /desktop/gnome/interface/accessibility true
gconftool-2 --type bool --set /desktop/gnome/applications/at/visual/startup true

Sound effects On The GNOME Desktop

If you would like to have sound effects to help you navigating on the GNOME desktop, run

sudo aptitude install freedesktop-sound-theme
gconftool-2 --type bool --set /desktop/gnome/sound/event_sounds true
eval $(dbus-launch); export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.sound event-sounds true

faster speaking eSpeak

The eSpeak speech synthesis can speak faster by adding a configuration option to the appropriate voices file. Those voices files can be found under /usr/lib/i386-linux-gnu/espeak-data/voices/. Pick there your language file (e. g. en-us or de). Open the appropriate file as administrator in a text editor and insert the following line:

speed 150

This will make eSpeak speak 50 % faster.

More Tips

More tips are available on http://brl.thefreecat.org/wiki/