Learn Linux 101: Accessibility
Help when you need it
In this tutorial, learn about accessibility, sometimes called universal access or assistive technology. Learn to:
- Understand and configure visual settings and themes.
- Understand assistive technology.
Accessibility in Linux
In today’s world, many computer users have need for assistive technology, sometimes also called universal access. Many people know of the problems faced by the renowned mathematician, physicist, and cosmologist, Stephen Hawking who was able to make great contributions to science with the help of assistive technology. Many users have lesser or other challenges in using a computer. This tutorial introduces you to assistive technologies that help people use computers when they might otherwise not be able to. In the interest of full disclosure, I lost most of my sight in 2015 and I have only recently been able to resume driving a car with the aid of a bioptic telescope. I use many of the techniques described in this tutorial myself on a daily basis.
This tutorial helps you prepare for Objective 106.3 in Topic 106 of the Linux Administrator (LPIC-1) exam 101. The objective has a weight of 1. This tutorial reflects the Version 5.0 objectives as updated on October 29, 2018.
To get the most from the tutorials in this series, you need a basic knowledge of Linux® and a working Linux system on which you can practice the commands that are covered in this tutorial. Sometimes, different versions of a program format output differently, so your results might not always look exactly like the listings and figures that are shown here.
The examples in this tutorial come from Fedora 32, Ubuntu 20.04 LTS, and openSUSE Tumbleweed from June 2020.
Types of assistance
Assistance is generally a function of a graphical desktop and the capabilities may depend on your desktop (such as GNOME or KDE). Some functions may also depend on your hardware, such as video card or screen capabilities, presence of sound card, whether you have a real keyboard or only an on-screen keyboard, and so on. Some functions require the installation of additional packages such as the Orca screen reader. Support under recent versions of GNOME is reasonably good, so I will focus mostly on that in this tutorial as the goal here is awareness. I will also briefly discuss about openSUSE Tumbleweed using KDE to show some differences.
Most assistive technologies fall into the following general categories:
- Seeing: These technologies make the screen easier to read and include high-contrast settings, screen zoom, large fonts, and screen reading.
- Hearing: These include visual alerts that you might miss if you don’t hear well and sometimes other customization of audible alerts.
- Typing: These include on-screen keyboards and functions such as sticky keys to help you if you cannot type at common speeds or cannot hold down two keys together because you are unable to use both hands to do it.
- Pointing and clicking: These are functions to help you use or locate the mouse. They include functions such as how long between clicks counts as a double click or whether holding down a button for an extended time counts as a second click.
- Gesturing: These include multiple key presses, or long duration key presses, as well as multi-finger operation on touchpads or touchscreens.
These assistive technologies are mostly available through your desktop setting dialog box. Some have associated keyboard shortcuts. Your settings dialog box may allow you to customize these shortcuts or add more shortcuts.
Different systems, even systems using a common desktop manager, such as GNOME, may have very different settings dialog boxes and some items that might be considered assistive may fall under different sections of the settings. I will show you some examples, but these are only examples of what you might find.
Settings dialog boxes
Figure 1 shows the settings dialog box on my Fedora 32 system using GNOME on Wayland. At the top is an option to always show the universal access menu on the desktop. This icon with a drop-down shows in the upper right of my desktop arrangement, alongside a set of icons with a drop-down list that allows quick access to settings, network, and shutdown or logoff options. I have illustrated this above the main settings dialog image. The list of items shown in this part of the settings dialog includes items for seeing, hearing and the header for the typing options.
Figure 1. Fedora 32 GNOME Settings dialog box
For contrast, the openSUSE accessibility settings dialog box uses tabs to divide the sections. As you explore, you will find that the available settings may differ between systems. You can hover your mouse pointer over a setting in this dialog box to learn more about it as I illustrate in Figure 2. On the other hand, there is no setting to pin an accessibility settings icon as in GNOME.
Figure 2. openSUSE Tumbleweed KDE settings
So you can see that different systems present accessibility settings differently.
Settings for seeing
A few settings related to seeing frequently appear as hardware settings. These are often basic display resolution settings and sometimes input device settings such as mouse speed or size.
One basic setting that is usually under the display hardware settings rather than the universal access settings is the screen resolution and sometimes scaling. For example, I have one monitor that is a Samsung 28-inch 4K monitor capable of 3840×2160 pixel resolution. Unfortunately, my eyes are not capable of handling the default settings at that resolution. Figure 3 shows a typical display settings dialog box for openSUSE Tumbleweed. The resolution drop-down list shows the preferred resolution of 3920×2180 with a 16:9 aspect ratio. Other values appear in the drop-down list, including a value of 1920×1080 which would effectively make the screen work like a full-HD display. There is also a slider to allow scaling of the display. I have it set to 200% which theoretically makes the screen render as full-HD. Note that KDE on X11 allows small incremental scaling amounts. Other systems such as my Fedora 32 GNOME setup only allow specific values such as 100%, 200%, or 300%.
Figure 3. openSUSE Tumbleweed display settings
Note that as of the time of writing (June 2020), the scaling on openSUSE Tumbleweed does not appear to work correctly. For my setup, I have to change the resolution to 1920×1080 to see a difference.
Setting a non-default resolution or scaling the display effectively provides a fixed zoom amount compared to the system default for the device. I will look at other zoom possibilities later in this tutorial.
Some mouse or pointer settings may also be managed as hardware settings rather than accessibility or universal access settings. These typically include items such as which button is considered left and which as right along with speed and size settings. Be sure to check hardware settings as well as accessibility or universal access settings.
High contrast makes it easier to distinguish text on a screen. Sometimes an entire desktop theme will be called a high-contrast theme and it will use colors that stand out well against each other. On many systems today, traditional black text has been replaced with a lighter shade of gray. Turning on high contrast will make these darker as well as switching to a set of icons that provide better contrast. See the GNOME release notes in the resources for more information.
Large text provides a larger text for the desktop and for applications that observe the desktop settings. Figure 4 shows the difference that turning on the large text settings makes on my Fedora 32 system.
Figure 4. Fedora 32 large text
Many applications also allow you to alter the size of text in the application. For example, many browsers support Ctrl++ and Ctrl+- to increase or decrease text size and Ctrl+0 often resets the size back to default. Mozilla Firefox, for example, allows you to set a preference specifying whether these actions apply to text only or to the whole display area. Browsers may also allow you to set a default font and font size which may be better for you. Poorly designed web pages may not always behave well with these preferences.
Cursor size can be critical in helping you find the cursor on a screen. Recent GNOME settings expose this as shown in Figure 5 where my actual cursor is the second smallest size rather than the default smallest.
Figure 5. Fedora GNOME cursor size
Earlier versions exposed this using either the
dconf-editor or the
gsettings command. Listing 1 shows how to display the cursor size using
gsettings with the
get option to display the current cursor size. Use the
set option and a numeric value to change it.
Listing 1. Using gsettings to display cursor size
[ian@attic5-f32 ~]$ gsettings get org.gnome.desktop.interface cursor-size
Zoom capability minimally involves being able to view part or all of a screen at some magnification. Some systems use a magnifier that magnifies a small area around the mouse pointer or cursor. At the other extreme, the magnifier magnifies the whole screen. While this usually means that at least part of the original screen is now off-screen, the typical operation moves the visible part as the cursor is moved. The amount of zoom is usually configurable and the area used for the magnified image is often also configurable, starting with a small area around the pointer through values such as half a screen. Other options may change the colors while zoom is active or display cross-hairs over the zoomed image to show the current position more clearly. Figure 6 shows an example on my Fedora 32 system where the magnifier uses the bottom half of the screen at 125% magnification and the text is white on black rather than black on white.
Figure 6. Combining zoom with white on black text
Besides this GNOME zoom capability, applications such as XMag or LMag can also provide screen magnification.
Individual applications, such as the GIMP, LibreOffice (or OpenOffice) may also offer a zoom capability for that application, typically under the View menu option. This may be instead of the Ctrl++ and ctrl+- options discussed earlier. Resizing windows, for example by dragging a corner to make a window larger, may also resize the contents.
A screen reader helps you navigate pages by reading the structure and contents of the page. The Orca screen reader is a popular reader developed as part of the GNOME project. It is also available for KDE and Solaris.
Orca can provide speech as output through a speech synthesizer or refreshable braille display (braille terminal). For speech, you can configure the language used as well as the synthesizer you want to use if you prefer something other than the default. Orca has an extensive configuration allowing you to decide which parts of a page to read, how to read numbers, and many other aspects of page reading.
There are many configurable key bindings to help you with navigation and using the tool. In particular, you can turn Orca on or off using the Super+Alt+S key combination where the Super key is the Windows key on a typical PC keyboard or the Apple key (also known as the Command key) on an Apple keyboard.
Figure 7 shows a universal access dialog box on Ubuntu 20.04 LTS. The option to always show the universal access menu is turned on, but the cursor is still set to default (small).
The following audio file is a recording of Orca helping me navigate the menu using a speech synthesizer.
Audio 1. Orca recording to navigate a menu
I use the Down Arrow key to move down selections until I reach the Cursor Size option. I then press Enter to open the sub-dialog box to change it. This dialog box is similar to the one in Figure 5. After Orca tells me that the first item is selected, I press the Right Arrow key to move to the second item, then press the Space bar to select it. Finally, I press Esc to close the sub-dialog box.
Figure 7. Ubuntu universal access settings
The following audio file illustrates Orca reading text from this tutorial as a document in Writer.
Audio 2. Orca reading text
This option enables a sound when you press modifier keys such as Num Lock, Caps Lock, or Scroll Lock. At the time of writing, the sound is the same for both on and off. Different sounds for each state might be even more useful. Use the Sounds section of the settings dialog box if you wish to configure the sound. For example, you can change it to the sound of a dog barking or a drip.
Settings for hearing
There is one setting to help you with hearing problems.
Use the visual alerts setting as illustrated in Figure 8 to flash the active window or the entire screen whenever an alert sound is played. Note that there is a button to test the flash setting.
Figure 8. Setting visual alerts in Ubuntu
Settings for typing
Several settings are grouped under the general category of typing.
If you use a smart phone or a tablet you are probably familiar with using an on-screen keyboard. Linux also has a screen keyboard that you can enable if you need it, for example on a device without a keyboard. Figure 9 shows an example.
Figure 9. Ubuntu screen keyboards
This setting controls how holding down a key will generate multiple key presses. You can turn it on or off and you can alter the delay after the first key press until the repeat operation starts as well as the speed at which key presses are repeated.
Some people are sensitive to things that flash repeatedly. This setting allows you disable cursor blinking in text fields and also to control the blink rate if the setting is enabled.
Typing Assist (AccessX)
The Typing Assist options deal with issues such as whether a user can hold multiple keys at a time or how fast key actions should change based on user actions. The GNOME settings dialog box on Ubuntu 20.04 TS is shown in Figure 10.
Figure 10. Ubuntu GNOME Typing Assist settings
The first of these four settings is to enable the keyboard to turn these settings on or off. When enabled, pressing Shift five times in a row will turn on sticky keys.
Sticky keys treats a sequence of individually pressed keys (such as Alt then F1) as if they had been held down together. Options allow you to disable the function by actually pressing two keys together, or to beep when a modifier key is pressed.
Slow keys adds delay between when a key is pressed and when it is accepted. Compare with the function for repeat keys. Again, you can enable beeps when a key is pressed, accepted, or rejected.
Bounce keys ignore rapid duplicate key presses, accepting them as a single key press.
Settings for pointing and clicking
There are a few settings that enable you to point to a specific option and click it.
The mouse keys setting allows you to use the keys on a numeric keypad to move the mouse pointer or to click. The 5 central keys (8, 4, 5, 6, and 2) are used. 8 moves the mouse up and 2 moves it down, while 4 and 5 move it left or right respectively. Press 5 to click. You must have Num Lock off to use these keys as mouse keys. Turn it on if you need to type numbers using the keypad.
If you have a keyboard without a numeric pad ,you can usually use Alternate (Alt) keys in combination with a modifier such as a Function (Fn) key.
Enabling the locate pointer setting allows you to press the (left) Ctrl key and have a small animation (such as an expanding circle) and shows you where the pointer is located. Compare with using a larger mouse pointer.
This allows you to simulate a secondary click by holding down the primary button. The delay is usually configurable. If you are using mouse keys you probably want this enabled so that holding down the 5 key will simulate a secondary click.
Some systems also allow you to hover click, that is, simulate a click when the pointer hovers.
The double-click delay specifies the maximum amount of time between two successive clicks for the two clicks to be counted as a double-click.
If you use a smart phone or a tablet, you are probably familiar with using various gestures such as swipe, pinch, or multi-finger gestures to perform tasks. Linux also supports such gestures for both touchscreens and touchpads. I have included some references in the Resources for this tutorial.
Sometimes key combinations such as using Super+Alt+8 to turn screen magnification on or off are also called gestures so you might encounter the term in this context.
This concludes your introduction to Topic 106.3 Accessibility.
- Find more content at the IBM Developer main page.
- The Internet standards are maintained by the IETF as Requests for Comment (RFCs).
- GNOME 3.4 Release Notes includes notes on what is new in accessibility.
- See the Orca Screen Readersection in the GNOME help for more information on using Orca.
- Learn about GNOME Gestures & Multitouch for touchscreens and touchpads.
- Learn Use touchscreen gestures to navigate the desktop in Ubuntu 20.04.
- Learn about using and customizing Touchpad Gestures in Ubuntu 18.04 LTS.