xref: /OK3568_Linux_fs/kernel/Documentation/admin-guide/spkguide.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun
2*4882a593SmuzhiyunThe Speakup User's Guide
3*4882a593SmuzhiyunFor Speakup 3.1.2 and Later
4*4882a593SmuzhiyunBy Gene Collins
5*4882a593SmuzhiyunUpdated by others
6*4882a593SmuzhiyunLast modified on Mon Sep 27 14:26:31 2010
7*4882a593SmuzhiyunDocument version 1.3
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunCopyright (c) 2005  Gene Collins
10*4882a593SmuzhiyunCopyright (c) 2008  Samuel Thibault
11*4882a593SmuzhiyunCopyright (c) 2009, 2010  the Speakup Team
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunPermission is granted to copy, distribute and/or modify this document
14*4882a593Smuzhiyununder the terms of the GNU Free Documentation License, Version 1.2 or
15*4882a593Smuzhiyunany later version published by the Free Software Foundation; with no
16*4882a593SmuzhiyunInvariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
17*4882a593Smuzhiyuncopy of the license is included in the section entitled "GNU Free
18*4882a593SmuzhiyunDocumentation License".
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunPreface
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunThe purpose of this document is to familiarize users with the user
23*4882a593Smuzhiyuninterface to Speakup, a Linux Screen Reader.  If you need instructions
24*4882a593Smuzhiyunfor installing or obtaining Speakup, visit the web site at
25*4882a593Smuzhiyunhttp://linux-speakup.org/.  Speakup is a set of patches to the standard
26*4882a593SmuzhiyunLinux kernel source tree.  It can be built as a series of modules, or as
27*4882a593Smuzhiyuna part of a monolithic kernel.  These details are beyond the scope of
28*4882a593Smuzhiyunthis manual, but the user may need to be aware of the module
29*4882a593Smuzhiyuncapabilities, depending on how your system administrator has installed
30*4882a593SmuzhiyunSpeakup.  If Speakup is built as a part of a monolithic kernel, and the
31*4882a593Smuzhiyunuser is using a hardware synthesizer, then Speakup will be able to
32*4882a593Smuzhiyunprovide speech access from the time the kernel is loaded, until the time
33*4882a593Smuzhiyunthe system is shutdown.  This means that if you have obtained Linux
34*4882a593Smuzhiyuninstallation media for a distribution which includes Speakup as a part
35*4882a593Smuzhiyunof its kernel, you will be able, as a blind person, to install Linux
36*4882a593Smuzhiyunwith speech access unaided by a sighted person.  Again, these details
37*4882a593Smuzhiyunare beyond the scope of this manual, but the user should be aware of
38*4882a593Smuzhiyunthem.  See the web site mentioned above for further details.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun1.  Starting Speakup
41*4882a593Smuzhiyun
42*4882a593SmuzhiyunIf your system administrator has installed Speakup to work with your
43*4882a593Smuzhiyunspecific synthesizer by default, then all you need to do to use Speakup
44*4882a593Smuzhiyunis to boot your system, and Speakup should come up talking.  This
45*4882a593Smuzhiyunassumes of course  that your synthesizer is a supported hardware
46*4882a593Smuzhiyunsynthesizer, and that it is either installed in or connected to your
47*4882a593Smuzhiyunsystem, and is if necessary powered on.
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunIt is possible, however, that Speakup may have been compiled into the
50*4882a593Smuzhiyunkernel with no default synthesizer.  It is even possible that your
51*4882a593Smuzhiyunkernel has been compiled with support for some of the supported
52*4882a593Smuzhiyunsynthesizers and not others.  If you find that this is the case, and
53*4882a593Smuzhiyunyour synthesizer is supported but not available, complain to the person
54*4882a593Smuzhiyunwho compiled and installed your kernel.  Or better yet, go to the web
55*4882a593Smuzhiyunsite, and learn how to patch Speakup into your own kernel source, and
56*4882a593Smuzhiyunbuild and install your own kernel.
57*4882a593Smuzhiyun
58*4882a593SmuzhiyunIf your kernel has been compiled with Speakup, and has no default
59*4882a593Smuzhiyunsynthesizer set, or you would like to use a different synthesizer than
60*4882a593Smuzhiyunthe default one, then you may issue the following command at the boot
61*4882a593Smuzhiyunprompt of your boot loader.
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunlinux speakup.synth=ltlk
64*4882a593Smuzhiyun
65*4882a593SmuzhiyunThis command would tell Speakup to look for and use a LiteTalk or
66*4882a593SmuzhiyunDoubleTalk LT at boot up.  You may replace the ltlk synthesizer keyword
67*4882a593Smuzhiyunwith the keyword for whatever synthesizer you wish to use.  The
68*4882a593Smuzhiyunspeakup.synth parameter will accept the following keywords, provided
69*4882a593Smuzhiyunthat support for the related synthesizers has been built into the
70*4882a593Smuzhiyunkernel.
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunacntsa -- Accent SA
73*4882a593Smuzhiyunacntpc -- Accent PC
74*4882a593Smuzhiyunapollo -- Apollo
75*4882a593Smuzhiyunaudptr -- Audapter
76*4882a593Smuzhiyunbns -- Braille 'n Speak
77*4882a593Smuzhiyundectlk -- DecTalk Express (old and new, db9 serial only)
78*4882a593Smuzhiyundecext -- DecTalk (old) External
79*4882a593Smuzhiyundtlk -- DoubleTalk PC
80*4882a593Smuzhiyunkeypc -- Keynote Gold PC
81*4882a593Smuzhiyunltlk -- DoubleTalk LT, LiteTalk, or external Tripletalk (db9 serial only)
82*4882a593Smuzhiyunspkout -- Speak Out
83*4882a593Smuzhiyuntxprt -- Transport
84*4882a593Smuzhiyundummy -- Plain text terminal
85*4882a593Smuzhiyun
86*4882a593SmuzhiyunNote: Speakup does * NOT * support usb connections!  Speakup also does *
87*4882a593SmuzhiyunNOT * support the internal Tripletalk!
88*4882a593Smuzhiyun
89*4882a593SmuzhiyunSpeakup does support two other synthesizers, but because they work in
90*4882a593Smuzhiyunconjunction with other software, they must be loaded as modules after
91*4882a593Smuzhiyuntheir related software is loaded, and so are not available at boot up.
92*4882a593SmuzhiyunThese are as follows:
93*4882a593Smuzhiyun
94*4882a593Smuzhiyundecpc -- DecTalk PC (not available at boot up)
95*4882a593Smuzhiyunsoft -- One of several software synthesizers (not available at boot up)
96*4882a593Smuzhiyun
97*4882a593SmuzhiyunSee the sections on loading modules and software synthesizers later in
98*4882a593Smuzhiyunthis manual for further details.  It should be noted here that the
99*4882a593Smuzhiyunspeakup.synth boot parameter will have no effect if Speakup has been
100*4882a593Smuzhiyuncompiled as modules.  In order for Speakup modules to be loaded during
101*4882a593Smuzhiyunthe boot process, such action must be configured by your system
102*4882a593Smuzhiyunadministrator.  This will mean that you will hear some, but not all,  of
103*4882a593Smuzhiyunthe bootup messages.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun2.  Basic operation
106*4882a593Smuzhiyun
107*4882a593SmuzhiyunOnce you have booted the system, and if necessary, have supplied the
108*4882a593Smuzhiyunproper bootup parameter for your synthesizer, Speakup will begin
109*4882a593Smuzhiyuntalking as soon as the kernel is loaded.  In fact, it will talk a lot!
110*4882a593SmuzhiyunIt will speak all the boot up messages that the kernel prints on the
111*4882a593Smuzhiyunscreen during the boot process.  This is because Speakup is not a
112*4882a593Smuzhiyunseparate screen reader, but is actually built into the operating
113*4882a593Smuzhiyunsystem.  Since almost all console applications must print text on the
114*4882a593Smuzhiyunscreen using the kernel, and must get their keyboard input through the
115*4882a593Smuzhiyunkernel, they are automatically handled properly by Speakup.  There are a
116*4882a593Smuzhiyunfew exceptions, but we'll come to those later.
117*4882a593Smuzhiyun
118*4882a593SmuzhiyunNote:  In this guide I will refer to the numeric keypad as the keypad.
119*4882a593SmuzhiyunThis is done because the speakupmap.map file referred to later in this
120*4882a593Smuzhiyunmanual uses the term keypad instead of numeric keypad.  Also I'm lazy
121*4882a593Smuzhiyunand would rather only type one word.  So keypad it is.  Got it?  Good.
122*4882a593Smuzhiyun
123*4882a593SmuzhiyunMost of the Speakup review keys are located on the keypad at the far
124*4882a593Smuzhiyunright of the keyboard.  The numlock key should be off, in order for these
125*4882a593Smuzhiyunto work.  If you toggle the numlock on, the keypad will produce numbers,
126*4882a593Smuzhiyunwhich is exactly what you want for spreadsheets and such.  For the
127*4882a593Smuzhiyunpurposes of this guide, you should have the numlock turned off, which is
128*4882a593Smuzhiyunits default state at bootup.
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunYou probably won't want to listen to all the bootup messages every time
131*4882a593Smuzhiyunyou start your system, though it's a good idea to listen to them at
132*4882a593Smuzhiyunleast once, just so you'll know what kind of information is available to
133*4882a593Smuzhiyunyou during the boot process.  You can always review these messages after
134*4882a593Smuzhiyunbootup with the command:
135*4882a593Smuzhiyun
136*4882a593Smuzhiyundmesg | more
137*4882a593Smuzhiyun
138*4882a593SmuzhiyunIn order to speed the boot process, and to silence the speaking of the
139*4882a593Smuzhiyunbootup messages, just press the keypad enter key.  This key is located
140*4882a593Smuzhiyunin the bottom right corner of the keypad.  Speakup will shut up and stay
141*4882a593Smuzhiyunthat way, until you press another key.
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunYou can check to see if the boot process has completed by pressing the 8
144*4882a593Smuzhiyunkey on the keypad, which reads the current line.  This also has the
145*4882a593Smuzhiyuneffect of starting Speakup talking again, so you can press keypad enter
146*4882a593Smuzhiyunto silence it again if the boot process has not completed.
147*4882a593Smuzhiyun
148*4882a593SmuzhiyunWhen the boot process is complete, you will arrive at a "login" prompt.
149*4882a593SmuzhiyunAt this point, you'll need to type in your user id and password, as
150*4882a593Smuzhiyunprovided by your system administrator.  You will hear Speakup speak the
151*4882a593Smuzhiyunletters of your user id as you type it, but not the password.  This is
152*4882a593Smuzhiyunbecause the password is not displayed on the screen for security
153*4882a593Smuzhiyunreasons.  This has nothing to do with Speakup, it's a Linux security
154*4882a593Smuzhiyunfeature.
155*4882a593Smuzhiyun
156*4882a593SmuzhiyunOnce you've logged in, you can run any Linux command or program which is
157*4882a593Smuzhiyunallowed by your user id.  Normal users will not be able to run programs
158*4882a593Smuzhiyunwhich require root privileges.
159*4882a593Smuzhiyun
160*4882a593SmuzhiyunWhen you are running a program or command, Speakup will automatically
161*4882a593Smuzhiyunspeak new text as it arrives on the screen.  You can at any time silence
162*4882a593Smuzhiyunthe speech with keypad enter, or use any of the Speakup review keys.
163*4882a593Smuzhiyun
164*4882a593SmuzhiyunHere are some basic Speakup review keys, and a short description of what
165*4882a593Smuzhiyunthey do.
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunkeypad 1 -- read previous character
168*4882a593Smuzhiyunkeypad 2 -- read current character (pressing keypad 2 twice rapidly will speak
169*4882a593Smuzhiyun	the current character phonetically)
170*4882a593Smuzhiyunkeypad 3 -- read next character
171*4882a593Smuzhiyunkeypad 4 -- read previous word
172*4882a593Smuzhiyunkeypad 5 -- read current word (press twice rapidly to spell the current word)
173*4882a593Smuzhiyunkeypad 6 -- read next word
174*4882a593Smuzhiyunkeypad 7 -- read previous line
175*4882a593Smuzhiyunkeypad 8 -- read current line (press twice rapidly to hear how much the
176*4882a593Smuzhiyun	text on the current line is indented)
177*4882a593Smuzhiyunkeypad 9 -- read next line
178*4882a593Smuzhiyunkeypad period -- speak current cursor position and announce current
179*4882a593Smuzhiyun	virtual console
180*4882a593Smuzhiyun
181*4882a593SmuzhiyunIt's also worth noting that the insert key on the keypad is mapped
182*4882a593Smuzhiyunas the speakup key.  Instead of pressing and releasing this key, as you
183*4882a593Smuzhiyundo under DOS or Windows, you hold it like a shift key, and press other
184*4882a593Smuzhiyunkeys in combination with it.  For example, repeatedly holding keypad
185*4882a593Smuzhiyuninsert, from now on called speakup, and keypad enter will toggle the
186*4882a593Smuzhiyunspeaking of new text on the screen on and off.  This is not the same as
187*4882a593Smuzhiyunjust pressing keypad enter by itself, which just silences the speech
188*4882a593Smuzhiyununtil you hit another key.  When you hit speakup plus keypad enter,
189*4882a593SmuzhiyunSpeakup will say, "You turned me off.", or "Hey, that's better."  When
190*4882a593SmuzhiyunSpeakup is turned off, no new text on the screen will be spoken.  You
191*4882a593Smuzhiyuncan still use the reading controls to review the screen however.
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun3.  Using the Speakup Help System
194*4882a593Smuzhiyun
195*4882a593SmuzhiyunIn order to enter the Speakup help system, press and hold the speakup
196*4882a593Smuzhiyunkey (remember that this is the keypad insert key), and press the f1 key.
197*4882a593SmuzhiyunYou will hear the message:
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun"Press space to leave help, cursor up or down to scroll, or a letter to
200*4882a593Smuzhiyungo to commands in list."
201*4882a593Smuzhiyun
202*4882a593SmuzhiyunWhen you press the spacebar to leave the help system, you will hear:
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun"Leaving help."
205*4882a593Smuzhiyun
206*4882a593SmuzhiyunWhile you are in the Speakup help system, you can scroll up or down
207*4882a593Smuzhiyunthrough the list of available commands using the cursor keys.  The list
208*4882a593Smuzhiyunof commands is arranged in alphabetical order.  If you wish to jump to
209*4882a593Smuzhiyuncommands in a specific part of the alphabet, you may press the letter of
210*4882a593Smuzhiyunthe alphabet you wish to jump to.
211*4882a593Smuzhiyun
212*4882a593SmuzhiyunYou can also just explore by typing keyboard keys.  Pressing keys will
213*4882a593Smuzhiyuncause Speakup to speak the command associated with that key.  For
214*4882a593Smuzhiyunexample, if you press the keypad 8 key, you will hear:
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun"Keypad 8 is line, say current."
217*4882a593Smuzhiyun
218*4882a593SmuzhiyunYou'll notice that some commands do not have keys assigned to them.
219*4882a593SmuzhiyunThis is because they are very infrequently used commands, and are also
220*4882a593Smuzhiyunaccessible through the sys system.  We'll discuss the sys system later
221*4882a593Smuzhiyunin this manual.
222*4882a593Smuzhiyun
223*4882a593SmuzhiyunYou'll also notice that some commands have two keys assigned to them.
224*4882a593SmuzhiyunThis is because Speakup has a built in set of alternative key bindings
225*4882a593Smuzhiyunfor laptop users.  The alternate speakup key is the caps lock key.  You
226*4882a593Smuzhiyuncan press and hold the caps lock key, while pressing an alternate
227*4882a593Smuzhiyunspeakup command key to activate the command.  On most laptops, the
228*4882a593Smuzhiyunnumeric keypad is defined as the keys in the j k l area of the keyboard.
229*4882a593Smuzhiyun
230*4882a593SmuzhiyunThere is usually a function key which turns this keypad function on and
231*4882a593Smuzhiyunoff, and some other key which controls the numlock state.  Toggling the
232*4882a593Smuzhiyunkeypad functionality on and off can become a royal pain.  So, Speakup
233*4882a593Smuzhiyungives you a simple way to get at an alternative set of key mappings for
234*4882a593Smuzhiyunyour laptop.  These are also available by default on desktop systems,
235*4882a593Smuzhiyunbecause Speakup does not know whether it is running on a desktop or
236*4882a593Smuzhiyunlaptop.  So you may choose which set of Speakup keys to use.  Some
237*4882a593Smuzhiyunsystem administrators may have chosen to compile Speakup for a desktop
238*4882a593Smuzhiyunsystem without this set of alternate key bindings, but these details are
239*4882a593Smuzhiyunbeyond the scope of this manual.  To use the caps lock for its normal
240*4882a593Smuzhiyunpurpose, hold the shift key while toggling the caps lock on and off.  We
241*4882a593Smuzhiyunshould note here, that holding the caps lock key and pressing the z key
242*4882a593Smuzhiyunwill toggle the alternate j k l keypad on and off.
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun4.  Keys and Their Assigned Commands
245*4882a593Smuzhiyun
246*4882a593SmuzhiyunIn this section, we'll go through a list of all the speakup keys and
247*4882a593Smuzhiyuncommands.  You can also get a list of commands and assigned keys from
248*4882a593Smuzhiyunthe help system.
249*4882a593Smuzhiyun
250*4882a593SmuzhiyunThe following list was taken from the speakupmap.map file.  Key
251*4882a593Smuzhiyunassignments are on the left of the equal sign, and the associated
252*4882a593SmuzhiyunSpeakup commands are on the right.  The designation "spk" means to press
253*4882a593Smuzhiyunand hold the speakup key, a.k.a. keypad insert, a.k.a. caps lock, while
254*4882a593Smuzhiyunpressing the other specified key.
255*4882a593Smuzhiyun
256*4882a593Smuzhiyunspk key_f9 = punc_level_dec
257*4882a593Smuzhiyunspk key_f10 = punc_level_inc
258*4882a593Smuzhiyunspk key_f11 = reading_punc_dec
259*4882a593Smuzhiyunspk key_f12 = reading_punc_inc
260*4882a593Smuzhiyunspk key_1 = vol_dec
261*4882a593Smuzhiyunspk key_2 =  vol_inc
262*4882a593Smuzhiyunspk key_3 = pitch_dec
263*4882a593Smuzhiyunspk key_4 = pitch_inc
264*4882a593Smuzhiyunspk key_5 = rate_dec
265*4882a593Smuzhiyunspk key_6 = rate_inc
266*4882a593Smuzhiyunkey_kpasterisk = toggle_cursoring
267*4882a593Smuzhiyunspk key_kpasterisk = speakup_goto
268*4882a593Smuzhiyunspk key_f1 = speakup_help
269*4882a593Smuzhiyunspk key_f2 = set_win
270*4882a593Smuzhiyunspk key_f3 = clear_win
271*4882a593Smuzhiyunspk key_f4 = enable_win
272*4882a593Smuzhiyunspk key_f5 = edit_some
273*4882a593Smuzhiyunspk key_f6 = edit_most
274*4882a593Smuzhiyunspk key_f7 = edit_delim
275*4882a593Smuzhiyunspk key_f8 = edit_repeat
276*4882a593Smuzhiyunshift spk key_f9 = edit_exnum
277*4882a593Smuzhiyun key_kp7 = say_prev_line
278*4882a593Smuzhiyunspk key_kp7 = left_edge
279*4882a593Smuzhiyun key_kp8 = say_line
280*4882a593Smuzhiyundouble  key_kp8 = say_line_indent
281*4882a593Smuzhiyunspk key_kp8 = say_from_top
282*4882a593Smuzhiyun key_kp9 = say_next_line
283*4882a593Smuzhiyunspk  key_kp9 = top_edge
284*4882a593Smuzhiyun key_kpminus = speakup_parked
285*4882a593Smuzhiyunspk key_kpminus = say_char_num
286*4882a593Smuzhiyun key_kp4 = say_prev_word
287*4882a593Smuzhiyunspk key_kp4 = say_from_left
288*4882a593Smuzhiyun key_kp5 = say_word
289*4882a593Smuzhiyundouble key_kp5 = spell_word
290*4882a593Smuzhiyunspk key_kp5 = spell_phonetic
291*4882a593Smuzhiyun key_kp6 = say_next_word
292*4882a593Smuzhiyunspk key_kp6 = say_to_right
293*4882a593Smuzhiyun key_kpplus = say_screen
294*4882a593Smuzhiyunspk key_kpplus = say_win
295*4882a593Smuzhiyun key_kp1 = say_prev_char
296*4882a593Smuzhiyunspk key_kp1 = right_edge
297*4882a593Smuzhiyun key_kp2 = say_char
298*4882a593Smuzhiyunspk key_kp2 = say_to_bottom
299*4882a593Smuzhiyundouble key_kp2 = say_phonetic_char
300*4882a593Smuzhiyun key_kp3 = say_next_char
301*4882a593Smuzhiyunspk  key_kp3 = bottom_edge
302*4882a593Smuzhiyun key_kp0 = spk_key
303*4882a593Smuzhiyun key_kpdot = say_position
304*4882a593Smuzhiyunspk key_kpdot = say_attributes
305*4882a593Smuzhiyunkey_kpenter = speakup_quiet
306*4882a593Smuzhiyunspk key_kpenter = speakup_off
307*4882a593Smuzhiyunkey_sysrq = speech_kill
308*4882a593Smuzhiyun key_kpslash = speakup_cut
309*4882a593Smuzhiyunspk key_kpslash = speakup_paste
310*4882a593Smuzhiyunspk key_pageup = say_first_char
311*4882a593Smuzhiyunspk key_pagedown = say_last_char
312*4882a593Smuzhiyunkey_capslock = spk_key
313*4882a593Smuzhiyun spk key_z = spk_lock
314*4882a593Smuzhiyunkey_leftmeta = spk_key
315*4882a593Smuzhiyunctrl spk key_0 = speakup_goto
316*4882a593Smuzhiyunspk key_u = say_prev_line
317*4882a593Smuzhiyunspk key_i = say_line
318*4882a593Smuzhiyundouble spk key_i = say_line_indent
319*4882a593Smuzhiyunspk key_o = say_next_line
320*4882a593Smuzhiyunspk key_minus = speakup_parked
321*4882a593Smuzhiyunshift spk key_minus = say_char_num
322*4882a593Smuzhiyunspk key_j = say_prev_word
323*4882a593Smuzhiyunspk key_k = say_word
324*4882a593Smuzhiyundouble spk key_k = spell_word
325*4882a593Smuzhiyunspk key_l = say_next_word
326*4882a593Smuzhiyunspk key_m = say_prev_char
327*4882a593Smuzhiyunspk key_comma = say_char
328*4882a593Smuzhiyundouble spk key_comma = say_phonetic_char
329*4882a593Smuzhiyunspk key_dot = say_next_char
330*4882a593Smuzhiyunspk key_n = say_position
331*4882a593Smuzhiyun ctrl spk key_m = left_edge
332*4882a593Smuzhiyun ctrl spk key_y = top_edge
333*4882a593Smuzhiyun ctrl spk key_dot = right_edge
334*4882a593Smuzhiyunctrl spk key_p = bottom_edge
335*4882a593Smuzhiyunspk key_apostrophe = say_screen
336*4882a593Smuzhiyunspk key_h = say_from_left
337*4882a593Smuzhiyunspk key_y = say_from_top
338*4882a593Smuzhiyunspk key_semicolon = say_to_right
339*4882a593Smuzhiyunspk key_p = say_to_bottom
340*4882a593Smuzhiyunspk key_slash = say_attributes
341*4882a593Smuzhiyun spk key_enter = speakup_quiet
342*4882a593Smuzhiyun ctrl  spk key_enter = speakup_off
343*4882a593Smuzhiyun spk key_9 = speakup_cut
344*4882a593Smuzhiyunspk key_8 = speakup_paste
345*4882a593Smuzhiyunshift spk key_m = say_first_char
346*4882a593Smuzhiyun ctrl spk key_semicolon = say_last_char
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun5.  The Speakup Sys System
349*4882a593Smuzhiyun
350*4882a593SmuzhiyunThe Speakup screen reader also creates a speakup subdirectory as a part
351*4882a593Smuzhiyunof the sys system.
352*4882a593Smuzhiyun
353*4882a593SmuzhiyunAs a convenience, run as root
354*4882a593Smuzhiyun
355*4882a593Smuzhiyunln -s /sys/accessibility/speakup /speakup
356*4882a593Smuzhiyun
357*4882a593Smuzhiyunto directly access speakup parameters from /speakup.
358*4882a593SmuzhiyunYou can see these entries by typing the command:
359*4882a593Smuzhiyun
360*4882a593Smuzhiyunls -1 /speakup/*
361*4882a593Smuzhiyun
362*4882a593SmuzhiyunIf you issue the above ls command, you will get back something like
363*4882a593Smuzhiyunthis:
364*4882a593Smuzhiyun
365*4882a593Smuzhiyun/speakup/attrib_bleep
366*4882a593Smuzhiyun/speakup/bell_pos
367*4882a593Smuzhiyun/speakup/bleep_time
368*4882a593Smuzhiyun/speakup/bleeps
369*4882a593Smuzhiyun/speakup/cursor_time
370*4882a593Smuzhiyun/speakup/delimiters
371*4882a593Smuzhiyun/speakup/ex_num
372*4882a593Smuzhiyun/speakup/key_echo
373*4882a593Smuzhiyun/speakup/keymap
374*4882a593Smuzhiyun/speakup/no_interrupt
375*4882a593Smuzhiyun/speakup/punc_all
376*4882a593Smuzhiyun/speakup/punc_level
377*4882a593Smuzhiyun/speakup/punc_most
378*4882a593Smuzhiyun/speakup/punc_some
379*4882a593Smuzhiyun/speakup/reading_punc
380*4882a593Smuzhiyun/speakup/repeats
381*4882a593Smuzhiyun/speakup/say_control
382*4882a593Smuzhiyun/speakup/say_word_ctl
383*4882a593Smuzhiyun/speakup/silent
384*4882a593Smuzhiyun/speakup/spell_delay
385*4882a593Smuzhiyun/speakup/synth
386*4882a593Smuzhiyun/speakup/synth_direct
387*4882a593Smuzhiyun/speakup/version
388*4882a593Smuzhiyun
389*4882a593Smuzhiyun/speakup/i18n:
390*4882a593Smuzhiyunannouncements
391*4882a593Smuzhiyuncharacters
392*4882a593Smuzhiyunchartab
393*4882a593Smuzhiyuncolors
394*4882a593Smuzhiyunctl_keys
395*4882a593Smuzhiyunformatted
396*4882a593Smuzhiyunfunction_names
397*4882a593Smuzhiyunkey_names
398*4882a593Smuzhiyunstates
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun/speakup/soft:
401*4882a593Smuzhiyuncaps_start
402*4882a593Smuzhiyuncaps_stop
403*4882a593Smuzhiyundelay_time
404*4882a593Smuzhiyundirect
405*4882a593Smuzhiyunfreq
406*4882a593Smuzhiyunfull_time
407*4882a593Smuzhiyunjiffy_delta
408*4882a593Smuzhiyunpitch
409*4882a593Smuzhiyuninflection
410*4882a593Smuzhiyunpunct
411*4882a593Smuzhiyunrate
412*4882a593Smuzhiyuntone
413*4882a593Smuzhiyuntrigger_time
414*4882a593Smuzhiyunvoice
415*4882a593Smuzhiyunvol
416*4882a593Smuzhiyun
417*4882a593SmuzhiyunNotice the two subdirectories of /speakup: /speakup/i18n and
418*4882a593Smuzhiyun/speakup/soft.
419*4882a593SmuzhiyunThe i18n subdirectory is described in a later section.
420*4882a593SmuzhiyunThe files under /speakup/soft represent settings that are specific to the
421*4882a593Smuzhiyundriver for the software synthesizer.  If you use the LiteTalk, your
422*4882a593Smuzhiyunsynthesizer-specific settings would be found in /speakup/ltlk.  In other words,
423*4882a593Smuzhiyuna subdirectory named /speakup/KWD is created to hold parameters specific
424*4882a593Smuzhiyunto the device whose keyword is KWD.
425*4882a593SmuzhiyunThese parameters include volume, rate, pitch, and others.
426*4882a593Smuzhiyun
427*4882a593SmuzhiyunIn addition to using the Speakup hot keys to change such things as
428*4882a593Smuzhiyunvolume, pitch, and rate, you can also echo values to the appropriate
429*4882a593Smuzhiyunentry in the /speakup directory.  This is very useful, since it
430*4882a593Smuzhiyunlets you control Speakup parameters from within a script.  How you
431*4882a593Smuzhiyunwould write such scripts is somewhat beyond the scope of this manual,
432*4882a593Smuzhiyunbut I will include a couple of simple examples here to give you a
433*4882a593Smuzhiyungeneral idea of what such scripts can do.
434*4882a593Smuzhiyun
435*4882a593SmuzhiyunSuppose for example, that you wanted to control both the punctuation
436*4882a593Smuzhiyunlevel and the reading punctuation level at the same time.  For
437*4882a593Smuzhiyunsimplicity, we'll call them punc0, punc1, punc2, and punc3.  The scripts
438*4882a593Smuzhiyunmight look something like this:
439*4882a593Smuzhiyun
440*4882a593Smuzhiyun#!/bin/bash
441*4882a593Smuzhiyun# punc0
442*4882a593Smuzhiyun# set punc and reading punc levels to 0
443*4882a593Smuzhiyunecho 0 >/speakup/punc_level
444*4882a593Smuzhiyunecho 0 >/speakup/reading_punc
445*4882a593Smuzhiyunecho Punctuation level set to 0.
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun#!/bin/bash
448*4882a593Smuzhiyun# punc1
449*4882a593Smuzhiyun# set punc and reading punc levels to 1
450*4882a593Smuzhiyunecho 1 >/speakup/punc_level
451*4882a593Smuzhiyunecho 1 >/speakup/reading_punc
452*4882a593Smuzhiyunecho Punctuation level set to 1.
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun#!/bin/bash
455*4882a593Smuzhiyun# punc2
456*4882a593Smuzhiyun# set punc and reading punc levels to 2
457*4882a593Smuzhiyunecho 2 >/speakup/punc_level
458*4882a593Smuzhiyunecho 2 >/speakup/reading_punc
459*4882a593Smuzhiyunecho Punctuation level set to 2.
460*4882a593Smuzhiyun
461*4882a593Smuzhiyun#!/bin/bash
462*4882a593Smuzhiyun# punc3
463*4882a593Smuzhiyun# set punc and reading punc levels to 3
464*4882a593Smuzhiyunecho 3 >/speakup/punc_level
465*4882a593Smuzhiyunecho 3 >/speakup/reading_punc
466*4882a593Smuzhiyunecho Punctuation level set to 3.
467*4882a593Smuzhiyun
468*4882a593SmuzhiyunIf you were to store these four small scripts in a directory in your
469*4882a593Smuzhiyunpath, perhaps /usr/local/bin, and set the permissions to 755 with the
470*4882a593Smuzhiyunchmod command, then you could change the default reading punc and
471*4882a593Smuzhiyunpunctuation levels at the same time by issuing just one command.  For
472*4882a593Smuzhiyunexample, if you were to execute the punc3 command at your shell prompt,
473*4882a593Smuzhiyunthen the reading punc and punc level would both get set to 3.
474*4882a593Smuzhiyun
475*4882a593SmuzhiyunI should note that the above scripts were written to work with bash, but
476*4882a593Smuzhiyunregardless of which shell you use, you should be able to do something
477*4882a593Smuzhiyunsimilar.
478*4882a593Smuzhiyun
479*4882a593SmuzhiyunThe Speakup sys system also has another interesting use.  You can echo
480*4882a593SmuzhiyunSpeakup parameters into the sys system in a script during system
481*4882a593Smuzhiyunstartup, and speakup will return to your preferred parameters every time
482*4882a593Smuzhiyunthe system is rebooted.
483*4882a593Smuzhiyun
484*4882a593SmuzhiyunMost of the Speakup sys parameters can be manipulated by a regular user
485*4882a593Smuzhiyunon the system.  However, there are a few parameters that are dangerous
486*4882a593Smuzhiyunenough that they should only be manipulated by the root user on your
487*4882a593Smuzhiyunsystem.  There are even some parameters that are read only, and cannot
488*4882a593Smuzhiyunbe written to at all.  For example, the version entry in the Speakup
489*4882a593Smuzhiyunsys system is read only.  This is because there is no reason for a user
490*4882a593Smuzhiyunto tamper with the version number which is reported by Speakup.  Doing
491*4882a593Smuzhiyunan ls -l on /speakup/version will return this:
492*4882a593Smuzhiyun
493*4882a593Smuzhiyun-r--r--r--    1 root     root            0 Mar 21 13:46 /speakup/version
494*4882a593Smuzhiyun
495*4882a593SmuzhiyunAs you can see, the version entry in the Speakup sys system is read
496*4882a593Smuzhiyunonly, is owned by root, and belongs to the root group.  Doing a cat of
497*4882a593Smuzhiyun/speakup/version will display the Speakup version number, like
498*4882a593Smuzhiyunthis:
499*4882a593Smuzhiyun
500*4882a593Smuzhiyuncat /speakup/version
501*4882a593SmuzhiyunSpeakup v-2.00 CVS: Thu Oct 21 10:38:21 EDT 2004
502*4882a593Smuzhiyunsynth dtlk version 1.1
503*4882a593Smuzhiyun
504*4882a593SmuzhiyunThe display shows the Speakup version number, along with the version
505*4882a593Smuzhiyunnumber of the driver for the current synthesizer.
506*4882a593Smuzhiyun
507*4882a593SmuzhiyunLooking at entries in the Speakup sys system can be useful in many
508*4882a593Smuzhiyunways.  For example, you might wish to know what level your volume is set
509*4882a593Smuzhiyunat.  You could type:
510*4882a593Smuzhiyun
511*4882a593Smuzhiyuncat /speakup/KWD/vol
512*4882a593Smuzhiyun# Replace KWD with the keyword for your synthesizer, E.G., ltlk for LiteTalk.
513*4882a593Smuzhiyun5
514*4882a593Smuzhiyun
515*4882a593SmuzhiyunThe number five which comes back is the level at which the synthesizer
516*4882a593Smuzhiyunvolume is set at.
517*4882a593Smuzhiyun
518*4882a593SmuzhiyunAll the entries in the Speakup sys system are readable, some are
519*4882a593Smuzhiyunwritable by root only, and some are writable by everyone.  Unless you
520*4882a593Smuzhiyunknow what you are doing, you should probably leave the ones that are
521*4882a593Smuzhiyunwritable by root only alone.  Most of the names are self explanatory.
522*4882a593SmuzhiyunVol for controlling volume, pitch for pitch, inflection for pitch range, rate
523*4882a593Smuzhiyunfor controlling speaking rate, etc.  If you find one you aren't sure about, you
524*4882a593Smuzhiyuncan post a query on the Speakup list.
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun6.  Changing Synthesizers
527*4882a593Smuzhiyun
528*4882a593SmuzhiyunIt is possible to change to a different synthesizer while speakup is
529*4882a593Smuzhiyunrunning.  In other words, it is not necessary to reboot the system
530*4882a593Smuzhiyunin order to use a different synthesizer.  You can simply echo the
531*4882a593Smuzhiyunsynthesizer keyword to the /speakup/synth sys entry.
532*4882a593SmuzhiyunDepending on your situation, you may wish to echo none to the synth
533*4882a593Smuzhiyunsys entry, to disable speech while one synthesizer is disconnected and
534*4882a593Smuzhiyuna second one is connected in its place.  Then echo the keyword for the
535*4882a593Smuzhiyunnew synthesizer into the synth sys entry in order to start speech
536*4882a593Smuzhiyunwith the newly connected synthesizer.  See the list of synthesizer
537*4882a593Smuzhiyunkeywords in section 1 to find the keyword which matches your synth.
538*4882a593Smuzhiyun
539*4882a593Smuzhiyun7.  Loading modules
540*4882a593Smuzhiyun
541*4882a593SmuzhiyunAs mentioned earlier, Speakup can either be completely compiled into the
542*4882a593Smuzhiyunkernel, with the exception of the help module, or it can be compiled as
543*4882a593Smuzhiyuna series of modules.   When compiled as modules, Speakup will only be
544*4882a593Smuzhiyunable to speak some of the bootup messages if your system administrator
545*4882a593Smuzhiyunhas configured the system to load the modules at boo time. The modules
546*4882a593Smuzhiyuncan  be loaded after the file systems have been checked and mounted, or
547*4882a593Smuzhiyunfrom an initrd.  There is a third possibility.  Speakup can be compiled
548*4882a593Smuzhiyunwith some components built into the kernel, and others as modules.  As
549*4882a593Smuzhiyunwe'll see in the next section, this is particularly useful when you are
550*4882a593Smuzhiyunworking with software synthesizers.
551*4882a593Smuzhiyun
552*4882a593SmuzhiyunIf Speakup is completely compiled as modules, then you must use the
553*4882a593Smuzhiyunmodprobe command to load Speakup.  You do this by loading the module for
554*4882a593Smuzhiyunthe synthesizer driver you wish to use.  The driver modules are all
555*4882a593Smuzhiyunnamed speakup_<keyword>, where <keyword> is the keyword for the
556*4882a593Smuzhiyunsynthesizer you want.  So, in order to load the driver for the DecTalk
557*4882a593SmuzhiyunExpress, you would type the following command:
558*4882a593Smuzhiyun
559*4882a593Smuzhiyunmodprobe speakup_dectlk
560*4882a593Smuzhiyun
561*4882a593SmuzhiyunIssuing this command would load the DecTalk Express driver and all other
562*4882a593Smuzhiyunrelated Speakup modules necessary to get Speakup up and running.
563*4882a593Smuzhiyun
564*4882a593SmuzhiyunTo completely unload Speakup, again presuming that it is entirely built
565*4882a593Smuzhiyunas modules, you would give the command:
566*4882a593Smuzhiyun
567*4882a593Smuzhiyunmodprobe -r speakup_dectlk
568*4882a593Smuzhiyun
569*4882a593SmuzhiyunThe above command assumes you were running a DecTalk Express.  If you
570*4882a593Smuzhiyunwere using a different synth, then you would substitute its keyword in
571*4882a593Smuzhiyunplace of dectlk.
572*4882a593Smuzhiyun
573*4882a593SmuzhiyunIf you have multiple drivers loaded, you need to unload all of them, in
574*4882a593Smuzhiyunorder to completely unload Speakup.
575*4882a593SmuzhiyunFor example, if you have loaded both the dectlk and ltlk drivers, use the
576*4882a593Smuzhiyuncommand:
577*4882a593Smuzhiyunmodprobe -r speakup_dectlk speakup_ltlk
578*4882a593Smuzhiyun
579*4882a593SmuzhiyunYou cannot unload the driver for software synthesizers when a user-space
580*4882a593Smuzhiyundaemon is using /dev/softsynth.  First, kill the daemon.  Next, remove
581*4882a593Smuzhiyunthe driver with the command:
582*4882a593Smuzhiyunmodprobe -r speakup_soft
583*4882a593Smuzhiyun
584*4882a593SmuzhiyunNow, suppose we have a situation where the main Speakup component
585*4882a593Smuzhiyunis built into the kernel, and some or all of the drivers are built as
586*4882a593Smuzhiyunmodules.  Since the main part of Speakup is compiled into the kernel, a
587*4882a593Smuzhiyunpartial Speakup sys system has been created which we can take advantage
588*4882a593Smuzhiyunof by simply echoing the synthesizer keyword into the
589*4882a593Smuzhiyun/speakup/synth sys entry.  This will cause the kernel to
590*4882a593Smuzhiyunautomatically load the appropriate driver module, and start Speakup
591*4882a593Smuzhiyuntalking.  To switch to another synth, just echo a new keyword to the
592*4882a593Smuzhiyunsynth sys entry.  For example, to load the DoubleTalk LT driver,
593*4882a593Smuzhiyunyou would type:
594*4882a593Smuzhiyun
595*4882a593Smuzhiyunecho ltlk >/speakup/synth
596*4882a593Smuzhiyun
597*4882a593SmuzhiyunYou can use the modprobe -r command to unload driver modules, regardless
598*4882a593Smuzhiyunof whether the main part of Speakup has been built into the kernel or
599*4882a593Smuzhiyunnot.
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun8.  Using Software Synthesizers
602*4882a593Smuzhiyun
603*4882a593SmuzhiyunUsing a software synthesizer requires that some other software be
604*4882a593Smuzhiyuninstalled and running on your system.  For this reason, software
605*4882a593Smuzhiyunsynthesizers are not available for use at bootup, or during a system
606*4882a593Smuzhiyuninstallation process.
607*4882a593SmuzhiyunThere are two freely-available solutions for software speech: Espeakup and
608*4882a593SmuzhiyunSpeech Dispatcher.
609*4882a593SmuzhiyunThese are described in subsections 8.1 and 8.2, respectively.
610*4882a593Smuzhiyun
611*4882a593SmuzhiyunDuring the rest of this section, we assume that speakup_soft is either
612*4882a593Smuzhiyunbuilt in to your kernel, or loaded as a module.
613*4882a593Smuzhiyun
614*4882a593SmuzhiyunIf your system does not have udev installed , before you can use a
615*4882a593Smuzhiyunsoftware synthesizer, you must have created the /dev/softsynth device.
616*4882a593SmuzhiyunIf you have not already done so, issue the following commands as root:
617*4882a593Smuzhiyun
618*4882a593Smuzhiyuncd /dev
619*4882a593Smuzhiyunmknod softsynth c 10 26
620*4882a593Smuzhiyun
621*4882a593SmuzhiyunWhile we are at it, we might just as well create the /dev/synth device,
622*4882a593Smuzhiyunwhich can be used to let user space programs send information to your
623*4882a593Smuzhiyunsynthesizer.  To create /dev/synth, change to the /dev directory, and
624*4882a593Smuzhiyunissue the following command as root:
625*4882a593Smuzhiyun
626*4882a593Smuzhiyunmknod synth c 10 25
627*4882a593Smuzhiyun
628*4882a593Smuzhiyunof both.
629*4882a593Smuzhiyun
630*4882a593Smuzhiyun8.1. Espeakup
631*4882a593Smuzhiyun
632*4882a593SmuzhiyunEspeakup is a connector between Speakup and the eSpeak software synthesizer.
633*4882a593SmuzhiyunEspeakup may already be available as a package for your distribution
634*4882a593Smuzhiyunof Linux.  If it is not packaged, you need to install it manually.
635*4882a593SmuzhiyunYou can find it in the contrib/ subdirectory of the Speakup sources.
636*4882a593SmuzhiyunThe filename is espeakup-$VERSION.tar.bz2, where $VERSION
637*4882a593Smuzhiyundepends on the current release of Espeakup.  The Speakup 3.1.2 source
638*4882a593Smuzhiyunships with version 0.71 of Espeakup.
639*4882a593SmuzhiyunThe README file included with the Espeakup sources describes the process
640*4882a593Smuzhiyunof manual installation.
641*4882a593Smuzhiyun
642*4882a593SmuzhiyunAssuming that Espeakup is installed, either by the user or by the distributor,
643*4882a593Smuzhiyunfollow these steps to use it.
644*4882a593Smuzhiyun
645*4882a593SmuzhiyunTell Speakup to use the "soft driver:
646*4882a593Smuzhiyunecho soft > /speakup/synth
647*4882a593Smuzhiyun
648*4882a593SmuzhiyunFinally, start the espeakup program.  There are two ways to do it.
649*4882a593SmuzhiyunBoth require root privileges.
650*4882a593Smuzhiyun
651*4882a593SmuzhiyunIf Espeakup was installed as a package for your Linux distribution,
652*4882a593Smuzhiyunyou probably have a distribution-specific script that controls the operation
653*4882a593Smuzhiyunof the daemon.  Look for a file named espeakup under /etc/init.d or
654*4882a593Smuzhiyun/etc/rc.d.  Execute the following command with root privileges:
655*4882a593Smuzhiyun/etc/init.d/espeakup start
656*4882a593SmuzhiyunReplace init.d with rc.d, if your distribution uses scripts located under
657*4882a593Smuzhiyun/etc/rc.d.
658*4882a593SmuzhiyunYour distribution will also have a procedure for starting daemons at
659*4882a593Smuzhiyunboot-time, so it is possible to have software speech as soon as user-space
660*4882a593Smuzhiyundaemons are started by the bootup scripts.
661*4882a593SmuzhiyunThese procedures are not described in this document.
662*4882a593Smuzhiyun
663*4882a593SmuzhiyunIf you built Espeakup manually, the "make install" step placed the binary
664*4882a593Smuzhiyununder /usr/bin.
665*4882a593SmuzhiyunRun the following command as root:
666*4882a593Smuzhiyun/usr/bin/espeakup
667*4882a593SmuzhiyunEspeakup should start speaking.
668*4882a593Smuzhiyun
669*4882a593Smuzhiyun8.2. Speech Dispatcher
670*4882a593Smuzhiyun
671*4882a593SmuzhiyunFor this option, you must have a package called
672*4882a593SmuzhiyunSpeech Dispatcher running on your system, and it must be configured to
673*4882a593Smuzhiyunwork with one of its supported software synthesizers.
674*4882a593Smuzhiyun
675*4882a593SmuzhiyunTwo open source synthesizers you might use are Flite and Festival.  You
676*4882a593Smuzhiyunmight also choose to purchase the Software DecTalk from Fonix Sales Inc.
677*4882a593SmuzhiyunIf you run a google search for Fonix, you'll find their web site.
678*4882a593Smuzhiyun
679*4882a593SmuzhiyunYou can obtain a copy of Speech Dispatcher from free(b)soft at
680*4882a593Smuzhiyunhttp://www.freebsoft.org/.  Follow the installation instructions that
681*4882a593Smuzhiyuncome with Speech Dispatcher in order to install and configure Speech
682*4882a593SmuzhiyunDispatcher.  You can check out the web site for your Linux distribution
683*4882a593Smuzhiyunin order to get a copy of either Flite or Festival.  Your Linux
684*4882a593Smuzhiyundistribution may also have a precompiled Speech Dispatcher package.
685*4882a593Smuzhiyun
686*4882a593SmuzhiyunOnce you've installed, configured, and tested Speech Dispatcher with your
687*4882a593Smuzhiyunchosen software synthesizer, you still need one more piece of software
688*4882a593Smuzhiyunin order to make things work.  You need a package called speechd-up.
689*4882a593SmuzhiyunYou get it from the free(b)soft web site mentioned above.  After you've
690*4882a593Smuzhiyuncompiled and installed speechd-up, you are almost ready to begin using
691*4882a593Smuzhiyunyour software synthesizer.
692*4882a593Smuzhiyun
693*4882a593SmuzhiyunNow you can begin using your software synthesizer.  In order to do so,
694*4882a593Smuzhiyunecho the soft keyword to the synth sys entry like this:
695*4882a593Smuzhiyun
696*4882a593Smuzhiyunecho soft >/speakup/synth
697*4882a593Smuzhiyun
698*4882a593SmuzhiyunNext run the speechd_up command like this:
699*4882a593Smuzhiyun
700*4882a593Smuzhiyunspeechd_up &
701*4882a593Smuzhiyun
702*4882a593SmuzhiyunYour synth should now start talking, and you should be able to adjust
703*4882a593Smuzhiyunthe pitch, rate, etc.
704*4882a593Smuzhiyun
705*4882a593Smuzhiyun9.  Using The DecTalk PC Card
706*4882a593Smuzhiyun
707*4882a593SmuzhiyunThe DecTalk PC card is an ISA card that is inserted into one of the ISA
708*4882a593Smuzhiyunslots in your computer.  It requires that the DecTalk PC software be
709*4882a593Smuzhiyuninstalled on your computer, and that the software be loaded onto the
710*4882a593SmuzhiyunDectalk PC card before it can be used.
711*4882a593Smuzhiyun
712*4882a593SmuzhiyunYou can get the dec_pc.tgz file from the linux-speakup.org site.  The
713*4882a593Smuzhiyundec_pc.tgz file is in the ~ftp/pub/linux/speakup directory.
714*4882a593Smuzhiyun
715*4882a593SmuzhiyunAfter you have downloaded the dec_pc.tgz file, untar it in your home
716*4882a593Smuzhiyundirectory, and read the Readme file in the newly created dec_pc
717*4882a593Smuzhiyundirectory.
718*4882a593Smuzhiyun
719*4882a593SmuzhiyunThe easiest way to get the software working is to copy the entire dec_pc
720*4882a593Smuzhiyundirectory into /user/local/lib.  To do this, su to root in your home
721*4882a593Smuzhiyundirectory, and issue the command:
722*4882a593Smuzhiyun
723*4882a593Smuzhiyuncp dec_pc /usr/local/lib
724*4882a593Smuzhiyun
725*4882a593SmuzhiyunYou will need to copy the dtload command from the dec_pc directory to a
726*4882a593Smuzhiyundirectory in your path.  Either /usr/bin or /usr/local/bin is a good
727*4882a593Smuzhiyunchoice.
728*4882a593Smuzhiyun
729*4882a593SmuzhiyunYou can now run the dtload command in order to load the DecTalk PC
730*4882a593Smuzhiyunsoftware onto the card.  After you have done this, echo the decpc
731*4882a593Smuzhiyunkeyword to the synth entry in the sys system like this:
732*4882a593Smuzhiyun
733*4882a593Smuzhiyunecho decpc >/speakup/synth
734*4882a593Smuzhiyun
735*4882a593SmuzhiyunYour DecTalk PC should start talking, and then you can adjust the pitch,
736*4882a593Smuzhiyunrate, volume, voice, etc.  The voice entry in the Speakup sys system
737*4882a593Smuzhiyunwill accept a number from 0 through 7 for the DecTalk PC synthesizer,
738*4882a593Smuzhiyunwhich will give you access to some of the DecTalk voices.
739*4882a593Smuzhiyun
740*4882a593Smuzhiyun10.  Using Cursor Tracking
741*4882a593Smuzhiyun
742*4882a593SmuzhiyunIn Speakup version 2.0 and later, cursor tracking is turned on by
743*4882a593Smuzhiyundefault.  This means that when you are using an editor, Speakup will
744*4882a593Smuzhiyunautomatically speak characters as you move left and right with the
745*4882a593Smuzhiyuncursor keys, and lines as you move up and down with the cursor keys.
746*4882a593SmuzhiyunThis is the traditional sort of cursor tracking.
747*4882a593SmuzhiyunRecent versions of Speakup provide two additional ways to control the
748*4882a593Smuzhiyuntext that is spoken when the cursor is moved:
749*4882a593Smuzhiyun"highlight tracking" and "read window."
750*4882a593SmuzhiyunThey are described later in this section.
751*4882a593SmuzhiyunSometimes, these modes get in your way, so you can disable cursor tracking
752*4882a593Smuzhiyunaltogether.
753*4882a593Smuzhiyun
754*4882a593SmuzhiyunYou may select among the various forms of cursor tracking using the keypad
755*4882a593Smuzhiyunasterisk key.
756*4882a593SmuzhiyunEach time you press this key, a new mode is selected, and Speakup speaks
757*4882a593Smuzhiyunthe name of the new mode.  The names for the four possible states of cursor
758*4882a593Smuzhiyuntracking are: "cursoring on", "highlight tracking", "read window",
759*4882a593Smuzhiyunand "cursoring off."  The keypad asterisk key moves through the list of
760*4882a593Smuzhiyunmodes in a circular fashion.
761*4882a593Smuzhiyun
762*4882a593SmuzhiyunIf highlight tracking is enabled, Speakup tracks highlighted text,
763*4882a593Smuzhiyunrather than the cursor itself. When you move the cursor with the arrow keys,
764*4882a593SmuzhiyunSpeakup speaks the currently highlighted information.
765*4882a593SmuzhiyunThis is useful when moving through various menus and dialog boxes.
766*4882a593SmuzhiyunIf cursor tracking isn't helping you while navigating a menu,
767*4882a593Smuzhiyuntry highlight tracking.
768*4882a593Smuzhiyun
769*4882a593SmuzhiyunWith the "read window" variety of cursor tracking, you can limit the text
770*4882a593Smuzhiyunthat Speakup speaks by specifying a window of interest on the screen.
771*4882a593SmuzhiyunSee section 15 for a description of the process of defining windows.
772*4882a593SmuzhiyunWhen you move the cursor via the arrow keys, Speakup only speaks
773*4882a593Smuzhiyunthe contents of the window.  This is especially helpful when you are hearing
774*4882a593Smuzhiyunsuperfluous speech.  Consider the following example.
775*4882a593Smuzhiyun
776*4882a593SmuzhiyunSuppose that you are at a shell prompt.  You use bash, and you want to
777*4882a593Smuzhiyunexplore your command history using the up and down arrow keys.  If you
778*4882a593Smuzhiyunhave enabled cursor tracking, you will hear two pieces of information.
779*4882a593SmuzhiyunSpeakup speaks both your shell prompt and the current entry from the
780*4882a593Smuzhiyuncommand history.  You may not want to hear the prompt repeated
781*4882a593Smuzhiyuneach time you move, so you can silence it by specifying a window.  Find
782*4882a593Smuzhiyunthe last line of text on the screen.  Clear the current window by pressing
783*4882a593Smuzhiyunthe key combination speakup f3.  Use the review cursor to find the first
784*4882a593Smuzhiyuncharacter that follows your shell prompt.  Press speakup + f2 twice, to
785*4882a593Smuzhiyundefine a one-line window.  The boundaries of the window are the
786*4882a593Smuzhiyuncharacter following the shell prompt and the end of the line.  Now, cycle
787*4882a593Smuzhiyunthrough the cursor tracking modes using keypad asterisk, until Speakup
788*4882a593Smuzhiyunsays "read window."  Move through your history using your arrow keys.
789*4882a593SmuzhiyunYou will notice that Speakup no longer speaks the redundant prompt.
790*4882a593Smuzhiyun
791*4882a593SmuzhiyunSome folks like to turn cursor tracking off while they are using the
792*4882a593Smuzhiyunlynx web browser.  You definitely want to turn cursor tracking off when
793*4882a593Smuzhiyunyou are using the alsamixer application.  Otherwise, you won't be able
794*4882a593Smuzhiyunto hear your mixer settings while you are using the arrow keys.
795*4882a593Smuzhiyun
796*4882a593Smuzhiyun11.  Cut and Paste
797*4882a593Smuzhiyun
798*4882a593SmuzhiyunOne of Speakup's more useful features is the ability to cut and paste
799*4882a593Smuzhiyuntext on the screen.  This means that you can capture information from a
800*4882a593Smuzhiyunprogram, and paste that captured text into a different place in the
801*4882a593Smuzhiyunprogram, or into an entirely different program, which may even be
802*4882a593Smuzhiyunrunning on a different console.
803*4882a593Smuzhiyun
804*4882a593SmuzhiyunFor example, in this manual, we have made references to several web
805*4882a593Smuzhiyunsites.  It would be nice if you could cut and paste these urls into your
806*4882a593Smuzhiyunweb browser.  Speakup does this quite nicely.  Suppose you wanted to
807*4882a593Smuzhiyunpast the following url into your browser:
808*4882a593Smuzhiyun
809*4882a593Smuzhiyunhttp://linux-speakup.org/
810*4882a593Smuzhiyun
811*4882a593SmuzhiyunUse the speakup review keys to position the reading cursor on the first
812*4882a593Smuzhiyuncharacter of the above url.  When the reading cursor is in position,
813*4882a593Smuzhiyunpress the keypad slash key once.  Speakup will say, "mark".  Next,
814*4882a593Smuzhiyunposition the reading cursor on the rightmost character of the above
815*4882a593Smuzhiyunurl. Press the keypad slash key once again to actually cut the text
816*4882a593Smuzhiyunfrom the screen.  Speakup will say, "cut".  Although we call this
817*4882a593Smuzhiyuncutting, Speakup does not actually delete the cut text from the screen.
818*4882a593SmuzhiyunIt makes a copy of the text in a special buffer for later pasting.
819*4882a593Smuzhiyun
820*4882a593SmuzhiyunNow that you have the url cut from the screen, you can paste it into
821*4882a593Smuzhiyunyour browser, or even paste the url on a command line as an argument to
822*4882a593Smuzhiyunyour browser.
823*4882a593Smuzhiyun
824*4882a593SmuzhiyunSuppose you want to start lynx and go to the Speakup site.
825*4882a593Smuzhiyun
826*4882a593SmuzhiyunYou can switch to a different console with the alt left and right
827*4882a593Smuzhiyunarrows, or you can switch to a specific console by typing alt and a
828*4882a593Smuzhiyunfunction key.  These are not Speakup commands, just standard Linux
829*4882a593Smuzhiyunconsole capabilities.
830*4882a593Smuzhiyun
831*4882a593SmuzhiyunOnce you've changed to an appropriate console, and are at a shell prompt,
832*4882a593Smuzhiyuntype the word lynx, followed by a space.  Now press and hold the speakup
833*4882a593Smuzhiyunkey, while you type the keypad slash character.  The url will be pasted
834*4882a593Smuzhiyunonto the command line, just as though you had typed it in.  Press the
835*4882a593Smuzhiyunenter key to execute the command.
836*4882a593Smuzhiyun
837*4882a593SmuzhiyunThe paste buffer will continue to hold the cut information, until a new
838*4882a593Smuzhiyunmark and cut operation is carried out.  This means you can paste the cut
839*4882a593Smuzhiyuninformation as many times as you like before doing another cut
840*4882a593Smuzhiyunoperation.
841*4882a593Smuzhiyun
842*4882a593SmuzhiyunYou are not limited to cutting and pasting only one line on the screen.
843*4882a593SmuzhiyunYou can also cut and paste rectangular regions of the screen.  Just
844*4882a593Smuzhiyunposition the reading cursor at the top left corner of the text to be
845*4882a593Smuzhiyuncut, mark it with the keypad slash key, then position the reading cursor
846*4882a593Smuzhiyunat the bottom right corner of the region to be cut, and cut it with the
847*4882a593Smuzhiyunkeypad slash key.
848*4882a593Smuzhiyun
849*4882a593Smuzhiyun12.  Changing the Pronunciation of Characters
850*4882a593Smuzhiyun
851*4882a593SmuzhiyunThrough the /speakup/i18n/characters sys entry, Speakup gives you the
852*4882a593Smuzhiyunability to change how Speakup pronounces a given character.  You could,
853*4882a593Smuzhiyunfor example, change how some punctuation characters are spoken.  You can
854*4882a593Smuzhiyuneven change how Speakup will pronounce certain letters.
855*4882a593Smuzhiyun
856*4882a593SmuzhiyunYou may, for example, wish to change how Speakup pronounces the z
857*4882a593Smuzhiyuncharacter.  The author of Speakup, Kirk Reiser, is Canadian, and thus
858*4882a593Smuzhiyunbelieves that the z should be pronounced zed.  If you are an American,
859*4882a593Smuzhiyunyou might wish to use the zee pronunciation instead of zed.  You can
860*4882a593Smuzhiyunchange the pronunciation of both the upper and lower case z with the
861*4882a593Smuzhiyunfollowing two commands:
862*4882a593Smuzhiyun
863*4882a593Smuzhiyunecho 90 zee >/speakup/characters
864*4882a593Smuzhiyunecho 122 zee >/speakup/characters
865*4882a593Smuzhiyun
866*4882a593SmuzhiyunLet's examine the parts of the two previous commands.  They are issued
867*4882a593Smuzhiyunat the shell prompt, and could be placed in a startup script.
868*4882a593Smuzhiyun
869*4882a593SmuzhiyunThe word echo tells the shell that you want to have it display the
870*4882a593Smuzhiyunstring of characters that follow the word echo.  If you were to just
871*4882a593Smuzhiyuntype:
872*4882a593Smuzhiyun
873*4882a593Smuzhiyunecho hello.
874*4882a593Smuzhiyun
875*4882a593SmuzhiyunYou would get the word hello printed on your screen as soon as you
876*4882a593Smuzhiyunpressed the enter key.  In this case, we are echoing strings that we
877*4882a593Smuzhiyunwant to be redirected into the sys system.
878*4882a593Smuzhiyun
879*4882a593SmuzhiyunThe numbers 90 and 122 in the above echo commands are the ascii numeric
880*4882a593Smuzhiyunvalues for the upper and lower case z, the characters we wish to change.
881*4882a593Smuzhiyun
882*4882a593SmuzhiyunThe string zee is the pronunciation that we want Speakup to use for the
883*4882a593Smuzhiyunupper and lower case z.
884*4882a593Smuzhiyun
885*4882a593SmuzhiyunThe > symbol redirects the output of the echo command to a file, just
886*4882a593Smuzhiyunlike in DOS, or at the Windows command prompt.
887*4882a593Smuzhiyun
888*4882a593SmuzhiyunAnd finally, /speakup/i18n/characters is the file entry in the sys system
889*4882a593Smuzhiyunwhere we want the output to be directed.  Speakup looks at the numeric
890*4882a593Smuzhiyunvalue of the character we want to change, and inserts the pronunciation
891*4882a593Smuzhiyunstring into an internal table.
892*4882a593Smuzhiyun
893*4882a593SmuzhiyunYou can look at the whole table with the following command:
894*4882a593Smuzhiyun
895*4882a593Smuzhiyuncat /speakup/i18n/characters
896*4882a593Smuzhiyun
897*4882a593SmuzhiyunSpeakup will then print out the entire character pronunciation table.  I
898*4882a593Smuzhiyunwon't display it here, but leave you to look at it at your convenience.
899*4882a593Smuzhiyun
900*4882a593Smuzhiyun13.  Mapping Keys
901*4882a593Smuzhiyun
902*4882a593SmuzhiyunSpeakup has the capability of allowing you to assign or "map" keys to
903*4882a593Smuzhiyuninternal Speakup commands.  This section necessarily assumes you have a
904*4882a593SmuzhiyunLinux kernel source tree installed, and that it has been patched and
905*4882a593Smuzhiyunconfigured with Speakup.  How you do this is beyond the scope of this
906*4882a593Smuzhiyunmanual.  For this information, visit the Speakup web site at
907*4882a593Smuzhiyunhttp://linux-speakup.org/.  The reason you'll need the kernel source
908*4882a593Smuzhiyuntree patched with Speakup is that the genmap utility you'll need for
909*4882a593Smuzhiyunprocessing keymaps is in the
910*4882a593Smuzhiyun/usr/src/linux-<version_number>/drivers/char/speakup directory.  The
911*4882a593Smuzhiyun<version_number> in the above directory path is the version number of
912*4882a593Smuzhiyunthe Linux source tree you are working with.
913*4882a593Smuzhiyun
914*4882a593SmuzhiyunSo ok, you've gone off and gotten your kernel source tree, and patched
915*4882a593Smuzhiyunand configured it.  Now you can start manipulating keymaps.
916*4882a593Smuzhiyun
917*4882a593SmuzhiyunYou can either use the
918*4882a593Smuzhiyun/usr/src/linux-<version_number>/drivers/char/speakup/speakupmap.map file
919*4882a593Smuzhiyunincluded with the Speakup source, or you can cut and paste the copy in
920*4882a593Smuzhiyunsection 4 into a separate file.  If you use the one in the Speakup
921*4882a593Smuzhiyunsource tree, make sure you make a backup of it before you start making
922*4882a593Smuzhiyunchanges.  You have been warned!
923*4882a593Smuzhiyun
924*4882a593SmuzhiyunSuppose that you want to swap the key assignments for the Speakup
925*4882a593Smuzhiyunsay_last_char and the Speakup say_first_char commands.  The
926*4882a593Smuzhiyunspeakupmap.map lists the key mappings for these two commands as follows:
927*4882a593Smuzhiyun
928*4882a593Smuzhiyunspk key_pageup = say_first_char
929*4882a593Smuzhiyunspk key_pagedown = say_last_char
930*4882a593Smuzhiyun
931*4882a593SmuzhiyunYou can edit your copy of the speakupmap.map file and swap the command
932*4882a593Smuzhiyunnames on the right side of the = (equals) sign.  You did make a backup,
933*4882a593Smuzhiyunright?  The new keymap lines would look like this:
934*4882a593Smuzhiyun
935*4882a593Smuzhiyunspk key_pageup = say_last_char
936*4882a593Smuzhiyunspk key_pagedown = say_first_char
937*4882a593Smuzhiyun
938*4882a593SmuzhiyunAfter you edit your copy of the speakupmap.map file, save it under a new
939*4882a593Smuzhiyunfile name, perhaps newmap.map.  Then exit your editor and return to the
940*4882a593Smuzhiyunshell prompt.
941*4882a593Smuzhiyun
942*4882a593SmuzhiyunYou are now ready to load your keymap with your swapped key assignments.
943*4882a593Smuzhiyun Assuming that you saved your new keymap as the file newmap.map, you
944*4882a593Smuzhiyunwould load your keymap into the sys system like this:
945*4882a593Smuzhiyun
946*4882a593Smuzhiyun/usr/src/linux-<version_number>/drivers/char/speakup/genmap newmap.map
947*4882a593Smuzhiyun>/speakup/keymap
948*4882a593Smuzhiyun
949*4882a593SmuzhiyunRemember to substitute your kernel version number for the
950*4882a593Smuzhiyun<version_number> in the above command.  Also note that although the
951*4882a593Smuzhiyunabove command wrapped onto two lines in this document, you should type
952*4882a593Smuzhiyunit all on one line.
953*4882a593Smuzhiyun
954*4882a593SmuzhiyunYour say first and say last characters should now be swapped.  Pressing
955*4882a593Smuzhiyunspeakup pagedown should read you the first non-whitespace character on
956*4882a593Smuzhiyunthe line your reading cursor is in, and pressing speakup pageup should
957*4882a593Smuzhiyunread you the last character on the line your reading cursor is in.
958*4882a593Smuzhiyun
959*4882a593SmuzhiyunYou should note that these new mappings will only stay in effect until
960*4882a593Smuzhiyunyou reboot, or until you load another keymap.
961*4882a593Smuzhiyun
962*4882a593SmuzhiyunOne final warning.  If you try to load a partial map, you will quickly
963*4882a593Smuzhiyunfind that all the mappings you didn't include in your file got deleted
964*4882a593Smuzhiyunfrom the working map.  Be extremely careful, and always make a backup!
965*4882a593SmuzhiyunYou have been warned!
966*4882a593Smuzhiyun
967*4882a593Smuzhiyun14.  Internationalizing Speakup
968*4882a593Smuzhiyun
969*4882a593SmuzhiyunSpeakup indicates various conditions to the user by speaking messages.
970*4882a593SmuzhiyunFor instance, when you move to the left edge of the screen with the
971*4882a593Smuzhiyunreview keys, Speakup says, "left."
972*4882a593SmuzhiyunPrior to version 3.1.0 of Speakup, all of these messages were in English,
973*4882a593Smuzhiyunand they could not be changed.  If you used a non-English synthesizer,
974*4882a593Smuzhiyunyou still heard English messages, such as "left" and "cursoring on."
975*4882a593SmuzhiyunIn version 3.1.0 or higher, one may load translations for the various
976*4882a593Smuzhiyunmessages via the /sys filesystem.
977*4882a593Smuzhiyun
978*4882a593SmuzhiyunThe directory /speakup/i18n contains several collections of messages.
979*4882a593SmuzhiyunEach group of messages is stored in its own file.
980*4882a593SmuzhiyunThe following section lists all of these files, along with a brief description
981*4882a593Smuzhiyunof each.
982*4882a593Smuzhiyun
983*4882a593Smuzhiyun14.1.  Files Under the i18n Subdirectory
984*4882a593Smuzhiyun
985*4882a593Smuzhiyun* announcements:
986*4882a593SmuzhiyunThis file contains various general announcements, most of which cannot
987*4882a593Smuzhiyunbe categorized.  You will find messages such as "You killed Speakup",
988*4882a593Smuzhiyun"I'm alive", "leaving help", "parked", "unparked", and others.
989*4882a593SmuzhiyunYou will also find the names of the screen edges and cursor tracking modes
990*4882a593Smuzhiyunhere.
991*4882a593Smuzhiyun
992*4882a593Smuzhiyun* characters:
993*4882a593SmuzhiyunSee section 12 for a description of this file.
994*4882a593Smuzhiyun
995*4882a593Smuzhiyun* chartab:
996*4882a593SmuzhiyunSee section 12.  Unlike the rest of the files in the i18n subdirectory,
997*4882a593Smuzhiyunthis one does not contain messages to be spoken.
998*4882a593Smuzhiyun
999*4882a593Smuzhiyun* colors:
1000*4882a593SmuzhiyunWhen you use the "say attributes" function, Speakup says the name of the
1001*4882a593Smuzhiyunforeground and background colors.  These names come from the i18n/colors
1002*4882a593Smuzhiyunfile.
1003*4882a593Smuzhiyun
1004*4882a593Smuzhiyun* ctl_keys:
1005*4882a593SmuzhiyunHere, you will find names of control keys.  These are used with Speakup's
1006*4882a593Smuzhiyunsay_control feature.
1007*4882a593Smuzhiyun
1008*4882a593Smuzhiyun* formatted:
1009*4882a593SmuzhiyunThis group of messages contains embedded formatting codes, to specify
1010*4882a593Smuzhiyunthe type and width of displayed data.  If you change these, you must
1011*4882a593Smuzhiyunpreserve all of the formatting codes, and they must appear in the order
1012*4882a593Smuzhiyunused by the default messages.
1013*4882a593Smuzhiyun
1014*4882a593Smuzhiyun* function_names:
1015*4882a593SmuzhiyunHere, you will find a list of names for Speakup functions.  These are used
1016*4882a593Smuzhiyunby the help system.  For example, suppose that you have activated help mode,
1017*4882a593Smuzhiyunand you pressed keypad 3.  Speakup says:
1018*4882a593Smuzhiyun"keypad 3 is character, say next."
1019*4882a593SmuzhiyunThe message "character, say next" names a Speakup function, and it
1020*4882a593Smuzhiyuncomes from this function_names file.
1021*4882a593Smuzhiyun
1022*4882a593Smuzhiyun* key_names:
1023*4882a593SmuzhiyunAgain, key_names is used by Speakup's help system.  In the previous
1024*4882a593Smuzhiyunexample, Speakup said that you pressed "keypad 3."
1025*4882a593SmuzhiyunThis name came from the key_names file.
1026*4882a593Smuzhiyun
1027*4882a593Smuzhiyun* states:
1028*4882a593SmuzhiyunThis file contains names for key states.
1029*4882a593SmuzhiyunAgain, these are part of the help system.  For instance, if you had pressed
1030*4882a593Smuzhiyunspeakup + keypad 3, you would hear:
1031*4882a593Smuzhiyun"speakup keypad 3 is go to bottom edge."
1032*4882a593SmuzhiyunThe speakup key is depressed, so the name of the key state is speakup.
1033*4882a593SmuzhiyunThis part of the message comes from the states collection.
1034*4882a593Smuzhiyun
1035*4882a593Smuzhiyun14.2.  Loading Your Own Messages
1036*4882a593Smuzhiyun
1037*4882a593SmuzhiyunThe files under the i18n subdirectory all follow the same format.
1038*4882a593SmuzhiyunThey consist of lines, with one message per line.
1039*4882a593SmuzhiyunEach message is represented by a number, followed by the text of the message.
1040*4882a593SmuzhiyunThe number is the position of the message in the given collection.
1041*4882a593SmuzhiyunFor example, if you view the file /speakup/i18n/colors, you will see the
1042*4882a593Smuzhiyunfollowing list:
1043*4882a593Smuzhiyun
1044*4882a593Smuzhiyun0	black
1045*4882a593Smuzhiyun1	blue
1046*4882a593Smuzhiyun2	green
1047*4882a593Smuzhiyun3	cyan
1048*4882a593Smuzhiyun4	red
1049*4882a593Smuzhiyun5	magenta
1050*4882a593Smuzhiyun6	yellow
1051*4882a593Smuzhiyun7	white
1052*4882a593Smuzhiyun8	grey
1053*4882a593Smuzhiyun
1054*4882a593SmuzhiyunYou can change one message, or you can change a whole group.
1055*4882a593SmuzhiyunTo load a whole collection of messages from a new source, simply use
1056*4882a593Smuzhiyunthe cp command:
1057*4882a593Smuzhiyuncp ~/my_colors /speakup/i18n/colors
1058*4882a593SmuzhiyunYou can change an individual message with the echo command,
1059*4882a593Smuzhiyunas shown in the following example.
1060*4882a593Smuzhiyun
1061*4882a593SmuzhiyunThe Spanish name for the color blue is azul.
1062*4882a593SmuzhiyunLooking at the colors file, we see that the name "blue" is at position 1
1063*4882a593Smuzhiyunwithin the colors group.  Let's change blue to azul:
1064*4882a593Smuzhiyunecho '1 azul' > /speakup/i18n/colors
1065*4882a593SmuzhiyunThe next time that Speakup says message 1 from the colors group, it will
1066*4882a593Smuzhiyunsay "azul", rather than "blue."
1067*4882a593Smuzhiyun
1068*4882a593SmuzhiyunIn the future, translations into various languages will be made available,
1069*4882a593Smuzhiyunand most users will just load the files necessary for their language.
1070*4882a593Smuzhiyun
1071*4882a593Smuzhiyun14.3.  No Support for Non-Western-European Languages
1072*4882a593Smuzhiyun
1073*4882a593SmuzhiyunAs of the current release, Speakup only supports Western European languages.
1074*4882a593SmuzhiyunSupport for the extended characters used by languages outside of the Western
1075*4882a593SmuzhiyunEuropean family of languages is a work in progress.
1076*4882a593Smuzhiyun
1077*4882a593Smuzhiyun15.  Using Speakup's Windowing Capability
1078*4882a593Smuzhiyun
1079*4882a593SmuzhiyunSpeakup has the capability of defining and manipulating windows on the
1080*4882a593Smuzhiyunscreen.  Speakup uses the term "Window", to mean a user defined area of
1081*4882a593Smuzhiyunthe screen.  The key strokes for defining and manipulating Speakup
1082*4882a593Smuzhiyunwindows are as follows:
1083*4882a593Smuzhiyun
1084*4882a593Smuzhiyunspeakup + f2 -- Set the bounds of the window.
1085*4882a593SmuzhiyunSpeakup + f3 -- clear the current window definition.
1086*4882a593Smuzhiyunspeakup + f4 -- Toggle window silence on and off.
1087*4882a593Smuzhiyunspeakup + keypad plus -- Say the currently defined window.
1088*4882a593Smuzhiyun
1089*4882a593SmuzhiyunThese capabilities are useful for tracking a certain part of the screen
1090*4882a593Smuzhiyunwithout rereading the whole screen, or for silencing a part of the
1091*4882a593Smuzhiyunscreen that is constantly changing, such as a clock or status line.
1092*4882a593Smuzhiyun
1093*4882a593SmuzhiyunThere is no way to save these window settings, and you can only have one
1094*4882a593Smuzhiyunwindow defined for each virtual console.  There is also no way to have
1095*4882a593Smuzhiyunwindows automatically defined for specific applications.
1096*4882a593Smuzhiyun
1097*4882a593SmuzhiyunIn order to define a window, use the review keys to move your reading
1098*4882a593Smuzhiyuncursor to the beginning of the area you want to define.  Then press
1099*4882a593Smuzhiyunspeakup + f2.  Speakup will tell you that the window starts at the
1100*4882a593Smuzhiyunindicated row and column position.  Then move the reading cursor to the
1101*4882a593Smuzhiyunend of the area to be defined as a window, and press speakup + f2 again.
1102*4882a593Smuzhiyun If there is more than one line in the window, Speakup will tell you
1103*4882a593Smuzhiyunthat the window ends at the indicated row and column position.  If there
1104*4882a593Smuzhiyunis only one line in the window, then Speakup will tell you that the
1105*4882a593Smuzhiyunwindow is the specified line on the screen.  If you are only defining a
1106*4882a593Smuzhiyunone line window, you can just press speakup + f2 twice after placing the
1107*4882a593Smuzhiyunreading cursor on the line you want to define as a window.  It is not
1108*4882a593Smuzhiyunnecessary to position the reading cursor at the end of the line in order
1109*4882a593Smuzhiyunto define the whole line as a window.
1110*4882a593Smuzhiyun
1111*4882a593Smuzhiyun16.  Tools for Controlling Speakup
1112*4882a593Smuzhiyun
1113*4882a593SmuzhiyunThe speakup distribution includes extra tools (in the tools directory)
1114*4882a593Smuzhiyunwhich were written to make speakup easier to use.  This section will
1115*4882a593Smuzhiyunbriefly describe the use of these tools.
1116*4882a593Smuzhiyun
1117*4882a593Smuzhiyun16.1.  Speakupconf
1118*4882a593Smuzhiyun
1119*4882a593Smuzhiyunspeakupconf began life as a contribution from Steve Holmes, a member of
1120*4882a593Smuzhiyunthe speakup community.  We would like to thank him for his work on the
1121*4882a593Smuzhiyunearly versions of this project.
1122*4882a593Smuzhiyun
1123*4882a593SmuzhiyunThis script may be installed as part of your linux distribution, but if
1124*4882a593Smuzhiyunit isn't, the recommended places to put it are /usr/local/bin or
1125*4882a593Smuzhiyun/usr/bin.  This script can be run by any user, so it does not require
1126*4882a593Smuzhiyunroot privileges.
1127*4882a593Smuzhiyun
1128*4882a593SmuzhiyunSpeakupconf allows you to save and load your Speakup settings.  It works
1129*4882a593Smuzhiyunby reading and writing the /sys files described above.
1130*4882a593Smuzhiyun
1131*4882a593SmuzhiyunThe directory that speakupconf uses to store your settings depends on
1132*4882a593Smuzhiyunwhether it is run from the root account.  If you execute speakupconf as
1133*4882a593Smuzhiyunroot, it uses the directory /etc/speakup.  Otherwise, it uses the directory
1134*4882a593Smuzhiyun~/.speakup, where ~ is your home directory.
1135*4882a593SmuzhiyunAnyone who needs to use Speakup from your console can load his own custom
1136*4882a593Smuzhiyunsettings with this script.
1137*4882a593Smuzhiyun
1138*4882a593Smuzhiyunspeakupconf takes one required argument: load or save.
1139*4882a593SmuzhiyunUse the command
1140*4882a593Smuzhiyunspeakupconf save
1141*4882a593Smuzhiyunto save your Speakup settings, and
1142*4882a593Smuzhiyunspeakupconf load
1143*4882a593Smuzhiyunto load them into Speakup.
1144*4882a593SmuzhiyunA second argument may be specified to use an alternate directory to
1145*4882a593Smuzhiyunload or save the speakup parameters.
1146*4882a593Smuzhiyun
1147*4882a593Smuzhiyun16.2.  Talkwith
1148*4882a593Smuzhiyun
1149*4882a593SmuzhiyunCharles Hallenbeck, another member of the speakup community, wrote the
1150*4882a593Smuzhiyuninitial versions of this script, and we would also like to thank him for
1151*4882a593Smuzhiyunhis work on it.
1152*4882a593Smuzhiyun
1153*4882a593SmuzhiyunThis script needs root privileges to run, so if it is not installed as
1154*4882a593Smuzhiyunpart of your linux distribution, the recommended places to install it
1155*4882a593Smuzhiyunare /usr/local/sbin or /usr/sbin.
1156*4882a593Smuzhiyun
1157*4882a593SmuzhiyunTalkwith allows you to switch synthesizers on the fly.  It takes a synthesizer
1158*4882a593Smuzhiyunname as an argument.  For instance,
1159*4882a593Smuzhiyuntalkwith dectlk
1160*4882a593Smuzhiyuncauses Speakup to use the DecTalk Express.  If you wish to switch to a
1161*4882a593Smuzhiyunsoftware synthesizer, you must also indicate which daemon you wish to
1162*4882a593Smuzhiyunuse.  There are two possible choices:
1163*4882a593Smuzhiyunspd and espeakup.  spd is an abbreviation for speechd-up.
1164*4882a593SmuzhiyunIf you wish to use espeakup for software synthesis, give the command
1165*4882a593Smuzhiyuntalkwith soft espeakup
1166*4882a593SmuzhiyunTo use speechd-up, type:
1167*4882a593Smuzhiyuntalkwith soft spd
1168*4882a593SmuzhiyunAny arguments that follow the name of the daemon are passed to the daemon
1169*4882a593Smuzhiyunwhen it is invoked.  For instance:
1170*4882a593Smuzhiyuntalkwith espeakup --default-voice=fr
1171*4882a593Smuzhiyuncauses espeakup to use the French voice.
1172*4882a593SmuzhiyunNote that talkwith must always be executed with root privileges.
1173*4882a593Smuzhiyun
1174*4882a593SmuzhiyunTalkwith does not attempt to load your settings after the new
1175*4882a593Smuzhiyunsynthesizer is activated.  You can use speakupconf to load your settings
1176*4882a593Smuzhiyunif desired.
1177*4882a593Smuzhiyun
1178*4882a593Smuzhiyun                GNU Free Documentation License
1179*4882a593Smuzhiyun                  Version 1.2, November 2002
1180*4882a593Smuzhiyun
1181*4882a593Smuzhiyun
1182*4882a593Smuzhiyun Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
1183*4882a593Smuzhiyun Everyone is permitted to copy and distribute verbatim copies
1184*4882a593Smuzhiyun of this license document, but changing it is not allowed.
1185*4882a593Smuzhiyun
1186*4882a593Smuzhiyun
1187*4882a593Smuzhiyun0. PREAMBLE
1188*4882a593Smuzhiyun
1189*4882a593SmuzhiyunThe purpose of this License is to make a manual, textbook, or other
1190*4882a593Smuzhiyunfunctional and useful document "free" in the sense of freedom: to
1191*4882a593Smuzhiyunassure everyone the effective freedom to copy and redistribute it,
1192*4882a593Smuzhiyunwith or without modifying it, either commercially or noncommercially.
1193*4882a593SmuzhiyunSecondarily, this License preserves for the author and publisher a way
1194*4882a593Smuzhiyunto get credit for their work, while not being considered responsible
1195*4882a593Smuzhiyunfor modifications made by others.
1196*4882a593Smuzhiyun
1197*4882a593SmuzhiyunThis License is a kind of "copyleft", which means that derivative
1198*4882a593Smuzhiyunworks of the document must themselves be free in the same sense.  It
1199*4882a593Smuzhiyuncomplements the GNU General Public License, which is a copyleft
1200*4882a593Smuzhiyunlicense designed for free software.
1201*4882a593Smuzhiyun
1202*4882a593SmuzhiyunWe have designed this License in order to use it for manuals for free
1203*4882a593Smuzhiyunsoftware, because free software needs free documentation: a free
1204*4882a593Smuzhiyunprogram should come with manuals providing the same freedoms that the
1205*4882a593Smuzhiyunsoftware does.  But this License is not limited to software manuals;
1206*4882a593Smuzhiyunit can be used for any textual work, regardless of subject matter or
1207*4882a593Smuzhiyunwhether it is published as a printed book.  We recommend this License
1208*4882a593Smuzhiyunprincipally for works whose purpose is instruction or reference.
1209*4882a593Smuzhiyun
1210*4882a593Smuzhiyun
1211*4882a593Smuzhiyun1. APPLICABILITY AND DEFINITIONS
1212*4882a593Smuzhiyun
1213*4882a593SmuzhiyunThis License applies to any manual or other work, in any medium, that
1214*4882a593Smuzhiyuncontains a notice placed by the copyright holder saying it can be
1215*4882a593Smuzhiyundistributed under the terms of this License.  Such a notice grants a
1216*4882a593Smuzhiyunworld-wide, royalty-free license, unlimited in duration, to use that
1217*4882a593Smuzhiyunwork under the conditions stated herein.  The "Document", below,
1218*4882a593Smuzhiyunrefers to any such manual or work.  Any member of the public is a
1219*4882a593Smuzhiyunlicensee, and is addressed as "you".  You accept the license if you
1220*4882a593Smuzhiyuncopy, modify or distribute the work in a way requiring permission
1221*4882a593Smuzhiyununder copyright law.
1222*4882a593Smuzhiyun
1223*4882a593SmuzhiyunA "Modified Version" of the Document means any work containing the
1224*4882a593SmuzhiyunDocument or a portion of it, either copied verbatim, or with
1225*4882a593Smuzhiyunmodifications and/or translated into another language.
1226*4882a593Smuzhiyun
1227*4882a593SmuzhiyunA "Secondary Section" is a named appendix or a front-matter section of
1228*4882a593Smuzhiyunthe Document that deals exclusively with the relationship of the
1229*4882a593Smuzhiyunpublishers or authors of the Document to the Document's overall subject
1230*4882a593Smuzhiyun(or to related matters) and contains nothing that could fall directly
1231*4882a593Smuzhiyunwithin that overall subject.  (Thus, if the Document is in part a
1232*4882a593Smuzhiyuntextbook of mathematics, a Secondary Section may not explain any
1233*4882a593Smuzhiyunmathematics.)  The relationship could be a matter of historical
1234*4882a593Smuzhiyunconnection with the subject or with related matters, or of legal,
1235*4882a593Smuzhiyuncommercial, philosophical, ethical or political position regarding
1236*4882a593Smuzhiyunthem.
1237*4882a593Smuzhiyun
1238*4882a593SmuzhiyunThe "Invariant Sections" are certain Secondary Sections whose titles
1239*4882a593Smuzhiyunare designated, as being those of Invariant Sections, in the notice
1240*4882a593Smuzhiyunthat says that the Document is released under this License.  If a
1241*4882a593Smuzhiyunsection does not fit the above definition of Secondary then it is not
1242*4882a593Smuzhiyunallowed to be designated as Invariant.  The Document may contain zero
1243*4882a593SmuzhiyunInvariant Sections.  If the Document does not identify any Invariant
1244*4882a593SmuzhiyunSections then there are none.
1245*4882a593Smuzhiyun
1246*4882a593SmuzhiyunThe "Cover Texts" are certain short passages of text that are listed,
1247*4882a593Smuzhiyunas Front-Cover Texts or Back-Cover Texts, in the notice that says that
1248*4882a593Smuzhiyunthe Document is released under this License.  A Front-Cover Text may
1249*4882a593Smuzhiyunbe at most 5 words, and a Back-Cover Text may be at most 25 words.
1250*4882a593Smuzhiyun
1251*4882a593SmuzhiyunA "Transparent" copy of the Document means a machine-readable copy,
1252*4882a593Smuzhiyunrepresented in a format whose specification is available to the
1253*4882a593Smuzhiyungeneral public, that is suitable for revising the document
1254*4882a593Smuzhiyunstraightforwardly with generic text editors or (for images composed of
1255*4882a593Smuzhiyunpixels) generic paint programs or (for drawings) some widely available
1256*4882a593Smuzhiyundrawing editor, and that is suitable for input to text formatters or
1257*4882a593Smuzhiyunfor automatic translation to a variety of formats suitable for input
1258*4882a593Smuzhiyunto text formatters.  A copy made in an otherwise Transparent file
1259*4882a593Smuzhiyunformat whose markup, or absence of markup, has been arranged to thwart
1260*4882a593Smuzhiyunor discourage subsequent modification by readers is not Transparent.
1261*4882a593SmuzhiyunAn image format is not Transparent if used for any substantial amount
1262*4882a593Smuzhiyunof text.  A copy that is not "Transparent" is called "Opaque".
1263*4882a593Smuzhiyun
1264*4882a593SmuzhiyunExamples of suitable formats for Transparent copies include plain
1265*4882a593SmuzhiyunASCII without markup, Texinfo input format, LaTeX input format, SGML
1266*4882a593Smuzhiyunor XML using a publicly available DTD, and standard-conforming simple
1267*4882a593SmuzhiyunHTML, PostScript or PDF designed for human modification.  Examples of
1268*4882a593Smuzhiyuntransparent image formats include PNG, XCF and JPG.  Opaque formats
1269*4882a593Smuzhiyuninclude proprietary formats that can be read and edited only by
1270*4882a593Smuzhiyunproprietary word processors, SGML or XML for which the DTD and/or
1271*4882a593Smuzhiyunprocessing tools are not generally available, and the
1272*4882a593Smuzhiyunmachine-generated HTML, PostScript or PDF produced by some word
1273*4882a593Smuzhiyunprocessors for output purposes only.
1274*4882a593Smuzhiyun
1275*4882a593SmuzhiyunThe "Title Page" means, for a printed book, the title page itself,
1276*4882a593Smuzhiyunplus such following pages as are needed to hold, legibly, the material
1277*4882a593Smuzhiyunthis License requires to appear in the title page.  For works in
1278*4882a593Smuzhiyunformats which do not have any title page as such, "Title Page" means
1279*4882a593Smuzhiyunthe text near the most prominent appearance of the work's title,
1280*4882a593Smuzhiyunpreceding the beginning of the body of the text.
1281*4882a593Smuzhiyun
1282*4882a593SmuzhiyunA section "Entitled XYZ" means a named subunit of the Document whose
1283*4882a593Smuzhiyuntitle either is precisely XYZ or contains XYZ in parentheses following
1284*4882a593Smuzhiyuntext that translates XYZ in another language.  (Here XYZ stands for a
1285*4882a593Smuzhiyunspecific section name mentioned below, such as "Acknowledgements",
1286*4882a593Smuzhiyun"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
1287*4882a593Smuzhiyunof such a section when you modify the Document means that it remains a
1288*4882a593Smuzhiyunsection "Entitled XYZ" according to this definition.
1289*4882a593Smuzhiyun
1290*4882a593SmuzhiyunThe Document may include Warranty Disclaimers next to the notice which
1291*4882a593Smuzhiyunstates that this License applies to the Document.  These Warranty
1292*4882a593SmuzhiyunDisclaimers are considered to be included by reference in this
1293*4882a593SmuzhiyunLicense, but only as regards disclaiming warranties: any other
1294*4882a593Smuzhiyunimplication that these Warranty Disclaimers may have is void and has
1295*4882a593Smuzhiyunno effect on the meaning of this License.
1296*4882a593Smuzhiyun
1297*4882a593Smuzhiyun
1298*4882a593Smuzhiyun2. VERBATIM COPYING
1299*4882a593Smuzhiyun
1300*4882a593SmuzhiyunYou may copy and distribute the Document in any medium, either
1301*4882a593Smuzhiyuncommercially or noncommercially, provided that this License, the
1302*4882a593Smuzhiyuncopyright notices, and the license notice saying this License applies
1303*4882a593Smuzhiyunto the Document are reproduced in all copies, and that you add no other
1304*4882a593Smuzhiyunconditions whatsoever to those of this License.  You may not use
1305*4882a593Smuzhiyuntechnical measures to obstruct or control the reading or further
1306*4882a593Smuzhiyuncopying of the copies you make or distribute.  However, you may accept
1307*4882a593Smuzhiyuncompensation in exchange for copies.  If you distribute a large enough
1308*4882a593Smuzhiyunnumber of copies you must also follow the conditions in section 3.
1309*4882a593Smuzhiyun
1310*4882a593SmuzhiyunYou may also lend copies, under the same conditions stated above, and
1311*4882a593Smuzhiyunyou may publicly display copies.
1312*4882a593Smuzhiyun
1313*4882a593Smuzhiyun
1314*4882a593Smuzhiyun3. COPYING IN QUANTITY
1315*4882a593Smuzhiyun
1316*4882a593SmuzhiyunIf you publish printed copies (or copies in media that commonly have
1317*4882a593Smuzhiyunprinted covers) of the Document, numbering more than 100, and the
1318*4882a593SmuzhiyunDocument's license notice requires Cover Texts, you must enclose the
1319*4882a593Smuzhiyuncopies in covers that carry, clearly and legibly, all these Cover
1320*4882a593SmuzhiyunTexts: Front-Cover Texts on the front cover, and Back-Cover Texts on
1321*4882a593Smuzhiyunthe back cover.  Both covers must also clearly and legibly identify
1322*4882a593Smuzhiyunyou as the publisher of these copies.  The front cover must present
1323*4882a593Smuzhiyunthe full title with all words of the title equally prominent and
1324*4882a593Smuzhiyunvisible.  You may add other material on the covers in addition.
1325*4882a593SmuzhiyunCopying with changes limited to the covers, as long as they preserve
1326*4882a593Smuzhiyunthe title of the Document and satisfy these conditions, can be treated
1327*4882a593Smuzhiyunas verbatim copying in other respects.
1328*4882a593Smuzhiyun
1329*4882a593SmuzhiyunIf the required texts for either cover are too voluminous to fit
1330*4882a593Smuzhiyunlegibly, you should put the first ones listed (as many as fit
1331*4882a593Smuzhiyunreasonably) on the actual cover, and continue the rest onto adjacent
1332*4882a593Smuzhiyunpages.
1333*4882a593Smuzhiyun
1334*4882a593SmuzhiyunIf you publish or distribute Opaque copies of the Document numbering
1335*4882a593Smuzhiyunmore than 100, you must either include a machine-readable Transparent
1336*4882a593Smuzhiyuncopy along with each Opaque copy, or state in or with each Opaque copy
1337*4882a593Smuzhiyuna computer-network location from which the general network-using
1338*4882a593Smuzhiyunpublic has access to download using public-standard network protocols
1339*4882a593Smuzhiyuna complete Transparent copy of the Document, free of added material.
1340*4882a593SmuzhiyunIf you use the latter option, you must take reasonably prudent steps,
1341*4882a593Smuzhiyunwhen you begin distribution of Opaque copies in quantity, to ensure
1342*4882a593Smuzhiyunthat this Transparent copy will remain thus accessible at the stated
1343*4882a593Smuzhiyunlocation until at least one year after the last time you distribute an
1344*4882a593SmuzhiyunOpaque copy (directly or through your agents or retailers) of that
1345*4882a593Smuzhiyunedition to the public.
1346*4882a593Smuzhiyun
1347*4882a593SmuzhiyunIt is requested, but not required, that you contact the authors of the
1348*4882a593SmuzhiyunDocument well before redistributing any large number of copies, to give
1349*4882a593Smuzhiyunthem a chance to provide you with an updated version of the Document.
1350*4882a593Smuzhiyun
1351*4882a593Smuzhiyun
1352*4882a593Smuzhiyun4. MODIFICATIONS
1353*4882a593Smuzhiyun
1354*4882a593SmuzhiyunYou may copy and distribute a Modified Version of the Document under
1355*4882a593Smuzhiyunthe conditions of sections 2 and 3 above, provided that you release
1356*4882a593Smuzhiyunthe Modified Version under precisely this License, with the Modified
1357*4882a593SmuzhiyunVersion filling the role of the Document, thus licensing distribution
1358*4882a593Smuzhiyunand modification of the Modified Version to whoever possesses a copy
1359*4882a593Smuzhiyunof it.  In addition, you must do these things in the Modified Version:
1360*4882a593Smuzhiyun
1361*4882a593SmuzhiyunA. Use in the Title Page (and on the covers, if any) a title distinct
1362*4882a593Smuzhiyun   from that of the Document, and from those of previous versions
1363*4882a593Smuzhiyun   (which should, if there were any, be listed in the History section
1364*4882a593Smuzhiyun   of the Document).  You may use the same title as a previous version
1365*4882a593Smuzhiyun   if the original publisher of that version gives permission.
1366*4882a593SmuzhiyunB. List on the Title Page, as authors, one or more persons or entities
1367*4882a593Smuzhiyun   responsible for authorship of the modifications in the Modified
1368*4882a593Smuzhiyun   Version, together with at least five of the principal authors of the
1369*4882a593Smuzhiyun   Document (all of its principal authors, if it has fewer than five),
1370*4882a593Smuzhiyun   unless they release you from this requirement.
1371*4882a593SmuzhiyunC. State on the Title page the name of the publisher of the
1372*4882a593Smuzhiyun   Modified Version, as the publisher.
1373*4882a593SmuzhiyunD. Preserve all the copyright notices of the Document.
1374*4882a593SmuzhiyunE. Add an appropriate copyright notice for your modifications
1375*4882a593Smuzhiyun   adjacent to the other copyright notices.
1376*4882a593SmuzhiyunF. Include, immediately after the copyright notices, a license notice
1377*4882a593Smuzhiyun   giving the public permission to use the Modified Version under the
1378*4882a593Smuzhiyun   terms of this License, in the form shown in the Addendum below.
1379*4882a593SmuzhiyunG. Preserve in that license notice the full lists of Invariant Sections
1380*4882a593Smuzhiyun   and required Cover Texts given in the Document's license notice.
1381*4882a593SmuzhiyunH. Include an unaltered copy of this License.
1382*4882a593SmuzhiyunI. Preserve the section Entitled "History", Preserve its Title, and add
1383*4882a593Smuzhiyun   to it an item stating at least the title, year, new authors, and
1384*4882a593Smuzhiyun   publisher of the Modified Version as given on the Title Page.  If
1385*4882a593Smuzhiyun   there is no section Entitled "History" in the Document, create one
1386*4882a593Smuzhiyun   stating the title, year, authors, and publisher of the Document as
1387*4882a593Smuzhiyun   given on its Title Page, then add an item describing the Modified
1388*4882a593Smuzhiyun   Version as stated in the previous sentence.
1389*4882a593SmuzhiyunJ. Preserve the network location, if any, given in the Document for
1390*4882a593Smuzhiyun   public access to a Transparent copy of the Document, and likewise
1391*4882a593Smuzhiyun   the network locations given in the Document for previous versions
1392*4882a593Smuzhiyun   it was based on.  These may be placed in the "History" section.
1393*4882a593Smuzhiyun   You may omit a network location for a work that was published at
1394*4882a593Smuzhiyun   least four years before the Document itself, or if the original
1395*4882a593Smuzhiyun   publisher of the version it refers to gives permission.
1396*4882a593SmuzhiyunK. For any section Entitled "Acknowledgements" or "Dedications",
1397*4882a593Smuzhiyun   Preserve the Title of the section, and preserve in the section all
1398*4882a593Smuzhiyun   the substance and tone of each of the contributor acknowledgements
1399*4882a593Smuzhiyun   and/or dedications given therein.
1400*4882a593SmuzhiyunL. Preserve all the Invariant Sections of the Document,
1401*4882a593Smuzhiyun   unaltered in their text and in their titles.  Section numbers
1402*4882a593Smuzhiyun   or the equivalent are not considered part of the section titles.
1403*4882a593SmuzhiyunM. Delete any section Entitled "Endorsements".  Such a section
1404*4882a593Smuzhiyun   may not be included in the Modified Version.
1405*4882a593SmuzhiyunN. Do not retitle any existing section to be Entitled "Endorsements"
1406*4882a593Smuzhiyun   or to conflict in title with any Invariant Section.
1407*4882a593SmuzhiyunO. Preserve any Warranty Disclaimers.
1408*4882a593Smuzhiyun
1409*4882a593SmuzhiyunIf the Modified Version includes new front-matter sections or
1410*4882a593Smuzhiyunappendices that qualify as Secondary Sections and contain no material
1411*4882a593Smuzhiyuncopied from the Document, you may at your option designate some or all
1412*4882a593Smuzhiyunof these sections as invariant.  To do this, add their titles to the
1413*4882a593Smuzhiyunlist of Invariant Sections in the Modified Version's license notice.
1414*4882a593SmuzhiyunThese titles must be distinct from any other section titles.
1415*4882a593Smuzhiyun
1416*4882a593SmuzhiyunYou may add a section Entitled "Endorsements", provided it contains
1417*4882a593Smuzhiyunnothing but endorsements of your Modified Version by various
1418*4882a593Smuzhiyunparties--for example, statements of peer review or that the text has
1419*4882a593Smuzhiyunbeen approved by an organization as the authoritative definition of a
1420*4882a593Smuzhiyunstandard.
1421*4882a593Smuzhiyun
1422*4882a593SmuzhiyunYou may add a passage of up to five words as a Front-Cover Text, and a
1423*4882a593Smuzhiyunpassage of up to 25 words as a Back-Cover Text, to the end of the list
1424*4882a593Smuzhiyunof Cover Texts in the Modified Version.  Only one passage of
1425*4882a593SmuzhiyunFront-Cover Text and one of Back-Cover Text may be added by (or
1426*4882a593Smuzhiyunthrough arrangements made by) any one entity.  If the Document already
1427*4882a593Smuzhiyunincludes a cover text for the same cover, previously added by you or
1428*4882a593Smuzhiyunby arrangement made by the same entity you are acting on behalf of,
1429*4882a593Smuzhiyunyou may not add another; but you may replace the old one, on explicit
1430*4882a593Smuzhiyunpermission from the previous publisher that added the old one.
1431*4882a593Smuzhiyun
1432*4882a593SmuzhiyunThe author(s) and publisher(s) of the Document do not by this License
1433*4882a593Smuzhiyungive permission to use their names for publicity for or to assert or
1434*4882a593Smuzhiyunimply endorsement of any Modified Version.
1435*4882a593Smuzhiyun
1436*4882a593Smuzhiyun
1437*4882a593Smuzhiyun5. COMBINING DOCUMENTS
1438*4882a593Smuzhiyun
1439*4882a593SmuzhiyunYou may combine the Document with other documents released under this
1440*4882a593SmuzhiyunLicense, under the terms defined in section 4 above for modified
1441*4882a593Smuzhiyunversions, provided that you include in the combination all of the
1442*4882a593SmuzhiyunInvariant Sections of all of the original documents, unmodified, and
1443*4882a593Smuzhiyunlist them all as Invariant Sections of your combined work in its
1444*4882a593Smuzhiyunlicense notice, and that you preserve all their Warranty Disclaimers.
1445*4882a593Smuzhiyun
1446*4882a593SmuzhiyunThe combined work need only contain one copy of this License, and
1447*4882a593Smuzhiyunmultiple identical Invariant Sections may be replaced with a single
1448*4882a593Smuzhiyuncopy.  If there are multiple Invariant Sections with the same name but
1449*4882a593Smuzhiyundifferent contents, make the title of each such section unique by
1450*4882a593Smuzhiyunadding at the end of it, in parentheses, the name of the original
1451*4882a593Smuzhiyunauthor or publisher of that section if known, or else a unique number.
1452*4882a593SmuzhiyunMake the same adjustment to the section titles in the list of
1453*4882a593SmuzhiyunInvariant Sections in the license notice of the combined work.
1454*4882a593Smuzhiyun
1455*4882a593SmuzhiyunIn the combination, you must combine any sections Entitled "History"
1456*4882a593Smuzhiyunin the various original documents, forming one section Entitled
1457*4882a593Smuzhiyun"History"; likewise combine any sections Entitled "Acknowledgements",
1458*4882a593Smuzhiyunand any sections Entitled "Dedications".  You must delete all sections
1459*4882a593SmuzhiyunEntitled "Endorsements".
1460*4882a593Smuzhiyun
1461*4882a593Smuzhiyun
1462*4882a593Smuzhiyun6. COLLECTIONS OF DOCUMENTS
1463*4882a593Smuzhiyun
1464*4882a593SmuzhiyunYou may make a collection consisting of the Document and other documents
1465*4882a593Smuzhiyunreleased under this License, and replace the individual copies of this
1466*4882a593SmuzhiyunLicense in the various documents with a single copy that is included in
1467*4882a593Smuzhiyunthe collection, provided that you follow the rules of this License for
1468*4882a593Smuzhiyunverbatim copying of each of the documents in all other respects.
1469*4882a593Smuzhiyun
1470*4882a593SmuzhiyunYou may extract a single document from such a collection, and distribute
1471*4882a593Smuzhiyunit individually under this License, provided you insert a copy of this
1472*4882a593SmuzhiyunLicense into the extracted document, and follow this License in all
1473*4882a593Smuzhiyunother respects regarding verbatim copying of that document.
1474*4882a593Smuzhiyun
1475*4882a593Smuzhiyun
1476*4882a593Smuzhiyun7. AGGREGATION WITH INDEPENDENT WORKS
1477*4882a593Smuzhiyun
1478*4882a593SmuzhiyunA compilation of the Document or its derivatives with other separate
1479*4882a593Smuzhiyunand independent documents or works, in or on a volume of a storage or
1480*4882a593Smuzhiyundistribution medium, is called an "aggregate" if the copyright
1481*4882a593Smuzhiyunresulting from the compilation is not used to limit the legal rights
1482*4882a593Smuzhiyunof the compilation's users beyond what the individual works permit.
1483*4882a593SmuzhiyunWhen the Document is included in an aggregate, this License does not
1484*4882a593Smuzhiyunapply to the other works in the aggregate which are not themselves
1485*4882a593Smuzhiyunderivative works of the Document.
1486*4882a593Smuzhiyun
1487*4882a593SmuzhiyunIf the Cover Text requirement of section 3 is applicable to these
1488*4882a593Smuzhiyuncopies of the Document, then if the Document is less than one half of
1489*4882a593Smuzhiyunthe entire aggregate, the Document's Cover Texts may be placed on
1490*4882a593Smuzhiyuncovers that bracket the Document within the aggregate, or the
1491*4882a593Smuzhiyunelectronic equivalent of covers if the Document is in electronic form.
1492*4882a593SmuzhiyunOtherwise they must appear on printed covers that bracket the whole
1493*4882a593Smuzhiyunaggregate.
1494*4882a593Smuzhiyun
1495*4882a593Smuzhiyun
1496*4882a593Smuzhiyun8. TRANSLATION
1497*4882a593Smuzhiyun
1498*4882a593SmuzhiyunTranslation is considered a kind of modification, so you may
1499*4882a593Smuzhiyundistribute translations of the Document under the terms of section 4.
1500*4882a593SmuzhiyunReplacing Invariant Sections with translations requires special
1501*4882a593Smuzhiyunpermission from their copyright holders, but you may include
1502*4882a593Smuzhiyuntranslations of some or all Invariant Sections in addition to the
1503*4882a593Smuzhiyunoriginal versions of these Invariant Sections.  You may include a
1504*4882a593Smuzhiyuntranslation of this License, and all the license notices in the
1505*4882a593SmuzhiyunDocument, and any Warranty Disclaimers, provided that you also include
1506*4882a593Smuzhiyunthe original English version of this License and the original versions
1507*4882a593Smuzhiyunof those notices and disclaimers.  In case of a disagreement between
1508*4882a593Smuzhiyunthe translation and the original version of this License or a notice
1509*4882a593Smuzhiyunor disclaimer, the original version will prevail.
1510*4882a593Smuzhiyun
1511*4882a593SmuzhiyunIf a section in the Document is Entitled "Acknowledgements",
1512*4882a593Smuzhiyun"Dedications", or "History", the requirement (section 4) to Preserve
1513*4882a593Smuzhiyunits Title (section 1) will typically require changing the actual
1514*4882a593Smuzhiyuntitle.
1515*4882a593Smuzhiyun
1516*4882a593Smuzhiyun
1517*4882a593Smuzhiyun9. TERMINATION
1518*4882a593Smuzhiyun
1519*4882a593SmuzhiyunYou may not copy, modify, sublicense, or distribute the Document except
1520*4882a593Smuzhiyunas expressly provided for under this License.  Any other attempt to
1521*4882a593Smuzhiyuncopy, modify, sublicense or distribute the Document is void, and will
1522*4882a593Smuzhiyunautomatically terminate your rights under this License.  However,
1523*4882a593Smuzhiyunparties who have received copies, or rights, from you under this
1524*4882a593SmuzhiyunLicense will not have their licenses terminated so long as such
1525*4882a593Smuzhiyunparties remain in full compliance.
1526*4882a593Smuzhiyun
1527*4882a593Smuzhiyun
1528*4882a593Smuzhiyun10. FUTURE REVISIONS OF THIS LICENSE
1529*4882a593Smuzhiyun
1530*4882a593SmuzhiyunThe Free Software Foundation may publish new, revised versions
1531*4882a593Smuzhiyunof the GNU Free Documentation License from time to time.  Such new
1532*4882a593Smuzhiyunversions will be similar in spirit to the present version, but may
1533*4882a593Smuzhiyundiffer in detail to address new problems or concerns.  See
1534*4882a593Smuzhiyunhttps://www.gnu.org/copyleft/.
1535*4882a593Smuzhiyun
1536*4882a593SmuzhiyunEach version of the License is given a distinguishing version number.
1537*4882a593SmuzhiyunIf the Document specifies that a particular numbered version of this
1538*4882a593SmuzhiyunLicense "or any later version" applies to it, you have the option of
1539*4882a593Smuzhiyunfollowing the terms and conditions either of that specified version or
1540*4882a593Smuzhiyunof any later version that has been published (not as a draft) by the
1541*4882a593SmuzhiyunFree Software Foundation.  If the Document does not specify a version
1542*4882a593Smuzhiyunnumber of this License, you may choose any version ever published (not
1543*4882a593Smuzhiyunas a draft) by the Free Software Foundation.
1544*4882a593Smuzhiyun
1545*4882a593Smuzhiyun
1546*4882a593SmuzhiyunADDENDUM: How to use this License for your documents
1547*4882a593Smuzhiyun
1548*4882a593SmuzhiyunTo use this License in a document you have written, include a copy of
1549*4882a593Smuzhiyunthe License in the document and put the following copyright and
1550*4882a593Smuzhiyunlicense notices just after the title page:
1551*4882a593Smuzhiyun
1552*4882a593Smuzhiyun    Copyright (c)  YEAR  YOUR NAME.
1553*4882a593Smuzhiyun    Permission is granted to copy, distribute and/or modify this document
1554*4882a593Smuzhiyun    under the terms of the GNU Free Documentation License, Version 1.2
1555*4882a593Smuzhiyun    or any later version published by the Free Software Foundation;
1556*4882a593Smuzhiyun    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
1557*4882a593Smuzhiyun    A copy of the license is included in the section entitled "GNU
1558*4882a593Smuzhiyun    Free Documentation License".
1559*4882a593Smuzhiyun
1560*4882a593SmuzhiyunIf you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
1561*4882a593Smuzhiyunreplace the "with...Texts." line with this:
1562*4882a593Smuzhiyun
1563*4882a593Smuzhiyun    with the Invariant Sections being LIST THEIR TITLES, with the
1564*4882a593Smuzhiyun    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
1565*4882a593Smuzhiyun
1566*4882a593SmuzhiyunIf you have Invariant Sections without Cover Texts, or some other
1567*4882a593Smuzhiyuncombination of the three, merge those two alternatives to suit the
1568*4882a593Smuzhiyunsituation.
1569*4882a593Smuzhiyun
1570*4882a593SmuzhiyunIf your document contains nontrivial examples of program code, we
1571*4882a593Smuzhiyunrecommend releasing these examples in parallel under your choice of
1572*4882a593Smuzhiyunfree software license, such as the GNU General Public License,
1573*4882a593Smuzhiyunto permit their use in free software.
1574*4882a593Smuzhiyun
1575*4882a593SmuzhiyunThe End.
1576