Differences between revisions 1 and 206 (spanning 205 versions)
Revision 1 as of 2011-02-20 18:22:55
Size: 106
Comment:
Revision 206 as of 2018-06-08 04:26:16
Size: 41954
Editor: moomoc
Comment: attempt to make installer documentation more clear
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This page will document accessibility for users. For developers, please look at [[accessibility-devel]]. #language en
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[fr/accessibility|Français]] - [[de/accessibility|German]] - [[it/accessibility|Italiano]] - [[es/accessibility|Spanish]] -~
----

This page describes the accessibility stack of Debian and provides
configuration hints for users. For general package maintainer
information on accessibility in Debian, please look at the
[[accessibility-maint|accessibility maintainer page]].
For development details, please look at
[[accessibility-devel]].

<<TableOfContents()>>

== Please help us help you ==

Please see:
http://lists.debian.org/debian-accessibility/2013/10/msg00026.html
, it'd be good that users provide test scenarios, so that non-disabled
developers can know how to test accessibility packages, and thus help
the accessibility team.

== Debian installer accessibility ==

The Debian installer has braille, speech, and contrast
accessibility features which are documented in
[[http://www.debian.org/releases/stable/i386/ch05s02.html|the installation manual for the stable release]],
[[http://d-i.alioth.debian.org/manual/en.i386/ch05s02.html | the last upload of the installation manual for the testing release]],
as well as the [[http://d-i.debian.org/manual/en.i386/ch05s02.html |current draft for next upload ]]
(also on
svn://svn.debian.org/svn/d-i/trunk/manual/en/boot-installer/). More
precisely, the Debian installer on Linux has all the braille, speech,
and contrast support, on kFreeBSD it has only contrast support, and on
the Hurd it has serial-only braille support and contrast support.

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

All accessibility support is available on all images except the non-gtk
mini.iso image which does not have speech support. For instance, one can use the CD-1 image from
http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/ or the DVD-1
image from http://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/

Software speech is supported since Debian Wheezy (Debian 7): when you
get at the boot menu (a beep should be emitted to
indicate that), simply press 's' and enter.
It can also be triggered from the win32-loader by choosing the
expert installer, the graphical mode installation, and by appending
{{{speakup.synth=soft}}} to the kernel commandline. Note however that
the windows boot menu is not accessible, one has to press down and
enter while it is showing up at boot (for 30s by default).

Starting from Debian Stretch (Debian 9), expert installation, rescue mode, and
automatic installation are also available with accessibility support. The procedure slightly differs for UEFI and BIOS systems: BIOS systems require pressing '''return''' after each command, UEFI systems don't. Please use the instructions below as appropriate.
After the boot has completed, a beep will be omitted on BIOS systems, UEFI systems will beep twice.
To access the advertised functionality, one has to first enter the "advanced" submenu from the boot menu by
typing 'a' (and optionally hit '''return''').
To enable speech, 's' (and again optionally '''return''') will enable speech support.
Now various shortcuts are available: 'x' for expert installation, 'r' for rescue
mode or 'a' for automated installation. Don't forget pressing '''return''' when using BIOS after these commands.

If the speech volume level is too low, you can type CapsLock-2 to make
it higher (and CapsLock-1 to make it lower). If you prefer a faster
speech rate, you can type CapsLock-6 (and CapsLock-5 to make it slower).

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 -d 0}}}

{{{amixer scontrols -d 1}}}

{{{amixer scontents -d 0}}}

{{{amixer scontents -d 1}}}

{{{cat /proc/asound/cards}}}

{{{echo /sys/class/sound/card*/id}}}

{{{cat /sys/class/sound/card*/id}}}

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.

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

Testing accessibility in the debian installer is documented on
[[DebianInstaller/Accessibility|the Debian installer accessibility page]].

== LiveCD accessibility ==

The gnome liveCD images from https://www.debian.org/CD/live/ have
screen reader support. At the boot menu, a beep should be emitted to
indicate that one has to press enter. Then the desktop launches up
(TODO: add beep), and one can press super-alt-s (aka windows-alt-s) to start Orca.

== Braille support ==

Braille device support is handled by DebianPkg: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 [[DebianPkg:gnome-orca|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
DebianPkg: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 [[DebianPkg:console-braille|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 DebianPkg: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 software speech syntheses, a list can be found in
[[http://blends.alioth.debian.org/accessibility/tasks/speechsynthesis|the speechsynthesis blend task]].
Screen readers can often directly use some of the speech
syntheses, or use generic interfaces, such as
speech-dispatcher.
speech-dispatcher 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, especially on the command line, are known to have issues with pulseaudio. It is
recommended to run pulseaudio as root or disable/remove pulseaudio, like described [[#Run_Pulseaudio_as_root]] or [[#Disable_Pulseaudio]].

=== text console ===

Software speech syntheses are supported on the text console. There are two screenreaders within Debian which can make use of them, [[DebianPkg:speakup]] and [[DebianPkg:brltty]].

==== BRLTTY ====

BRLTTY offers mature screen reading support for the console including speech. You have the choice of using [[DebianPkg:espeak]] directly or [[DebianPkg:speech-dispatcher]]. They can be installed with the [[DebianPkg:brltty-espeak]] and [[DebianPkg:brltty-speechd]] package, respectively.

It is necessary to activate the speech driver in the configuration of BRLTTY. Open {{{/etc/brltty.conf}}} and edit it:

1. When using [[DebianPkg:brltty-espeak]], uncomment or insert the following line:

{{{speech-driver es}}}

2. When using [[DebianPkg:brltty-speechd]], uncomment or insert the following line

{{{speech-driver sd}}}

Afterwards reload BRLTTY with {{{sudo service brltty restart}}}.

==== Speakup ====

The simplest way is using the [[DebianPkg:espeakup]] package which directly plugs
the espeak software synthesis to the in-kernel screen reader.

Another way is by installing [[DebianPkg:speech-dispatcher]] and
[[DebianPkg:speechd-up]]. {{{Speech-dispatcher}}} needs to be started in
system-wide mode: {{{/etc/default/speech-dispatcher}}} needs to contain

{{{RUN=yes}}}

Please see the section [[#speech-dispatcher|about speech-dispatcher]] for more details.

Hardware speech syntheses are also supported on the text console
through the speakup drivers. This however requires to disable the 8250
serial port driver by setting this variable in {{{/etc/default/grub}}}:

{{{
GRUB_CMDLINE_LINUX="8250.nr_uarts=0"
}}}

one can then add for instance this in {{{/etc/modules}}} to get a speakup module loaded:

{{{
speakup_dectlk
}}}

<<Anchor(speech-dispatcher)>>
=== Speech-Dispatcher ===

ToDo: needs to be written. Document:

 * aim of spd
 * installation
 * configuration: alsa, modules, ...
 * system vs. user service

Also, if you do not have pulseaudio installed, you need to made
speech-dispatcher revert to alsa: in {{{/etc/speech-dispatcher/speechd.conf}}}, uncomment the line {{{AudioOutputMethod}}} and set it this way:

{{{AudioOutputMethod "alsa"}}}

==== Testing Speech-Dispatcher ====

You can test whether speech-dispatcher works by running

{{{spd-say "some text"}}}

Or if you want to test a specific module like espeak:

{{{spd-say -o espeak "some text"}}}

=== audio level ===

Starting from Stretch (Debian 9), the audio levels are reset to a default value at
bootup. If you want to change that default value, set the audio levels
to the desired value (e.g. with alsamixer from the DebianPkg:alsa-utils package),
and save the settings by running as root

{{{alsactl store}}}

== Embossers ==

Embossers can easily be used in text mode through CUPS drivers.

Starting from Stretch (Debian 9), dedicated drivers have been added to
the DebianPkg:cups-filters package. See /usr/share/doc/cups-filters/README.gz for
the details, but basically, you can add an embosser just like a
printer, and in the driver selection, choose the "Generic" maker, and
choose the "Generic Braille embosser" model. This will provide several
options to set formatting, page number, etc. The Index braille
embossers have their own driver, under the "Index" maker. This
provides better options for text formatting, and graphical embossing.


Up to Jessie (Debian 8), only the generic text driver is available:

In the printers panel (accessed through the printer icon in the control panel, or directly by browsing http://localhost:631/ and clicking on Administration), add a printer, choose the connexion (usb, parallel port, etc.), you can freely choose a description to your liking, and for the driver selection, choose the "Generic" maker, and choose the "Generic text-only printer" choice.

To print, you can then just run

{{{
lp test.txt
}}}

If your embosser doesn't do it automatically, you may need to reformat your text to the width of the paper by using the fmt command, for instance for 40 columns:

{{{
fmt -40 < test.txt > test2.txt
lp test2.txt
}}}

== 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 DebianPkg:petitboot package, create a
{{{/boot/petitboot.sh}}} file containing for instance:

{{{#!highlight bash
#!/bin/sh
/bin/mount none /var -t tmpfs
/bin/mount none /tmp -t tmpfs
/etc/init.d/udev start
/usr/sbin/pb-discover &
/sbin/brltty
/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 DebianPkg: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}}} .

== Graphical User Interface ==

Currently, you can access the GNOME, MATE, XFCE, LXDE, LXQt desktops with
Orca. Please see the article [[Orca]] and the
[[http://library.gnome.org/users/gnome-access-guide/|GNOME accessibility guide]]
for more details. For Gnome 3, it is useful to read [[https://help.gnome.org/users/gnome-help/stable/shell-keyboard-shortcuts.html.en|the gnome shell shortcut guide]]

The simplest ways to install these graphical user environment is to
install the corresponding tasks, for instance:

{{{
apt-get install task-gnome-desktop
}}}

Another, lighter, way is to install Xorg and the environment
meta-package by hand, but you will probably miss quite a few
things. For instance:

{{{
apt-get install xorg xserver-xorg-video-all xserver-xorg-input-all desktop-base menu gnome-core
}}}

And also make sure to have orca installed to access it:

{{{
apt-get install gnome-orca
}}}

Each desktop has a way to enable accessibility. You can also do it by
hand, see among the tips&tricks below.

For KDE accessibility, the DebianPkg: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 ===

To enable high contrast or to invert colours, a package called
[[DebianPkg:gnome-accessibility-themes]]exists , 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.

Colors can be inverted using [[DebianPkg:xcalib]] too, i.e.:

{{{
xcalib -i -a
}}}

will just invert the whole desktop.

=== Color Blindness ===

For colorblindness, the [[DebianPkg:kmag|KDE magnifier]] program includes options to alter the color of just a region (not the whole screen). It has settings for protanopia, deuteranopia, titranopia, and achromatopsia.

=== Full Screen magnification support ===

There are several options for full screen magnification. Pick the one that works best for you.

==== Option 1: Compiz ====

Enhanced magnification support is provided by the ezoom plugin of [[Compiz]]


==== Option 2: Resolution ====

The simplest way is to lower the screen resolution: '''`xrandr -s 800x600`'''

To reset the screen resolution, use: `xrandr -s 0`


==== Option 3: Panning ====

It is possible to zoom in without changing the screen resolution. Only a portion of the screen will be visible, so move the mouse to the screen edges to pan around.

To enable panning: `xrandr --output VGA1 --mode 640x480 --fb 1280x1024 --panning 1280x1024`

To turn off panning: `xrandr -s 0`

==== Option 4: Changing DPI ====

A method which works for some toolkits is to tell the Xserver that it had a higher resolution display than it really has:

To change DPI: `xrandr --dpi 200`

which will make everything basically two times bigger (200 dpi instead of the standard 96dpi or even 75dpi). That will notably work in Qt.

For gtk2, one can put the following in {{{~/.gtkrc-2.0}}}:

{{{
gtk-font-name = "DejaVu Sans 20"
gtk-cursor-theme-size = 64
gtk-icon-sizes = "gtk-menu=48,48 : gtk-button=48,48 : gtk-dialog = 128,128"

style "default"
{
        GtkRange::slider_width = 56
        GtkRange::stepper_size = 56
        GtkPaned::handle-size = 20
        GtkCheckMenuItem::indicator-size = 48
        GtkCheckButton::indicator-size = 48
        GtkOptionMenu::indicator-size = 48
        GtkTreeView::indicator-size = 48
        GtkTreeView::expander-size = 40
}

class "GtkWidget" style "default"
}}}

For gtk3, one can set this environment variable:

{{{export GDK_SCALE=2}}}

Other toolkits may need other configuration. Ideally they'd just pick up the DPI...

==== Option 5: Desktop Environment ====

The previous solutions work for any Debian system. However, depending upon which desktop environment you have installed, you may also have a simple graphical way to enable zooming. For example, [[DebianPkg:Gnome-Shell]] and [[DebianPkg:Cinnamon]] both include a Universal Access icon {{attachment:universalaccess.svg}} on their dock with a menu option to enable full screen zoom & pan.

=== Magnifying Glass ===

Some people prefer using a virtual magnifying glass instead of magnifying the entire screen. The screen resolution is not changed, instead a small window is added which shows a magnified version of a portion of the screen. Usually you can choose where to be magnify by dragging inside the window or by having the program always magnify the region around the mouse. There are again different possibilities, you are free to choose from the following:

==== Option 1: Kmag ====

The [[DebianPkg:kmag|KDE screen magnifier]] can be installed with `apt-get install kmag`.

Kmag is simple to use. It will take up more disk space (>200MiB) if you don't already have KDE installed. Although designed for KDE, Kmag works with any desktop environment, including Gnome and Cinnamon.

==== Option 2: Virtual Magnifying Glass ====

If you have trouble reading only occasional words, you may prefer Virtual Magnifying Glass (VMG). Its advantage is that it is usually not visible, unlike programs such as kmag which create a window that always covers part of your screen. Clicking on the VMG icon in the tray shows a zoomed lens around your mouse pointer. Moving the mouse, moves the lens. Clicking anywhere closes the program. (Tip: To change the zoom level, roll the mouse-wheel.)

VMG is available from Stretch (Debian 9) and later. It can be installed fine on Jessie systems too, the .deb can be obtained on https://packages.debian.org/sid/vmg , and installed with

{{{
dpkg -i vmg_3.7.1-1_amd64.deb
apt-get -f install
}}}

=== Controlling the mouse from the keyboard ===

One can use the keypad to move the mouse. One needs to enable the xkb
option keypad:pointerkeys for that. This can be temporarily achieved by:

{{{
setxkbmap -option keypad:pointerkeys
}}}

And permanently, by adding the line

{{{
Option "XkbOptions" "keypad:pointerkeys"
}}}

to /etc/X11/xorg.conf.d/00-keyboard.conf

To actually enable it, one has to type shift-numlock. The numpad keys
then move the mouse and keypad 5 simulates the mouse click. '/',
'*' and '-' can be used to switch between left, middle, and right
button. '0' and 'del' hold and release the button. Type shift-numlock
to get a normal numpad again.

=== 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 for Lenny you need, firstly, to remove gdm, and install
gdm3 instead. Squeeze (Debian 6) and later already use gdm3 by default.

Then, you can enable orca with either of four 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.
 * Starting from Jessie (Debian 8), it can be enabled by typing the menu-alt-s shortcut.
 * It can be enabled by hand by running (for Squeeze, Debian 6):
 
{{{
su -s /bin/sh -c "gconftool-2 --type bool --set /desktop/gnome/applications/at/screen_reader_enabled true" Debian-gdm
}}}

or for Wheezy (Debian 7) and later:

{{{
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
}}}

=== lightdm accessibility ===

The lightdm graphical greeter supports accessibility, orca just needs to be enabled. Create the file
/etc/xdg/lightdm/lightdm.conf.d/80_orca-dm-wrapper.conf and write the following in it:

{{{
[SeatDefaults]
greeter-wrapper=/usr/bin/orca-dm-wrapper
}}}

=== Iceweasel/firefox accessibility ===

Firefox (formerly known as Iceweasel) has relatively good accessibility support from Jessie (Debian 8) onwards. However, it might make sense to download the latest Firefox version from [[https://mozilla.com]], to benefit from the latest bug fixes. This optional step is recommended for releases of Debian lower than Jessie.

=== 32bit applications accessibility ===

If you are running a 64bit system, and use some 32bit applications,
having DebianPkg: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 DebianPkg:libatk-wrapper-java
package. Unfortunately, in some versions, openjdk has
disabled accessibility by default (See DebianBug:705511),
so one has to reenable it by hand. In the file
{{{/etc/java-6-openjdk/accessibility.properties}}} for Debian 7 (Wheezy) or {{{/etc/java-7-openjdk/accessibility.properties}}} for Debian 8 (Jessie) the following line must be uncommented (the # in front needs to be removed):

{{{
assistive_technologies=org.GNOME.Accessibility.AtkWrapper
}}}

Also, only the GTK look and feel has accessibility support, so in the file
{{{/etc/java-6-openjdk/swing.properties}}} for Debian 7 (Wheezy) or {{{/etc/java-7-openjdk/swing.properties}}} for Debian 8 (Jessie) the following line must be uncommented (the # in front needs to be removed):

{{{
swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
}}}


== 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
[[Xen|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 ==

=== No Speech After Login In GNOME ===

If Orca only says "Welcome to Orca" and seems to be silent then, you are
actually on an empty desktop. To get the focus, press Alt+F1 for the menu or
Alt+F2 for the run-dialog.


=== BRLTTY/braille stops after boot ===

In Wheezy (Debian 7) there has been added a program called
[[DebianPkg:modemmanager|modemmanager]] which scans serial (and possibly
usb2serial) devices to detect it as a modem. Unfortunately this destroys the
communication with braille displays connected via those ports. Just
{{{
apt-get remove modemmanager
}}}
to repair this issue.

=== Inaccessible GNOME 3 session / no fallback mode ===

It can happen that you end up in a inadequately accessible GNOME 3 session. For instance, if you press alt+f1 for the menu, nothing is spoken. This has to do with the not-yet well accessible GNOME shell. Please see below how to resolve this problem.

'''Debian Wheezy (GNOME 3.4)'''

In GNOME 3.4, there is a mode called fallback mode, which mimes the behavior of GNOME 2. You can enable it using:

{{{
gsettings set org.gnome.desktop.session session-name gnome-fallback
}}}

It must be done from the GNOME session. One can get a terminal by pressing Alt+F2, entering {{{gnome-terminal<enter>}}} and this will be accessible anyway.

'''Debian Jessie (GNOME >= 3.8)'''

In Debian Jessie with GNOME version >= 3.8, there is a mode called GNOME classic. This one uses the GNOME shell directly to achieve GNOME 2 alike user experience. When using startx, you can set up your .xinitrc as follows to use this mode:

{{{
if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

exec gnome-session --session=gnome-classic
}}}

=== 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) to squeeze (6), as the migration maintains the necessary
configuration so that ibmtts can be accessed via gnome-speech.


=== 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 DebianPkg: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 (debian 6), see DebianBug:696965, the
following patch can be applied to Xorg 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;
}}}

=== Run Pulseaudio as root ===

To be able to run speech both at the text console and in graphical
sessions, one can run pulseaudio as root. This is not recommended by
upstream pulseaudio so one has to tinker a bit:

put this into /root/.config/pulse/client.conf :

{{{
default-server = unix:/tmp/pulse.sock
autospawn = no
}}}

and put this into $HOME/.config/pulse/default.pa

{{{
.include /etc/pulse/default.pa
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse.sock
}}}

=== Disable Pulseaudio ===

If Pulseaudio causes problems, there are multiple different ways to use the underlying ALSA sound system as a replacement.

For Desktop environments like Mate or even more lightweight alternatives, you can try to remove the package:

{{{
sudo apt-get remove pulseaudio
}}}

The two or three packages also marked for removal are not essential.

For other desktop environments like GNOME it is impossible to remove Pulseaudio. Disabling works as follows:

1. Execute the command

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

2. Instruct pulseaudio not to spawn itself automatically. Edit {{{/etc/pulse/client.conf}}} and search for a line like:

{{{
; autospawn = yes
}}}

and change it into

{{{
autospawn = no
}}}

Hint for speech-dispatcher: Speech-Dispatcher refuses in some cases to switch to ALSA. In this case one can edit {{{/etc/speech-dispatcher/speechd.conf}}} and changes the line

{{{
# ?AudioOutputMethod "pulse"
}}}

to

{{{
AudioOutputMethod "libao"
}}}

and restarts speech-dispatcher via

{{{
killall speech-dispatcher; speech-dispatcher
}}}

== Tips and tricks ==

=== Autostart Of Orca ===

==== Gnome 3 ====

Orca can be enabled to start automatically in the Gnome 3 user session by hand by running these lines as normal user:

{{{
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
}}}

==== Gnome 2 ====

Orca can be enabled to start automatically in the Gnome 2 user session by hand by running these lines as normal user:

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

==== MATE ====

Orca can be enabled to start automatically in the MATE user session by hand by running these lines as normal user:

{{{
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
GSETTINGS_BACKEND=dconf gsettings set org.mate.interface accessibility true
GSETTINGS_BACKEND=dconf gsettings set org.mate.applications-at-visual startup true
}}}


==== XFCE ====

The accessibility support for XFCE has to be enabled manually.
This can be achieved either by clicking the "Enable assistive technologies"
checkbox in the XFCE accessibility settings, or by running this command in an X session:

{{{
   xfconf-query -c xfce4-session -n -t bool -p /general/StartAssistiveTechnologies -s true
}}}

Alternatively you can put the following into
{{{$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml}}}:

{{{
<?xml version="1.0" encoding="UTF-8"?>

<channel name="xfce4-session" version="1.0">
  <property name="general" type="empty">
    <property name="StartAssistiveTechnologies" type="bool" value="true"/>
  </property>
</channel>
}}}

The file might already exist. If you haven't configured XFCE yet, you can replace the content of this file by the above excerpt. Please note that this will drop your XFCE session configuration.
If you don't want to lose your existing XFCE session parameters, just add another
"general" property, it will look like this:

{{{
<channel name="xfce4-session" version="1.0">
  <property name="splash" type="empty">
    ...
  </property>
  <property name="general" type="empty">
    <property name="FailsafeSessionName" type="empty"/>
    <property name="StartAssistiveTechnologies" type="bool" value="true"/>
  </property>
  <property name="sessions" type="empty">
    <property name="Failsafe"
    ...
  </property>
</channel>
}}}

For now, orca will not autostart. The
simple workaround is to just drop the "OnlyShowIn" line in
/etc/xdg/autostart/orca-autostart.desktop , or to add XFCE to it.

==== LXDE and LXQT ====

For now, orca does not start automatically. The
simple workaround is to just drop the "OnlyShowIn" line in
/etc/xdg/autostart/orca-autostart.desktop. Alternatively, LXDE or LXQT can be added at the end of this line.

=== speakup and package configuration questions ===

When using the speakup screen reader, the default frontend for package
configuration is not convenient. One can switch to the Readline
frontend by default by running

{{{
dpkg-reconfigure debconf
}}}

and choose Readline. One can also choose the frontend for just a session by running

{{{
export DEBIAN_FRONTEND=readline
}}}

=== Accessibility in chroots ===

In order for applications to be accessible from within chroots, they need
to have access to the at-spi bus. This bus lives in both /tmp and
$HOME, so the following is needed, in addition to the usual at-spi
configuration inside the chroot:

{{{
mount /tmp /where/the/chroot/is/tmp -o bind
mount /home /where/the/chroot/is/home -o bind
}}}

And as usual, the DISPLAY and XAUTHORITY environment variable should
set to the value they have outside the chroot, in order to access the X
display.

=== 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 DebianPkg: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:
{{{
#!/bin/sh
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:

{{{#!highlight bash
#!/bin/sh
output=$(xrandr | grep ' connected ' | awk '{print $1}' | head -1)
screenSize=$(xrandr | awk 'BEGIN {foundOutput=0}
    / '$output' / {foundOutput=1}
    /\*\+/ {print $1}
    /^[^ ]/ {if(foundOutput) exit 0}')
if [ "$screenSize" != "" ]; then
    xrandr --output $output --fb $screenSize --off
    espeak -v es "Monitor apagado"
else
    xrandr --output $output --auto
    espeak -v es "Monitor encendido"
fi
}}}


=== 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/]]

== Related links ==

 * [[http://www.debian.org/devel/debian-accessibility|Debian Accessibility team webpage]]
 provides official information. Only a few developers can modify it.
 * #debian-a11y on the oftc IRC network, come and chat with us!
 * [[http://delysid.org/gnome.html|Gnome for the Blind]] provides some
 information about gnome accessibility support
 * [[http://live.gnome.org/Orca|GNOME's screen reader and screen magnification software]]:
 [[Orca]]
 * [[https://help.gnome.org/users/gnome-help/3.12/shell-keyboard-shortcuts.html.en|GNOME 3 Shell keyboard shortcuts]]
 * [[http://blends.alioth.debian.org/accessibility/|Accessibility blend]],
 provide automatically-generated information on accessibility,
 like list statistics, and package descriptions and bugs.
 * [[http://blends.alioth.debian.org/accessibility/tasks/|Accessibility blend tasks]],
 provides an insight in the set of packages that Debian
 ships for various needs (braille, speech, OCR, ...)

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


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

Please help us help you

Please see: http://lists.debian.org/debian-accessibility/2013/10/msg00026.html , it'd be good that users provide test scenarios, so that non-disabled developers can know how to test accessibility packages, and thus help the accessibility team.

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, as well as the current draft for next upload (also on svn://svn.debian.org/svn/d-i/trunk/manual/en/boot-installer/). More precisely, the Debian installer on Linux has all the braille, speech, and contrast support, on kFreeBSD it has only contrast support, and on the Hurd it has serial-only braille support and contrast support.

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

All accessibility support is available on all images except the non-gtk mini.iso image which does not have speech support. For instance, one can use the CD-1 image from http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/ or the DVD-1 image from http://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/

Software speech is supported since Debian Wheezy (Debian 7): when you get at the boot menu (a beep should be emitted to indicate that), simply press 's' and enter. It can also be triggered from the win32-loader by choosing the expert installer, the graphical mode installation, and by appending speakup.synth=soft to the kernel commandline. Note however that the windows boot menu is not accessible, one has to press down and enter while it is showing up at boot (for 30s by default).

Starting from Debian Stretch (Debian 9), expert installation, rescue mode, and automatic installation are also available with accessibility support. The procedure slightly differs for UEFI and BIOS systems: BIOS systems require pressing return after each command, UEFI systems don't. Please use the instructions below as appropriate. After the boot has completed, a beep will be omitted on BIOS systems, UEFI systems will beep twice. To access the advertised functionality, one has to first enter the "advanced" submenu from the boot menu by typing 'a' (and optionally hit return). To enable speech, 's' (and again optionally return) will enable speech support. Now various shortcuts are available: 'x' for expert installation, 'r' for rescue mode or 'a' for automated installation. Don't forget pressing return when using BIOS after these commands.

If the speech volume level is too low, you can type ?CapsLock-2 to make it higher (and ?CapsLock-1 to make it lower). If you prefer a faster speech rate, you can type ?CapsLock-6 (and ?CapsLock-5 to make it slower).

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 -d 0

amixer scontrols -d 1

amixer scontents -d 0

amixer scontents -d 1

cat /proc/asound/cards

echo /sys/class/sound/card*/id

cat /sys/class/sound/card*/id

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.

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

Testing accessibility in the debian installer is documented on the Debian installer accessibility page.

LiveCD accessibility

The gnome liveCD images from https://www.debian.org/CD/live/ have screen reader support. At the boot menu, a beep should be emitted to indicate that one has to press enter. Then the desktop launches up (TODO: add beep), and one can press super-alt-s (aka windows-alt-s) to start Orca.

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 software 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 speech-dispatcher. speech-dispatcher 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, especially on the command line, are known to have issues with pulseaudio. It is recommended to run pulseaudio as root or disable/remove pulseaudio, like described #Run_Pulseaudio_as_root or #Disable_Pulseaudio.

text console

Software speech syntheses are supported on the text console. There are two screenreaders within Debian which can make use of them, speakup and brltty.

BRLTTY

BRLTTY offers mature screen reading support for the console including speech. You have the choice of using espeak directly or speech-dispatcher. They can be installed with the brltty-espeak and brltty-speechd package, respectively.

It is necessary to activate the speech driver in the configuration of BRLTTY. Open /etc/brltty.conf and edit it:

1. When using brltty-espeak, uncomment or insert the following line:

speech-driver es

2. When using brltty-speechd, uncomment or insert the following line

speech-driver sd

Afterwards reload BRLTTY with sudo service brltty restart.

Speakup

The simplest way is using the espeakup package which directly plugs the espeak software synthesis to the in-kernel screen reader.

Another way is by installing speech-dispatcher and speechd-up. Speech-dispatcher needs to be started in system-wide mode: /etc/default/speech-dispatcher needs to contain

RUN=yes

Please see the section about speech-dispatcher for more details.

Hardware speech syntheses are also supported on the text console through the speakup drivers. This however requires to disable the 8250 serial port driver by setting this variable in /etc/default/grub:

GRUB_CMDLINE_LINUX="8250.nr_uarts=0"

one can then add for instance this in /etc/modules to get a speakup module loaded:

speakup_dectlk

Speech-Dispatcher

ToDo: needs to be written. Document:

  • aim of spd
  • installation
  • configuration: alsa, modules, ...
  • system vs. user service

Also, if you do not have pulseaudio installed, you need to made speech-dispatcher revert to alsa: in /etc/speech-dispatcher/speechd.conf, uncomment the line AudioOutputMethod and set it this way:

AudioOutputMethod "alsa"

Testing Speech-Dispatcher

You can test whether speech-dispatcher works by running

spd-say "some text"

Or if you want to test a specific module like espeak:

spd-say -o espeak "some text"

audio level

Starting from Stretch (Debian 9), the audio levels are reset to a default value at bootup. If you want to change that default value, set the audio levels to the desired value (e.g. with alsamixer from the alsa-utils package), and save the settings by running as root

alsactl store

Embossers

Embossers can easily be used in text mode through CUPS drivers.

Starting from Stretch (Debian 9), dedicated drivers have been added to the cups-filters package. See /usr/share/doc/cups-filters/README.gz for the details, but basically, you can add an embosser just like a printer, and in the driver selection, choose the "Generic" maker, and choose the "Generic Braille embosser" model. This will provide several options to set formatting, page number, etc. The Index braille embossers have their own driver, under the "Index" maker. This provides better options for text formatting, and graphical embossing.

Up to Jessie (Debian 8), only the generic text driver is available:

In the printers panel (accessed through the printer icon in the control panel, or directly by browsing http://localhost:631/ and clicking on Administration), add a printer, choose the connexion (usb, parallel port, etc.), you can freely choose a description to your liking, and for the driver selection, choose the "Generic" maker, and choose the "Generic text-only printer" choice.

To print, you can then just run

lp test.txt

If your embosser doesn't do it automatically, you may need to reformat your text to the width of the paper by using the fmt command, for instance for 40 columns:

fmt -40 < test.txt > test2.txt
lp test2.txt

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 .

Graphical User Interface

Currently, you can access the GNOME, MATE, XFCE, LXDE, LXQt desktops with Orca. Please see the article Orca and the GNOME accessibility guide for more details. For Gnome 3, it is useful to read the gnome shell shortcut guide

The simplest ways to install these graphical user environment is to install the corresponding tasks, for instance:

apt-get install task-gnome-desktop

Another, lighter, way is to install Xorg and the environment meta-package by hand, but you will probably miss quite a few things. For instance:

apt-get install xorg xserver-xorg-video-all xserver-xorg-input-all desktop-base menu gnome-core

And also make sure to have orca installed to access it:

apt-get install gnome-orca

Each desktop has a way to enable accessibility. You can also do it by hand, see among the tips&tricks below.

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

To enable high contrast or to invert colours, a package called gnome-accessibility-themesexists , 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.

Colors can be inverted using xcalib too, i.e.:

xcalib -i -a

will just invert the whole desktop.

Color Blindness

For colorblindness, the KDE magnifier program includes options to alter the color of just a region (not the whole screen). It has settings for protanopia, deuteranopia, titranopia, and achromatopsia.

Full Screen magnification support

There are several options for full screen magnification. Pick the one that works best for you.

Option 1: Compiz

Enhanced magnification support is provided by the ezoom plugin of Compiz

Option 2: Resolution

The simplest way is to lower the screen resolution: xrandr -s 800x600

To reset the screen resolution, use: xrandr -s 0

Option 3: Panning

It is possible to zoom in without changing the screen resolution. Only a portion of the screen will be visible, so move the mouse to the screen edges to pan around.

To enable panning: xrandr --output VGA1 --mode 640x480 --fb 1280x1024 --panning 1280x1024

To turn off panning: xrandr -s 0

Option 4: Changing DPI

A method which works for some toolkits is to tell the Xserver that it had a higher resolution display than it really has:

To change DPI: xrandr --dpi 200

which will make everything basically two times bigger (200 dpi instead of the standard 96dpi or even 75dpi). That will notably work in Qt.

For gtk2, one can put the following in ~/.gtkrc-2.0:

gtk-font-name = "DejaVu Sans 20"
gtk-cursor-theme-size = 64
gtk-icon-sizes = "gtk-menu=48,48 : gtk-button=48,48 : gtk-dialog = 128,128"

style "default"
{
        GtkRange::slider_width = 56
        GtkRange::stepper_size = 56
        GtkPaned::handle-size = 20
        GtkCheckMenuItem::indicator-size = 48
        GtkCheckButton::indicator-size = 48
        GtkOptionMenu::indicator-size = 48
        GtkTreeView::indicator-size = 48
        GtkTreeView::expander-size = 40
}

class "GtkWidget" style "default"

For gtk3, one can set this environment variable:

export GDK_SCALE=2

Other toolkits may need other configuration. Ideally they'd just pick up the DPI...

Option 5: Desktop Environment

The previous solutions work for any Debian system. However, depending upon which desktop environment you have installed, you may also have a simple graphical way to enable zooming. For example, Gnome-Shell and Cinnamon both include a Universal Access icon universalaccess.svg on their dock with a menu option to enable full screen zoom & pan.

Magnifying Glass

Some people prefer using a virtual magnifying glass instead of magnifying the entire screen. The screen resolution is not changed, instead a small window is added which shows a magnified version of a portion of the screen. Usually you can choose where to be magnify by dragging inside the window or by having the program always magnify the region around the mouse. There are again different possibilities, you are free to choose from the following:

Option 1: Kmag

The KDE screen magnifier can be installed with apt-get install kmag.

Kmag is simple to use. It will take up more disk space (>200MiB) if you don't already have KDE installed. Although designed for KDE, Kmag works with any desktop environment, including Gnome and Cinnamon.

Option 2: Virtual Magnifying Glass

If you have trouble reading only occasional words, you may prefer Virtual Magnifying Glass (VMG). Its advantage is that it is usually not visible, unlike programs such as kmag which create a window that always covers part of your screen. Clicking on the VMG icon in the tray shows a zoomed lens around your mouse pointer. Moving the mouse, moves the lens. Clicking anywhere closes the program. (Tip: To change the zoom level, roll the mouse-wheel.)

VMG is available from Stretch (Debian 9) and later. It can be installed fine on Jessie systems too, the .deb can be obtained on https://packages.debian.org/sid/vmg , and installed with

dpkg -i vmg_3.7.1-1_amd64.deb
apt-get -f install

Controlling the mouse from the keyboard

One can use the keypad to move the mouse. One needs to enable the xkb option keypad:pointerkeys for that. This can be temporarily achieved by:

setxkbmap -option keypad:pointerkeys

And permanently, by adding the line

Option "XkbOptions" "keypad:pointerkeys"

to /etc/X11/xorg.conf.d/00-keyboard.conf

To actually enable it, one has to type shift-numlock. The numpad keys then move the mouse and keypad 5 simulates the mouse click. '/', '*' and '-' can be used to switch between left, middle, and right button. '0' and 'del' hold and release the button. Type shift-numlock to get a normal numpad again.

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 for Lenny you need, firstly, to remove gdm, and install gdm3 instead. Squeeze (Debian 6) and later already use gdm3 by default.

Then, you can enable orca with either of four 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.
  • Starting from Jessie (Debian 8), it can be enabled by typing the menu-alt-s shortcut.
  • It can be enabled by hand by running (for Squeeze, Debian 6):

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

or for Wheezy (Debian 7) and later:

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 

lightdm accessibility

The lightdm graphical greeter supports accessibility, orca just needs to be enabled. Create the file /etc/xdg/lightdm/lightdm.conf.d/80_orca-dm-wrapper.conf and write the following in it:

[SeatDefaults]
greeter-wrapper=/usr/bin/orca-dm-wrapper

Iceweasel/firefox accessibility

Firefox (formerly known as Iceweasel) has relatively good accessibility support from Jessie (Debian 8) onwards. However, it might make sense to download the latest Firefox version from https://mozilla.com, to benefit from the latest bug fixes. This optional step is recommended for releases of Debian lower than Jessie.

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, in some versions, openjdk has disabled accessibility by default (See 705511), so one has to reenable it by hand. In the file /etc/java-6-openjdk/accessibility.properties for Debian 7 (Wheezy) or /etc/java-7-openjdk/accessibility.properties for Debian 8 (Jessie) the following line must be uncommented (the # in front needs to be removed):

assistive_technologies=org.GNOME.Accessibility.AtkWrapper

Also, only the GTK look and feel has accessibility support, so in the file /etc/java-6-openjdk/swing.properties for Debian 7 (Wheezy) or /etc/java-7-openjdk/swing.properties for Debian 8 (Jessie) the following line must be uncommented (the # in front needs to be removed):

swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel

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

No Speech After Login In GNOME

If Orca only says "Welcome to Orca" and seems to be silent then, you are actually on an empty desktop. To get the focus, press Alt+F1 for the menu or Alt+F2 for the run-dialog.

BRLTTY/braille stops after boot

In Wheezy (Debian 7) there has been added a program called modemmanager which scans serial (and possibly usb2serial) devices to detect it as a modem. Unfortunately this destroys the communication with braille displays connected via those ports. Just

apt-get remove modemmanager

to repair this issue.

Inaccessible GNOME 3 session / no fallback mode

It can happen that you end up in a inadequately accessible GNOME 3 session. For instance, if you press alt+f1 for the menu, nothing is spoken. This has to do with the not-yet well accessible GNOME shell. Please see below how to resolve this problem.

Debian Wheezy (GNOME 3.4)

In GNOME 3.4, there is a mode called fallback mode, which mimes the behavior of GNOME 2. You can enable it using:

gsettings set org.gnome.desktop.session session-name gnome-fallback

It must be done from the GNOME session. One can get a terminal by pressing Alt+F2, entering gnome-terminal<enter> and this will be accessible anyway.

Debian Jessie (GNOME >= 3.8)

In Debian Jessie with GNOME version >= 3.8, there is a mode called GNOME classic. This one uses the GNOME shell directly to achieve GNOME 2 alike user experience. When using startx, you can set up your .xinitrc as follows to use this mode:

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

exec gnome-session --session=gnome-classic

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) to squeeze (6), as the migration maintains the necessary configuration so that ibmtts can be accessed via gnome-speech.

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 (debian 6), see 696965, the following patch can be applied to Xorg 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;

Run Pulseaudio as root

To be able to run speech both at the text console and in graphical sessions, one can run pulseaudio as root. This is not recommended by upstream pulseaudio so one has to tinker a bit:

put this into /root/.config/pulse/client.conf :

default-server = unix:/tmp/pulse.sock
autospawn = no

and put this into $HOME/.config/pulse/default.pa

.include /etc/pulse/default.pa
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse.sock

Disable Pulseaudio

If Pulseaudio causes problems, there are multiple different ways to use the underlying ALSA sound system as a replacement.

For Desktop environments like Mate or even more lightweight alternatives, you can try to remove the package:

sudo apt-get remove pulseaudio

The two or three packages also marked for removal are not essential.

For other desktop environments like GNOME it is impossible to remove Pulseaudio. Disabling works as follows:

1. Execute the command

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

2. Instruct pulseaudio not to spawn itself automatically. Edit /etc/pulse/client.conf and search for a line like:

; autospawn = yes

and change it into

autospawn = no

Hint for speech-dispatcher: Speech-Dispatcher refuses in some cases to switch to ALSA. In this case one can edit /etc/speech-dispatcher/speechd.conf and changes the line

# ?AudioOutputMethod "pulse"

to

AudioOutputMethod "libao"

and restarts speech-dispatcher via

killall speech-dispatcher; speech-dispatcher

Tips and tricks

Autostart Of Orca

Gnome 3

Orca can be enabled to start automatically in the Gnome 3 user session by hand by running these lines as normal user:

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

Gnome 2

Orca can be enabled to start automatically in the Gnome 2 user session by hand by running these lines as normal user:

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

MATE

Orca can be enabled to start automatically in the MATE user session by hand by running these lines as normal user:

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
GSETTINGS_BACKEND=dconf gsettings set org.mate.interface accessibility true
GSETTINGS_BACKEND=dconf gsettings set org.mate.applications-at-visual startup true

XFCE

The accessibility support for XFCE has to be enabled manually. This can be achieved either by clicking the "Enable assistive technologies" checkbox in the XFCE accessibility settings, or by running this command in an X session:

   xfconf-query -c xfce4-session -n -t bool -p /general/StartAssistiveTechnologies -s true

Alternatively you can put the following into $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml:

<?xml version="1.0" encoding="UTF-8"?>

<channel name="xfce4-session" version="1.0">
  <property name="general" type="empty">
    <property name="StartAssistiveTechnologies" type="bool" value="true"/>
  </property>
</channel>

The file might already exist. If you haven't configured XFCE yet, you can replace the content of this file by the above excerpt. Please note that this will drop your XFCE session configuration. If you don't want to lose your existing XFCE session parameters, just add another "general" property, it will look like this:

<channel name="xfce4-session" version="1.0">
  <property name="splash" type="empty">
    ...
  </property>
  <property name="general" type="empty">
    <property name="FailsafeSessionName" type="empty"/>
    <property name="StartAssistiveTechnologies" type="bool" value="true"/>
  </property>
  <property name="sessions" type="empty">
    <property name="Failsafe"
    ...
  </property>
</channel>

For now, orca will not autostart. The simple workaround is to just drop the "?OnlyShowIn" line in /etc/xdg/autostart/orca-autostart.desktop , or to add XFCE to it.

LXDE and LXQT

For now, orca does not start automatically. The simple workaround is to just drop the "?OnlyShowIn" line in /etc/xdg/autostart/orca-autostart.desktop. Alternatively, LXDE or LXQT can be added at the end of this line.

speakup and package configuration questions

When using the speakup screen reader, the default frontend for package configuration is not convenient. One can switch to the Readline frontend by default by running

dpkg-reconfigure debconf

and choose Readline. One can also choose the frontend for just a session by running

export DEBIAN_FRONTEND=readline

Accessibility in chroots

In order for applications to be accessible from within chroots, they need to have access to the at-spi bus. This bus lives in both /tmp and $HOME, so the following is needed, in addition to the usual at-spi configuration inside the chroot:

mount /tmp /where/the/chroot/is/tmp -o bind
mount /home /where/the/chroot/is/home -o bind

And as usual, the DISPLAY and XAUTHORITY environment variable should set to the value they have outside the chroot, in order to access the X display.

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

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/