Skip to content

Commit 7063f2e

Browse files
committed
PARTIAL Restructure into a single-package project
1 parent 6eb43aa commit 7063f2e

File tree

120 files changed

+85
-4173
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+85
-4173
lines changed

packages/macos-at-driver-server/MAINTAINING.md renamed to MAINTAINING.md

File renamed without changes.

README.md

Lines changed: 29 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,38 @@
1-
# ARIA-AT Automation Driver
1+
# macOS AT Driver Server
22

3-
A [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
4-
server which allows clients to observe the text enunciated by a screen reader
5-
and to simulate user input
3+
An implementation of the [AT Driver](https://w3c.github.io/at-driver/) remote
4+
end designed to work with screen readers on macOS.
65

76
**[aria-at-automation](https://github.com/w3c/aria-at-automation)** · [aria-at-automation-harness](https://github.com/w3c/aria-at-automation-harness) · aria-at-automation-driver · [aria-at-automation-results-viewer](https://github.com/w3c/aria-at-automation-results-viewer)
87

98
## Requirements
109

11-
- Microsoft Windows
12-
- [Node.js](https://nodejs.org), including "Tools for Native Modules" as
13-
offered by the Node.js installer
14-
- [the Microsoft Visual C++
15-
runtime](https://aka.ms/vs/16/release/vc_redist.x86.exe)
16-
17-
<details>
18-
<summary>note for project maintainers</summary>
19-
20-
"Tools for Native Modules" is required to install the "robotjs" npm module,
21-
which is a dependency of this project.
22-
23-
[The Visual C++ runtime includes
24-
`VCRUNTIME140.dll`](https://answers.microsoft.com/en-us/windows/forum/all/vcruntime140dll/fc4c0470-4db0-4e7b-9537-58ea62f8ac05),
25-
which is required by the automation voice.
26-
27-
</details>
28-
29-
## Terminology
30-
31-
- **message** - a [JSON](https://www.json.org)-formatted string that describes
32-
some occurrence of interest, emitted at the moment it occurred; the message
33-
should be a JSON object value with two string properties: `type` and `data`
34-
- **message type** - one of `"lifecycle"`, `"speech"`, or `"error"`
35-
- `"lifecycle"` - signifies that the message data is an expected lifecycle of
36-
the automation voice (e.g. initialization and destruction)
37-
- `"speech"` - signifies that the message data is text which a screen reader
38-
has requested the operating system annunciate
39-
- `"error"` - signifies that an exceptional circumstances has occurred
40-
- **message data** - information which refines the meaning of the message type
41-
42-
## Protocol
43-
44-
This project implements [AT Driver](https://w3c.github.io/at-driver/), a
45-
protocol published in 2024 as [a W3C Draft Community Group
46-
Report](https://www.w3.org/standards/types/#CG-DRAFT). That document
47-
exhaustively describes the JSON-encoded WebSocket protocol. Please [file a bug
48-
report against this
49-
project](https://github.com/w3c/aria-at-automation-driver/issues/new) if you
50-
observe any discrepencies with AT Driver.
51-
52-
## Architecture
53-
54-
This tool is comprised of two main components: a text-to-speech voice and a
55-
WebSocket server.
56-
57-
### Text-to-speech voice
58-
59-
The text-to-speech voice is written in C++ and integrates with the [Microsoft
60-
Speech API
61-
(SAPI)](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee125663(v=vs.85)).
62-
Because it interfaces with the Windows operating system (that is: "below" the
63-
screen reader in the metaphorical software stack), it can observe speech from
64-
many screen readers without coupling to any particular screen reader.
65-
66-
The voice has two responsibilities. First, it emits the observed speech data
67-
and related events to a [Windows named
68-
pipe](https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipes). This
69-
allows the second component to present a robust public interface for
70-
programmatic consumption of the data. (The named pipe is an implementation
71-
detail. Neither its content nor its presence is guaranteed, making it
72-
inappropriate for external use.)
73-
74-
Second, the voice annunciates speech data. It does this by forwarding speech
75-
data to the system's default text-to-speech voice. This ensures that a system
76-
configured to use the voice remains accessible to screen reader users.
10+
- macOS version 13 ("Ventura") or later
11+
- Node.js version 18 or later
12+
13+
## Usage
14+
15+
1. Run the `install` sub-command in a terminal:
16+
17+
at-driver install
18+
19+
If prompted for system administration permission, grant permission.
20+
21+
2. Start the server by executing the `serve` sub-command in a terminal:
22+
23+
at-driver serve
24+
25+
The process will write a message to the standard error stream when the
26+
WebSocket server is listening for connections. The `--help` flag will cause
27+
the command to output advanced usage instructions (e.g. `at-driver --help`).
28+
29+
3. Configure any screen reader to use the text-to-speech voice named "Bocoup
30+
Automation Voice."
31+
32+
4. Use any WebSocket client to connect to the server. The protocol is described
33+
below. (The server will print protocol messages to its standard error stream
34+
for diagnostic purposes only. Neither the format nor the availability of
35+
this output is guaranteed, making it inappropriate for external use.)
7736

7837
### WebSocket server
7938

@@ -92,10 +51,6 @@ For details on contributing to this project, please refer to the file named
9251
Licensed under the terms of the MIT Expat License; the complete text is
9352
available in the LICENSE file.
9453

95-
Copyright for portions of AT Driver are held by Microsoft as part of the
96-
"Sample Text-to-Speech Engine and MakeVoice" project. All other copyright for
97-
AT Driver are held by Bocoup.
98-
9954
---
10055

10156
### [aria-at-automation](https://github.com/w3c/aria-at-automation)
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)