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