- Please help us help you
- Debian installer accessibility
- LiveCD accessibility
- Braille support
- Speech support
- Accessible boot
- Console fonts
Graphical User Interface
- Color Themes for accessibility
- Color Blindness
- Full Screen magnification support
- Magnifying Glass
- Controlling the mouse from the keyboard
- gdm accessibility
- lightdm accessibility
- 32bit applications accessibility
- Java accessibility
- Tips and tricks
- Related links
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, as well as the current draft for next upload (also on https://salsa.debian.org/installer-team/installation-guide/tree/master/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 emitted on BIOS systems, while 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' (on BIOS systems this has to be followed by return; on UEFI systems that must not be done). To enable speech, 's' (and again followed by return on BIOS systems but not on UEFI systems) will enable speech support. Now various shortcuts are available: 'x' for expert installation, 'r' for rescue mode or 'a' for automated installation. Again these need to be followed by return when using a BIOS system.
Starting from Debian Buster (Debian 10), 'c' can be used in the boot menu to enable the high-contrast theme (was 'd' in RC 1).
Some recent Intel sound cards need non-free firmwares, so you may need to use the unofficial image that includes them from http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/10.0.0+nonfree/amd64/
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 within the installer, 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!)
amixer -c 0 scontrols
amixer -c 1 scontrols
amixer -c 0 scontents
amixer -c 1 scontents
(for these, the important sections to report are the Master, Headphone, Speaker, PCM)
and post the output to firstname.lastname@example.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 email@example.com so we can know what sound driver is missing.
If speech synthesis does not come up at reboot into the installed system, we also need information to find out where the bug is. Please post to firstname.lastname@example.org the results of the same command above, plus
To record some boot option and thus avoid typing them blindly, one can remaster an image by using the script below:
Testing accessibility in the debian installer is documented on the Debian installer accessibility page.
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 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
you have read permission on /etc/brlapi.key
Try ls -l /etc/brlapi.key and check that the first column of the output contains an r three times.
- brltty is up and running.
Execute systemctl is-active brltty
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.
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.
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.
1. When using brltty-espeak, uncomment or insert the following line:
2. When using brltty-speechd, uncomment or insert the following line
Afterwards reload BRLTTY with sudo service brltty restart.
Speakup is an in-kernel screen reader for the Linux text console. You can see its Speakup User's Guide
The simplest way is using the espeakup package which directly plugs the espeak software synthesis to the in-kernel screen reader. You need to add
to /etc/modules to get the kernel part loaded so espeakup can work. You can configure in /etc/default/espeakup the espeak voice to be used as well as the card to be used.
Please see the section about speech-dispatcher for more details.
Hardware speech syntheses are also supported on the text console through the speakup drivers. Before Debian Buster (10) this however requires to disable the 8250 serial port driver by setting this variable in /etc/default/grub:
one can then add for instance this in /etc/modules to get a speakup module loaded:
ToDo: needs to be written. Document:
- aim of spd
- 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:
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"
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
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
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
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:
And make it executable:
chmod +x /boot/petitboot.sh
Eventually, run update-grub to update /boot/grub/grub.cfg.
Grub does not include magnification, but the font size can be increased easily by generating a font file:
grub-mkfont -s 60 -o /boot/grubfont.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
Size 60 can be changed to better fit your needs.
And adding to /etc/default/grub the line
to actually use thefont.
update-grub needs to be rerun after modifying /etc/default/grub. It does not need to be re-run if you re-run grub-mkfont to set a different font size.
Graphical User Interface
The simplest way to install these graphical user environments is to install the corresponding tasks, for instance:
apt install task-gnome-desktop
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
For KDE qt4 applications accessibility such as vlc player, the qt-at-spi package needs to be installed, and the QT_ACCESSIBILITY environment variable has to be set to 1:
(this should already be done by /etc/X11/Xsession.d/90qt-a11y)
Note: not every application written using the gtk or qt toolkits is accessible, even when accessibility is enabled. For example, spotify remains not accessible.
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.
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
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:
For gtk3, one can set this environment variable:
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 on their dock with a menu option to enable full screen zoom & pan. The Cinnamon magnifier however does not support focus tracking, the gnome-shell one does.
Option 1: Kmag
The KDE screen magnifier can be installed with apt-get install kmag.
Option 2: Virtual Magnifying Glass
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 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.
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):
or for Wheezy (Debian 7) and later:
32bit applications accessibility
dpkg --add-architecture i386
Then update the APT database:
and you can now install the 32bit version of the GTK bridge:
apt-get install libatk-adaptor:i386 libgail-common:i386
and of the Qt bridge:
apt-get install qt-at-spi:i386
To access Java applications, one needs to install the libatk-wrapper-java package. Unfortunately, in Debian versions before 9 (Stretch) OpenJDK has disabled accessibility by default (See 705511). It has to be reenabled 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):
Virtualizations tools are more or less accessible
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.
Bus 001 Device 002: ID 0403:fe72 Baum
Other full accessibility options configuration
- You can also obtain full accessibility at your Debian system (jessie, stretch, buster...) following the steps detailed below.
- With the options described you can obtain accessibility on console text mode (CLI) and graphical user interface (GUI) using root (# prompt)user and normal user ($ prompt). In the sections above, the audio output for another applications (spotify, firefox on youtube...) may be broken, audio output being only used in the orca and speakup screen reader and vlc player application. This section describes how to obtain full accessibility using pulseaudio, alsa and speech dispatcher simultaneously.
Preparing the environment
- Firstly, it is needed that the system is installed using a speech synthesis installation. In this case, the bootup is initialized with accessibility support enabled.
Accessibility on CLI
- If you installed the system without Graphical user interface, the default configuration after install is optimized to work and it is not necessary to configure anything else. In some cases, you need to increase the volume of speech. You can solve it with the following commands:
amixer set Master 50%+
amixer set PCM 50%+
Note: the 50% is an example value. You can use any other value that suits for you.
In some cases it is needed to unmute the audio output (e.g. after boot you don't have any message of your screen reader or you're not receiving audio at all). You can solve this with the following commands:
amixer set Master unmute
amixer set PCM unmute
- It is very rare what you need to use these commands, because after speech installation and reboot, the system start should be speaking and audible. In console text mode, the pulseaudio server is installed, but it is not used. In this case, it isn't necessary to configure it and should work normally.
Graphical user interface (GUI)
If you select a graphical user interface during speech synthesis installation (Mate or LXDE, for example), you should do the following steps to obtain a full accessibility, including root user in GUI and full accessibility on the console.
- As root in a console text mode (ctrl+alt+f1 for example), you should edit the following config files:
- On the /etc/pulse/client.conf, replace:
; Autospawn = yes
Autospawn = no
save this file and exit.
- You need run speech dispatcher as a system-wide. For this, edit /etc/default/speech-dispatcher and replace this line:
RUN = no
RUN = yes
save this file and exit
- Also in /etc/speech-dispatcher/speechd.conf, replace this line:
# AudioOutputMethod "pulse"
Save this file and exit.
- After following these steps, add the root user to audio group. For this, run the following command (as root):
usermod -G audio root
In this section and to obtain full accessibility, it isn't necessary to use the speechd-up package. With this configuration the speechd-up package usually has issues, so it's preferably not to use it.
For this configuration and for speakup, use only espeakup (installed by default) and you shouldn't have conflicts with orca and/or brltty.
- After making the steps described, make a system reboot, using the reboot command. After reboot, you should have full accessibility (speech for normal user, speech for root user on GUI and speech on console text mode). Also, you shouldn't have problems with audio on another applications and you have:
- alsa, for speakup and applications that requires alsa.
- pulseaudio available for orca and other applications that requires pulseaudio for audio output.
No Speech After Login In GNOME
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
Debian Jessie (GNOME >= 3.8)
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:
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
Pulseaudio can cause problems when running a console screen reader as root that is using ALSA, as for instance Speakup or BRLTTY. Apart from running Pulseaudio as root, it can be disabled as well.
There are two options available. The first one works for MATE or an even more light-weight desktop environment by removing the package:
sudo apt remove pulseaudio
1. Execute the command
dpkg-divert --add --rename /usr/share/alsa/pulse-alsa.conf
; autospawn = yes
and change it into
autospawn = no
Hint: you should reconfigure Speech-Dispatcher to use a different audio output method. Edit /etc/speech-dispatcher/speechd.conf and change the line
# AudioOutputMethod "pulse"
You need to restart Speech-Dispatcher:
killall speech-dispatcher; speech-dispatcher
If you configured Speech-Dispatcher to run system-wide, the command to restart it is:
systemctl restart speech-dispatcher
and you should add root to the audio group using sudo adduser root audio.
Tips and tricks
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
and choose Readline. One can also choose the frontend for just a session by running
Accessibility in chroots
mount /tmp /where/the/chroot/is/tmp -o bind mount /home /where/the/chroot/is/home -o bind
Install the package vbetool and use the command
sudo vbetool dpms off
to shut down the monitor and
sudo vbetool dpms on
user ALL=(root) NOPASSWD: /usr/sbin/vbetool
.(where "user" must be replaced with the user name.)
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
setterm -blank force > /dev/tty1
On the graphical X11 console, that can be done using this script to toggle the display off and on:
Sound effects On The GNOME Desktop
If you would like to have sound effects to help you navigating on the GNOME desktop, run
faster speaking eSpeak
This will make eSpeak speak 50 % faster.
More tips are available on http://brl.thefreecat.org/wiki/
- #debian-a11y on the oftc IRC network, come and chat with us!
Gnome for the Blind provides some information about gnome accessibility support