VirtualBox

source: vbox/trunk/doc/manual/en_US/Accessibility.xml

Last change on this file was 98103, checked in by vboxsync, 16 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.6 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 Copyright (C) 2006-2023 Oracle and/or its affiliates.
4
5 This file is part of VirtualBox base platform packages, as
6 available from https://www.virtualbox.org.
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation, in version 3 of the
11 License.
12
13 This program is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, see <https://www.gnu.org/licenses>.
20
21 SPDX-License-Identifier: GPL-3.0-only
22-->
23<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
24 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"[
25<!ENTITY % all.entities SYSTEM "all-entities.ent">
26%all.entities;
27]>
28
29<book>
30 <bookinfo>
31 <title>&VBOX_PRODUCT;</title>
32
33 <subtitle>Accessibility Reference</subtitle>
34
35 <edition>Version &VBOX_VERSION_STRING;</edition>
36
37 <corpauthor>&VBOX_VENDOR;</corpauthor>
38
39 <address>https://www.virtualbox.org</address>
40
41 <copyright>
42 <year>2016-&VBOX_C_YEAR;</year>
43
44 <holder>&VBOX_VENDOR;</holder>
45 </copyright>
46 </bookinfo>
47
48 <chapter>
49 <title>Introduction</title>
50 <para>
51 Welcome to the <emphasis role="bold">VirtualBox Accessibility Support</emphasis> documentation! This document is primarily
52 a reference to help people who are interested in our project accessibility support and will describe how to use VirtualBox
53 user interface step-by-step. Since whole the application navigation will be explained here, this document will also be
54 helpful for those who are not familiar with our product user interface and wish to learn more. It will be written in a bit
55 excessive manner so that many obvious things will be explained too precisely to make it easier to understand by ear for a
56 blind users. The document will be periodically updated with recent changes and test-cases allowing us to more strictly
57 follow the required guidelines and make our product fully accessible.
58 </para>
59 <para>
60 Our application is based on Qt5, a powerful cross-platform library which allows to visualize various user interface ideas
61 the most flexible and native way. This also means that the library we use is responsible for many navigation and
62 accessibility aspects (like fonts, size hints, colors, look&amp;feel patterns and many other things), but not for all of
63 them. Nativity as one of the main ideas of the Qt-based application sometimes brings additional complexity because there is
64 always at least one host which uses unique combination of fonts and colors which breaks accessibility support in an
65 unpredictable way.
66 </para>
67 <para>
68 Independently on platform we are supporting screen-reader applications which can communicate with Qt5 accessibility
69 interface which supports Microsoft Active Accessibility (MSAA), OS X Accessibility, and the Unix/X11 AT-SPI standard.
70 </para>
71 <para>
72 Our application user interface is able to be started in two modes:
73 <itemizedlist>
74 <listitem>
75 <para>
76 First of them is <emphasis role="bold">VirtualBox Manager</emphasis> user interface, the main application window
77 which allows to manage and configure virtual machines and their groups. Besides that, this window provides user with
78 access to various global and machine related tools allowing to administrate some of VirtualBox objects and their
79 settings.
80 </para>
81 </listitem>
82 <listitem>
83 <para>
84 Second application mode is <emphasis role="bold">Virtual Machine</emphasis> user interface, which allows to control
85 virtual machine guest screens as separate application windows. Besides that, this interface allows to access some of
86 machine tools and adjust guest screens up to your needs, by changing their resolution and toggling full-screen,
87 seamless and scaled modes.
88 </para>
89 </listitem>
90 </itemizedlist>
91 But first of all we should start from the <emphasis role="bold">General Concept</emphasis> which is related to whole the
92 GUI and summarizes the navigation and accessibility aspects we are using for whole application.
93 </para>
94 </chapter>
95
96 <chapter>
97 <title>General concept</title>
98 <para>
99 This chapter describes the general navigation and accessibility concept. We should note that not every detail of this
100 concept is already implemented and not every widget in our project already follows that concept. There is still large work
101 to be done in that regard. But in the end whole the project should correspond to this concept.
102 </para>
103 <para>
104 In short, every application window of our project should be navigated using the following approaches:
105 <itemizedlist>
106 <listitem><para>Mouse Navigation</para></listitem>
107 <listitem><para>Keyboard Navigation</para></listitem>
108 <listitem><para>Screen-reader Navigation</para></listitem>
109 </itemizedlist>
110 </para>
111 <sect1>
112 <title>Mouse Navigation</title>
113 <itemizedlist>
114 <listitem>
115 <para>
116 Each interactable widget can be focused with mouse (if that is not restricted by underlying host OS).
117 </para>
118 </listitem>
119 <listitem>
120 <para>
121 Each hovered interactable widget causes own tool-tip to appear.
122 </para>
123 </listitem>
124 <listitem>
125 <para>
126 Each tool-tip is given either in imperative mood (ex. "Create new virtual machine") or in short form (ex. "New").
127 </para>
128 </listitem>
129 <listitem>
130 <para>
131 Short tool-tip form is only used if context is obvious for a user.
132 </para>
133 </listitem>
134 <listitem>
135 <para>
136 Tool-tip can contain shortcut mentioned in parentheses.
137 </para>
138 </listitem>
139 <listitem>
140 <para>
141 Each hovered menu bar / toolbar action causes own status-tip to appear (if window have status-bar).
142 </para>
143 </listitem>
144 <listitem>
145 <para>
146 Each status-tip is given in imperative mood only.
147 </para>
148 </listitem>
149 <listitem>
150 <para>
151 TBD...
152 </para>
153 </listitem>
154 </itemizedlist>
155 </sect1>
156 <sect1>
157 <title>Keyboard Navigation</title>
158 <itemizedlist>
159 <listitem>
160 <para>
161 Each interactable widget can be focused with keyboard (if that is not restricted by underlying host OS).
162 </para>
163 </listitem>
164 <listitem>
165 <para>
166 Focusing is possible through tabbing or mnemonic navigation.
167 </para>
168 </listitem>
169 <listitem>
170 <para>
171 Each button and menu bar / toolbar action can be directly activated with keyboard.
172 </para>
173 </listitem>
174 <listitem>
175 <para>
176 Activation is possible via shortcut or mnemonic.
177 </para>
178 </listitem>
179 <listitem>
180 <para>
181 Each shortcut is configurable through application preferences.
182 </para>
183 </listitem>
184 <listitem>
185 <para>
186 Mnemonic mentioned above is underlined alphanumeric character which is a part of widget label (if widget has label).
187 Mnemonic being triggered in conjunction with the Alt key.
188 </para>
189 </listitem>
190 <listitem>
191 <para>
192 Each mnemonic is unique within the visible part of current application window, there are no collisions.
193 </para>
194 </listitem>
195 <listitem>
196 <para>
197 TBD...
198 </para>
199 </listitem>
200 </itemizedlist>
201 </sect1>
202 <sect1>
203 <title>Screen-reader Navigation</title>
204 <itemizedlist>
205 <listitem>
206 <para>
207 Each interactable widget can be focused with screen-reader cursor.
208 </para>
209 </listitem>
210 <listitem>
211 <para>
212 Each focused widget have clear name (or full description) in native user language.
213 </para>
214 </listitem>
215 <listitem>
216 <para>
217 Each button and menu bar / toolbar action can be directly activated through the screen-reader cursor functionality.
218 </para>
219 </listitem>
220 <listitem>
221 <para>
222 Each complex widget which has children (like list, tree, table and similar) is represented as closed group which
223 encapsulates it's children clearly.
224 </para>
225 </listitem>
226 <listitem>
227 <para>
228 While navigating user is able to skip any group without forcing to be entered inside.
229 </para>
230 </listitem>
231 <listitem>
232 <para>
233 Each group child can be a group itself with the same rules as above applicable.
234 </para>
235 </listitem>
236 <listitem>
237 <para>
238 Each text-field can be directly edited through the screen-reader cursor functionality.
239 </para>
240 </listitem>
241 <listitem>
242 <para>
243 TBD...
244 </para>
245 </listitem>
246 </itemizedlist>
247 </sect1>
248 </chapter>
249</book>
250<!-- vim: set shiftwidth=2 tabstop=2 expandtab: -->
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use