xref: /openbmc/linux/Documentation/admin-guide/spkguide.txt (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
12067fd92SSamuel Thibault
22067fd92SSamuel ThibaultThe Speakup User's Guide
32067fd92SSamuel ThibaultFor Speakup 3.1.2 and Later
42067fd92SSamuel ThibaultBy Gene Collins
52067fd92SSamuel ThibaultUpdated by others
62067fd92SSamuel ThibaultLast modified on Mon Sep 27 14:26:31 2010
72067fd92SSamuel ThibaultDocument version 1.3
82067fd92SSamuel Thibault
92067fd92SSamuel ThibaultCopyright (c) 2005  Gene Collins
102067fd92SSamuel ThibaultCopyright (c) 2008  Samuel Thibault
112067fd92SSamuel ThibaultCopyright (c) 2009, 2010  the Speakup Team
122067fd92SSamuel Thibault
132067fd92SSamuel ThibaultPermission is granted to copy, distribute and/or modify this document
142067fd92SSamuel Thibaultunder the terms of the GNU Free Documentation License, Version 1.2 or
152067fd92SSamuel Thibaultany later version published by the Free Software Foundation; with no
162067fd92SSamuel ThibaultInvariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
172067fd92SSamuel Thibaultcopy of the license is included in the section entitled "GNU Free
182067fd92SSamuel ThibaultDocumentation License".
192067fd92SSamuel Thibault
202067fd92SSamuel ThibaultPreface
212067fd92SSamuel Thibault
222067fd92SSamuel ThibaultThe purpose of this document is to familiarize users with the user
232067fd92SSamuel Thibaultinterface to Speakup, a Linux Screen Reader.  If you need instructions
242067fd92SSamuel Thibaultfor installing or obtaining Speakup, visit the web site at
252067fd92SSamuel Thibaulthttp://linux-speakup.org/.  Speakup is a set of patches to the standard
262067fd92SSamuel ThibaultLinux kernel source tree.  It can be built as a series of modules, or as
272067fd92SSamuel Thibaulta part of a monolithic kernel.  These details are beyond the scope of
282067fd92SSamuel Thibaultthis manual, but the user may need to be aware of the module
292067fd92SSamuel Thibaultcapabilities, depending on how your system administrator has installed
302067fd92SSamuel ThibaultSpeakup.  If Speakup is built as a part of a monolithic kernel, and the
312067fd92SSamuel Thibaultuser is using a hardware synthesizer, then Speakup will be able to
322067fd92SSamuel Thibaultprovide speech access from the time the kernel is loaded, until the time
332067fd92SSamuel Thibaultthe system is shutdown.  This means that if you have obtained Linux
342067fd92SSamuel Thibaultinstallation media for a distribution which includes Speakup as a part
352067fd92SSamuel Thibaultof its kernel, you will be able, as a blind person, to install Linux
362067fd92SSamuel Thibaultwith speech access unaided by a sighted person.  Again, these details
372067fd92SSamuel Thibaultare beyond the scope of this manual, but the user should be aware of
382067fd92SSamuel Thibaultthem.  See the web site mentioned above for further details.
392067fd92SSamuel Thibault
402067fd92SSamuel Thibault1.  Starting Speakup
412067fd92SSamuel Thibault
422067fd92SSamuel ThibaultIf your system administrator has installed Speakup to work with your
432067fd92SSamuel Thibaultspecific synthesizer by default, then all you need to do to use Speakup
442067fd92SSamuel Thibaultis to boot your system, and Speakup should come up talking.  This
452067fd92SSamuel Thibaultassumes of course  that your synthesizer is a supported hardware
462067fd92SSamuel Thibaultsynthesizer, and that it is either installed in or connected to your
472067fd92SSamuel Thibaultsystem, and is if necessary powered on.
482067fd92SSamuel Thibault
492067fd92SSamuel ThibaultIt is possible, however, that Speakup may have been compiled into the
502067fd92SSamuel Thibaultkernel with no default synthesizer.  It is even possible that your
512067fd92SSamuel Thibaultkernel has been compiled with support for some of the supported
522067fd92SSamuel Thibaultsynthesizers and not others.  If you find that this is the case, and
532067fd92SSamuel Thibaultyour synthesizer is supported but not available, complain to the person
542067fd92SSamuel Thibaultwho compiled and installed your kernel.  Or better yet, go to the web
552067fd92SSamuel Thibaultsite, and learn how to patch Speakup into your own kernel source, and
562067fd92SSamuel Thibaultbuild and install your own kernel.
572067fd92SSamuel Thibault
582067fd92SSamuel ThibaultIf your kernel has been compiled with Speakup, and has no default
592067fd92SSamuel Thibaultsynthesizer set, or you would like to use a different synthesizer than
602067fd92SSamuel Thibaultthe default one, then you may issue the following command at the boot
612067fd92SSamuel Thibaultprompt of your boot loader.
622067fd92SSamuel Thibault
632067fd92SSamuel Thibaultlinux speakup.synth=ltlk
642067fd92SSamuel Thibault
652067fd92SSamuel ThibaultThis command would tell Speakup to look for and use a LiteTalk or
662067fd92SSamuel ThibaultDoubleTalk LT at boot up.  You may replace the ltlk synthesizer keyword
672067fd92SSamuel Thibaultwith the keyword for whatever synthesizer you wish to use.  The
682067fd92SSamuel Thibaultspeakup.synth parameter will accept the following keywords, provided
692067fd92SSamuel Thibaultthat support for the related synthesizers has been built into the
702067fd92SSamuel Thibaultkernel.
712067fd92SSamuel Thibault
722067fd92SSamuel Thibaultacntsa -- Accent SA
732067fd92SSamuel Thibaultacntpc -- Accent PC
742067fd92SSamuel Thibaultapollo -- Apollo
752067fd92SSamuel Thibaultaudptr -- Audapter
762067fd92SSamuel Thibaultbns -- Braille 'n Speak
772067fd92SSamuel Thibaultdectlk -- DecTalk Express (old and new, db9 serial only)
782067fd92SSamuel Thibaultdecext -- DecTalk (old) External
792067fd92SSamuel Thibaultdtlk -- DoubleTalk PC
802067fd92SSamuel Thibaultkeypc -- Keynote Gold PC
812067fd92SSamuel Thibaultltlk -- DoubleTalk LT, LiteTalk, or external Tripletalk (db9 serial only)
822067fd92SSamuel Thibaultspkout -- Speak Out
832067fd92SSamuel Thibaulttxprt -- Transport
842067fd92SSamuel Thibaultdummy -- Plain text terminal
852067fd92SSamuel Thibault
862067fd92SSamuel ThibaultNote: Speakup does * NOT * support usb connections!  Speakup also does *
872067fd92SSamuel ThibaultNOT * support the internal Tripletalk!
882067fd92SSamuel Thibault
892067fd92SSamuel ThibaultSpeakup does support two other synthesizers, but because they work in
902067fd92SSamuel Thibaultconjunction with other software, they must be loaded as modules after
912067fd92SSamuel Thibaulttheir related software is loaded, and so are not available at boot up.
922067fd92SSamuel ThibaultThese are as follows:
932067fd92SSamuel Thibault
942067fd92SSamuel Thibaultdecpc -- DecTalk PC (not available at boot up)
952067fd92SSamuel Thibaultsoft -- One of several software synthesizers (not available at boot up)
962067fd92SSamuel Thibault
972067fd92SSamuel ThibaultSee the sections on loading modules and software synthesizers later in
982067fd92SSamuel Thibaultthis manual for further details.  It should be noted here that the
992067fd92SSamuel Thibaultspeakup.synth boot parameter will have no effect if Speakup has been
1002067fd92SSamuel Thibaultcompiled as modules.  In order for Speakup modules to be loaded during
1012067fd92SSamuel Thibaultthe boot process, such action must be configured by your system
1022067fd92SSamuel Thibaultadministrator.  This will mean that you will hear some, but not all,  of
1032067fd92SSamuel Thibaultthe bootup messages.
1042067fd92SSamuel Thibault
1052067fd92SSamuel Thibault2.  Basic operation
1062067fd92SSamuel Thibault
1072067fd92SSamuel ThibaultOnce you have booted the system, and if necessary, have supplied the
1082067fd92SSamuel Thibaultproper bootup parameter for your synthesizer, Speakup will begin
1092067fd92SSamuel Thibaulttalking as soon as the kernel is loaded.  In fact, it will talk a lot!
1102067fd92SSamuel ThibaultIt will speak all the boot up messages that the kernel prints on the
1112067fd92SSamuel Thibaultscreen during the boot process.  This is because Speakup is not a
1122067fd92SSamuel Thibaultseparate screen reader, but is actually built into the operating
1132067fd92SSamuel Thibaultsystem.  Since almost all console applications must print text on the
1142067fd92SSamuel Thibaultscreen using the kernel, and must get their keyboard input through the
1152067fd92SSamuel Thibaultkernel, they are automatically handled properly by Speakup.  There are a
1162067fd92SSamuel Thibaultfew exceptions, but we'll come to those later.
1172067fd92SSamuel Thibault
1182067fd92SSamuel ThibaultNote:  In this guide I will refer to the numeric keypad as the keypad.
1192067fd92SSamuel ThibaultThis is done because the speakupmap.map file referred to later in this
1202067fd92SSamuel Thibaultmanual uses the term keypad instead of numeric keypad.  Also I'm lazy
1212067fd92SSamuel Thibaultand would rather only type one word.  So keypad it is.  Got it?  Good.
1222067fd92SSamuel Thibault
1232067fd92SSamuel ThibaultMost of the Speakup review keys are located on the keypad at the far
1242067fd92SSamuel Thibaultright of the keyboard.  The numlock key should be off, in order for these
1252067fd92SSamuel Thibaultto work.  If you toggle the numlock on, the keypad will produce numbers,
1262067fd92SSamuel Thibaultwhich is exactly what you want for spreadsheets and such.  For the
1272067fd92SSamuel Thibaultpurposes of this guide, you should have the numlock turned off, which is
1282067fd92SSamuel Thibaultits default state at bootup.
1292067fd92SSamuel Thibault
1302067fd92SSamuel ThibaultYou probably won't want to listen to all the bootup messages every time
1312067fd92SSamuel Thibaultyou start your system, though it's a good idea to listen to them at
1322067fd92SSamuel Thibaultleast once, just so you'll know what kind of information is available to
1332067fd92SSamuel Thibaultyou during the boot process.  You can always review these messages after
1342067fd92SSamuel Thibaultbootup with the command:
1352067fd92SSamuel Thibault
1362067fd92SSamuel Thibaultdmesg | more
1372067fd92SSamuel Thibault
1382067fd92SSamuel ThibaultIn order to speed the boot process, and to silence the speaking of the
1392067fd92SSamuel Thibaultbootup messages, just press the keypad enter key.  This key is located
1402067fd92SSamuel Thibaultin the bottom right corner of the keypad.  Speakup will shut up and stay
1412067fd92SSamuel Thibaultthat way, until you press another key.
1422067fd92SSamuel Thibault
1432067fd92SSamuel ThibaultYou can check to see if the boot process has completed by pressing the 8
1442067fd92SSamuel Thibaultkey on the keypad, which reads the current line.  This also has the
1452067fd92SSamuel Thibaulteffect of starting Speakup talking again, so you can press keypad enter
1462067fd92SSamuel Thibaultto silence it again if the boot process has not completed.
1472067fd92SSamuel Thibault
1482067fd92SSamuel ThibaultWhen the boot process is complete, you will arrive at a "login" prompt.
1492067fd92SSamuel ThibaultAt this point, you'll need to type in your user id and password, as
1502067fd92SSamuel Thibaultprovided by your system administrator.  You will hear Speakup speak the
1512067fd92SSamuel Thibaultletters of your user id as you type it, but not the password.  This is
1522067fd92SSamuel Thibaultbecause the password is not displayed on the screen for security
1532067fd92SSamuel Thibaultreasons.  This has nothing to do with Speakup, it's a Linux security
1542067fd92SSamuel Thibaultfeature.
1552067fd92SSamuel Thibault
1562067fd92SSamuel ThibaultOnce you've logged in, you can run any Linux command or program which is
1572067fd92SSamuel Thibaultallowed by your user id.  Normal users will not be able to run programs
1582067fd92SSamuel Thibaultwhich require root privileges.
1592067fd92SSamuel Thibault
1602067fd92SSamuel ThibaultWhen you are running a program or command, Speakup will automatically
1612067fd92SSamuel Thibaultspeak new text as it arrives on the screen.  You can at any time silence
1622067fd92SSamuel Thibaultthe speech with keypad enter, or use any of the Speakup review keys.
1632067fd92SSamuel Thibault
1642067fd92SSamuel ThibaultHere are some basic Speakup review keys, and a short description of what
1652067fd92SSamuel Thibaultthey do.
1662067fd92SSamuel Thibault
1672067fd92SSamuel Thibaultkeypad 1 -- read previous character
1682067fd92SSamuel Thibaultkeypad 2 -- read current character (pressing keypad 2 twice rapidly will speak
1692067fd92SSamuel Thibault	the current character phonetically)
1702067fd92SSamuel Thibaultkeypad 3 -- read next character
1712067fd92SSamuel Thibaultkeypad 4 -- read previous word
1722067fd92SSamuel Thibaultkeypad 5 -- read current word (press twice rapidly to spell the current word)
1732067fd92SSamuel Thibaultkeypad 6 -- read next word
1742067fd92SSamuel Thibaultkeypad 7 -- read previous line
1752067fd92SSamuel Thibaultkeypad 8 -- read current line (press twice rapidly to hear how much the
1762067fd92SSamuel Thibault	text on the current line is indented)
1772067fd92SSamuel Thibaultkeypad 9 -- read next line
1782067fd92SSamuel Thibaultkeypad period -- speak current cursor position and announce current
1792067fd92SSamuel Thibault	virtual console
1802067fd92SSamuel Thibault
1812067fd92SSamuel ThibaultIt's also worth noting that the insert key on the keypad is mapped
1822067fd92SSamuel Thibaultas the speakup key.  Instead of pressing and releasing this key, as you
1832067fd92SSamuel Thibaultdo under DOS or Windows, you hold it like a shift key, and press other
1842067fd92SSamuel Thibaultkeys in combination with it.  For example, repeatedly holding keypad
1852067fd92SSamuel Thibaultinsert, from now on called speakup, and keypad enter will toggle the
1862067fd92SSamuel Thibaultspeaking of new text on the screen on and off.  This is not the same as
1872067fd92SSamuel Thibaultjust pressing keypad enter by itself, which just silences the speech
1882067fd92SSamuel Thibaultuntil you hit another key.  When you hit speakup plus keypad enter,
1892067fd92SSamuel ThibaultSpeakup will say, "You turned me off.", or "Hey, that's better."  When
1902067fd92SSamuel ThibaultSpeakup is turned off, no new text on the screen will be spoken.  You
1912067fd92SSamuel Thibaultcan still use the reading controls to review the screen however.
1922067fd92SSamuel Thibault
1932067fd92SSamuel Thibault3.  Using the Speakup Help System
1942067fd92SSamuel Thibault
1952067fd92SSamuel ThibaultIn order to enter the Speakup help system, press and hold the speakup
1962067fd92SSamuel Thibaultkey (remember that this is the keypad insert key), and press the f1 key.
1972067fd92SSamuel ThibaultYou will hear the message:
1982067fd92SSamuel Thibault
1992067fd92SSamuel Thibault"Press space to leave help, cursor up or down to scroll, or a letter to
2002067fd92SSamuel Thibaultgo to commands in list."
2012067fd92SSamuel Thibault
2022067fd92SSamuel ThibaultWhen you press the spacebar to leave the help system, you will hear:
2032067fd92SSamuel Thibault
2042067fd92SSamuel Thibault"Leaving help."
2052067fd92SSamuel Thibault
2062067fd92SSamuel ThibaultWhile you are in the Speakup help system, you can scroll up or down
2072067fd92SSamuel Thibaultthrough the list of available commands using the cursor keys.  The list
2082067fd92SSamuel Thibaultof commands is arranged in alphabetical order.  If you wish to jump to
2092067fd92SSamuel Thibaultcommands in a specific part of the alphabet, you may press the letter of
2102067fd92SSamuel Thibaultthe alphabet you wish to jump to.
2112067fd92SSamuel Thibault
2122067fd92SSamuel ThibaultYou can also just explore by typing keyboard keys.  Pressing keys will
2132067fd92SSamuel Thibaultcause Speakup to speak the command associated with that key.  For
2142067fd92SSamuel Thibaultexample, if you press the keypad 8 key, you will hear:
2152067fd92SSamuel Thibault
2162067fd92SSamuel Thibault"Keypad 8 is line, say current."
2172067fd92SSamuel Thibault
2182067fd92SSamuel ThibaultYou'll notice that some commands do not have keys assigned to them.
2192067fd92SSamuel ThibaultThis is because they are very infrequently used commands, and are also
2202067fd92SSamuel Thibaultaccessible through the sys system.  We'll discuss the sys system later
2212067fd92SSamuel Thibaultin this manual.
2222067fd92SSamuel Thibault
2232067fd92SSamuel ThibaultYou'll also notice that some commands have two keys assigned to them.
2242067fd92SSamuel ThibaultThis is because Speakup has a built in set of alternative key bindings
2252067fd92SSamuel Thibaultfor laptop users.  The alternate speakup key is the caps lock key.  You
2262067fd92SSamuel Thibaultcan press and hold the caps lock key, while pressing an alternate
2272067fd92SSamuel Thibaultspeakup command key to activate the command.  On most laptops, the
2282067fd92SSamuel Thibaultnumeric keypad is defined as the keys in the j k l area of the keyboard.
2292067fd92SSamuel Thibault
2302067fd92SSamuel ThibaultThere is usually a function key which turns this keypad function on and
2312067fd92SSamuel Thibaultoff, and some other key which controls the numlock state.  Toggling the
2322067fd92SSamuel Thibaultkeypad functionality on and off can become a royal pain.  So, Speakup
2332067fd92SSamuel Thibaultgives you a simple way to get at an alternative set of key mappings for
2342067fd92SSamuel Thibaultyour laptop.  These are also available by default on desktop systems,
2352067fd92SSamuel Thibaultbecause Speakup does not know whether it is running on a desktop or
2362067fd92SSamuel Thibaultlaptop.  So you may choose which set of Speakup keys to use.  Some
2372067fd92SSamuel Thibaultsystem administrators may have chosen to compile Speakup for a desktop
2382067fd92SSamuel Thibaultsystem without this set of alternate key bindings, but these details are
2392067fd92SSamuel Thibaultbeyond the scope of this manual.  To use the caps lock for its normal
2402067fd92SSamuel Thibaultpurpose, hold the shift key while toggling the caps lock on and off.  We
2412067fd92SSamuel Thibaultshould note here, that holding the caps lock key and pressing the z key
2422067fd92SSamuel Thibaultwill toggle the alternate j k l keypad on and off.
2432067fd92SSamuel Thibault
2442067fd92SSamuel Thibault4.  Keys and Their Assigned Commands
2452067fd92SSamuel Thibault
2462067fd92SSamuel ThibaultIn this section, we'll go through a list of all the speakup keys and
2472067fd92SSamuel Thibaultcommands.  You can also get a list of commands and assigned keys from
2482067fd92SSamuel Thibaultthe help system.
2492067fd92SSamuel Thibault
2502067fd92SSamuel ThibaultThe following list was taken from the speakupmap.map file.  Key
2512067fd92SSamuel Thibaultassignments are on the left of the equal sign, and the associated
2522067fd92SSamuel ThibaultSpeakup commands are on the right.  The designation "spk" means to press
2532067fd92SSamuel Thibaultand hold the speakup key, a.k.a. keypad insert, a.k.a. caps lock, while
2542067fd92SSamuel Thibaultpressing the other specified key.
2552067fd92SSamuel Thibault
2562067fd92SSamuel Thibaultspk key_f9 = punc_level_dec
2572067fd92SSamuel Thibaultspk key_f10 = punc_level_inc
2582067fd92SSamuel Thibaultspk key_f11 = reading_punc_dec
2592067fd92SSamuel Thibaultspk key_f12 = reading_punc_inc
2602067fd92SSamuel Thibaultspk key_1 = vol_dec
2612067fd92SSamuel Thibaultspk key_2 =  vol_inc
2622067fd92SSamuel Thibaultspk key_3 = pitch_dec
2632067fd92SSamuel Thibaultspk key_4 = pitch_inc
2642067fd92SSamuel Thibaultspk key_5 = rate_dec
2652067fd92SSamuel Thibaultspk key_6 = rate_inc
2662067fd92SSamuel Thibaultkey_kpasterisk = toggle_cursoring
2672067fd92SSamuel Thibaultspk key_kpasterisk = speakup_goto
2682067fd92SSamuel Thibaultspk key_f1 = speakup_help
2692067fd92SSamuel Thibaultspk key_f2 = set_win
2702067fd92SSamuel Thibaultspk key_f3 = clear_win
2712067fd92SSamuel Thibaultspk key_f4 = enable_win
2722067fd92SSamuel Thibaultspk key_f5 = edit_some
2732067fd92SSamuel Thibaultspk key_f6 = edit_most
2742067fd92SSamuel Thibaultspk key_f7 = edit_delim
2752067fd92SSamuel Thibaultspk key_f8 = edit_repeat
2762067fd92SSamuel Thibaultshift spk key_f9 = edit_exnum
2772067fd92SSamuel Thibault key_kp7 = say_prev_line
2782067fd92SSamuel Thibaultspk key_kp7 = left_edge
2792067fd92SSamuel Thibault key_kp8 = say_line
2802067fd92SSamuel Thibaultdouble  key_kp8 = say_line_indent
2812067fd92SSamuel Thibaultspk key_kp8 = say_from_top
2822067fd92SSamuel Thibault key_kp9 = say_next_line
2832067fd92SSamuel Thibaultspk  key_kp9 = top_edge
2842067fd92SSamuel Thibault key_kpminus = speakup_parked
2852067fd92SSamuel Thibaultspk key_kpminus = say_char_num
2862067fd92SSamuel Thibault key_kp4 = say_prev_word
2872067fd92SSamuel Thibaultspk key_kp4 = say_from_left
2882067fd92SSamuel Thibault key_kp5 = say_word
2892067fd92SSamuel Thibaultdouble key_kp5 = spell_word
2902067fd92SSamuel Thibaultspk key_kp5 = spell_phonetic
2912067fd92SSamuel Thibault key_kp6 = say_next_word
2922067fd92SSamuel Thibaultspk key_kp6 = say_to_right
2932067fd92SSamuel Thibault key_kpplus = say_screen
2942067fd92SSamuel Thibaultspk key_kpplus = say_win
2952067fd92SSamuel Thibault key_kp1 = say_prev_char
2962067fd92SSamuel Thibaultspk key_kp1 = right_edge
2972067fd92SSamuel Thibault key_kp2 = say_char
2982067fd92SSamuel Thibaultspk key_kp2 = say_to_bottom
2992067fd92SSamuel Thibaultdouble key_kp2 = say_phonetic_char
3002067fd92SSamuel Thibault key_kp3 = say_next_char
3012067fd92SSamuel Thibaultspk  key_kp3 = bottom_edge
3022067fd92SSamuel Thibault key_kp0 = spk_key
3032067fd92SSamuel Thibault key_kpdot = say_position
3042067fd92SSamuel Thibaultspk key_kpdot = say_attributes
3052067fd92SSamuel Thibaultkey_kpenter = speakup_quiet
3062067fd92SSamuel Thibaultspk key_kpenter = speakup_off
3072067fd92SSamuel Thibaultkey_sysrq = speech_kill
3082067fd92SSamuel Thibault key_kpslash = speakup_cut
3092067fd92SSamuel Thibaultspk key_kpslash = speakup_paste
3102067fd92SSamuel Thibaultspk key_pageup = say_first_char
3112067fd92SSamuel Thibaultspk key_pagedown = say_last_char
3122067fd92SSamuel Thibaultkey_capslock = spk_key
3132067fd92SSamuel Thibault spk key_z = spk_lock
3142067fd92SSamuel Thibaultkey_leftmeta = spk_key
3152067fd92SSamuel Thibaultctrl spk key_0 = speakup_goto
3162067fd92SSamuel Thibaultspk key_u = say_prev_line
3172067fd92SSamuel Thibaultspk key_i = say_line
3182067fd92SSamuel Thibaultdouble spk key_i = say_line_indent
3192067fd92SSamuel Thibaultspk key_o = say_next_line
3202067fd92SSamuel Thibaultspk key_minus = speakup_parked
3212067fd92SSamuel Thibaultshift spk key_minus = say_char_num
3222067fd92SSamuel Thibaultspk key_j = say_prev_word
3232067fd92SSamuel Thibaultspk key_k = say_word
3242067fd92SSamuel Thibaultdouble spk key_k = spell_word
3252067fd92SSamuel Thibaultspk key_l = say_next_word
3262067fd92SSamuel Thibaultspk key_m = say_prev_char
3272067fd92SSamuel Thibaultspk key_comma = say_char
3282067fd92SSamuel Thibaultdouble spk key_comma = say_phonetic_char
3292067fd92SSamuel Thibaultspk key_dot = say_next_char
3302067fd92SSamuel Thibaultspk key_n = say_position
3312067fd92SSamuel Thibault ctrl spk key_m = left_edge
3322067fd92SSamuel Thibault ctrl spk key_y = top_edge
3332067fd92SSamuel Thibault ctrl spk key_dot = right_edge
3342067fd92SSamuel Thibaultctrl spk key_p = bottom_edge
3352067fd92SSamuel Thibaultspk key_apostrophe = say_screen
3362067fd92SSamuel Thibaultspk key_h = say_from_left
3372067fd92SSamuel Thibaultspk key_y = say_from_top
3382067fd92SSamuel Thibaultspk key_semicolon = say_to_right
3392067fd92SSamuel Thibaultspk key_p = say_to_bottom
3402067fd92SSamuel Thibaultspk key_slash = say_attributes
3412067fd92SSamuel Thibault spk key_enter = speakup_quiet
3422067fd92SSamuel Thibault ctrl  spk key_enter = speakup_off
3432067fd92SSamuel Thibault spk key_9 = speakup_cut
3442067fd92SSamuel Thibaultspk key_8 = speakup_paste
3452067fd92SSamuel Thibaultshift spk key_m = say_first_char
3462067fd92SSamuel Thibault ctrl spk key_semicolon = say_last_char
347f96a15c7SSamuel Thibaultspk key_r = read_all_doc
3482067fd92SSamuel Thibault
3492067fd92SSamuel Thibault5.  The Speakup Sys System
3502067fd92SSamuel Thibault
3512067fd92SSamuel ThibaultThe Speakup screen reader also creates a speakup subdirectory as a part
3522067fd92SSamuel Thibaultof the sys system.
3532067fd92SSamuel Thibault
3542067fd92SSamuel ThibaultAs a convenience, run as root
3552067fd92SSamuel Thibault
3562067fd92SSamuel Thibaultln -s /sys/accessibility/speakup /speakup
3572067fd92SSamuel Thibault
3582067fd92SSamuel Thibaultto directly access speakup parameters from /speakup.
3592067fd92SSamuel ThibaultYou can see these entries by typing the command:
3602067fd92SSamuel Thibault
3612067fd92SSamuel Thibaultls -1 /speakup/*
3622067fd92SSamuel Thibault
3632067fd92SSamuel ThibaultIf you issue the above ls command, you will get back something like
3642067fd92SSamuel Thibaultthis:
3652067fd92SSamuel Thibault
3662067fd92SSamuel Thibault/speakup/attrib_bleep
3672067fd92SSamuel Thibault/speakup/bell_pos
3682067fd92SSamuel Thibault/speakup/bleep_time
3692067fd92SSamuel Thibault/speakup/bleeps
3702067fd92SSamuel Thibault/speakup/cursor_time
3712067fd92SSamuel Thibault/speakup/delimiters
3722067fd92SSamuel Thibault/speakup/ex_num
3732067fd92SSamuel Thibault/speakup/key_echo
3742067fd92SSamuel Thibault/speakup/keymap
3752067fd92SSamuel Thibault/speakup/no_interrupt
3762067fd92SSamuel Thibault/speakup/punc_all
3772067fd92SSamuel Thibault/speakup/punc_level
3782067fd92SSamuel Thibault/speakup/punc_most
3792067fd92SSamuel Thibault/speakup/punc_some
3802067fd92SSamuel Thibault/speakup/reading_punc
3812067fd92SSamuel Thibault/speakup/repeats
3822067fd92SSamuel Thibault/speakup/say_control
3832067fd92SSamuel Thibault/speakup/say_word_ctl
3842067fd92SSamuel Thibault/speakup/silent
3852067fd92SSamuel Thibault/speakup/spell_delay
3862067fd92SSamuel Thibault/speakup/synth
3872067fd92SSamuel Thibault/speakup/synth_direct
3882067fd92SSamuel Thibault/speakup/version
3892067fd92SSamuel Thibault
3902067fd92SSamuel Thibault/speakup/i18n:
3912067fd92SSamuel Thibaultannouncements
3922067fd92SSamuel Thibaultcharacters
3932067fd92SSamuel Thibaultchartab
3942067fd92SSamuel Thibaultcolors
3952067fd92SSamuel Thibaultctl_keys
3962067fd92SSamuel Thibaultformatted
3972067fd92SSamuel Thibaultfunction_names
3982067fd92SSamuel Thibaultkey_names
3992067fd92SSamuel Thibaultstates
4002067fd92SSamuel Thibault
4012067fd92SSamuel Thibault/speakup/soft:
4022067fd92SSamuel Thibaultcaps_start
4032067fd92SSamuel Thibaultcaps_stop
4042067fd92SSamuel Thibaultdelay_time
4052067fd92SSamuel Thibaultdirect
4062067fd92SSamuel Thibaultfreq
4072067fd92SSamuel Thibaultfull_time
4082067fd92SSamuel Thibaultjiffy_delta
4092067fd92SSamuel Thibaultpitch
4102067fd92SSamuel Thibaultinflection
4112067fd92SSamuel Thibaultpunct
4122067fd92SSamuel Thibaultrate
4132067fd92SSamuel Thibaulttone
4142067fd92SSamuel Thibaulttrigger_time
4152067fd92SSamuel Thibaultvoice
4162067fd92SSamuel Thibaultvol
4172067fd92SSamuel Thibault
4182067fd92SSamuel ThibaultNotice the two subdirectories of /speakup: /speakup/i18n and
4192067fd92SSamuel Thibault/speakup/soft.
4202067fd92SSamuel ThibaultThe i18n subdirectory is described in a later section.
4212067fd92SSamuel ThibaultThe files under /speakup/soft represent settings that are specific to the
4222067fd92SSamuel Thibaultdriver for the software synthesizer.  If you use the LiteTalk, your
4232067fd92SSamuel Thibaultsynthesizer-specific settings would be found in /speakup/ltlk.  In other words,
4242067fd92SSamuel Thibaulta subdirectory named /speakup/KWD is created to hold parameters specific
4252067fd92SSamuel Thibaultto the device whose keyword is KWD.
4262067fd92SSamuel ThibaultThese parameters include volume, rate, pitch, and others.
4272067fd92SSamuel Thibault
4282067fd92SSamuel ThibaultIn addition to using the Speakup hot keys to change such things as
4292067fd92SSamuel Thibaultvolume, pitch, and rate, you can also echo values to the appropriate
4302067fd92SSamuel Thibaultentry in the /speakup directory.  This is very useful, since it
4312067fd92SSamuel Thibaultlets you control Speakup parameters from within a script.  How you
4322067fd92SSamuel Thibaultwould write such scripts is somewhat beyond the scope of this manual,
4332067fd92SSamuel Thibaultbut I will include a couple of simple examples here to give you a
4342067fd92SSamuel Thibaultgeneral idea of what such scripts can do.
4352067fd92SSamuel Thibault
4362067fd92SSamuel ThibaultSuppose for example, that you wanted to control both the punctuation
4372067fd92SSamuel Thibaultlevel and the reading punctuation level at the same time.  For
4382067fd92SSamuel Thibaultsimplicity, we'll call them punc0, punc1, punc2, and punc3.  The scripts
4392067fd92SSamuel Thibaultmight look something like this:
4402067fd92SSamuel Thibault
4412067fd92SSamuel Thibault#!/bin/bash
4422067fd92SSamuel Thibault# punc0
4432067fd92SSamuel Thibault# set punc and reading punc levels to 0
4442067fd92SSamuel Thibaultecho 0 >/speakup/punc_level
4452067fd92SSamuel Thibaultecho 0 >/speakup/reading_punc
4462067fd92SSamuel Thibaultecho Punctuation level set to 0.
4472067fd92SSamuel Thibault
4482067fd92SSamuel Thibault#!/bin/bash
4492067fd92SSamuel Thibault# punc1
4502067fd92SSamuel Thibault# set punc and reading punc levels to 1
4512067fd92SSamuel Thibaultecho 1 >/speakup/punc_level
4522067fd92SSamuel Thibaultecho 1 >/speakup/reading_punc
4532067fd92SSamuel Thibaultecho Punctuation level set to 1.
4542067fd92SSamuel Thibault
4552067fd92SSamuel Thibault#!/bin/bash
4562067fd92SSamuel Thibault# punc2
4572067fd92SSamuel Thibault# set punc and reading punc levels to 2
4582067fd92SSamuel Thibaultecho 2 >/speakup/punc_level
4592067fd92SSamuel Thibaultecho 2 >/speakup/reading_punc
4602067fd92SSamuel Thibaultecho Punctuation level set to 2.
4612067fd92SSamuel Thibault
4622067fd92SSamuel Thibault#!/bin/bash
4632067fd92SSamuel Thibault# punc3
4642067fd92SSamuel Thibault# set punc and reading punc levels to 3
4652067fd92SSamuel Thibaultecho 3 >/speakup/punc_level
4662067fd92SSamuel Thibaultecho 3 >/speakup/reading_punc
4672067fd92SSamuel Thibaultecho Punctuation level set to 3.
4682067fd92SSamuel Thibault
4692067fd92SSamuel ThibaultIf you were to store these four small scripts in a directory in your
4702067fd92SSamuel Thibaultpath, perhaps /usr/local/bin, and set the permissions to 755 with the
4712067fd92SSamuel Thibaultchmod command, then you could change the default reading punc and
4722067fd92SSamuel Thibaultpunctuation levels at the same time by issuing just one command.  For
4732067fd92SSamuel Thibaultexample, if you were to execute the punc3 command at your shell prompt,
4742067fd92SSamuel Thibaultthen the reading punc and punc level would both get set to 3.
4752067fd92SSamuel Thibault
4762067fd92SSamuel ThibaultI should note that the above scripts were written to work with bash, but
4772067fd92SSamuel Thibaultregardless of which shell you use, you should be able to do something
4782067fd92SSamuel Thibaultsimilar.
4792067fd92SSamuel Thibault
4802067fd92SSamuel ThibaultThe Speakup sys system also has another interesting use.  You can echo
4812067fd92SSamuel ThibaultSpeakup parameters into the sys system in a script during system
4822067fd92SSamuel Thibaultstartup, and speakup will return to your preferred parameters every time
4832067fd92SSamuel Thibaultthe system is rebooted.
4842067fd92SSamuel Thibault
4852067fd92SSamuel ThibaultMost of the Speakup sys parameters can be manipulated by a regular user
4862067fd92SSamuel Thibaulton the system.  However, there are a few parameters that are dangerous
4872067fd92SSamuel Thibaultenough that they should only be manipulated by the root user on your
4882067fd92SSamuel Thibaultsystem.  There are even some parameters that are read only, and cannot
4892067fd92SSamuel Thibaultbe written to at all.  For example, the version entry in the Speakup
4902067fd92SSamuel Thibaultsys system is read only.  This is because there is no reason for a user
4912067fd92SSamuel Thibaultto tamper with the version number which is reported by Speakup.  Doing
4922067fd92SSamuel Thibaultan ls -l on /speakup/version will return this:
4932067fd92SSamuel Thibault
4942067fd92SSamuel Thibault-r--r--r--    1 root     root            0 Mar 21 13:46 /speakup/version
4952067fd92SSamuel Thibault
4962067fd92SSamuel ThibaultAs you can see, the version entry in the Speakup sys system is read
4972067fd92SSamuel Thibaultonly, is owned by root, and belongs to the root group.  Doing a cat of
4982067fd92SSamuel Thibault/speakup/version will display the Speakup version number, like
4992067fd92SSamuel Thibaultthis:
5002067fd92SSamuel Thibault
5012067fd92SSamuel Thibaultcat /speakup/version
5022067fd92SSamuel ThibaultSpeakup v-2.00 CVS: Thu Oct 21 10:38:21 EDT 2004
5032067fd92SSamuel Thibaultsynth dtlk version 1.1
5042067fd92SSamuel Thibault
5052067fd92SSamuel ThibaultThe display shows the Speakup version number, along with the version
5062067fd92SSamuel Thibaultnumber of the driver for the current synthesizer.
5072067fd92SSamuel Thibault
5082067fd92SSamuel ThibaultLooking at entries in the Speakup sys system can be useful in many
5092067fd92SSamuel Thibaultways.  For example, you might wish to know what level your volume is set
5102067fd92SSamuel Thibaultat.  You could type:
5112067fd92SSamuel Thibault
5122067fd92SSamuel Thibaultcat /speakup/KWD/vol
5132067fd92SSamuel Thibault# Replace KWD with the keyword for your synthesizer, E.G., ltlk for LiteTalk.
5142067fd92SSamuel Thibault5
5152067fd92SSamuel Thibault
5162067fd92SSamuel ThibaultThe number five which comes back is the level at which the synthesizer
5172067fd92SSamuel Thibaultvolume is set at.
5182067fd92SSamuel Thibault
5192067fd92SSamuel ThibaultAll the entries in the Speakup sys system are readable, some are
5202067fd92SSamuel Thibaultwritable by root only, and some are writable by everyone.  Unless you
5212067fd92SSamuel Thibaultknow what you are doing, you should probably leave the ones that are
5222067fd92SSamuel Thibaultwritable by root only alone.  Most of the names are self explanatory.
5232067fd92SSamuel ThibaultVol for controlling volume, pitch for pitch, inflection for pitch range, rate
5242067fd92SSamuel Thibaultfor controlling speaking rate, etc.  If you find one you aren't sure about, you
5252067fd92SSamuel Thibaultcan post a query on the Speakup list.
5262067fd92SSamuel Thibault
5272067fd92SSamuel Thibault6.  Changing Synthesizers
5282067fd92SSamuel Thibault
5292067fd92SSamuel ThibaultIt is possible to change to a different synthesizer while speakup is
5302067fd92SSamuel Thibaultrunning.  In other words, it is not necessary to reboot the system
5312067fd92SSamuel Thibaultin order to use a different synthesizer.  You can simply echo the
5322067fd92SSamuel Thibaultsynthesizer keyword to the /speakup/synth sys entry.
5332067fd92SSamuel ThibaultDepending on your situation, you may wish to echo none to the synth
5342067fd92SSamuel Thibaultsys entry, to disable speech while one synthesizer is disconnected and
5352067fd92SSamuel Thibaulta second one is connected in its place.  Then echo the keyword for the
5362067fd92SSamuel Thibaultnew synthesizer into the synth sys entry in order to start speech
5372067fd92SSamuel Thibaultwith the newly connected synthesizer.  See the list of synthesizer
5382067fd92SSamuel Thibaultkeywords in section 1 to find the keyword which matches your synth.
5392067fd92SSamuel Thibault
5402067fd92SSamuel Thibault7.  Loading modules
5412067fd92SSamuel Thibault
5422067fd92SSamuel ThibaultAs mentioned earlier, Speakup can either be completely compiled into the
5432067fd92SSamuel Thibaultkernel, with the exception of the help module, or it can be compiled as
5442067fd92SSamuel Thibaulta series of modules.   When compiled as modules, Speakup will only be
5452067fd92SSamuel Thibaultable to speak some of the bootup messages if your system administrator
546d64fbe9fSColin Ian Kinghas configured the system to load the modules at boot time. The modules
5472067fd92SSamuel Thibaultcan  be loaded after the file systems have been checked and mounted, or
5482067fd92SSamuel Thibaultfrom an initrd.  There is a third possibility.  Speakup can be compiled
5492067fd92SSamuel Thibaultwith some components built into the kernel, and others as modules.  As
5502067fd92SSamuel Thibaultwe'll see in the next section, this is particularly useful when you are
5512067fd92SSamuel Thibaultworking with software synthesizers.
5522067fd92SSamuel Thibault
5532067fd92SSamuel ThibaultIf Speakup is completely compiled as modules, then you must use the
5542067fd92SSamuel Thibaultmodprobe command to load Speakup.  You do this by loading the module for
5552067fd92SSamuel Thibaultthe synthesizer driver you wish to use.  The driver modules are all
5562067fd92SSamuel Thibaultnamed speakup_<keyword>, where <keyword> is the keyword for the
5572067fd92SSamuel Thibaultsynthesizer you want.  So, in order to load the driver for the DecTalk
5582067fd92SSamuel ThibaultExpress, you would type the following command:
5592067fd92SSamuel Thibault
5602067fd92SSamuel Thibaultmodprobe speakup_dectlk
5612067fd92SSamuel Thibault
5622067fd92SSamuel ThibaultIssuing this command would load the DecTalk Express driver and all other
5632067fd92SSamuel Thibaultrelated Speakup modules necessary to get Speakup up and running.
5642067fd92SSamuel Thibault
5652067fd92SSamuel ThibaultTo completely unload Speakup, again presuming that it is entirely built
5662067fd92SSamuel Thibaultas modules, you would give the command:
5672067fd92SSamuel Thibault
5682067fd92SSamuel Thibaultmodprobe -r speakup_dectlk
5692067fd92SSamuel Thibault
5702067fd92SSamuel ThibaultThe above command assumes you were running a DecTalk Express.  If you
5712067fd92SSamuel Thibaultwere using a different synth, then you would substitute its keyword in
5722067fd92SSamuel Thibaultplace of dectlk.
5732067fd92SSamuel Thibault
5742067fd92SSamuel ThibaultIf you have multiple drivers loaded, you need to unload all of them, in
5752067fd92SSamuel Thibaultorder to completely unload Speakup.
5762067fd92SSamuel ThibaultFor example, if you have loaded both the dectlk and ltlk drivers, use the
5772067fd92SSamuel Thibaultcommand:
5782067fd92SSamuel Thibaultmodprobe -r speakup_dectlk speakup_ltlk
5792067fd92SSamuel Thibault
5802067fd92SSamuel ThibaultYou cannot unload the driver for software synthesizers when a user-space
5812067fd92SSamuel Thibaultdaemon is using /dev/softsynth.  First, kill the daemon.  Next, remove
5822067fd92SSamuel Thibaultthe driver with the command:
5832067fd92SSamuel Thibaultmodprobe -r speakup_soft
5842067fd92SSamuel Thibault
5852067fd92SSamuel ThibaultNow, suppose we have a situation where the main Speakup component
5862067fd92SSamuel Thibaultis built into the kernel, and some or all of the drivers are built as
5872067fd92SSamuel Thibaultmodules.  Since the main part of Speakup is compiled into the kernel, a
5882067fd92SSamuel Thibaultpartial Speakup sys system has been created which we can take advantage
5892067fd92SSamuel Thibaultof by simply echoing the synthesizer keyword into the
5902067fd92SSamuel Thibault/speakup/synth sys entry.  This will cause the kernel to
5912067fd92SSamuel Thibaultautomatically load the appropriate driver module, and start Speakup
5922067fd92SSamuel Thibaulttalking.  To switch to another synth, just echo a new keyword to the
5932067fd92SSamuel Thibaultsynth sys entry.  For example, to load the DoubleTalk LT driver,
5942067fd92SSamuel Thibaultyou would type:
5952067fd92SSamuel Thibault
5962067fd92SSamuel Thibaultecho ltlk >/speakup/synth
5972067fd92SSamuel Thibault
5982067fd92SSamuel ThibaultYou can use the modprobe -r command to unload driver modules, regardless
5992067fd92SSamuel Thibaultof whether the main part of Speakup has been built into the kernel or
6002067fd92SSamuel Thibaultnot.
6012067fd92SSamuel Thibault
6022067fd92SSamuel Thibault8.  Using Software Synthesizers
6032067fd92SSamuel Thibault
6042067fd92SSamuel ThibaultUsing a software synthesizer requires that some other software be
6052067fd92SSamuel Thibaultinstalled and running on your system.  For this reason, software
6062067fd92SSamuel Thibaultsynthesizers are not available for use at bootup, or during a system
6072067fd92SSamuel Thibaultinstallation process.
6082067fd92SSamuel ThibaultThere are two freely-available solutions for software speech: Espeakup and
6092067fd92SSamuel ThibaultSpeech Dispatcher.
6102067fd92SSamuel ThibaultThese are described in subsections 8.1 and 8.2, respectively.
6112067fd92SSamuel Thibault
6122067fd92SSamuel ThibaultDuring the rest of this section, we assume that speakup_soft is either
6132067fd92SSamuel Thibaultbuilt in to your kernel, or loaded as a module.
6142067fd92SSamuel Thibault
6152067fd92SSamuel ThibaultIf your system does not have udev installed , before you can use a
6162067fd92SSamuel Thibaultsoftware synthesizer, you must have created the /dev/softsynth device.
6172067fd92SSamuel ThibaultIf you have not already done so, issue the following commands as root:
6182067fd92SSamuel Thibault
6192067fd92SSamuel Thibaultcd /dev
6202067fd92SSamuel Thibaultmknod softsynth c 10 26
6212067fd92SSamuel Thibault
6222067fd92SSamuel ThibaultWhile we are at it, we might just as well create the /dev/synth device,
6232067fd92SSamuel Thibaultwhich can be used to let user space programs send information to your
6242067fd92SSamuel Thibaultsynthesizer.  To create /dev/synth, change to the /dev directory, and
6252067fd92SSamuel Thibaultissue the following command as root:
6262067fd92SSamuel Thibault
6272067fd92SSamuel Thibaultmknod synth c 10 25
6282067fd92SSamuel Thibault
6292067fd92SSamuel Thibaultof both.
6302067fd92SSamuel Thibault
6312067fd92SSamuel Thibault8.1. Espeakup
6322067fd92SSamuel Thibault
6332067fd92SSamuel ThibaultEspeakup is a connector between Speakup and the eSpeak software synthesizer.
6342067fd92SSamuel ThibaultEspeakup may already be available as a package for your distribution
6352067fd92SSamuel Thibaultof Linux.  If it is not packaged, you need to install it manually.
6362067fd92SSamuel ThibaultYou can find it in the contrib/ subdirectory of the Speakup sources.
6372067fd92SSamuel ThibaultThe filename is espeakup-$VERSION.tar.bz2, where $VERSION
6382067fd92SSamuel Thibaultdepends on the current release of Espeakup.  The Speakup 3.1.2 source
6392067fd92SSamuel Thibaultships with version 0.71 of Espeakup.
6402067fd92SSamuel ThibaultThe README file included with the Espeakup sources describes the process
6412067fd92SSamuel Thibaultof manual installation.
6422067fd92SSamuel Thibault
6432067fd92SSamuel ThibaultAssuming that Espeakup is installed, either by the user or by the distributor,
6442067fd92SSamuel Thibaultfollow these steps to use it.
6452067fd92SSamuel Thibault
6462067fd92SSamuel ThibaultTell Speakup to use the "soft driver:
6472067fd92SSamuel Thibaultecho soft > /speakup/synth
6482067fd92SSamuel Thibault
6492067fd92SSamuel ThibaultFinally, start the espeakup program.  There are two ways to do it.
6502067fd92SSamuel ThibaultBoth require root privileges.
6512067fd92SSamuel Thibault
6522067fd92SSamuel ThibaultIf Espeakup was installed as a package for your Linux distribution,
6532067fd92SSamuel Thibaultyou probably have a distribution-specific script that controls the operation
6542067fd92SSamuel Thibaultof the daemon.  Look for a file named espeakup under /etc/init.d or
6552067fd92SSamuel Thibault/etc/rc.d.  Execute the following command with root privileges:
6562067fd92SSamuel Thibault/etc/init.d/espeakup start
6572067fd92SSamuel ThibaultReplace init.d with rc.d, if your distribution uses scripts located under
6582067fd92SSamuel Thibault/etc/rc.d.
6592067fd92SSamuel ThibaultYour distribution will also have a procedure for starting daemons at
6602067fd92SSamuel Thibaultboot-time, so it is possible to have software speech as soon as user-space
6612067fd92SSamuel Thibaultdaemons are started by the bootup scripts.
6622067fd92SSamuel ThibaultThese procedures are not described in this document.
6632067fd92SSamuel Thibault
6642067fd92SSamuel ThibaultIf you built Espeakup manually, the "make install" step placed the binary
6652067fd92SSamuel Thibaultunder /usr/bin.
6662067fd92SSamuel ThibaultRun the following command as root:
6672067fd92SSamuel Thibault/usr/bin/espeakup
6682067fd92SSamuel ThibaultEspeakup should start speaking.
6692067fd92SSamuel Thibault
6702067fd92SSamuel Thibault8.2. Speech Dispatcher
6712067fd92SSamuel Thibault
6722067fd92SSamuel ThibaultFor this option, you must have a package called
6732067fd92SSamuel ThibaultSpeech Dispatcher running on your system, and it must be configured to
6742067fd92SSamuel Thibaultwork with one of its supported software synthesizers.
6752067fd92SSamuel Thibault
6762067fd92SSamuel ThibaultTwo open source synthesizers you might use are Flite and Festival.  You
6772067fd92SSamuel Thibaultmight also choose to purchase the Software DecTalk from Fonix Sales Inc.
6782067fd92SSamuel ThibaultIf you run a google search for Fonix, you'll find their web site.
6792067fd92SSamuel Thibault
6802067fd92SSamuel ThibaultYou can obtain a copy of Speech Dispatcher from free(b)soft at
6812067fd92SSamuel Thibaulthttp://www.freebsoft.org/.  Follow the installation instructions that
6822067fd92SSamuel Thibaultcome with Speech Dispatcher in order to install and configure Speech
6832067fd92SSamuel ThibaultDispatcher.  You can check out the web site for your Linux distribution
6842067fd92SSamuel Thibaultin order to get a copy of either Flite or Festival.  Your Linux
6852067fd92SSamuel Thibaultdistribution may also have a precompiled Speech Dispatcher package.
6862067fd92SSamuel Thibault
6872067fd92SSamuel ThibaultOnce you've installed, configured, and tested Speech Dispatcher with your
6882067fd92SSamuel Thibaultchosen software synthesizer, you still need one more piece of software
6892067fd92SSamuel Thibaultin order to make things work.  You need a package called speechd-up.
6902067fd92SSamuel ThibaultYou get it from the free(b)soft web site mentioned above.  After you've
6912067fd92SSamuel Thibaultcompiled and installed speechd-up, you are almost ready to begin using
6922067fd92SSamuel Thibaultyour software synthesizer.
6932067fd92SSamuel Thibault
6942067fd92SSamuel ThibaultNow you can begin using your software synthesizer.  In order to do so,
6952067fd92SSamuel Thibaultecho the soft keyword to the synth sys entry like this:
6962067fd92SSamuel Thibault
6972067fd92SSamuel Thibaultecho soft >/speakup/synth
6982067fd92SSamuel Thibault
6992067fd92SSamuel ThibaultNext run the speechd_up command like this:
7002067fd92SSamuel Thibault
7012067fd92SSamuel Thibaultspeechd_up &
7022067fd92SSamuel Thibault
7032067fd92SSamuel ThibaultYour synth should now start talking, and you should be able to adjust
7042067fd92SSamuel Thibaultthe pitch, rate, etc.
7052067fd92SSamuel Thibault
7062067fd92SSamuel Thibault9.  Using The DecTalk PC Card
7072067fd92SSamuel Thibault
7082067fd92SSamuel ThibaultThe DecTalk PC card is an ISA card that is inserted into one of the ISA
7092067fd92SSamuel Thibaultslots in your computer.  It requires that the DecTalk PC software be
7102067fd92SSamuel Thibaultinstalled on your computer, and that the software be loaded onto the
7112067fd92SSamuel ThibaultDectalk PC card before it can be used.
7122067fd92SSamuel Thibault
7132067fd92SSamuel ThibaultYou can get the dec_pc.tgz file from the linux-speakup.org site.  The
7142067fd92SSamuel Thibaultdec_pc.tgz file is in the ~ftp/pub/linux/speakup directory.
7152067fd92SSamuel Thibault
7162067fd92SSamuel ThibaultAfter you have downloaded the dec_pc.tgz file, untar it in your home
7172067fd92SSamuel Thibaultdirectory, and read the Readme file in the newly created dec_pc
7182067fd92SSamuel Thibaultdirectory.
7192067fd92SSamuel Thibault
7202067fd92SSamuel ThibaultThe easiest way to get the software working is to copy the entire dec_pc
7212067fd92SSamuel Thibaultdirectory into /user/local/lib.  To do this, su to root in your home
7222067fd92SSamuel Thibaultdirectory, and issue the command:
7232067fd92SSamuel Thibault
7242067fd92SSamuel Thibaultcp dec_pc /usr/local/lib
7252067fd92SSamuel Thibault
7262067fd92SSamuel ThibaultYou will need to copy the dtload command from the dec_pc directory to a
7272067fd92SSamuel Thibaultdirectory in your path.  Either /usr/bin or /usr/local/bin is a good
7282067fd92SSamuel Thibaultchoice.
7292067fd92SSamuel Thibault
7302067fd92SSamuel ThibaultYou can now run the dtload command in order to load the DecTalk PC
7312067fd92SSamuel Thibaultsoftware onto the card.  After you have done this, echo the decpc
7322067fd92SSamuel Thibaultkeyword to the synth entry in the sys system like this:
7332067fd92SSamuel Thibault
7342067fd92SSamuel Thibaultecho decpc >/speakup/synth
7352067fd92SSamuel Thibault
7362067fd92SSamuel ThibaultYour DecTalk PC should start talking, and then you can adjust the pitch,
7372067fd92SSamuel Thibaultrate, volume, voice, etc.  The voice entry in the Speakup sys system
7382067fd92SSamuel Thibaultwill accept a number from 0 through 7 for the DecTalk PC synthesizer,
7392067fd92SSamuel Thibaultwhich will give you access to some of the DecTalk voices.
7402067fd92SSamuel Thibault
7412067fd92SSamuel Thibault10.  Using Cursor Tracking
7422067fd92SSamuel Thibault
7432067fd92SSamuel ThibaultIn Speakup version 2.0 and later, cursor tracking is turned on by
7442067fd92SSamuel Thibaultdefault.  This means that when you are using an editor, Speakup will
7452067fd92SSamuel Thibaultautomatically speak characters as you move left and right with the
7462067fd92SSamuel Thibaultcursor keys, and lines as you move up and down with the cursor keys.
7472067fd92SSamuel ThibaultThis is the traditional sort of cursor tracking.
7482067fd92SSamuel ThibaultRecent versions of Speakup provide two additional ways to control the
7492067fd92SSamuel Thibaulttext that is spoken when the cursor is moved:
7502067fd92SSamuel Thibault"highlight tracking" and "read window."
7512067fd92SSamuel ThibaultThey are described later in this section.
7522067fd92SSamuel ThibaultSometimes, these modes get in your way, so you can disable cursor tracking
7532067fd92SSamuel Thibaultaltogether.
7542067fd92SSamuel Thibault
7552067fd92SSamuel ThibaultYou may select among the various forms of cursor tracking using the keypad
7562067fd92SSamuel Thibaultasterisk key.
7572067fd92SSamuel ThibaultEach time you press this key, a new mode is selected, and Speakup speaks
7582067fd92SSamuel Thibaultthe name of the new mode.  The names for the four possible states of cursor
7592067fd92SSamuel Thibaulttracking are: "cursoring on", "highlight tracking", "read window",
7602067fd92SSamuel Thibaultand "cursoring off."  The keypad asterisk key moves through the list of
7612067fd92SSamuel Thibaultmodes in a circular fashion.
7622067fd92SSamuel Thibault
7632067fd92SSamuel ThibaultIf highlight tracking is enabled, Speakup tracks highlighted text,
7642067fd92SSamuel Thibaultrather than the cursor itself. When you move the cursor with the arrow keys,
7652067fd92SSamuel ThibaultSpeakup speaks the currently highlighted information.
7662067fd92SSamuel ThibaultThis is useful when moving through various menus and dialog boxes.
7672067fd92SSamuel ThibaultIf cursor tracking isn't helping you while navigating a menu,
7682067fd92SSamuel Thibaulttry highlight tracking.
7692067fd92SSamuel Thibault
7702067fd92SSamuel ThibaultWith the "read window" variety of cursor tracking, you can limit the text
7712067fd92SSamuel Thibaultthat Speakup speaks by specifying a window of interest on the screen.
7722067fd92SSamuel ThibaultSee section 15 for a description of the process of defining windows.
7732067fd92SSamuel ThibaultWhen you move the cursor via the arrow keys, Speakup only speaks
7742067fd92SSamuel Thibaultthe contents of the window.  This is especially helpful when you are hearing
7752067fd92SSamuel Thibaultsuperfluous speech.  Consider the following example.
7762067fd92SSamuel Thibault
7772067fd92SSamuel ThibaultSuppose that you are at a shell prompt.  You use bash, and you want to
7782067fd92SSamuel Thibaultexplore your command history using the up and down arrow keys.  If you
7792067fd92SSamuel Thibaulthave enabled cursor tracking, you will hear two pieces of information.
7802067fd92SSamuel ThibaultSpeakup speaks both your shell prompt and the current entry from the
7812067fd92SSamuel Thibaultcommand history.  You may not want to hear the prompt repeated
7822067fd92SSamuel Thibaulteach time you move, so you can silence it by specifying a window.  Find
7832067fd92SSamuel Thibaultthe last line of text on the screen.  Clear the current window by pressing
7842067fd92SSamuel Thibaultthe key combination speakup f3.  Use the review cursor to find the first
7852067fd92SSamuel Thibaultcharacter that follows your shell prompt.  Press speakup + f2 twice, to
7862067fd92SSamuel Thibaultdefine a one-line window.  The boundaries of the window are the
7872067fd92SSamuel Thibaultcharacter following the shell prompt and the end of the line.  Now, cycle
7882067fd92SSamuel Thibaultthrough the cursor tracking modes using keypad asterisk, until Speakup
7892067fd92SSamuel Thibaultsays "read window."  Move through your history using your arrow keys.
7902067fd92SSamuel ThibaultYou will notice that Speakup no longer speaks the redundant prompt.
7912067fd92SSamuel Thibault
7922067fd92SSamuel ThibaultSome folks like to turn cursor tracking off while they are using the
7932067fd92SSamuel Thibaultlynx web browser.  You definitely want to turn cursor tracking off when
7942067fd92SSamuel Thibaultyou are using the alsamixer application.  Otherwise, you won't be able
7952067fd92SSamuel Thibaultto hear your mixer settings while you are using the arrow keys.
7962067fd92SSamuel Thibault
7972067fd92SSamuel Thibault11.  Cut and Paste
7982067fd92SSamuel Thibault
7992067fd92SSamuel ThibaultOne of Speakup's more useful features is the ability to cut and paste
8002067fd92SSamuel Thibaulttext on the screen.  This means that you can capture information from a
8012067fd92SSamuel Thibaultprogram, and paste that captured text into a different place in the
8022067fd92SSamuel Thibaultprogram, or into an entirely different program, which may even be
8032067fd92SSamuel Thibaultrunning on a different console.
8042067fd92SSamuel Thibault
8052067fd92SSamuel ThibaultFor example, in this manual, we have made references to several web
8062067fd92SSamuel Thibaultsites.  It would be nice if you could cut and paste these urls into your
8072067fd92SSamuel Thibaultweb browser.  Speakup does this quite nicely.  Suppose you wanted to
8082067fd92SSamuel Thibaultpast the following url into your browser:
8092067fd92SSamuel Thibault
8102067fd92SSamuel Thibaulthttp://linux-speakup.org/
8112067fd92SSamuel Thibault
8122067fd92SSamuel ThibaultUse the speakup review keys to position the reading cursor on the first
8132067fd92SSamuel Thibaultcharacter of the above url.  When the reading cursor is in position,
8142067fd92SSamuel Thibaultpress the keypad slash key once.  Speakup will say, "mark".  Next,
8152067fd92SSamuel Thibaultposition the reading cursor on the rightmost character of the above
8162067fd92SSamuel Thibaulturl. Press the keypad slash key once again to actually cut the text
8172067fd92SSamuel Thibaultfrom the screen.  Speakup will say, "cut".  Although we call this
8182067fd92SSamuel Thibaultcutting, Speakup does not actually delete the cut text from the screen.
8192067fd92SSamuel ThibaultIt makes a copy of the text in a special buffer for later pasting.
8202067fd92SSamuel Thibault
8212067fd92SSamuel ThibaultNow that you have the url cut from the screen, you can paste it into
8222067fd92SSamuel Thibaultyour browser, or even paste the url on a command line as an argument to
8232067fd92SSamuel Thibaultyour browser.
8242067fd92SSamuel Thibault
8252067fd92SSamuel ThibaultSuppose you want to start lynx and go to the Speakup site.
8262067fd92SSamuel Thibault
8272067fd92SSamuel ThibaultYou can switch to a different console with the alt left and right
8282067fd92SSamuel Thibaultarrows, or you can switch to a specific console by typing alt and a
8292067fd92SSamuel Thibaultfunction key.  These are not Speakup commands, just standard Linux
8302067fd92SSamuel Thibaultconsole capabilities.
8312067fd92SSamuel Thibault
8322067fd92SSamuel ThibaultOnce you've changed to an appropriate console, and are at a shell prompt,
8332067fd92SSamuel Thibaulttype the word lynx, followed by a space.  Now press and hold the speakup
8342067fd92SSamuel Thibaultkey, while you type the keypad slash character.  The url will be pasted
8352067fd92SSamuel Thibaultonto the command line, just as though you had typed it in.  Press the
8362067fd92SSamuel Thibaultenter key to execute the command.
8372067fd92SSamuel Thibault
8382067fd92SSamuel ThibaultThe paste buffer will continue to hold the cut information, until a new
8392067fd92SSamuel Thibaultmark and cut operation is carried out.  This means you can paste the cut
8402067fd92SSamuel Thibaultinformation as many times as you like before doing another cut
8412067fd92SSamuel Thibaultoperation.
8422067fd92SSamuel Thibault
8432067fd92SSamuel ThibaultYou are not limited to cutting and pasting only one line on the screen.
8442067fd92SSamuel ThibaultYou can also cut and paste rectangular regions of the screen.  Just
8452067fd92SSamuel Thibaultposition the reading cursor at the top left corner of the text to be
8462067fd92SSamuel Thibaultcut, mark it with the keypad slash key, then position the reading cursor
8472067fd92SSamuel Thibaultat the bottom right corner of the region to be cut, and cut it with the
8482067fd92SSamuel Thibaultkeypad slash key.
8492067fd92SSamuel Thibault
8502067fd92SSamuel Thibault12.  Changing the Pronunciation of Characters
8512067fd92SSamuel Thibault
8522067fd92SSamuel ThibaultThrough the /speakup/i18n/characters sys entry, Speakup gives you the
8532067fd92SSamuel Thibaultability to change how Speakup pronounces a given character.  You could,
8542067fd92SSamuel Thibaultfor example, change how some punctuation characters are spoken.  You can
8552067fd92SSamuel Thibaulteven change how Speakup will pronounce certain letters.
8562067fd92SSamuel Thibault
8572067fd92SSamuel ThibaultYou may, for example, wish to change how Speakup pronounces the z
8582067fd92SSamuel Thibaultcharacter.  The author of Speakup, Kirk Reiser, is Canadian, and thus
8592067fd92SSamuel Thibaultbelieves that the z should be pronounced zed.  If you are an American,
8602067fd92SSamuel Thibaultyou might wish to use the zee pronunciation instead of zed.  You can
8612067fd92SSamuel Thibaultchange the pronunciation of both the upper and lower case z with the
8622067fd92SSamuel Thibaultfollowing two commands:
8632067fd92SSamuel Thibault
8642067fd92SSamuel Thibaultecho 90 zee >/speakup/characters
8652067fd92SSamuel Thibaultecho 122 zee >/speakup/characters
8662067fd92SSamuel Thibault
8672067fd92SSamuel ThibaultLet's examine the parts of the two previous commands.  They are issued
8682067fd92SSamuel Thibaultat the shell prompt, and could be placed in a startup script.
8692067fd92SSamuel Thibault
8702067fd92SSamuel ThibaultThe word echo tells the shell that you want to have it display the
8712067fd92SSamuel Thibaultstring of characters that follow the word echo.  If you were to just
8722067fd92SSamuel Thibaulttype:
8732067fd92SSamuel Thibault
8742067fd92SSamuel Thibaultecho hello.
8752067fd92SSamuel Thibault
8762067fd92SSamuel ThibaultYou would get the word hello printed on your screen as soon as you
8772067fd92SSamuel Thibaultpressed the enter key.  In this case, we are echoing strings that we
8782067fd92SSamuel Thibaultwant to be redirected into the sys system.
8792067fd92SSamuel Thibault
8802067fd92SSamuel ThibaultThe numbers 90 and 122 in the above echo commands are the ascii numeric
8812067fd92SSamuel Thibaultvalues for the upper and lower case z, the characters we wish to change.
8822067fd92SSamuel Thibault
8832067fd92SSamuel ThibaultThe string zee is the pronunciation that we want Speakup to use for the
8842067fd92SSamuel Thibaultupper and lower case z.
8852067fd92SSamuel Thibault
8862067fd92SSamuel ThibaultThe > symbol redirects the output of the echo command to a file, just
8872067fd92SSamuel Thibaultlike in DOS, or at the Windows command prompt.
8882067fd92SSamuel Thibault
8892067fd92SSamuel ThibaultAnd finally, /speakup/i18n/characters is the file entry in the sys system
8902067fd92SSamuel Thibaultwhere we want the output to be directed.  Speakup looks at the numeric
8912067fd92SSamuel Thibaultvalue of the character we want to change, and inserts the pronunciation
8922067fd92SSamuel Thibaultstring into an internal table.
8932067fd92SSamuel Thibault
8942067fd92SSamuel ThibaultYou can look at the whole table with the following command:
8952067fd92SSamuel Thibault
8962067fd92SSamuel Thibaultcat /speakup/i18n/characters
8972067fd92SSamuel Thibault
8982067fd92SSamuel ThibaultSpeakup will then print out the entire character pronunciation table.  I
8992067fd92SSamuel Thibaultwon't display it here, but leave you to look at it at your convenience.
9002067fd92SSamuel Thibault
9012067fd92SSamuel Thibault13.  Mapping Keys
9022067fd92SSamuel Thibault
9032067fd92SSamuel ThibaultSpeakup has the capability of allowing you to assign or "map" keys to
9042067fd92SSamuel Thibaultinternal Speakup commands.  This section necessarily assumes you have a
9052067fd92SSamuel ThibaultLinux kernel source tree installed, and that it has been patched and
9062067fd92SSamuel Thibaultconfigured with Speakup.  How you do this is beyond the scope of this
9072067fd92SSamuel Thibaultmanual.  For this information, visit the Speakup web site at
9082067fd92SSamuel Thibaulthttp://linux-speakup.org/.  The reason you'll need the kernel source
9092067fd92SSamuel Thibaulttree patched with Speakup is that the genmap utility you'll need for
9102067fd92SSamuel Thibaultprocessing keymaps is in the
9112067fd92SSamuel Thibault/usr/src/linux-<version_number>/drivers/char/speakup directory.  The
9122067fd92SSamuel Thibault<version_number> in the above directory path is the version number of
9132067fd92SSamuel Thibaultthe Linux source tree you are working with.
9142067fd92SSamuel Thibault
9152067fd92SSamuel ThibaultSo ok, you've gone off and gotten your kernel source tree, and patched
9162067fd92SSamuel Thibaultand configured it.  Now you can start manipulating keymaps.
9172067fd92SSamuel Thibault
9182067fd92SSamuel ThibaultYou can either use the
9192067fd92SSamuel Thibault/usr/src/linux-<version_number>/drivers/char/speakup/speakupmap.map file
9202067fd92SSamuel Thibaultincluded with the Speakup source, or you can cut and paste the copy in
9212067fd92SSamuel Thibaultsection 4 into a separate file.  If you use the one in the Speakup
9222067fd92SSamuel Thibaultsource tree, make sure you make a backup of it before you start making
9232067fd92SSamuel Thibaultchanges.  You have been warned!
9242067fd92SSamuel Thibault
9252067fd92SSamuel ThibaultSuppose that you want to swap the key assignments for the Speakup
9262067fd92SSamuel Thibaultsay_last_char and the Speakup say_first_char commands.  The
9272067fd92SSamuel Thibaultspeakupmap.map lists the key mappings for these two commands as follows:
9282067fd92SSamuel Thibault
9292067fd92SSamuel Thibaultspk key_pageup = say_first_char
9302067fd92SSamuel Thibaultspk key_pagedown = say_last_char
9312067fd92SSamuel Thibault
9322067fd92SSamuel ThibaultYou can edit your copy of the speakupmap.map file and swap the command
9332067fd92SSamuel Thibaultnames on the right side of the = (equals) sign.  You did make a backup,
9342067fd92SSamuel Thibaultright?  The new keymap lines would look like this:
9352067fd92SSamuel Thibault
9362067fd92SSamuel Thibaultspk key_pageup = say_last_char
9372067fd92SSamuel Thibaultspk key_pagedown = say_first_char
9382067fd92SSamuel Thibault
9392067fd92SSamuel ThibaultAfter you edit your copy of the speakupmap.map file, save it under a new
9402067fd92SSamuel Thibaultfile name, perhaps newmap.map.  Then exit your editor and return to the
9412067fd92SSamuel Thibaultshell prompt.
9422067fd92SSamuel Thibault
9432067fd92SSamuel ThibaultYou are now ready to load your keymap with your swapped key assignments.
9442067fd92SSamuel Thibault Assuming that you saved your new keymap as the file newmap.map, you
9452067fd92SSamuel Thibaultwould load your keymap into the sys system like this:
9462067fd92SSamuel Thibault
9472067fd92SSamuel Thibault/usr/src/linux-<version_number>/drivers/char/speakup/genmap newmap.map
9482067fd92SSamuel Thibault>/speakup/keymap
9492067fd92SSamuel Thibault
9502067fd92SSamuel ThibaultRemember to substitute your kernel version number for the
9512067fd92SSamuel Thibault<version_number> in the above command.  Also note that although the
9522067fd92SSamuel Thibaultabove command wrapped onto two lines in this document, you should type
9532067fd92SSamuel Thibaultit all on one line.
9542067fd92SSamuel Thibault
9552067fd92SSamuel ThibaultYour say first and say last characters should now be swapped.  Pressing
9562067fd92SSamuel Thibaultspeakup pagedown should read you the first non-whitespace character on
9572067fd92SSamuel Thibaultthe line your reading cursor is in, and pressing speakup pageup should
9582067fd92SSamuel Thibaultread you the last character on the line your reading cursor is in.
9592067fd92SSamuel Thibault
9602067fd92SSamuel ThibaultYou should note that these new mappings will only stay in effect until
9612067fd92SSamuel Thibaultyou reboot, or until you load another keymap.
9622067fd92SSamuel Thibault
9632067fd92SSamuel ThibaultOne final warning.  If you try to load a partial map, you will quickly
9642067fd92SSamuel Thibaultfind that all the mappings you didn't include in your file got deleted
9652067fd92SSamuel Thibaultfrom the working map.  Be extremely careful, and always make a backup!
9662067fd92SSamuel ThibaultYou have been warned!
9672067fd92SSamuel Thibault
9682067fd92SSamuel Thibault14.  Internationalizing Speakup
9692067fd92SSamuel Thibault
9702067fd92SSamuel ThibaultSpeakup indicates various conditions to the user by speaking messages.
9712067fd92SSamuel ThibaultFor instance, when you move to the left edge of the screen with the
9722067fd92SSamuel Thibaultreview keys, Speakup says, "left."
9732067fd92SSamuel ThibaultPrior to version 3.1.0 of Speakup, all of these messages were in English,
9742067fd92SSamuel Thibaultand they could not be changed.  If you used a non-English synthesizer,
9752067fd92SSamuel Thibaultyou still heard English messages, such as "left" and "cursoring on."
9762067fd92SSamuel ThibaultIn version 3.1.0 or higher, one may load translations for the various
9772067fd92SSamuel Thibaultmessages via the /sys filesystem.
9782067fd92SSamuel Thibault
9792067fd92SSamuel ThibaultThe directory /speakup/i18n contains several collections of messages.
9802067fd92SSamuel ThibaultEach group of messages is stored in its own file.
9812067fd92SSamuel ThibaultThe following section lists all of these files, along with a brief description
9822067fd92SSamuel Thibaultof each.
9832067fd92SSamuel Thibault
9842067fd92SSamuel Thibault14.1.  Files Under the i18n Subdirectory
9852067fd92SSamuel Thibault
9862067fd92SSamuel Thibault* announcements:
9872067fd92SSamuel ThibaultThis file contains various general announcements, most of which cannot
9882067fd92SSamuel Thibaultbe categorized.  You will find messages such as "You killed Speakup",
9892067fd92SSamuel Thibault"I'm alive", "leaving help", "parked", "unparked", and others.
9902067fd92SSamuel ThibaultYou will also find the names of the screen edges and cursor tracking modes
9912067fd92SSamuel Thibaulthere.
9922067fd92SSamuel Thibault
9932067fd92SSamuel Thibault* characters:
9942067fd92SSamuel ThibaultSee section 12 for a description of this file.
9952067fd92SSamuel Thibault
9962067fd92SSamuel Thibault* chartab:
9972067fd92SSamuel ThibaultSee section 12.  Unlike the rest of the files in the i18n subdirectory,
9982067fd92SSamuel Thibaultthis one does not contain messages to be spoken.
9992067fd92SSamuel Thibault
10002067fd92SSamuel Thibault* colors:
10012067fd92SSamuel ThibaultWhen you use the "say attributes" function, Speakup says the name of the
10022067fd92SSamuel Thibaultforeground and background colors.  These names come from the i18n/colors
10032067fd92SSamuel Thibaultfile.
10042067fd92SSamuel Thibault
10052067fd92SSamuel Thibault* ctl_keys:
10062067fd92SSamuel ThibaultHere, you will find names of control keys.  These are used with Speakup's
10072067fd92SSamuel Thibaultsay_control feature.
10082067fd92SSamuel Thibault
10092067fd92SSamuel Thibault* formatted:
10102067fd92SSamuel ThibaultThis group of messages contains embedded formatting codes, to specify
10112067fd92SSamuel Thibaultthe type and width of displayed data.  If you change these, you must
10122067fd92SSamuel Thibaultpreserve all of the formatting codes, and they must appear in the order
10132067fd92SSamuel Thibaultused by the default messages.
10142067fd92SSamuel Thibault
10152067fd92SSamuel Thibault* function_names:
10162067fd92SSamuel ThibaultHere, you will find a list of names for Speakup functions.  These are used
10172067fd92SSamuel Thibaultby the help system.  For example, suppose that you have activated help mode,
10182067fd92SSamuel Thibaultand you pressed keypad 3.  Speakup says:
10192067fd92SSamuel Thibault"keypad 3 is character, say next."
10202067fd92SSamuel ThibaultThe message "character, say next" names a Speakup function, and it
10212067fd92SSamuel Thibaultcomes from this function_names file.
10222067fd92SSamuel Thibault
10232067fd92SSamuel Thibault* key_names:
10242067fd92SSamuel ThibaultAgain, key_names is used by Speakup's help system.  In the previous
10252067fd92SSamuel Thibaultexample, Speakup said that you pressed "keypad 3."
10262067fd92SSamuel ThibaultThis name came from the key_names file.
10272067fd92SSamuel Thibault
10282067fd92SSamuel Thibault* states:
10292067fd92SSamuel ThibaultThis file contains names for key states.
10302067fd92SSamuel ThibaultAgain, these are part of the help system.  For instance, if you had pressed
10312067fd92SSamuel Thibaultspeakup + keypad 3, you would hear:
10322067fd92SSamuel Thibault"speakup keypad 3 is go to bottom edge."
10332067fd92SSamuel ThibaultThe speakup key is depressed, so the name of the key state is speakup.
10342067fd92SSamuel ThibaultThis part of the message comes from the states collection.
10352067fd92SSamuel Thibault
1036cae2181bSSamuel Thibault14.2.  Changing language
1037cae2181bSSamuel Thibault
1038cae2181bSSamuel Thibault14.2.1. Loading Your Own Messages
10392067fd92SSamuel Thibault
10402067fd92SSamuel ThibaultThe files under the i18n subdirectory all follow the same format.
10412067fd92SSamuel ThibaultThey consist of lines, with one message per line.
10422067fd92SSamuel ThibaultEach message is represented by a number, followed by the text of the message.
10432067fd92SSamuel ThibaultThe number is the position of the message in the given collection.
10442067fd92SSamuel ThibaultFor example, if you view the file /speakup/i18n/colors, you will see the
10452067fd92SSamuel Thibaultfollowing list:
10462067fd92SSamuel Thibault
10472067fd92SSamuel Thibault0	black
10482067fd92SSamuel Thibault1	blue
10492067fd92SSamuel Thibault2	green
10502067fd92SSamuel Thibault3	cyan
10512067fd92SSamuel Thibault4	red
10522067fd92SSamuel Thibault5	magenta
10532067fd92SSamuel Thibault6	yellow
10542067fd92SSamuel Thibault7	white
10552067fd92SSamuel Thibault8	grey
10562067fd92SSamuel Thibault
10572067fd92SSamuel ThibaultYou can change one message, or you can change a whole group.
10582067fd92SSamuel ThibaultTo load a whole collection of messages from a new source, simply use
10592067fd92SSamuel Thibaultthe cp command:
10602067fd92SSamuel Thibaultcp ~/my_colors /speakup/i18n/colors
10612067fd92SSamuel ThibaultYou can change an individual message with the echo command,
10622067fd92SSamuel Thibaultas shown in the following example.
10632067fd92SSamuel Thibault
10642067fd92SSamuel ThibaultThe Spanish name for the color blue is azul.
10652067fd92SSamuel ThibaultLooking at the colors file, we see that the name "blue" is at position 1
10662067fd92SSamuel Thibaultwithin the colors group.  Let's change blue to azul:
10672067fd92SSamuel Thibaultecho '1 azul' > /speakup/i18n/colors
10682067fd92SSamuel ThibaultThe next time that Speakup says message 1 from the colors group, it will
10692067fd92SSamuel Thibaultsay "azul", rather than "blue."
10702067fd92SSamuel Thibault
1071cae2181bSSamuel Thibault14.2.2. Choose a language
1072cae2181bSSamuel Thibault
10732067fd92SSamuel ThibaultIn the future, translations into various languages will be made available,
1074cae2181bSSamuel Thibaultand most users will just load the files necessary for their language. So far,
1075cae2181bSSamuel Thibaultonly French language is available beyond native Canadian English language.
1076cae2181bSSamuel Thibault
1077cae2181bSSamuel ThibaultFrench is only available after you are logged in.
1078cae2181bSSamuel Thibault
1079cae2181bSSamuel ThibaultCanadian English is the default language. To toggle another language,
1080cae2181bSSamuel Thibaultdownload the source of Speakup and untar it in your home directory. The
1081cae2181bSSamuel Thibaultfollowing command should let you do this:
1082cae2181bSSamuel Thibault
1083cae2181bSSamuel Thibaulttar xvjf speakup-<version>.tar.bz2
1084cae2181bSSamuel Thibault
1085cae2181bSSamuel Thibaultwhere <version> is the version number of the application.
1086cae2181bSSamuel Thibault
1087cae2181bSSamuel ThibaultNext, change to the newly created directory, then into the tools/ directory, and
1088cae2181bSSamuel Thibaultrun the script speakup_setlocale. You are asked the language that you want to
1089cae2181bSSamuel Thibaultuse. Type the number associated to your language (e.g. fr for French) then press
1090cae2181bSSamuel ThibaultEnter. Needed files are copied in the i18n directory.
1091cae2181bSSamuel Thibault
1092cae2181bSSamuel ThibaultNote: the speakupconf must be installed on your system so that settings are saved.
1093cae2181bSSamuel ThibaultOtherwise, you will have an error: your language will be loaded but you will
1094cae2181bSSamuel Thibaulthave to run the script again every time Speakup restarts.
1095cae2181bSSamuel ThibaultSee section 16.1. for information about speakupconf.
1096cae2181bSSamuel Thibault
1097cae2181bSSamuel ThibaultYou will have to repeat these steps for any change of locale, i.e. if you wish
1098cae2181bSSamuel Thibaultchange the speakup's language or charset (iso-8859-15 ou UTF-8).
1099cae2181bSSamuel Thibault
1100cae2181bSSamuel ThibaultIf you wish store the settings, note that at your next login, you will need to
1101cae2181bSSamuel Thibaultdo:
1102cae2181bSSamuel Thibault
1103cae2181bSSamuel Thibaultspeakup load
1104cae2181bSSamuel Thibault
1105cae2181bSSamuel ThibaultAlternatively, you can add the above line to your file
1106cae2181bSSamuel Thibault~/.bashrc or ~/.bash_profile.
1107cae2181bSSamuel Thibault
1108*dbeb56feSRandy DunlapIf your system administrator himself ran the script, all the users will be able
1109*dbeb56feSRandy Dunlapto change from English to the language chosen by root and do directly
1110cae2181bSSamuel Thibaultspeakupconf load (or add this to the ~/.bashrc or
1111cae2181bSSamuel Thibault~/.bash_profile file). If there are several languages to handle, the
1112cae2181bSSamuel Thibaultadministrator (or every user) will have to run the first steps until speakupconf
1113cae2181bSSamuel Thibaultsave, choosing the appropriate language, in every user's home directory. Every
1114cae2181bSSamuel Thibaultuser will then be able to do speakupconf load, Speakup will load his own settings.
11152067fd92SSamuel Thibault
11162067fd92SSamuel Thibault14.3.  No Support for Non-Western-European Languages
11172067fd92SSamuel Thibault
11182067fd92SSamuel ThibaultAs of the current release, Speakup only supports Western European languages.
11192067fd92SSamuel ThibaultSupport for the extended characters used by languages outside of the Western
11202067fd92SSamuel ThibaultEuropean family of languages is a work in progress.
11212067fd92SSamuel Thibault
11222067fd92SSamuel Thibault15.  Using Speakup's Windowing Capability
11232067fd92SSamuel Thibault
11242067fd92SSamuel ThibaultSpeakup has the capability of defining and manipulating windows on the
11252067fd92SSamuel Thibaultscreen.  Speakup uses the term "Window", to mean a user defined area of
11262067fd92SSamuel Thibaultthe screen.  The key strokes for defining and manipulating Speakup
11272067fd92SSamuel Thibaultwindows are as follows:
11282067fd92SSamuel Thibault
11292067fd92SSamuel Thibaultspeakup + f2 -- Set the bounds of the window.
11302067fd92SSamuel ThibaultSpeakup + f3 -- clear the current window definition.
11312067fd92SSamuel Thibaultspeakup + f4 -- Toggle window silence on and off.
11322067fd92SSamuel Thibaultspeakup + keypad plus -- Say the currently defined window.
11332067fd92SSamuel Thibault
11342067fd92SSamuel ThibaultThese capabilities are useful for tracking a certain part of the screen
11352067fd92SSamuel Thibaultwithout rereading the whole screen, or for silencing a part of the
11362067fd92SSamuel Thibaultscreen that is constantly changing, such as a clock or status line.
11372067fd92SSamuel Thibault
11382067fd92SSamuel ThibaultThere is no way to save these window settings, and you can only have one
11392067fd92SSamuel Thibaultwindow defined for each virtual console.  There is also no way to have
11402067fd92SSamuel Thibaultwindows automatically defined for specific applications.
11412067fd92SSamuel Thibault
11422067fd92SSamuel ThibaultIn order to define a window, use the review keys to move your reading
11432067fd92SSamuel Thibaultcursor to the beginning of the area you want to define.  Then press
11442067fd92SSamuel Thibaultspeakup + f2.  Speakup will tell you that the window starts at the
11452067fd92SSamuel Thibaultindicated row and column position.  Then move the reading cursor to the
11462067fd92SSamuel Thibaultend of the area to be defined as a window, and press speakup + f2 again.
11472067fd92SSamuel Thibault If there is more than one line in the window, Speakup will tell you
11482067fd92SSamuel Thibaultthat the window ends at the indicated row and column position.  If there
11492067fd92SSamuel Thibaultis only one line in the window, then Speakup will tell you that the
11502067fd92SSamuel Thibaultwindow is the specified line on the screen.  If you are only defining a
11512067fd92SSamuel Thibaultone line window, you can just press speakup + f2 twice after placing the
11522067fd92SSamuel Thibaultreading cursor on the line you want to define as a window.  It is not
11532067fd92SSamuel Thibaultnecessary to position the reading cursor at the end of the line in order
11542067fd92SSamuel Thibaultto define the whole line as a window.
11552067fd92SSamuel Thibault
11562067fd92SSamuel Thibault16.  Tools for Controlling Speakup
11572067fd92SSamuel Thibault
11582067fd92SSamuel ThibaultThe speakup distribution includes extra tools (in the tools directory)
11592067fd92SSamuel Thibaultwhich were written to make speakup easier to use.  This section will
11602067fd92SSamuel Thibaultbriefly describe the use of these tools.
11612067fd92SSamuel Thibault
11622067fd92SSamuel Thibault16.1.  Speakupconf
11632067fd92SSamuel Thibault
11642067fd92SSamuel Thibaultspeakupconf began life as a contribution from Steve Holmes, a member of
11652067fd92SSamuel Thibaultthe speakup community.  We would like to thank him for his work on the
11662067fd92SSamuel Thibaultearly versions of this project.
11672067fd92SSamuel Thibault
11682067fd92SSamuel ThibaultThis script may be installed as part of your linux distribution, but if
11692067fd92SSamuel Thibaultit isn't, the recommended places to put it are /usr/local/bin or
11702067fd92SSamuel Thibault/usr/bin.  This script can be run by any user, so it does not require
11712067fd92SSamuel Thibaultroot privileges.
11722067fd92SSamuel Thibault
11732067fd92SSamuel ThibaultSpeakupconf allows you to save and load your Speakup settings.  It works
11742067fd92SSamuel Thibaultby reading and writing the /sys files described above.
11752067fd92SSamuel Thibault
11762067fd92SSamuel ThibaultThe directory that speakupconf uses to store your settings depends on
11772067fd92SSamuel Thibaultwhether it is run from the root account.  If you execute speakupconf as
11782067fd92SSamuel Thibaultroot, it uses the directory /etc/speakup.  Otherwise, it uses the directory
11792067fd92SSamuel Thibault~/.speakup, where ~ is your home directory.
11802067fd92SSamuel ThibaultAnyone who needs to use Speakup from your console can load his own custom
11812067fd92SSamuel Thibaultsettings with this script.
11822067fd92SSamuel Thibault
11832067fd92SSamuel Thibaultspeakupconf takes one required argument: load or save.
11842067fd92SSamuel ThibaultUse the command
11852067fd92SSamuel Thibaultspeakupconf save
11862067fd92SSamuel Thibaultto save your Speakup settings, and
11872067fd92SSamuel Thibaultspeakupconf load
11882067fd92SSamuel Thibaultto load them into Speakup.
11892067fd92SSamuel ThibaultA second argument may be specified to use an alternate directory to
11902067fd92SSamuel Thibaultload or save the speakup parameters.
11912067fd92SSamuel Thibault
11922067fd92SSamuel Thibault16.2.  Talkwith
11932067fd92SSamuel Thibault
11942067fd92SSamuel ThibaultCharles Hallenbeck, another member of the speakup community, wrote the
11952067fd92SSamuel Thibaultinitial versions of this script, and we would also like to thank him for
11962067fd92SSamuel Thibaulthis work on it.
11972067fd92SSamuel Thibault
11982067fd92SSamuel ThibaultThis script needs root privileges to run, so if it is not installed as
11992067fd92SSamuel Thibaultpart of your linux distribution, the recommended places to install it
12002067fd92SSamuel Thibaultare /usr/local/sbin or /usr/sbin.
12012067fd92SSamuel Thibault
12022067fd92SSamuel ThibaultTalkwith allows you to switch synthesizers on the fly.  It takes a synthesizer
12032067fd92SSamuel Thibaultname as an argument.  For instance,
12042067fd92SSamuel Thibaulttalkwith dectlk
12052067fd92SSamuel Thibaultcauses Speakup to use the DecTalk Express.  If you wish to switch to a
12062067fd92SSamuel Thibaultsoftware synthesizer, you must also indicate which daemon you wish to
12072067fd92SSamuel Thibaultuse.  There are two possible choices:
12082067fd92SSamuel Thibaultspd and espeakup.  spd is an abbreviation for speechd-up.
12092067fd92SSamuel ThibaultIf you wish to use espeakup for software synthesis, give the command
12102067fd92SSamuel Thibaulttalkwith soft espeakup
12112067fd92SSamuel ThibaultTo use speechd-up, type:
12122067fd92SSamuel Thibaulttalkwith soft spd
12132067fd92SSamuel ThibaultAny arguments that follow the name of the daemon are passed to the daemon
12142067fd92SSamuel Thibaultwhen it is invoked.  For instance:
12152067fd92SSamuel Thibaulttalkwith espeakup --default-voice=fr
12162067fd92SSamuel Thibaultcauses espeakup to use the French voice.
12172067fd92SSamuel ThibaultNote that talkwith must always be executed with root privileges.
12182067fd92SSamuel Thibault
12192067fd92SSamuel ThibaultTalkwith does not attempt to load your settings after the new
12202067fd92SSamuel Thibaultsynthesizer is activated.  You can use speakupconf to load your settings
12212067fd92SSamuel Thibaultif desired.
12222067fd92SSamuel Thibault
12232067fd92SSamuel Thibault                GNU Free Documentation License
12242067fd92SSamuel Thibault                  Version 1.2, November 2002
12252067fd92SSamuel Thibault
12262067fd92SSamuel Thibault
12272067fd92SSamuel Thibault Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
12282067fd92SSamuel Thibault Everyone is permitted to copy and distribute verbatim copies
12292067fd92SSamuel Thibault of this license document, but changing it is not allowed.
12302067fd92SSamuel Thibault
12312067fd92SSamuel Thibault
12322067fd92SSamuel Thibault0. PREAMBLE
12332067fd92SSamuel Thibault
12342067fd92SSamuel ThibaultThe purpose of this License is to make a manual, textbook, or other
12352067fd92SSamuel Thibaultfunctional and useful document "free" in the sense of freedom: to
12362067fd92SSamuel Thibaultassure everyone the effective freedom to copy and redistribute it,
12372067fd92SSamuel Thibaultwith or without modifying it, either commercially or noncommercially.
12382067fd92SSamuel ThibaultSecondarily, this License preserves for the author and publisher a way
12392067fd92SSamuel Thibaultto get credit for their work, while not being considered responsible
12402067fd92SSamuel Thibaultfor modifications made by others.
12412067fd92SSamuel Thibault
12422067fd92SSamuel ThibaultThis License is a kind of "copyleft", which means that derivative
12432067fd92SSamuel Thibaultworks of the document must themselves be free in the same sense.  It
12442067fd92SSamuel Thibaultcomplements the GNU General Public License, which is a copyleft
12452067fd92SSamuel Thibaultlicense designed for free software.
12462067fd92SSamuel Thibault
12472067fd92SSamuel ThibaultWe have designed this License in order to use it for manuals for free
12482067fd92SSamuel Thibaultsoftware, because free software needs free documentation: a free
12492067fd92SSamuel Thibaultprogram should come with manuals providing the same freedoms that the
12502067fd92SSamuel Thibaultsoftware does.  But this License is not limited to software manuals;
12512067fd92SSamuel Thibaultit can be used for any textual work, regardless of subject matter or
12522067fd92SSamuel Thibaultwhether it is published as a printed book.  We recommend this License
12532067fd92SSamuel Thibaultprincipally for works whose purpose is instruction or reference.
12542067fd92SSamuel Thibault
12552067fd92SSamuel Thibault
12562067fd92SSamuel Thibault1. APPLICABILITY AND DEFINITIONS
12572067fd92SSamuel Thibault
12582067fd92SSamuel ThibaultThis License applies to any manual or other work, in any medium, that
12592067fd92SSamuel Thibaultcontains a notice placed by the copyright holder saying it can be
12602067fd92SSamuel Thibaultdistributed under the terms of this License.  Such a notice grants a
12612067fd92SSamuel Thibaultworld-wide, royalty-free license, unlimited in duration, to use that
12622067fd92SSamuel Thibaultwork under the conditions stated herein.  The "Document", below,
12632067fd92SSamuel Thibaultrefers to any such manual or work.  Any member of the public is a
12642067fd92SSamuel Thibaultlicensee, and is addressed as "you".  You accept the license if you
12652067fd92SSamuel Thibaultcopy, modify or distribute the work in a way requiring permission
12662067fd92SSamuel Thibaultunder copyright law.
12672067fd92SSamuel Thibault
12682067fd92SSamuel ThibaultA "Modified Version" of the Document means any work containing the
12692067fd92SSamuel ThibaultDocument or a portion of it, either copied verbatim, or with
12702067fd92SSamuel Thibaultmodifications and/or translated into another language.
12712067fd92SSamuel Thibault
12722067fd92SSamuel ThibaultA "Secondary Section" is a named appendix or a front-matter section of
12732067fd92SSamuel Thibaultthe Document that deals exclusively with the relationship of the
12742067fd92SSamuel Thibaultpublishers or authors of the Document to the Document's overall subject
12752067fd92SSamuel Thibault(or to related matters) and contains nothing that could fall directly
12762067fd92SSamuel Thibaultwithin that overall subject.  (Thus, if the Document is in part a
12772067fd92SSamuel Thibaulttextbook of mathematics, a Secondary Section may not explain any
12782067fd92SSamuel Thibaultmathematics.)  The relationship could be a matter of historical
12792067fd92SSamuel Thibaultconnection with the subject or with related matters, or of legal,
12802067fd92SSamuel Thibaultcommercial, philosophical, ethical or political position regarding
12812067fd92SSamuel Thibaultthem.
12822067fd92SSamuel Thibault
12832067fd92SSamuel ThibaultThe "Invariant Sections" are certain Secondary Sections whose titles
12842067fd92SSamuel Thibaultare designated, as being those of Invariant Sections, in the notice
12852067fd92SSamuel Thibaultthat says that the Document is released under this License.  If a
12862067fd92SSamuel Thibaultsection does not fit the above definition of Secondary then it is not
12872067fd92SSamuel Thibaultallowed to be designated as Invariant.  The Document may contain zero
12882067fd92SSamuel ThibaultInvariant Sections.  If the Document does not identify any Invariant
12892067fd92SSamuel ThibaultSections then there are none.
12902067fd92SSamuel Thibault
12912067fd92SSamuel ThibaultThe "Cover Texts" are certain short passages of text that are listed,
12922067fd92SSamuel Thibaultas Front-Cover Texts or Back-Cover Texts, in the notice that says that
12932067fd92SSamuel Thibaultthe Document is released under this License.  A Front-Cover Text may
12942067fd92SSamuel Thibaultbe at most 5 words, and a Back-Cover Text may be at most 25 words.
12952067fd92SSamuel Thibault
12962067fd92SSamuel ThibaultA "Transparent" copy of the Document means a machine-readable copy,
12972067fd92SSamuel Thibaultrepresented in a format whose specification is available to the
12982067fd92SSamuel Thibaultgeneral public, that is suitable for revising the document
12992067fd92SSamuel Thibaultstraightforwardly with generic text editors or (for images composed of
13002067fd92SSamuel Thibaultpixels) generic paint programs or (for drawings) some widely available
13012067fd92SSamuel Thibaultdrawing editor, and that is suitable for input to text formatters or
13022067fd92SSamuel Thibaultfor automatic translation to a variety of formats suitable for input
13032067fd92SSamuel Thibaultto text formatters.  A copy made in an otherwise Transparent file
13042067fd92SSamuel Thibaultformat whose markup, or absence of markup, has been arranged to thwart
13052067fd92SSamuel Thibaultor discourage subsequent modification by readers is not Transparent.
13062067fd92SSamuel ThibaultAn image format is not Transparent if used for any substantial amount
13072067fd92SSamuel Thibaultof text.  A copy that is not "Transparent" is called "Opaque".
13082067fd92SSamuel Thibault
13092067fd92SSamuel ThibaultExamples of suitable formats for Transparent copies include plain
13102067fd92SSamuel ThibaultASCII without markup, Texinfo input format, LaTeX input format, SGML
13112067fd92SSamuel Thibaultor XML using a publicly available DTD, and standard-conforming simple
13122067fd92SSamuel ThibaultHTML, PostScript or PDF designed for human modification.  Examples of
13132067fd92SSamuel Thibaulttransparent image formats include PNG, XCF and JPG.  Opaque formats
13142067fd92SSamuel Thibaultinclude proprietary formats that can be read and edited only by
13152067fd92SSamuel Thibaultproprietary word processors, SGML or XML for which the DTD and/or
13162067fd92SSamuel Thibaultprocessing tools are not generally available, and the
13172067fd92SSamuel Thibaultmachine-generated HTML, PostScript or PDF produced by some word
13182067fd92SSamuel Thibaultprocessors for output purposes only.
13192067fd92SSamuel Thibault
13202067fd92SSamuel ThibaultThe "Title Page" means, for a printed book, the title page itself,
13212067fd92SSamuel Thibaultplus such following pages as are needed to hold, legibly, the material
13222067fd92SSamuel Thibaultthis License requires to appear in the title page.  For works in
13232067fd92SSamuel Thibaultformats which do not have any title page as such, "Title Page" means
13242067fd92SSamuel Thibaultthe text near the most prominent appearance of the work's title,
13252067fd92SSamuel Thibaultpreceding the beginning of the body of the text.
13262067fd92SSamuel Thibault
13272067fd92SSamuel ThibaultA section "Entitled XYZ" means a named subunit of the Document whose
13282067fd92SSamuel Thibaulttitle either is precisely XYZ or contains XYZ in parentheses following
13292067fd92SSamuel Thibaulttext that translates XYZ in another language.  (Here XYZ stands for a
13302067fd92SSamuel Thibaultspecific section name mentioned below, such as "Acknowledgements",
13312067fd92SSamuel Thibault"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
13322067fd92SSamuel Thibaultof such a section when you modify the Document means that it remains a
13332067fd92SSamuel Thibaultsection "Entitled XYZ" according to this definition.
13342067fd92SSamuel Thibault
13352067fd92SSamuel ThibaultThe Document may include Warranty Disclaimers next to the notice which
13362067fd92SSamuel Thibaultstates that this License applies to the Document.  These Warranty
13372067fd92SSamuel ThibaultDisclaimers are considered to be included by reference in this
13382067fd92SSamuel ThibaultLicense, but only as regards disclaiming warranties: any other
13392067fd92SSamuel Thibaultimplication that these Warranty Disclaimers may have is void and has
13402067fd92SSamuel Thibaultno effect on the meaning of this License.
13412067fd92SSamuel Thibault
13422067fd92SSamuel Thibault
13432067fd92SSamuel Thibault2. VERBATIM COPYING
13442067fd92SSamuel Thibault
13452067fd92SSamuel ThibaultYou may copy and distribute the Document in any medium, either
13462067fd92SSamuel Thibaultcommercially or noncommercially, provided that this License, the
13472067fd92SSamuel Thibaultcopyright notices, and the license notice saying this License applies
13482067fd92SSamuel Thibaultto the Document are reproduced in all copies, and that you add no other
13492067fd92SSamuel Thibaultconditions whatsoever to those of this License.  You may not use
13502067fd92SSamuel Thibaulttechnical measures to obstruct or control the reading or further
13512067fd92SSamuel Thibaultcopying of the copies you make or distribute.  However, you may accept
13522067fd92SSamuel Thibaultcompensation in exchange for copies.  If you distribute a large enough
13532067fd92SSamuel Thibaultnumber of copies you must also follow the conditions in section 3.
13542067fd92SSamuel Thibault
13552067fd92SSamuel ThibaultYou may also lend copies, under the same conditions stated above, and
13562067fd92SSamuel Thibaultyou may publicly display copies.
13572067fd92SSamuel Thibault
13582067fd92SSamuel Thibault
13592067fd92SSamuel Thibault3. COPYING IN QUANTITY
13602067fd92SSamuel Thibault
13612067fd92SSamuel ThibaultIf you publish printed copies (or copies in media that commonly have
13622067fd92SSamuel Thibaultprinted covers) of the Document, numbering more than 100, and the
13632067fd92SSamuel ThibaultDocument's license notice requires Cover Texts, you must enclose the
13642067fd92SSamuel Thibaultcopies in covers that carry, clearly and legibly, all these Cover
13652067fd92SSamuel ThibaultTexts: Front-Cover Texts on the front cover, and Back-Cover Texts on
13662067fd92SSamuel Thibaultthe back cover.  Both covers must also clearly and legibly identify
13672067fd92SSamuel Thibaultyou as the publisher of these copies.  The front cover must present
13682067fd92SSamuel Thibaultthe full title with all words of the title equally prominent and
13692067fd92SSamuel Thibaultvisible.  You may add other material on the covers in addition.
13702067fd92SSamuel ThibaultCopying with changes limited to the covers, as long as they preserve
13712067fd92SSamuel Thibaultthe title of the Document and satisfy these conditions, can be treated
13722067fd92SSamuel Thibaultas verbatim copying in other respects.
13732067fd92SSamuel Thibault
13742067fd92SSamuel ThibaultIf the required texts for either cover are too voluminous to fit
13752067fd92SSamuel Thibaultlegibly, you should put the first ones listed (as many as fit
13762067fd92SSamuel Thibaultreasonably) on the actual cover, and continue the rest onto adjacent
13772067fd92SSamuel Thibaultpages.
13782067fd92SSamuel Thibault
13792067fd92SSamuel ThibaultIf you publish or distribute Opaque copies of the Document numbering
13802067fd92SSamuel Thibaultmore than 100, you must either include a machine-readable Transparent
13812067fd92SSamuel Thibaultcopy along with each Opaque copy, or state in or with each Opaque copy
13822067fd92SSamuel Thibaulta computer-network location from which the general network-using
13832067fd92SSamuel Thibaultpublic has access to download using public-standard network protocols
13842067fd92SSamuel Thibaulta complete Transparent copy of the Document, free of added material.
13852067fd92SSamuel ThibaultIf you use the latter option, you must take reasonably prudent steps,
13862067fd92SSamuel Thibaultwhen you begin distribution of Opaque copies in quantity, to ensure
13872067fd92SSamuel Thibaultthat this Transparent copy will remain thus accessible at the stated
13882067fd92SSamuel Thibaultlocation until at least one year after the last time you distribute an
13892067fd92SSamuel ThibaultOpaque copy (directly or through your agents or retailers) of that
13902067fd92SSamuel Thibaultedition to the public.
13912067fd92SSamuel Thibault
13922067fd92SSamuel ThibaultIt is requested, but not required, that you contact the authors of the
13932067fd92SSamuel ThibaultDocument well before redistributing any large number of copies, to give
13942067fd92SSamuel Thibaultthem a chance to provide you with an updated version of the Document.
13952067fd92SSamuel Thibault
13962067fd92SSamuel Thibault
13972067fd92SSamuel Thibault4. MODIFICATIONS
13982067fd92SSamuel Thibault
13992067fd92SSamuel ThibaultYou may copy and distribute a Modified Version of the Document under
14002067fd92SSamuel Thibaultthe conditions of sections 2 and 3 above, provided that you release
14012067fd92SSamuel Thibaultthe Modified Version under precisely this License, with the Modified
14022067fd92SSamuel ThibaultVersion filling the role of the Document, thus licensing distribution
14032067fd92SSamuel Thibaultand modification of the Modified Version to whoever possesses a copy
14042067fd92SSamuel Thibaultof it.  In addition, you must do these things in the Modified Version:
14052067fd92SSamuel Thibault
14062067fd92SSamuel ThibaultA. Use in the Title Page (and on the covers, if any) a title distinct
14072067fd92SSamuel Thibault   from that of the Document, and from those of previous versions
14082067fd92SSamuel Thibault   (which should, if there were any, be listed in the History section
14092067fd92SSamuel Thibault   of the Document).  You may use the same title as a previous version
14102067fd92SSamuel Thibault   if the original publisher of that version gives permission.
14112067fd92SSamuel ThibaultB. List on the Title Page, as authors, one or more persons or entities
14122067fd92SSamuel Thibault   responsible for authorship of the modifications in the Modified
14132067fd92SSamuel Thibault   Version, together with at least five of the principal authors of the
14142067fd92SSamuel Thibault   Document (all of its principal authors, if it has fewer than five),
14152067fd92SSamuel Thibault   unless they release you from this requirement.
14162067fd92SSamuel ThibaultC. State on the Title page the name of the publisher of the
14172067fd92SSamuel Thibault   Modified Version, as the publisher.
14182067fd92SSamuel ThibaultD. Preserve all the copyright notices of the Document.
14192067fd92SSamuel ThibaultE. Add an appropriate copyright notice for your modifications
14202067fd92SSamuel Thibault   adjacent to the other copyright notices.
14212067fd92SSamuel ThibaultF. Include, immediately after the copyright notices, a license notice
14222067fd92SSamuel Thibault   giving the public permission to use the Modified Version under the
14232067fd92SSamuel Thibault   terms of this License, in the form shown in the Addendum below.
14242067fd92SSamuel ThibaultG. Preserve in that license notice the full lists of Invariant Sections
14252067fd92SSamuel Thibault   and required Cover Texts given in the Document's license notice.
14262067fd92SSamuel ThibaultH. Include an unaltered copy of this License.
14272067fd92SSamuel ThibaultI. Preserve the section Entitled "History", Preserve its Title, and add
14282067fd92SSamuel Thibault   to it an item stating at least the title, year, new authors, and
14292067fd92SSamuel Thibault   publisher of the Modified Version as given on the Title Page.  If
14302067fd92SSamuel Thibault   there is no section Entitled "History" in the Document, create one
14312067fd92SSamuel Thibault   stating the title, year, authors, and publisher of the Document as
14322067fd92SSamuel Thibault   given on its Title Page, then add an item describing the Modified
14332067fd92SSamuel Thibault   Version as stated in the previous sentence.
14342067fd92SSamuel ThibaultJ. Preserve the network location, if any, given in the Document for
14352067fd92SSamuel Thibault   public access to a Transparent copy of the Document, and likewise
14362067fd92SSamuel Thibault   the network locations given in the Document for previous versions
14372067fd92SSamuel Thibault   it was based on.  These may be placed in the "History" section.
14382067fd92SSamuel Thibault   You may omit a network location for a work that was published at
14392067fd92SSamuel Thibault   least four years before the Document itself, or if the original
14402067fd92SSamuel Thibault   publisher of the version it refers to gives permission.
14412067fd92SSamuel ThibaultK. For any section Entitled "Acknowledgements" or "Dedications",
14422067fd92SSamuel Thibault   Preserve the Title of the section, and preserve in the section all
14432067fd92SSamuel Thibault   the substance and tone of each of the contributor acknowledgements
14442067fd92SSamuel Thibault   and/or dedications given therein.
14452067fd92SSamuel ThibaultL. Preserve all the Invariant Sections of the Document,
14462067fd92SSamuel Thibault   unaltered in their text and in their titles.  Section numbers
14472067fd92SSamuel Thibault   or the equivalent are not considered part of the section titles.
14482067fd92SSamuel ThibaultM. Delete any section Entitled "Endorsements".  Such a section
14492067fd92SSamuel Thibault   may not be included in the Modified Version.
14502067fd92SSamuel ThibaultN. Do not retitle any existing section to be Entitled "Endorsements"
14512067fd92SSamuel Thibault   or to conflict in title with any Invariant Section.
14522067fd92SSamuel ThibaultO. Preserve any Warranty Disclaimers.
14532067fd92SSamuel Thibault
14542067fd92SSamuel ThibaultIf the Modified Version includes new front-matter sections or
14552067fd92SSamuel Thibaultappendices that qualify as Secondary Sections and contain no material
14562067fd92SSamuel Thibaultcopied from the Document, you may at your option designate some or all
14572067fd92SSamuel Thibaultof these sections as invariant.  To do this, add their titles to the
14582067fd92SSamuel Thibaultlist of Invariant Sections in the Modified Version's license notice.
14592067fd92SSamuel ThibaultThese titles must be distinct from any other section titles.
14602067fd92SSamuel Thibault
14612067fd92SSamuel ThibaultYou may add a section Entitled "Endorsements", provided it contains
14622067fd92SSamuel Thibaultnothing but endorsements of your Modified Version by various
14632067fd92SSamuel Thibaultparties--for example, statements of peer review or that the text has
14642067fd92SSamuel Thibaultbeen approved by an organization as the authoritative definition of a
14652067fd92SSamuel Thibaultstandard.
14662067fd92SSamuel Thibault
14672067fd92SSamuel ThibaultYou may add a passage of up to five words as a Front-Cover Text, and a
14682067fd92SSamuel Thibaultpassage of up to 25 words as a Back-Cover Text, to the end of the list
14692067fd92SSamuel Thibaultof Cover Texts in the Modified Version.  Only one passage of
14702067fd92SSamuel ThibaultFront-Cover Text and one of Back-Cover Text may be added by (or
14712067fd92SSamuel Thibaultthrough arrangements made by) any one entity.  If the Document already
14722067fd92SSamuel Thibaultincludes a cover text for the same cover, previously added by you or
14732067fd92SSamuel Thibaultby arrangement made by the same entity you are acting on behalf of,
14742067fd92SSamuel Thibaultyou may not add another; but you may replace the old one, on explicit
14752067fd92SSamuel Thibaultpermission from the previous publisher that added the old one.
14762067fd92SSamuel Thibault
14772067fd92SSamuel ThibaultThe author(s) and publisher(s) of the Document do not by this License
14782067fd92SSamuel Thibaultgive permission to use their names for publicity for or to assert or
14792067fd92SSamuel Thibaultimply endorsement of any Modified Version.
14802067fd92SSamuel Thibault
14812067fd92SSamuel Thibault
14822067fd92SSamuel Thibault5. COMBINING DOCUMENTS
14832067fd92SSamuel Thibault
14842067fd92SSamuel ThibaultYou may combine the Document with other documents released under this
14852067fd92SSamuel ThibaultLicense, under the terms defined in section 4 above for modified
14862067fd92SSamuel Thibaultversions, provided that you include in the combination all of the
14872067fd92SSamuel ThibaultInvariant Sections of all of the original documents, unmodified, and
14882067fd92SSamuel Thibaultlist them all as Invariant Sections of your combined work in its
14892067fd92SSamuel Thibaultlicense notice, and that you preserve all their Warranty Disclaimers.
14902067fd92SSamuel Thibault
14912067fd92SSamuel ThibaultThe combined work need only contain one copy of this License, and
14922067fd92SSamuel Thibaultmultiple identical Invariant Sections may be replaced with a single
14932067fd92SSamuel Thibaultcopy.  If there are multiple Invariant Sections with the same name but
14942067fd92SSamuel Thibaultdifferent contents, make the title of each such section unique by
14952067fd92SSamuel Thibaultadding at the end of it, in parentheses, the name of the original
14962067fd92SSamuel Thibaultauthor or publisher of that section if known, or else a unique number.
14972067fd92SSamuel ThibaultMake the same adjustment to the section titles in the list of
14982067fd92SSamuel ThibaultInvariant Sections in the license notice of the combined work.
14992067fd92SSamuel Thibault
15002067fd92SSamuel ThibaultIn the combination, you must combine any sections Entitled "History"
15012067fd92SSamuel Thibaultin the various original documents, forming one section Entitled
15022067fd92SSamuel Thibault"History"; likewise combine any sections Entitled "Acknowledgements",
15032067fd92SSamuel Thibaultand any sections Entitled "Dedications".  You must delete all sections
15042067fd92SSamuel ThibaultEntitled "Endorsements".
15052067fd92SSamuel Thibault
15062067fd92SSamuel Thibault
15072067fd92SSamuel Thibault6. COLLECTIONS OF DOCUMENTS
15082067fd92SSamuel Thibault
15092067fd92SSamuel ThibaultYou may make a collection consisting of the Document and other documents
15102067fd92SSamuel Thibaultreleased under this License, and replace the individual copies of this
15112067fd92SSamuel ThibaultLicense in the various documents with a single copy that is included in
15122067fd92SSamuel Thibaultthe collection, provided that you follow the rules of this License for
15132067fd92SSamuel Thibaultverbatim copying of each of the documents in all other respects.
15142067fd92SSamuel Thibault
15152067fd92SSamuel ThibaultYou may extract a single document from such a collection, and distribute
15162067fd92SSamuel Thibaultit individually under this License, provided you insert a copy of this
15172067fd92SSamuel ThibaultLicense into the extracted document, and follow this License in all
15182067fd92SSamuel Thibaultother respects regarding verbatim copying of that document.
15192067fd92SSamuel Thibault
15202067fd92SSamuel Thibault
15212067fd92SSamuel Thibault7. AGGREGATION WITH INDEPENDENT WORKS
15222067fd92SSamuel Thibault
15232067fd92SSamuel ThibaultA compilation of the Document or its derivatives with other separate
15242067fd92SSamuel Thibaultand independent documents or works, in or on a volume of a storage or
15252067fd92SSamuel Thibaultdistribution medium, is called an "aggregate" if the copyright
15262067fd92SSamuel Thibaultresulting from the compilation is not used to limit the legal rights
15272067fd92SSamuel Thibaultof the compilation's users beyond what the individual works permit.
15282067fd92SSamuel ThibaultWhen the Document is included in an aggregate, this License does not
15292067fd92SSamuel Thibaultapply to the other works in the aggregate which are not themselves
15302067fd92SSamuel Thibaultderivative works of the Document.
15312067fd92SSamuel Thibault
15322067fd92SSamuel ThibaultIf the Cover Text requirement of section 3 is applicable to these
15332067fd92SSamuel Thibaultcopies of the Document, then if the Document is less than one half of
15342067fd92SSamuel Thibaultthe entire aggregate, the Document's Cover Texts may be placed on
15352067fd92SSamuel Thibaultcovers that bracket the Document within the aggregate, or the
15362067fd92SSamuel Thibaultelectronic equivalent of covers if the Document is in electronic form.
15372067fd92SSamuel ThibaultOtherwise they must appear on printed covers that bracket the whole
15382067fd92SSamuel Thibaultaggregate.
15392067fd92SSamuel Thibault
15402067fd92SSamuel Thibault
15412067fd92SSamuel Thibault8. TRANSLATION
15422067fd92SSamuel Thibault
15432067fd92SSamuel ThibaultTranslation is considered a kind of modification, so you may
15442067fd92SSamuel Thibaultdistribute translations of the Document under the terms of section 4.
15452067fd92SSamuel ThibaultReplacing Invariant Sections with translations requires special
15462067fd92SSamuel Thibaultpermission from their copyright holders, but you may include
15472067fd92SSamuel Thibaulttranslations of some or all Invariant Sections in addition to the
15482067fd92SSamuel Thibaultoriginal versions of these Invariant Sections.  You may include a
15492067fd92SSamuel Thibaulttranslation of this License, and all the license notices in the
15502067fd92SSamuel ThibaultDocument, and any Warranty Disclaimers, provided that you also include
15512067fd92SSamuel Thibaultthe original English version of this License and the original versions
15522067fd92SSamuel Thibaultof those notices and disclaimers.  In case of a disagreement between
15532067fd92SSamuel Thibaultthe translation and the original version of this License or a notice
15542067fd92SSamuel Thibaultor disclaimer, the original version will prevail.
15552067fd92SSamuel Thibault
15562067fd92SSamuel ThibaultIf a section in the Document is Entitled "Acknowledgements",
15572067fd92SSamuel Thibault"Dedications", or "History", the requirement (section 4) to Preserve
15582067fd92SSamuel Thibaultits Title (section 1) will typically require changing the actual
15592067fd92SSamuel Thibaulttitle.
15602067fd92SSamuel Thibault
15612067fd92SSamuel Thibault
15622067fd92SSamuel Thibault9. TERMINATION
15632067fd92SSamuel Thibault
15642067fd92SSamuel ThibaultYou may not copy, modify, sublicense, or distribute the Document except
15652067fd92SSamuel Thibaultas expressly provided for under this License.  Any other attempt to
15662067fd92SSamuel Thibaultcopy, modify, sublicense or distribute the Document is void, and will
15672067fd92SSamuel Thibaultautomatically terminate your rights under this License.  However,
15682067fd92SSamuel Thibaultparties who have received copies, or rights, from you under this
15692067fd92SSamuel ThibaultLicense will not have their licenses terminated so long as such
15702067fd92SSamuel Thibaultparties remain in full compliance.
15712067fd92SSamuel Thibault
15722067fd92SSamuel Thibault
15732067fd92SSamuel Thibault10. FUTURE REVISIONS OF THIS LICENSE
15742067fd92SSamuel Thibault
15752067fd92SSamuel ThibaultThe Free Software Foundation may publish new, revised versions
15762067fd92SSamuel Thibaultof the GNU Free Documentation License from time to time.  Such new
15772067fd92SSamuel Thibaultversions will be similar in spirit to the present version, but may
15782067fd92SSamuel Thibaultdiffer in detail to address new problems or concerns.  See
15792067fd92SSamuel Thibaulthttps://www.gnu.org/copyleft/.
15802067fd92SSamuel Thibault
15812067fd92SSamuel ThibaultEach version of the License is given a distinguishing version number.
15822067fd92SSamuel ThibaultIf the Document specifies that a particular numbered version of this
15832067fd92SSamuel ThibaultLicense "or any later version" applies to it, you have the option of
15842067fd92SSamuel Thibaultfollowing the terms and conditions either of that specified version or
15852067fd92SSamuel Thibaultof any later version that has been published (not as a draft) by the
15862067fd92SSamuel ThibaultFree Software Foundation.  If the Document does not specify a version
15872067fd92SSamuel Thibaultnumber of this License, you may choose any version ever published (not
15882067fd92SSamuel Thibaultas a draft) by the Free Software Foundation.
15892067fd92SSamuel Thibault
15902067fd92SSamuel Thibault
15912067fd92SSamuel ThibaultADDENDUM: How to use this License for your documents
15922067fd92SSamuel Thibault
15932067fd92SSamuel ThibaultTo use this License in a document you have written, include a copy of
15942067fd92SSamuel Thibaultthe License in the document and put the following copyright and
15952067fd92SSamuel Thibaultlicense notices just after the title page:
15962067fd92SSamuel Thibault
15972067fd92SSamuel Thibault    Copyright (c)  YEAR  YOUR NAME.
15982067fd92SSamuel Thibault    Permission is granted to copy, distribute and/or modify this document
15992067fd92SSamuel Thibault    under the terms of the GNU Free Documentation License, Version 1.2
16002067fd92SSamuel Thibault    or any later version published by the Free Software Foundation;
16012067fd92SSamuel Thibault    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
16022067fd92SSamuel Thibault    A copy of the license is included in the section entitled "GNU
16032067fd92SSamuel Thibault    Free Documentation License".
16042067fd92SSamuel Thibault
16052067fd92SSamuel ThibaultIf you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
16062067fd92SSamuel Thibaultreplace the "with...Texts." line with this:
16072067fd92SSamuel Thibault
16082067fd92SSamuel Thibault    with the Invariant Sections being LIST THEIR TITLES, with the
16092067fd92SSamuel Thibault    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
16102067fd92SSamuel Thibault
16112067fd92SSamuel ThibaultIf you have Invariant Sections without Cover Texts, or some other
16122067fd92SSamuel Thibaultcombination of the three, merge those two alternatives to suit the
16132067fd92SSamuel Thibaultsituation.
16142067fd92SSamuel Thibault
16152067fd92SSamuel ThibaultIf your document contains nontrivial examples of program code, we
16162067fd92SSamuel Thibaultrecommend releasing these examples in parallel under your choice of
16172067fd92SSamuel Thibaultfree software license, such as the GNU General Public License,
16182067fd92SSamuel Thibaultto permit their use in free software.
16192067fd92SSamuel Thibault
16202067fd92SSamuel ThibaultThe End.
1621