# System Administration

This appendix describes some tasks that a system administrator needs to perform to enable accessible login and to facilitate the use of the assistive technologies that are available in the GNOME Desktop.

## Configuring the Desktop for Accessible Login

The GNOME Desktop includes an Accessible Login feature. The Accessible Login feature enables users to:

- Log in to the desktop even if the user cannot easily use the screen, mouse, or keyboard in the usual way.

- Launch assistive technologies at login time by associating a user action with an assistive technology application. The user can perform the user action from the standard keyboard, or from a keyboard, pointing device, or switch device that is attached to the USB or PS/2 mouse port. These user actions are called gestures.

- Change the visual appearance of the login dialog before the user logs in, for example, to use a high contrast theme for better visibility.

### To Enable Accessible Login

To enable the Accessible Login feature for the GNOME Desktop, you must configure the desktop to use the GNOME Display Manager (GDM) as the login manager. GDM is the default login manager on Linux systems but not on Solaris systems, therefore the instructions to enable Accessible Login differ depending on the platform you are using.

#### To Enable and Configure GDM on Solaris Systems

To enable and configure GDM as the login manager on Solaris systems, perform the following steps:

1. Log in as the `root` user.

2. Open the file `/etc/X11/gdm/gdm.conf`.

3. Search the file for the following line:

   `#AddGtkModules=false`

   and replace the line with the following:

   `AddGtkModules=true`

   This step enables the GtkModules.

4. Search the file for the following line:

   `#GtkModulesList=gail:atk-bridge:dwellmouselistener:keymouselistener`

   and delete the `#` from the start of the line so that the line reads:

   `GtkModulesList=gail:atk-bridge:dwellmouselistener:keymouselistener`

   The above lines must be displayed as single lines in the `gdm.conf` file without line breaks. The formatting of this guide may display the lines over two lines.

   This step loads all of the GtkModules to enable assistive technologies such as On-Screen Keyboard and Screen Reader and Magnifier. You can edit the line above further to load only the GtkModules that you require to support the user base. For example:

   - If you need to use the Screen Reader and Magnifier, include `gail` and `atk-bridge`.

   - If you need to use a pointing device without buttons or switches, include `gail`, `atk-bridge`, and`dwellmouselistener`.

   - If you use pointing devices with switches, alternative physical keyboards, or switch and button devices, include `keymouselistener`.

   - On-Screen Keyboard can operate without `gail` and `atk-bridge` but with a reduced feature set.

   For optimum accessibility, include `gail` and `atk-bridge`.

5. Save the `/etc/X11/gdm/gdm.conf` file.

6. Enter the following command to stop the dtlogin manager:

   `/usr/dt/bin/dtconfig -d`

7. Enter the following commands to configure GDM as the login manager:

   `svccfg import /var/svc/manifest/application/gdm2-login.xml`

   `svcadm enable application/gdm2-login`

   If you make any changes to the `/etc/X11/gdm/gdm.conf` file after you enable GDM, you can execute the following command to restart GDM and activate the changes:

   `gdm-restart`

8. Edit the file `/etc/passwd` to append the following to the end of the `gdm` line:

   `:/etc/X11/gdm/home`

9. Create the `/etc/X11/gdm/home` directory and assign ownership of the directory to the `gdm` user.

10. Restart your system.

#### To Configure GDM on Linux Systems

To configure GDM on Linux systems, perform the following steps:

1. Log in as the `root` user.

2. Open the file `/etc/X11/gdm/gdm.conf`.

3. Search the file for the following line:

   `#AddGtkModules=false`

   and replace the line with the following:

   `AddGtkModules=true`

   This step enables the GtkModules.

4. Search the file for the following line:

   `#GtkModulesList=gail:atk-bridge:dwellmouselistener:keymouselistener`

   and delete the `#` from the start of the line so that the line reads:

   `GtkModulesList=gail:atk-bridge:dwellmouselistener:keymouselistener`

   The above lines must be displayed as single lines in the `gdm.conf` file without line breaks. The formatting of this guide may display the lines over two lines.

   This step loads all of the GtkModules to enable assistive technologies such as On-Screen Keyboard and Screen Reader and Magnifier. You can edit the line above further to load only the GtkModules that you require to support the user base. For example:

   - If you need to use the Screen Reader and Magnifier, include `gail` and `atk-bridge`.

   - If you need to use a pointing device without buttons or switches, include `gail`, `atk-bridge`, and `dwellmouselistener`.

   - If you use pointing devices with switches, alternative physical keyboards, or switch and button devices, include `keymouselistener`.

   - On-Screen Keyboard can operate without `gail` and `atk-bridge` but with a reduced feature set.

   For optimum accessibility, include `gail` and `atk-bridge`.

5. Save the `/etc/X11/gdm/gdm.conf` file.

   If you make any changes to the `/etc/X11/gdm/gdm.conf` file after you enable GDM, you can execute the following command to restart GDM and activate the changes:

   `gdm-restart`

6. Edit the file `/etc/group` and append the following to the `audio` line:

   `,gdm`

   This step ensures that speech works with GDM.

7. Restart your system.

### To Start Assistive Technologies at Login

If you load the `keymouselistener` and `dwellmouselistener` GtkModules in the GDM configuration file, you can assign user actions to launch specific assistive technologies at login time. These user actions are called gestures. The gesture associations are contained in the following GDM configuration files:

- `/etc/X11/gdm/modules/AccessKeyMouseEvents`

- `/etc/X11/gdm/modules/AccessDwellMouseEvents`

If you modify these files, you must restart your system before the changes take effect.

The following sections contain examples of the gestures that you can add to the GDM configuration files.

The gestures must be contained in a single line in the `AccessKeyMouseEvents` file without line breaks. The formatting of this guide might display the examples in the following sections over two lines.

#### To Start Screen Reader Using a Keyboard Shortcut

Edit the `AccessKeyMouseEvents` file to associate keyboard shortcuts with assistive technologies. For example, the following line enables you to press-and-hold CtrlS for one second to start Screen Reader and Magnifier in speech and Braille mode:

Solaris:

`<Control>s 1 1000 10000 /usr/sfw/bin/srcore --login --disable-magnifier --enable-speech --enable-braille`

Linux:

`<Control>s 1 1000 10000 srcore --login --disable-magnifier --enable-speech --enable-braille`

#### To Start Magnifier Using a Keyboard Shortcut

Edit the `AccessKeyMouseEvents` file to associate keyboard shortcuts with assistive technologies. For example, the following line enables you to press-and-hold CtrlM for one second to start Screen Reader and Magnifier in magnifier mode:

Solaris:

`<Control>m 1 1000 10000 /usr/sfw/bin/srcore --login --enable-magnifier --disable-speech`

Linux:

`<Control>m 1 1000 10000 srcore --login --enable-magnifier --disable-speech`

#### To Start On-Screen Keyboard Using a Switch or Button Gesture

Edit the `AccessKeyMouseEvents` file to associate switch, key, or button gestures with assistive technologies. Since the primary input device for many On-Screen Keyboard users is a switch or button, this is a good way to enable users to start On-Screen Keyboard at login time.

If there is a tendency for a user to start an application unintentionally, you can associate the gestures with multiple switch presses or minimum durations. For example, the following line starts On-Screen Keyboard in inverse scanning mode when the user presses the switch that is defined as Switch 2 three times within two seconds, for a minimum of 100 milliseconds for each press:

Solaris:

`<Switch2>3 100 2000 /usr/sfw/bin/gok --login --accessmethod=inversescanning --scan-action=switch1 --select-action=switch2`

Linux:

`<Switch2>3 100 2000 gok --login --accessmethod=inversescanning --scan-action=switch1 --select-action=switch2`

Users who use single switches may prefer to start On-Screen Keyboard in automatic scanning mode. The following line starts On-Screen Keyboard in automatic scanning mode when the user presses the switch on an alternative access device for more than four seconds:

Solaris:

`<Switch>1 4000 5000 /usr/sfw/bin/gok --login --accessmethod=automaticscanning --scan-action=switch1 --select-action=switch1`

Linux:

`<Switch>1 4000 5000 gok --login --accessmethod=automaticscanning --scan-action=switch1 --select-action=switch1`

For information about the On-Screen Keyboard operating modes, see the online Help for On-Screen Keyboard.

#### To Start On-Screen Keyboard Using a Motion-only Gesture

You can define gestures that involve only the motion of a pointing device such as a mouse, or an alternative pointing device, such as a head pointer or trackball. The syntax of the gesture does not change depending on whether you are using a mouse or an alternative pointing device. Edit the `AccessKeyMouseEvents` file to associate motion gestures with assistive technologies.

If the `dwellmouselistener` GtkModule is loaded, alternative pointing devices are temporarily latched to the core pointer. This means that if the user moves the alternative pointing device, the onscreen pointer moves.

For example, the following line starts On-Screen Keyboard in dwell mode when the user moves the onscreen pointer from inside the login dialog through the top edge, back into the dialog through the top edge, out of the dialog through the left edge, back into the dialog through the left edge, and similarly through the bottom and right edges of the dialog in a cross pattern:

Solaris:

`TTLLBBRR O 10000 /usr/sfw/bin/gok --login --access-method=dwellselection --input-device=MOUSE[3]`

Linux:

`TTLLBBRR O 10000 gok --login --access-method=dwellselection --input-device=MOUSE[3]`

Note that the `--input-device` parameter specified in the gesture must match the name of the extended user input device, such as a head pointer or trackball, as specified in `/etc/X11/XF86Config`.

### Additional Requirements for Accessible Login

To enable the Accessible Login feature to use alternative pointing devices and switch devices such as sip-and-puff switches, wheelchair-mounted switches, or trackballs, you might need to modify your X server system configuration to recognize these devices. You can use most devices that emulate mouse buttons with the Accessible Login feature and On-Screen Keyboard, including USB single switches and mouse-like pointing devices.

You should not configure an alternative input device to control the primary onscreen pointer. This might result in undesirable behavior or cause situations from which the user of the alternate input device cannot recover without using the primary keyboard or mouse. To prevent this problem, please remove any occurrences of the attributes `SendCore` or `AlwaysCore` from any of `InputDevice` lines in the X Server configuration file.

## Configuring the Java Environment for Accessibility on Solaris Systems

To configure the Java environment on Solaris systems for accessibility, perform the following steps:

1. Log in as the `root` user to the base directory of the Java SDK installation.

2. Enter the following command:

   `cd jre/lib`

3. Enter the following command:

   `ln -s /usr/share/jar/accessibility.properties`

4. Enter the following command:

   `cd ext`

5. Enter the following command:

   `ln -s /usr/share/jar/gnome-java-bridge.jar`

## Enabling XKB on Solaris Systems

If you are using the desktop for the Solaris operating system on a SPARC platform, you must enable XKB on your system before you can use the AccessX preference tool, Screen Reader and Magnifier, or On-Screen Keyboard.

XKB is not currently supported on Sun Ray systems.

To enable XKB on a non-Sun Ray Solaris system, perform the following steps:

1. Log in as the `root` user.

2. Check if the path and file `/etc/dt/config/Xservers` exists on your system.

3. If the `/etc/dt/config` directory does not exist, enter the following command:

       mkdir -p /etc/dt/config

4. If the `Xservers` file is not present, enter the following command:

       cp /usr/dt/config/Xservers /etc/dt/config/Xservers

5. Open the `Xservers` file in a text editor and scroll to the end of the file.

6. Append the following to the command line at the end of the file:

       +kb

7. Save and close the `Xservers` file.

8. Enter the following command at a command line:

       pkill -HUP dtlogin

9. Open the `/etc/X11/gdm/gdm.conf` file in a text editor.

10. Scroll towards the end of the file until you see the line `[server - standard]`.

11. Edit the `command` line in this section to append the following to the end of the line:

    `+accessx +kb`

12. Save and close the `gdm.conf` file.

13. Log out of your session and log in again.

14. To verify if XKB is running, execute the following command:

    `xdpyinfo`

    then search for XKEYBOARD in the extensions list.

## Enabling Full Screen Magnification

The following sections describe the methods to enable full screen magnification.

### To Enable Full Screen Magnification Using Two Video Cards

To enable full screen magnification in Screen Reader and Magnifier using two physical video cards, perform the following steps:

1. Configure two video cards as :0.0 and :0.1.

   It is not essential that both video cards have the same resolution and bit depth. However, if the resolutions and bit depths of both cards differ greatly, the apparent magnification factor may differ slightly from the nominal magnification factor.

2. Choose Applications Accessibility Screen Reader and Magnifier.

3. Click on Preferences in the Gnopernicus menu window.

4. Click on Magnifier to open the Magnifier Preferences dialog.

5. Click on the Add/Modify button to display the Zoomer Options dialog.

6. In the Display Screen section, type `:0.0` in the Source text box.

7. In the Display Screen section, type `:0.1` in the Target text box.

8. Set the Zoomer Placement values to be `[0,0,1023,767]`.

   These instructions assume a video resolution of 1024x768.

9. Click Apply and Close to close the Zoomer Options dialog.

   The magnified view is displayed on the second display 0.1.

### To Enable Full Screen Magnification Using One Video Card on Linux Systems

To enable full screen magnification on Linux systems using one physical video card and one virtual video card, perform the following steps:

1. Open the file `/etc/X11/XF86Config`.

2. Create a new section at the end of the file as follows:

       Section "Device"
       Boardname "dummy"
       Driver "dummy"
       Identifier "dummy"
       VendorName "dummy"
       EndSection

3. Copy the `Monitor` section and paste it at the end of the file.

4. In the new `Monitor` section, edit the `Identifier` line as follows:

       Identifier "MonitorD"

5. Copy the `Screen` section and paste it at the end of the file.

6. In the new `Screen` section, edit the `Device`, `Identifier`, and `Monitor` lines as follows:

       Device "dummy"
       Identifier "Screen[D]"
       Monitor "MonitorD"

7. Edit the `ServerLayout` section to change the `Screen` line as follows:

       Screen "Screen[0]" 0 0

8. Insert the following line in the `ServerLayout` section:

       Screen "Screen[D]" RightOf "Screen[0]"

9. Save the `/etc/X11/XF86Config` file.

10. Restart the X Server.

11. Start the Screen Reader and Magnifier application.

12. Click on Startup Mode in the Gnopernicus menu window.

13. Select the Magnifier option in the Startup Mode dialog.

14. Click on Preferences in the Gnopernicus menu window.

15. Click on Magnifier to open the Magnifier Preferences dialog.

16. Click on the Add/Modify button to display the Zoomer Options dialog.

17. In the Display Screen section, type `:0.1` in the Source text box.

18. In the Zoomer Placement section, set the value of the Left spin box to `0`.

19. Click Apply.

    The Screen Reader and Magnifier user interface is no longer visible.

20. Log out of your session.

21. Log in to a new session.

22. Enter the following command to start Screen Reader and Magnifier in full screen magnification mode:

    `gnopernicus -display :0.1`

23. When you log out of your session, select the Save current setup option.

## Enabling Braille

To enable your system to support Braille output, you must configure the access rights to the serial port to which the Braille device is connected. The following sections describe the steps that you need to perform depending on your operating system.

### To Enable Braille on Solaris Systems

To configure the serial port to which the Braille device is connected on Solaris systems, perform the following steps:

1. Log in as the `root` user.

2. Enter the following command:

   `chmod 777 /dev/cua/a`

3. Enter the following command:

   `chmod 777 /dev/cua/b`

4. Change the permissions to `777` on the devices to which the symbolic links `/dev/cua/a` and `/dev/cua/b` point.

If your system uses `/dev/cua/a` for system log messages, Braille will not work on that serial port. Use `/dev/cua/b` instead.

### To Enable Braille on Linux Systems

To configure the serial port to which the Braille device is connected on Linux systems, perform the following steps:

1. Log in as the `root` user.

2. Enter the following command:

   `chmod 777 /dev/ttyS0`

3. Enter the following command:

   `chmod 777 /dev/ttyS1`

## Configuring Alternative Pointer Devices

The following sections describe how to configure your system to use a standard physical mouse and another pointer device such as a single switch device or head tracker device, and how to configure On-Screen Keyboard to use the second pointer device.

### To Configure Alternative Pointer Devices on Solaris Systems

To configure an alternative pointer device on a Solaris system, perform the following steps:

This procedure does not work on all Solaris platforms.

1. Before you connect the alternative pointer device to your system, enter the following command to list the existing devices:

   `ls -l /dev/usb/hid*`

2. Connect the alternative pointer device to your system.

3. Enter the following command again to list the new device:

   `ls -l /dev/usb/hid*`

4. Open the file `/usr/openwin/server/etc/OWconfig`.

5. Add the following lines to the `OWconfig` file:

       # Sun Mouse module
       class="XINPUT" name="IMOUSE2"
       dev="/dev/usb/hid2" strmod="usbms"
       ddxHandler="ddxSUNWmouse.so.1"
       ddxInitFunc="ddxSUNWmouseProc";

   where:

   - the `name` option starts with the string `IMOUSE` but is extended to form a unique string, such as `IMOUSE2` or `IMOUSE3`, depending on the number of existing devices.

   - the `dev` option specifies the device name that you identified in Step 3.

6. Remove the following lines from the `OWconfig` file:

       # Null Mouse module
       class="XINPUT" name="NMOUSE"
       ddxHandler="ddxSUNWmouse.so.1"
       ddxInitFunc="ddxnullmouseProc";

7. Save the `/usr/openwin/server/etc/OWconfig` file.

8. Restart the X Server.

### To Configure Alternative Pointer Devices on Linux Systems

To configure an alternative pointer device on a Linux system, perform the following steps:

1. Before you connect the alternative pointer device to your system, enter the following command to list the existing devices:

   `ls -l /dev/usb/hid*`

2. Connect the alternative pointer device to your system.

3. Enter the following command again to list the new device:

   `ls -l /dev/usb/hid*`

4. Open the file `/etc/X11/XF86Config`.

5. Edit the `InputDevice` section where the `Driver` value is set to `mouse` as follows:

   - Change the `Option Device` line to the following:

         Option "Device" "/dev/input/mouse0"

   - Comment out the `Option Protocol` line as follows:

         #Option "Protocol" "explorerps/2"

   If you are not using USB connections for your primary mouse device and other pointer device, you do not need to carry out this step.

6. Create a new `InputDevice` section as follows:

       Section "InputDevice"
       Driver "mouse"
       Identifier "Mouse[3]"
       Option "Device" "/dev/input/mouse1"
       Option "Name" "Autodetection"
       Option "Vendor" "Sysp"
       EndSection

   If you are not using USB connections for your primary mouse device and other pointer device, you do not need to carry out this step.

7. Edit the `ServerLayout` section as follows:

   - Change the `InputDevice "Mouse[1]"` line to the following:

         InputDevice "Mouse[1]" "CorePointer"

   - Create a new `InputDevice` line as follows:

         InputDevice "Mouse[3]"

   - Remove any occurrences of the attributes `SendCore` or `AlwaysCore` from any of `InputDevice` lines.

   Ensure that only the device that you are using as the primary mouse device has the `"CorePointer"` attribute and ensure that the alternate input devices do not have the `SendCore` or `AlwaysCore` attributes.

8. Save the `/etc/X11/XF86Config` file.

9. Restart the X Server.

### To Configure On-Screen Keyboard to Use an Alternative Pointer Device

To configure the On-Screen Keyboard application to use an alternative pointer device, perform the following steps.

1. Start the On-Screen Keyboard application.

2. Click on GOK in the GOK - main window.

3. Click on Preferences to open the Preferences dialog.

4. Click on the Actions tab.

5. In the Event Source options, select the Other input device option. On-Screen Reader displays the name of the input device that you configured in the text box next to the Other input device option.

6. Click OK to close the GOK Preferences dialog.