Skip to content

Commit c6e3fd2

Browse files
williamhgregkh
authored andcommitted
Staging: add speakup to the staging directory
Speakup is a kernel based screen review package for the linux operating system. It allows blind users to interact with applications on the linux console by means of synthetic speech. The authors and maintainers of this code include the following: Kirk Reiser, Andy Berdan, John Covici, Brian and David Borowski, Christopher Brannon, Samuel Thibault and William Hubbs. Signed-off-by: William Hubbs <w.d.hubbs@gmail.com> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
1 parent e59fe08 commit c6e3fd2

Some content is hidden

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

44 files changed

+12518
-0
lines changed

drivers/staging/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,5 +173,7 @@ source "drivers/staging/ft1000/Kconfig"
173173

174174
source "drivers/staging/intel_sst/Kconfig"
175175

176+
source "drivers/staging/speakup/Kconfig"
177+
176178
endif # !STAGING_EXCLUDE_BUILD
177179
endif # STAGING

drivers/staging/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,4 @@ obj-$(CONFIG_USB_ENESTORAGE) += keucr/
6767
obj-$(CONFIG_BCM_WIMAX) += bcm/
6868
obj-$(CONFIG_FT1000) += ft1000/
6969
obj-$(CONFIG_SND_INTEL_SST) += intel_sst/
70+
obj-$(CONFIG_SPEAKUP) += speakup/
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
This file is intended to give you an overview of the default keys used
2+
by speakup for it's review functions. You may change them to be
3+
anything you want but that will take some familiarity with key
4+
mapping.
5+
6+
We have remapped the insert or zero key on the keypad to act as a
7+
shift key. Well, actually as an altgr key. So in the following list
8+
InsKeyPad-period means hold down the insert key like a shift key and
9+
hit the keypad period.
10+
11+
KeyPad-8 Say current Line
12+
InsKeyPad-8 say from top of screen to reading cursor.
13+
KeyPad-7 Say Previous Line (UP one line)
14+
KeyPad-9 Say Next Line (down one line)
15+
KeyPad-5 Say Current Word
16+
InsKeyPad-5 Spell Current Word
17+
KeyPad-4 Say Previous Word (left one word)
18+
InsKeyPad-4 say from left edge of line to reading cursor.
19+
KeyPad-6 Say Next Word (right one word)
20+
InsKeyPad-6 Say from reading cursor to right edge of line.
21+
KeyPad-2 Say Current Letter
22+
InsKeyPad-2 say current letter phonetically
23+
KeyPad-1 Say Previous Character (left one letter)
24+
KeyPad-3 Say Next Character (right one letter)
25+
KeyPad-plus Say Entire Screen
26+
InsKeyPad-plus Say from reading cursor line to bottom of screen.
27+
KeyPad-Minus Park reading cursor (toggle)
28+
InsKeyPad-minus Say character hex and decimal value.
29+
KeyPad-period Say Position (current line, position and console)
30+
InsKeyPad-period say colour attributes of current position.
31+
InsKeyPad-9 Move reading cursor to top of screen (insert pgup)
32+
InsKeyPad-3 Move reading cursor to bottom of screen (insert pgdn)
33+
InsKeyPad-7 Move reading cursor to left edge of screen (insert home)
34+
InsKeyPad-1 Move reading cursor to right edge of screen (insert end)
35+
ControlKeyPad-1 Move reading cursor to last character on current line.
36+
KeyPad-Enter Shut Up (until another key is hit) and sync reading cursor
37+
InsKeyPad-Enter Shut Up (until toggled back on).
38+
InsKeyPad-star n<x|y> go to line (y) or column (x). Where 'n' is any
39+
allowed value for the row or column for your current screen.
40+
KeyPad-/ Mark and Cut screen region.
41+
InsKeyPad-/ Paste screen region into any console.
42+
43+
Hitting any key while speakup is outputting speech will quiet the
44+
synth until it has caught up with what is being printed on the
45+
console.
46+

drivers/staging/speakup/Kconfig

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
menu "Speakup console speech"
2+
3+
config SPEAKUP
4+
depends on VT
5+
tristate "Speakup core"
6+
---help---
7+
This is the Speakup screen reader. Think of it as a
8+
video console for blind people. If built in to the
9+
kernel, it can speak everything on the text console from
10+
boot up to shutdown. For more information on Speakup,
11+
point your browser at http://www.linux-speakup.org/.
12+
There is also a mailing list at the above url that you
13+
can subscribe to.
14+
15+
Supported synthesizers are accent sa, accent pc,
16+
appollo II., Auddapter, Braille 'n Speak, Dectalk
17+
external (old), Dectalk PC (full length isa board),
18+
Dectalk express, Doubletalk, Doubletalk LT or
19+
Litetalk, Keynote Gold internal PC, software
20+
synthesizers, Speakout, transport, and a dummy module
21+
that can be used with a plain text terminal.
22+
23+
Speakup can either be built in or compiled as a module
24+
by answering y or m. If you answer y here, then you
25+
must answer either y or m to at least one of the
26+
synthesizer drivers below. If you answer m here, then
27+
the synthesizer drivers below can only be built as
28+
modules.
29+
30+
These drivers are not standalone drivers, but must be
31+
used in conjunction with Speakup. Think of them as
32+
video cards for blind people.
33+
34+
35+
The Dectalk pc driver can only be built as a module, and
36+
requires software to be pre-loaded on to the card before
37+
the module can be loaded. See the decpc choice below
38+
for more details.
39+
40+
If you are not a blind person, or don't have access to
41+
one of the listed synthesizers, you should say n.
42+
43+
if SPEAKUP
44+
config SPEAKUP_SYNTH_ACNTSA
45+
tristate "Accent SA synthesizer support"
46+
---help---
47+
This is the Speakup driver for the Accent SA
48+
synthesizer. You can say y to build it into the kernel,
49+
or m to build it as a module. See the configuration
50+
help on the Speakup choice above for more info.
51+
52+
config SPEAKUP_SYNTH_ACNTPC
53+
tristate "Accent PC synthesizer support"
54+
---help---
55+
This is the Speakup driver for the accent pc
56+
synthesizer. You can say y to build it into the kernel,
57+
or m to build it as a module. See the configuration
58+
help on the Speakup choice above for more info.
59+
60+
config SPEAKUP_SYNTH_APOLLO
61+
tristate "Apollo II synthesizer support"
62+
---help---
63+
This is the Speakup driver for the Apollo II
64+
synthesizer. You can say y to build it into the kernel,
65+
or m to build it as a module. See the configuration
66+
help on the Speakup choice above for more info.
67+
68+
config SPEAKUP_SYNTH_AUDPTR
69+
tristate "Audapter synthesizer support"
70+
---help---
71+
This is the Speakup driver for the Audapter synthesizer.
72+
You can say y to build it into the kernel, or m to
73+
build it as a module. See the configuration help on the
74+
Speakup choice above for more info.
75+
76+
config SPEAKUP_SYNTH_BNS
77+
tristate "Braille 'n' Speak synthesizer support"
78+
---help---
79+
This is the Speakup driver for the Braille 'n' Speak
80+
synthesizer. You can say y to build it into the kernel,
81+
or m to build it as a module. See the configuration
82+
help on the Speakup choice above for more info.
83+
84+
config SPEAKUP_SYNTH_DECTLK
85+
tristate "DECtalk Express synthesizer support"
86+
---help---
87+
88+
This is the Speakup driver for the DecTalk Express
89+
synthesizer. You can say y to build it into the kernel,
90+
or m to build it as a module. See the configuration
91+
help on the Speakup choice above for more info.
92+
93+
config SPEAKUP_SYNTH_DECEXT
94+
tristate "DECtalk External (old) synthesizer support"
95+
---help---
96+
97+
This is the Speakup driver for the DecTalk External
98+
(old) synthesizer. You can say y to build it into the
99+
kernel, or m to build it as a module. See the
100+
configuration help on the Speakup choice above for more
101+
info.
102+
103+
config SPEAKUP_SYNTH_DECPC
104+
depends on m
105+
tristate "DECtalk PC (big ISA card) synthesizer support"
106+
---help---
107+
108+
This is the Speakup driver for the DecTalk PC (full
109+
length ISA) synthesizer. You can say m to build it as
110+
a module. See the configuration help on the Speakup
111+
choice above for more info.
112+
113+
In order to use the DecTalk PC driver, you must download
114+
the dec_pc.tgz file from linux-speakup.org. It is in
115+
the pub/linux/goodies directory. The dec_pc.tgz file
116+
contains the software which must be pre-loaded on to the
117+
DecTalk PC board in order to use it with this driver.
118+
This driver must be built as a module, and can not be
119+
loaded until the file system is mounted and the DecTalk
120+
PC software has been pre-loaded on to the board.
121+
122+
See the README file in the dec_pc.tgz file for more
123+
details.
124+
125+
config SPEAKUP_SYNTH_DTLK
126+
tristate "DoubleTalk PC synthesizer support"
127+
---help---
128+
129+
This is the Speakup driver for the internal DoubleTalk
130+
PC synthesizer. You can say y to build it into the
131+
kernel, or m to build it as a module. See the
132+
configuration help on the Speakup choice above for more
133+
info.
134+
135+
config SPEAKUP_SYNTH_KEYPC
136+
tristate "Keynote Gold PC synthesizer support"
137+
---help---
138+
139+
This is the Speakup driver for the Keynote Gold
140+
PC synthesizer. You can say y to build it into the
141+
kernel, or m to build it as a module. See the
142+
configuration help on the Speakup choice above for more
143+
info.
144+
145+
config SPEAKUP_SYNTH_LTLK
146+
tristate "DoubleTalk LT/LiteTalk synthesizer support"
147+
---help---
148+
149+
This is the Speakup driver for the LiteTalk/DoubleTalk
150+
LT synthesizer. You can say y to build it into the
151+
kernel, or m to build it as a module. See the
152+
configuration help on the Speakup choice above for more
153+
info.
154+
155+
config SPEAKUP_SYNTH_SOFT
156+
tristate "Userspace software synthesizer support"
157+
---help---
158+
159+
This is the software synthesizer device node. It will
160+
register a device /dev/softsynth which midware programs
161+
and speech daemons may open and read to provide kernel
162+
output to software synths such as espeak, festival,
163+
flite and so forth. You can select 'y' or 'm' to have
164+
it built-in to the kernel or loaded as a module.
165+
166+
config SPEAKUP_SYNTH_SPKOUT
167+
tristate "Speak Out synthesizer support"
168+
---help---
169+
170+
This is the Speakup driver for the Speakout synthesizer.
171+
You can say y to build it into the kernel, or m to
172+
build it as a module. See the configuration help on the
173+
Speakup choice above for more info.
174+
175+
config SPEAKUP_SYNTH_TXPRT
176+
tristate "Transport synthesizer support"
177+
---help---
178+
179+
This is the Speakup driver for the Transport
180+
synthesizer. You can say y to build it into the kernel,
181+
or m to build it as a module. See the configuration
182+
help on the Speakup choice above for more info.
183+
184+
config SPEAKUP_SYNTH_DUMMY
185+
tristate "Dummy synthesizer driver (for testing)"
186+
---help---
187+
188+
This is a dummy Speakup driver for plugging a mere serial
189+
terminal. This is handy if you want to test speakup but
190+
don't have the hardware. You can say y to build it into
191+
the kernel, or m to build it as a module. See the
192+
configuration help on the Speakup choice above for more info.
193+
194+
endif # SPEAKUP
195+
endmenu

drivers/staging/speakup/Makefile

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
obj-$(CONFIG_SPEAKUP_SYNTH_ACNTSA) += speakup_acntsa.o
2+
obj-$(CONFIG_SPEAKUP_SYNTH_ACNTPC) += speakup_acntpc.o
3+
obj-$(CONFIG_SPEAKUP_SYNTH_APOLLO) += speakup_apollo.o
4+
obj-$(CONFIG_SPEAKUP_SYNTH_AUDPTR) += speakup_audptr.o
5+
obj-$(CONFIG_SPEAKUP_SYNTH_BNS) += speakup_bns.o
6+
obj-$(CONFIG_SPEAKUP_SYNTH_DECTLK) += speakup_dectlk.o
7+
obj-$(CONFIG_SPEAKUP_SYNTH_DECEXT) += speakup_decext.o
8+
obj-$(CONFIG_SPEAKUP_SYNTH_DECPC) += speakup_decpc.o
9+
obj-$(CONFIG_SPEAKUP_SYNTH_DTLK) += speakup_dtlk.o
10+
obj-$(CONFIG_SPEAKUP_SYNTH_KEYPC) += speakup_keypc.o
11+
obj-$(CONFIG_SPEAKUP_SYNTH_LTLK) += speakup_ltlk.o
12+
obj-$(CONFIG_SPEAKUP_SYNTH_SOFT) += speakup_soft.o
13+
obj-$(CONFIG_SPEAKUP_SYNTH_SPKOUT) += speakup_spkout.o
14+
obj-$(CONFIG_SPEAKUP_SYNTH_TXPRT) += speakup_txprt.o
15+
obj-$(CONFIG_SPEAKUP_SYNTH_DUMMY) += speakup_dummy.o
16+
17+
obj-$(CONFIG_SPEAKUP) += speakup.o
18+
speakup-objs := \
19+
buffers.o \
20+
devsynth.o \
21+
i18n.o \
22+
fakekey.o \
23+
main.o \
24+
keyhelp.o \
25+
kobjects.o \
26+
selection.o \
27+
serialio.o \
28+
synth.o \
29+
thread.o \
30+
varhandlers.o

drivers/staging/speakup/TODO

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
Speakup project home: http://www.linux-speakup.org
2+
3+
Mailing List: speakup@braille.uwo.ca
4+
5+
Speakup is a kernel based screen review package for the linux operating
6+
system. It allows blind users to interact with applications on the
7+
linux console by means of synthetic speech.
8+
9+
Currently, speakup has several issues we know of.
10+
11+
The first issue has to do with the way speakup communicates with serial
12+
ports. Currently, we communicate directly with the hardware
13+
ports. This however conflicts with the standard serial port drivers,
14+
which poses various problems. This is also not working for modern hardware
15+
such as PCI-based serial ports. Also, there is not a way we can
16+
communicate with USB devices. The current serial port handling code is
17+
in serialio.c in this directory.
18+
19+
Some places are currently using in_atomic() because speakup functions
20+
are called in various contexts, and a couple of things can't happen
21+
in these cases. Pushing work to some worker thread would probably help,
22+
as was already done for the serial port driving part.
23+
24+
There is a duplication of the selection functions in selections.c. These
25+
functions should get exported from drivers/char/selection.c (clear_selection
26+
notably) and used from there instead.
27+
28+
The kobjects may have to move to a more proper place in /sys. The
29+
discussion on lkml resulted to putting speech synthesizers in the
30+
"speech" class, and the speakup screen reader itself into
31+
/sys/class/vtconsole/vtcon0/speakup, the nasty path being handled by
32+
userland tools.
33+
34+
Another issue seems to only happen on SMP systems. It seems
35+
that text in the output buffer gets garbled because a lock is not set.
36+
This bug happens regularly, but no one has been able to find a situation
37+
which produces it consistently.
38+
39+
Patches, suggestions, corrections, etc, are definitely welcome.
40+
41+
We prefer that you contact us on the mailing list; however, if you do
42+
not want to subscribe to a mailing list, send your email to all of the
43+
following:
44+
45+
w.d.hubbs@gmail.com, chris@the-brannons.com, kirk@braille.uwo.ca and
46+
samuel.thibault@ens-lyon.org.
47+

0 commit comments

Comments
 (0)