2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
The Speakup User's Guide
|
|
|
|
For Speakup 3.1.2 and Later
|
|
|
|
By Gene Collins
|
|
|
|
Updated by others
|
|
|
|
Last modified on Mon Sep 27 14:26:31 2010
|
|
|
|
Document version 1.3
|
|
|
|
|
|
|
|
Copyright (c) 2005 Gene Collins
|
|
|
|
Copyright (c) 2008 Samuel Thibault
|
|
|
|
Copyright (c) 2009, 2010 the Speakup Team
|
|
|
|
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
|
|
under the terms of the GNU Free Documentation License, Version 1.2 or
|
|
|
|
any later version published by the Free Software Foundation; with no
|
|
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
|
|
|
copy of the license is included in the section entitled "GNU Free
|
|
|
|
Documentation License".
|
|
|
|
|
|
|
|
Preface
|
|
|
|
|
|
|
|
The purpose of this document is to familiarize users with the user
|
|
|
|
interface to Speakup, a Linux Screen Reader. If you need instructions
|
|
|
|
for installing or obtaining Speakup, visit the web site at
|
|
|
|
http://linux-speakup.org/. Speakup is a set of patches to the standard
|
|
|
|
Linux kernel source tree. It can be built as a series of modules, or as
|
|
|
|
a part of a monolithic kernel. These details are beyond the scope of
|
|
|
|
this manual, but the user may need to be aware of the module
|
|
|
|
capabilities, depending on how your system administrator has installed
|
|
|
|
Speakup. If Speakup is built as a part of a monolithic kernel, and the
|
|
|
|
user is using a hardware synthesizer, then Speakup will be able to
|
|
|
|
provide speech access from the time the kernel is loaded, until the time
|
|
|
|
the system is shutdown. This means that if you have obtained Linux
|
|
|
|
installation media for a distribution which includes Speakup as a part
|
|
|
|
of its kernel, you will be able, as a blind person, to install Linux
|
|
|
|
with speech access unaided by a sighted person. Again, these details
|
|
|
|
are beyond the scope of this manual, but the user should be aware of
|
|
|
|
them. See the web site mentioned above for further details.
|
|
|
|
|
|
|
|
1. Starting Speakup
|
|
|
|
|
|
|
|
If your system administrator has installed Speakup to work with your
|
|
|
|
specific synthesizer by default, then all you need to do to use Speakup
|
|
|
|
is to boot your system, and Speakup should come up talking. This
|
|
|
|
assumes of course that your synthesizer is a supported hardware
|
|
|
|
synthesizer, and that it is either installed in or connected to your
|
|
|
|
system, and is if necessary powered on.
|
|
|
|
|
|
|
|
It is possible, however, that Speakup may have been compiled into the
|
|
|
|
kernel with no default synthesizer. It is even possible that your
|
|
|
|
kernel has been compiled with support for some of the supported
|
|
|
|
synthesizers and not others. If you find that this is the case, and
|
|
|
|
your synthesizer is supported but not available, complain to the person
|
|
|
|
who compiled and installed your kernel. Or better yet, go to the web
|
|
|
|
site, and learn how to patch Speakup into your own kernel source, and
|
|
|
|
build and install your own kernel.
|
|
|
|
|
|
|
|
If your kernel has been compiled with Speakup, and has no default
|
|
|
|
synthesizer set, or you would like to use a different synthesizer than
|
|
|
|
the default one, then you may issue the following command at the boot
|
|
|
|
prompt of your boot loader.
|
|
|
|
|
|
|
|
linux speakup.synth=ltlk
|
|
|
|
|
|
|
|
This command would tell Speakup to look for and use a LiteTalk or
|
|
|
|
DoubleTalk LT at boot up. You may replace the ltlk synthesizer keyword
|
|
|
|
with the keyword for whatever synthesizer you wish to use. The
|
|
|
|
speakup.synth parameter will accept the following keywords, provided
|
|
|
|
that support for the related synthesizers has been built into the
|
|
|
|
kernel.
|
|
|
|
|
|
|
|
acntsa -- Accent SA
|
|
|
|
acntpc -- Accent PC
|
|
|
|
apollo -- Apollo
|
|
|
|
audptr -- Audapter
|
|
|
|
bns -- Braille 'n Speak
|
|
|
|
dectlk -- DecTalk Express (old and new, db9 serial only)
|
|
|
|
decext -- DecTalk (old) External
|
|
|
|
dtlk -- DoubleTalk PC
|
|
|
|
keypc -- Keynote Gold PC
|
|
|
|
ltlk -- DoubleTalk LT, LiteTalk, or external Tripletalk (db9 serial only)
|
|
|
|
spkout -- Speak Out
|
|
|
|
txprt -- Transport
|
|
|
|
dummy -- Plain text terminal
|
|
|
|
|
|
|
|
Note: Speakup does * NOT * support usb connections! Speakup also does *
|
|
|
|
NOT * support the internal Tripletalk!
|
|
|
|
|
|
|
|
Speakup does support two other synthesizers, but because they work in
|
|
|
|
conjunction with other software, they must be loaded as modules after
|
2014-09-25 07:14:51 +08:00
|
|
|
their related software is loaded, and so are not available at boot up.
|
2010-10-08 02:20:02 +08:00
|
|
|
These are as follows:
|
|
|
|
|
|
|
|
decpc -- DecTalk PC (not available at boot up)
|
|
|
|
soft -- One of several software synthesizers (not available at boot up)
|
|
|
|
|
|
|
|
See the sections on loading modules and software synthesizers later in
|
|
|
|
this manual for further details. It should be noted here that the
|
|
|
|
speakup.synth boot parameter will have no effect if Speakup has been
|
|
|
|
compiled as modules. In order for Speakup modules to be loaded during
|
|
|
|
the boot process, such action must be configured by your system
|
|
|
|
administrator. This will mean that you will hear some, but not all, of
|
|
|
|
the bootup messages.
|
|
|
|
|
|
|
|
2. Basic operation
|
|
|
|
|
|
|
|
Once you have booted the system, and if necessary, have supplied the
|
|
|
|
proper bootup parameter for your synthesizer, Speakup will begin
|
2014-09-25 07:14:51 +08:00
|
|
|
talking as soon as the kernel is loaded. In fact, it will talk a lot!
|
2010-10-08 02:20:02 +08:00
|
|
|
It will speak all the boot up messages that the kernel prints on the
|
|
|
|
screen during the boot process. This is because Speakup is not a
|
|
|
|
separate screen reader, but is actually built into the operating
|
|
|
|
system. Since almost all console applications must print text on the
|
|
|
|
screen using the kernel, and must get their keyboard input through the
|
|
|
|
kernel, they are automatically handled properly by Speakup. There are a
|
|
|
|
few exceptions, but we'll come to those later.
|
|
|
|
|
2014-09-25 07:14:51 +08:00
|
|
|
Note: In this guide I will refer to the numeric keypad as the keypad.
|
2010-10-08 02:20:02 +08:00
|
|
|
This is done because the speakupmap.map file referred to later in this
|
|
|
|
manual uses the term keypad instead of numeric keypad. Also I'm lazy
|
|
|
|
and would rather only type one word. So keypad it is. Got it? Good.
|
|
|
|
|
|
|
|
Most of the Speakup review keys are located on the keypad at the far
|
|
|
|
right of the keyboard. The numlock key should be off, in order for these
|
|
|
|
to work. If you toggle the numlock on, the keypad will produce numbers,
|
|
|
|
which is exactly what you want for spreadsheets and such. For the
|
|
|
|
purposes of this guide, you should have the numlock turned off, which is
|
|
|
|
its default state at bootup.
|
|
|
|
|
|
|
|
You probably won't want to listen to all the bootup messages every time
|
|
|
|
you start your system, though it's a good idea to listen to them at
|
|
|
|
least once, just so you'll know what kind of information is available to
|
|
|
|
you during the boot process. You can always review these messages after
|
|
|
|
bootup with the command:
|
|
|
|
|
|
|
|
dmesg | more
|
|
|
|
|
|
|
|
In order to speed the boot process, and to silence the speaking of the
|
|
|
|
bootup messages, just press the keypad enter key. This key is located
|
|
|
|
in the bottom right corner of the keypad. Speakup will shut up and stay
|
|
|
|
that way, until you press another key.
|
|
|
|
|
|
|
|
You can check to see if the boot process has completed by pressing the 8
|
|
|
|
key on the keypad, which reads the current line. This also has the
|
|
|
|
effect of starting Speakup talking again, so you can press keypad enter
|
2014-09-25 07:14:51 +08:00
|
|
|
to silence it again if the boot process has not completed.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
When the boot process is complete, you will arrive at a "login" prompt.
|
|
|
|
At this point, you'll need to type in your user id and password, as
|
|
|
|
provided by your system administrator. You will hear Speakup speak the
|
|
|
|
letters of your user id as you type it, but not the password. This is
|
|
|
|
because the password is not displayed on the screen for security
|
|
|
|
reasons. This has nothing to do with Speakup, it's a Linux security
|
|
|
|
feature.
|
|
|
|
|
|
|
|
Once you've logged in, you can run any Linux command or program which is
|
|
|
|
allowed by your user id. Normal users will not be able to run programs
|
|
|
|
which require root privileges.
|
|
|
|
|
|
|
|
When you are running a program or command, Speakup will automatically
|
|
|
|
speak new text as it arrives on the screen. You can at any time silence
|
2014-09-25 07:14:51 +08:00
|
|
|
the speech with keypad enter, or use any of the Speakup review keys.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
Here are some basic Speakup review keys, and a short description of what
|
|
|
|
they do.
|
|
|
|
|
|
|
|
keypad 1 -- read previous character
|
|
|
|
keypad 2 -- read current character (pressing keypad 2 twice rapidly will speak
|
|
|
|
the current character phonetically)
|
|
|
|
keypad 3 -- read next character
|
|
|
|
keypad 4 -- read previous word
|
|
|
|
keypad 5 -- read current word (press twice rapidly to spell the current word)
|
|
|
|
keypad 6 -- read next word
|
|
|
|
keypad 7 -- read previous line
|
|
|
|
keypad 8 -- read current line (press twice rapidly to hear how much the
|
|
|
|
text on the current line is indented)
|
|
|
|
keypad 9 -- read next line
|
|
|
|
keypad period -- speak current cursor position and announce current
|
|
|
|
virtual console
|
|
|
|
|
|
|
|
It's also worth noting that the insert key on the keypad is mapped
|
|
|
|
as the speakup key. Instead of pressing and releasing this key, as you
|
|
|
|
do under DOS or Windows, you hold it like a shift key, and press other
|
|
|
|
keys in combination with it. For example, repeatedly holding keypad
|
|
|
|
insert, from now on called speakup, and keypad enter will toggle the
|
|
|
|
speaking of new text on the screen on and off. This is not the same as
|
|
|
|
just pressing keypad enter by itself, which just silences the speech
|
|
|
|
until you hit another key. When you hit speakup plus keypad enter,
|
|
|
|
Speakup will say, "You turned me off.", or "Hey, that's better." When
|
|
|
|
Speakup is turned off, no new text on the screen will be spoken. You
|
|
|
|
can still use the reading controls to review the screen however.
|
|
|
|
|
|
|
|
3. Using the Speakup Help System
|
|
|
|
|
|
|
|
In order to enter the Speakup help system, press and hold the speakup
|
|
|
|
key (remember that this is the keypad insert key), and press the f1 key.
|
|
|
|
You will hear the message:
|
|
|
|
|
|
|
|
"Press space to leave help, cursor up or down to scroll, or a letter to
|
|
|
|
go to commands in list."
|
|
|
|
|
|
|
|
When you press the spacebar to leave the help system, you will hear:
|
|
|
|
|
|
|
|
"Leaving help."
|
|
|
|
|
|
|
|
While you are in the Speakup help system, you can scroll up or down
|
|
|
|
through the list of available commands using the cursor keys. The list
|
|
|
|
of commands is arranged in alphabetical order. If you wish to jump to
|
|
|
|
commands in a specific part of the alphabet, you may press the letter of
|
|
|
|
the alphabet you wish to jump to.
|
|
|
|
|
|
|
|
You can also just explore by typing keyboard keys. Pressing keys will
|
|
|
|
cause Speakup to speak the command associated with that key. For
|
|
|
|
example, if you press the keypad 8 key, you will hear:
|
|
|
|
|
|
|
|
"Keypad 8 is line, say current."
|
|
|
|
|
2014-09-25 07:14:51 +08:00
|
|
|
You'll notice that some commands do not have keys assigned to them.
|
2010-10-08 02:20:02 +08:00
|
|
|
This is because they are very infrequently used commands, and are also
|
|
|
|
accessible through the sys system. We'll discuss the sys system later
|
|
|
|
in this manual.
|
|
|
|
|
2014-09-25 07:14:51 +08:00
|
|
|
You'll also notice that some commands have two keys assigned to them.
|
2010-10-08 02:20:02 +08:00
|
|
|
This is because Speakup has a built in set of alternative key bindings
|
|
|
|
for laptop users. The alternate speakup key is the caps lock key. You
|
|
|
|
can press and hold the caps lock key, while pressing an alternate
|
|
|
|
speakup command key to activate the command. On most laptops, the
|
|
|
|
numeric keypad is defined as the keys in the j k l area of the keyboard.
|
|
|
|
|
|
|
|
There is usually a function key which turns this keypad function on and
|
|
|
|
off, and some other key which controls the numlock state. Toggling the
|
|
|
|
keypad functionality on and off can become a royal pain. So, Speakup
|
|
|
|
gives you a simple way to get at an alternative set of key mappings for
|
|
|
|
your laptop. These are also available by default on desktop systems,
|
|
|
|
because Speakup does not know whether it is running on a desktop or
|
|
|
|
laptop. So you may choose which set of Speakup keys to use. Some
|
|
|
|
system administrators may have chosen to compile Speakup for a desktop
|
|
|
|
system without this set of alternate key bindings, but these details are
|
|
|
|
beyond the scope of this manual. To use the caps lock for its normal
|
|
|
|
purpose, hold the shift key while toggling the caps lock on and off. We
|
|
|
|
should note here, that holding the caps lock key and pressing the z key
|
|
|
|
will toggle the alternate j k l keypad on and off.
|
|
|
|
|
|
|
|
4. Keys and Their Assigned Commands
|
|
|
|
|
|
|
|
In this section, we'll go through a list of all the speakup keys and
|
|
|
|
commands. You can also get a list of commands and assigned keys from
|
|
|
|
the help system.
|
|
|
|
|
|
|
|
The following list was taken from the speakupmap.map file. Key
|
|
|
|
assignments are on the left of the equal sign, and the associated
|
|
|
|
Speakup commands are on the right. The designation "spk" means to press
|
|
|
|
and hold the speakup key, a.k.a. keypad insert, a.k.a. caps lock, while
|
|
|
|
pressing the other specified key.
|
|
|
|
|
|
|
|
spk key_f9 = punc_level_dec
|
|
|
|
spk key_f10 = punc_level_inc
|
|
|
|
spk key_f11 = reading_punc_dec
|
|
|
|
spk key_f12 = reading_punc_inc
|
|
|
|
spk key_1 = vol_dec
|
|
|
|
spk key_2 = vol_inc
|
|
|
|
spk key_3 = pitch_dec
|
|
|
|
spk key_4 = pitch_inc
|
|
|
|
spk key_5 = rate_dec
|
|
|
|
spk key_6 = rate_inc
|
|
|
|
key_kpasterisk = toggle_cursoring
|
|
|
|
spk key_kpasterisk = speakup_goto
|
|
|
|
spk key_f1 = speakup_help
|
|
|
|
spk key_f2 = set_win
|
|
|
|
spk key_f3 = clear_win
|
|
|
|
spk key_f4 = enable_win
|
|
|
|
spk key_f5 = edit_some
|
|
|
|
spk key_f6 = edit_most
|
|
|
|
spk key_f7 = edit_delim
|
|
|
|
spk key_f8 = edit_repeat
|
|
|
|
shift spk key_f9 = edit_exnum
|
|
|
|
key_kp7 = say_prev_line
|
|
|
|
spk key_kp7 = left_edge
|
|
|
|
key_kp8 = say_line
|
|
|
|
double key_kp8 = say_line_indent
|
|
|
|
spk key_kp8 = say_from_top
|
|
|
|
key_kp9 = say_next_line
|
|
|
|
spk key_kp9 = top_edge
|
|
|
|
key_kpminus = speakup_parked
|
|
|
|
spk key_kpminus = say_char_num
|
|
|
|
key_kp4 = say_prev_word
|
|
|
|
spk key_kp4 = say_from_left
|
|
|
|
key_kp5 = say_word
|
|
|
|
double key_kp5 = spell_word
|
|
|
|
spk key_kp5 = spell_phonetic
|
|
|
|
key_kp6 = say_next_word
|
|
|
|
spk key_kp6 = say_to_right
|
|
|
|
key_kpplus = say_screen
|
|
|
|
spk key_kpplus = say_win
|
2014-09-25 07:14:51 +08:00
|
|
|
key_kp1 = say_prev_char
|
2010-10-08 02:20:02 +08:00
|
|
|
spk key_kp1 = right_edge
|
|
|
|
key_kp2 = say_char
|
|
|
|
spk key_kp2 = say_to_bottom
|
|
|
|
double key_kp2 = say_phonetic_char
|
2014-09-25 07:14:51 +08:00
|
|
|
key_kp3 = say_next_char
|
2010-10-08 02:20:02 +08:00
|
|
|
spk key_kp3 = bottom_edge
|
|
|
|
key_kp0 = spk_key
|
|
|
|
key_kpdot = say_position
|
|
|
|
spk key_kpdot = say_attributes
|
|
|
|
key_kpenter = speakup_quiet
|
|
|
|
spk key_kpenter = speakup_off
|
|
|
|
key_sysrq = speech_kill
|
|
|
|
key_kpslash = speakup_cut
|
|
|
|
spk key_kpslash = speakup_paste
|
|
|
|
spk key_pageup = say_first_char
|
|
|
|
spk key_pagedown = say_last_char
|
|
|
|
key_capslock = spk_key
|
|
|
|
spk key_z = spk_lock
|
|
|
|
key_leftmeta = spk_key
|
|
|
|
ctrl spk key_0 = speakup_goto
|
|
|
|
spk key_u = say_prev_line
|
|
|
|
spk key_i = say_line
|
|
|
|
double spk key_i = say_line_indent
|
|
|
|
spk key_o = say_next_line
|
|
|
|
spk key_minus = speakup_parked
|
|
|
|
shift spk key_minus = say_char_num
|
|
|
|
spk key_j = say_prev_word
|
|
|
|
spk key_k = say_word
|
|
|
|
double spk key_k = spell_word
|
|
|
|
spk key_l = say_next_word
|
|
|
|
spk key_m = say_prev_char
|
|
|
|
spk key_comma = say_char
|
|
|
|
double spk key_comma = say_phonetic_char
|
|
|
|
spk key_dot = say_next_char
|
|
|
|
spk key_n = say_position
|
|
|
|
ctrl spk key_m = left_edge
|
|
|
|
ctrl spk key_y = top_edge
|
|
|
|
ctrl spk key_dot = right_edge
|
|
|
|
ctrl spk key_p = bottom_edge
|
|
|
|
spk key_apostrophe = say_screen
|
|
|
|
spk key_h = say_from_left
|
|
|
|
spk key_y = say_from_top
|
|
|
|
spk key_semicolon = say_to_right
|
|
|
|
spk key_p = say_to_bottom
|
|
|
|
spk key_slash = say_attributes
|
|
|
|
spk key_enter = speakup_quiet
|
|
|
|
ctrl spk key_enter = speakup_off
|
|
|
|
spk key_9 = speakup_cut
|
|
|
|
spk key_8 = speakup_paste
|
|
|
|
shift spk key_m = say_first_char
|
|
|
|
ctrl spk key_semicolon = say_last_char
|
2020-11-09 02:18:24 +08:00
|
|
|
spk key_r = read_all_doc
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
5. The Speakup Sys System
|
|
|
|
|
|
|
|
The Speakup screen reader also creates a speakup subdirectory as a part
|
|
|
|
of the sys system.
|
|
|
|
|
|
|
|
As a convenience, run as root
|
|
|
|
|
|
|
|
ln -s /sys/accessibility/speakup /speakup
|
|
|
|
|
2014-09-25 07:14:51 +08:00
|
|
|
to directly access speakup parameters from /speakup.
|
2010-10-08 02:20:02 +08:00
|
|
|
You can see these entries by typing the command:
|
|
|
|
|
|
|
|
ls -1 /speakup/*
|
|
|
|
|
|
|
|
If you issue the above ls command, you will get back something like
|
|
|
|
this:
|
|
|
|
|
|
|
|
/speakup/attrib_bleep
|
|
|
|
/speakup/bell_pos
|
|
|
|
/speakup/bleep_time
|
|
|
|
/speakup/bleeps
|
|
|
|
/speakup/cursor_time
|
|
|
|
/speakup/delimiters
|
|
|
|
/speakup/ex_num
|
|
|
|
/speakup/key_echo
|
|
|
|
/speakup/keymap
|
|
|
|
/speakup/no_interrupt
|
|
|
|
/speakup/punc_all
|
|
|
|
/speakup/punc_level
|
|
|
|
/speakup/punc_most
|
|
|
|
/speakup/punc_some
|
|
|
|
/speakup/reading_punc
|
|
|
|
/speakup/repeats
|
|
|
|
/speakup/say_control
|
|
|
|
/speakup/say_word_ctl
|
|
|
|
/speakup/silent
|
|
|
|
/speakup/spell_delay
|
|
|
|
/speakup/synth
|
|
|
|
/speakup/synth_direct
|
|
|
|
/speakup/version
|
|
|
|
|
|
|
|
/speakup/i18n:
|
|
|
|
announcements
|
|
|
|
characters
|
|
|
|
chartab
|
|
|
|
colors
|
|
|
|
ctl_keys
|
|
|
|
formatted
|
|
|
|
function_names
|
|
|
|
key_names
|
|
|
|
states
|
|
|
|
|
|
|
|
/speakup/soft:
|
|
|
|
caps_start
|
|
|
|
caps_stop
|
|
|
|
delay_time
|
|
|
|
direct
|
|
|
|
freq
|
|
|
|
full_time
|
|
|
|
jiffy_delta
|
|
|
|
pitch
|
2020-04-26 03:32:26 +08:00
|
|
|
inflection
|
2010-10-08 02:20:02 +08:00
|
|
|
punct
|
|
|
|
rate
|
|
|
|
tone
|
|
|
|
trigger_time
|
|
|
|
voice
|
|
|
|
vol
|
|
|
|
|
|
|
|
Notice the two subdirectories of /speakup: /speakup/i18n and
|
|
|
|
/speakup/soft.
|
|
|
|
The i18n subdirectory is described in a later section.
|
|
|
|
The files under /speakup/soft represent settings that are specific to the
|
|
|
|
driver for the software synthesizer. If you use the LiteTalk, your
|
|
|
|
synthesizer-specific settings would be found in /speakup/ltlk. In other words,
|
|
|
|
a subdirectory named /speakup/KWD is created to hold parameters specific
|
|
|
|
to the device whose keyword is KWD.
|
|
|
|
These parameters include volume, rate, pitch, and others.
|
|
|
|
|
|
|
|
In addition to using the Speakup hot keys to change such things as
|
|
|
|
volume, pitch, and rate, you can also echo values to the appropriate
|
|
|
|
entry in the /speakup directory. This is very useful, since it
|
|
|
|
lets you control Speakup parameters from within a script. How you
|
|
|
|
would write such scripts is somewhat beyond the scope of this manual,
|
|
|
|
but I will include a couple of simple examples here to give you a
|
|
|
|
general idea of what such scripts can do.
|
|
|
|
|
|
|
|
Suppose for example, that you wanted to control both the punctuation
|
|
|
|
level and the reading punctuation level at the same time. For
|
|
|
|
simplicity, we'll call them punc0, punc1, punc2, and punc3. The scripts
|
|
|
|
might look something like this:
|
|
|
|
|
|
|
|
#!/bin/bash
|
|
|
|
# punc0
|
|
|
|
# set punc and reading punc levels to 0
|
|
|
|
echo 0 >/speakup/punc_level
|
|
|
|
echo 0 >/speakup/reading_punc
|
|
|
|
echo Punctuation level set to 0.
|
|
|
|
|
|
|
|
#!/bin/bash
|
|
|
|
# punc1
|
|
|
|
# set punc and reading punc levels to 1
|
|
|
|
echo 1 >/speakup/punc_level
|
|
|
|
echo 1 >/speakup/reading_punc
|
|
|
|
echo Punctuation level set to 1.
|
|
|
|
|
|
|
|
#!/bin/bash
|
|
|
|
# punc2
|
|
|
|
# set punc and reading punc levels to 2
|
|
|
|
echo 2 >/speakup/punc_level
|
|
|
|
echo 2 >/speakup/reading_punc
|
|
|
|
echo Punctuation level set to 2.
|
|
|
|
|
|
|
|
#!/bin/bash
|
|
|
|
# punc3
|
|
|
|
# set punc and reading punc levels to 3
|
|
|
|
echo 3 >/speakup/punc_level
|
|
|
|
echo 3 >/speakup/reading_punc
|
|
|
|
echo Punctuation level set to 3.
|
|
|
|
|
|
|
|
If you were to store these four small scripts in a directory in your
|
|
|
|
path, perhaps /usr/local/bin, and set the permissions to 755 with the
|
|
|
|
chmod command, then you could change the default reading punc and
|
|
|
|
punctuation levels at the same time by issuing just one command. For
|
|
|
|
example, if you were to execute the punc3 command at your shell prompt,
|
|
|
|
then the reading punc and punc level would both get set to 3.
|
|
|
|
|
|
|
|
I should note that the above scripts were written to work with bash, but
|
|
|
|
regardless of which shell you use, you should be able to do something
|
|
|
|
similar.
|
|
|
|
|
|
|
|
The Speakup sys system also has another interesting use. You can echo
|
|
|
|
Speakup parameters into the sys system in a script during system
|
|
|
|
startup, and speakup will return to your preferred parameters every time
|
|
|
|
the system is rebooted.
|
|
|
|
|
|
|
|
Most of the Speakup sys parameters can be manipulated by a regular user
|
|
|
|
on the system. However, there are a few parameters that are dangerous
|
|
|
|
enough that they should only be manipulated by the root user on your
|
|
|
|
system. There are even some parameters that are read only, and cannot
|
|
|
|
be written to at all. For example, the version entry in the Speakup
|
|
|
|
sys system is read only. This is because there is no reason for a user
|
|
|
|
to tamper with the version number which is reported by Speakup. Doing
|
|
|
|
an ls -l on /speakup/version will return this:
|
|
|
|
|
|
|
|
-r--r--r-- 1 root root 0 Mar 21 13:46 /speakup/version
|
|
|
|
|
|
|
|
As you can see, the version entry in the Speakup sys system is read
|
|
|
|
only, is owned by root, and belongs to the root group. Doing a cat of
|
|
|
|
/speakup/version will display the Speakup version number, like
|
|
|
|
this:
|
|
|
|
|
|
|
|
cat /speakup/version
|
2014-09-25 07:14:51 +08:00
|
|
|
Speakup v-2.00 CVS: Thu Oct 21 10:38:21 EDT 2004
|
2010-10-08 02:20:02 +08:00
|
|
|
synth dtlk version 1.1
|
|
|
|
|
|
|
|
The display shows the Speakup version number, along with the version
|
|
|
|
number of the driver for the current synthesizer.
|
|
|
|
|
|
|
|
Looking at entries in the Speakup sys system can be useful in many
|
|
|
|
ways. For example, you might wish to know what level your volume is set
|
|
|
|
at. You could type:
|
|
|
|
|
|
|
|
cat /speakup/KWD/vol
|
|
|
|
# Replace KWD with the keyword for your synthesizer, E.G., ltlk for LiteTalk.
|
|
|
|
5
|
|
|
|
|
|
|
|
The number five which comes back is the level at which the synthesizer
|
|
|
|
volume is set at.
|
|
|
|
|
|
|
|
All the entries in the Speakup sys system are readable, some are
|
|
|
|
writable by root only, and some are writable by everyone. Unless you
|
|
|
|
know what you are doing, you should probably leave the ones that are
|
2014-09-25 07:14:51 +08:00
|
|
|
writable by root only alone. Most of the names are self explanatory.
|
2020-04-26 03:32:26 +08:00
|
|
|
Vol for controlling volume, pitch for pitch, inflection for pitch range, rate
|
|
|
|
for controlling speaking rate, etc. If you find one you aren't sure about, you
|
|
|
|
can post a query on the Speakup list.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
6. Changing Synthesizers
|
|
|
|
|
|
|
|
It is possible to change to a different synthesizer while speakup is
|
|
|
|
running. In other words, it is not necessary to reboot the system
|
|
|
|
in order to use a different synthesizer. You can simply echo the
|
2014-09-25 07:14:51 +08:00
|
|
|
synthesizer keyword to the /speakup/synth sys entry.
|
2010-10-08 02:20:02 +08:00
|
|
|
Depending on your situation, you may wish to echo none to the synth
|
|
|
|
sys entry, to disable speech while one synthesizer is disconnected and
|
|
|
|
a second one is connected in its place. Then echo the keyword for the
|
|
|
|
new synthesizer into the synth sys entry in order to start speech
|
|
|
|
with the newly connected synthesizer. See the list of synthesizer
|
|
|
|
keywords in section 1 to find the keyword which matches your synth.
|
|
|
|
|
|
|
|
7. Loading modules
|
|
|
|
|
|
|
|
As mentioned earlier, Speakup can either be completely compiled into the
|
|
|
|
kernel, with the exception of the help module, or it can be compiled as
|
|
|
|
a series of modules. When compiled as modules, Speakup will only be
|
|
|
|
able to speak some of the bootup messages if your system administrator
|
|
|
|
has configured the system to load the modules at boo time. The modules
|
|
|
|
can be loaded after the file systems have been checked and mounted, or
|
|
|
|
from an initrd. There is a third possibility. Speakup can be compiled
|
|
|
|
with some components built into the kernel, and others as modules. As
|
|
|
|
we'll see in the next section, this is particularly useful when you are
|
|
|
|
working with software synthesizers.
|
|
|
|
|
|
|
|
If Speakup is completely compiled as modules, then you must use the
|
|
|
|
modprobe command to load Speakup. You do this by loading the module for
|
|
|
|
the synthesizer driver you wish to use. The driver modules are all
|
|
|
|
named speakup_<keyword>, where <keyword> is the keyword for the
|
|
|
|
synthesizer you want. So, in order to load the driver for the DecTalk
|
|
|
|
Express, you would type the following command:
|
|
|
|
|
|
|
|
modprobe speakup_dectlk
|
|
|
|
|
|
|
|
Issuing this command would load the DecTalk Express driver and all other
|
|
|
|
related Speakup modules necessary to get Speakup up and running.
|
|
|
|
|
|
|
|
To completely unload Speakup, again presuming that it is entirely built
|
|
|
|
as modules, you would give the command:
|
|
|
|
|
|
|
|
modprobe -r speakup_dectlk
|
|
|
|
|
|
|
|
The above command assumes you were running a DecTalk Express. If you
|
|
|
|
were using a different synth, then you would substitute its keyword in
|
|
|
|
place of dectlk.
|
|
|
|
|
|
|
|
If you have multiple drivers loaded, you need to unload all of them, in
|
|
|
|
order to completely unload Speakup.
|
|
|
|
For example, if you have loaded both the dectlk and ltlk drivers, use the
|
|
|
|
command:
|
|
|
|
modprobe -r speakup_dectlk speakup_ltlk
|
|
|
|
|
|
|
|
You cannot unload the driver for software synthesizers when a user-space
|
|
|
|
daemon is using /dev/softsynth. First, kill the daemon. Next, remove
|
|
|
|
the driver with the command:
|
|
|
|
modprobe -r speakup_soft
|
|
|
|
|
|
|
|
Now, suppose we have a situation where the main Speakup component
|
|
|
|
is built into the kernel, and some or all of the drivers are built as
|
|
|
|
modules. Since the main part of Speakup is compiled into the kernel, a
|
|
|
|
partial Speakup sys system has been created which we can take advantage
|
|
|
|
of by simply echoing the synthesizer keyword into the
|
|
|
|
/speakup/synth sys entry. This will cause the kernel to
|
|
|
|
automatically load the appropriate driver module, and start Speakup
|
|
|
|
talking. To switch to another synth, just echo a new keyword to the
|
|
|
|
synth sys entry. For example, to load the DoubleTalk LT driver,
|
|
|
|
you would type:
|
|
|
|
|
|
|
|
echo ltlk >/speakup/synth
|
|
|
|
|
|
|
|
You can use the modprobe -r command to unload driver modules, regardless
|
|
|
|
of whether the main part of Speakup has been built into the kernel or
|
|
|
|
not.
|
|
|
|
|
|
|
|
8. Using Software Synthesizers
|
|
|
|
|
|
|
|
Using a software synthesizer requires that some other software be
|
|
|
|
installed and running on your system. For this reason, software
|
|
|
|
synthesizers are not available for use at bootup, or during a system
|
|
|
|
installation process.
|
|
|
|
There are two freely-available solutions for software speech: Espeakup and
|
|
|
|
Speech Dispatcher.
|
|
|
|
These are described in subsections 8.1 and 8.2, respectively.
|
|
|
|
|
|
|
|
During the rest of this section, we assume that speakup_soft is either
|
|
|
|
built in to your kernel, or loaded as a module.
|
|
|
|
|
|
|
|
If your system does not have udev installed , before you can use a
|
|
|
|
software synthesizer, you must have created the /dev/softsynth device.
|
|
|
|
If you have not already done so, issue the following commands as root:
|
|
|
|
|
|
|
|
cd /dev
|
|
|
|
mknod softsynth c 10 26
|
|
|
|
|
|
|
|
While we are at it, we might just as well create the /dev/synth device,
|
|
|
|
which can be used to let user space programs send information to your
|
|
|
|
synthesizer. To create /dev/synth, change to the /dev directory, and
|
|
|
|
issue the following command as root:
|
|
|
|
|
|
|
|
mknod synth c 10 25
|
|
|
|
|
|
|
|
of both.
|
|
|
|
|
|
|
|
8.1. Espeakup
|
|
|
|
|
|
|
|
Espeakup is a connector between Speakup and the eSpeak software synthesizer.
|
|
|
|
Espeakup may already be available as a package for your distribution
|
|
|
|
of Linux. If it is not packaged, you need to install it manually.
|
|
|
|
You can find it in the contrib/ subdirectory of the Speakup sources.
|
2014-09-25 07:14:51 +08:00
|
|
|
The filename is espeakup-$VERSION.tar.bz2, where $VERSION
|
2010-10-08 02:20:02 +08:00
|
|
|
depends on the current release of Espeakup. The Speakup 3.1.2 source
|
|
|
|
ships with version 0.71 of Espeakup.
|
|
|
|
The README file included with the Espeakup sources describes the process
|
|
|
|
of manual installation.
|
|
|
|
|
|
|
|
Assuming that Espeakup is installed, either by the user or by the distributor,
|
|
|
|
follow these steps to use it.
|
|
|
|
|
|
|
|
Tell Speakup to use the "soft driver:
|
|
|
|
echo soft > /speakup/synth
|
|
|
|
|
|
|
|
Finally, start the espeakup program. There are two ways to do it.
|
|
|
|
Both require root privileges.
|
|
|
|
|
|
|
|
If Espeakup was installed as a package for your Linux distribution,
|
|
|
|
you probably have a distribution-specific script that controls the operation
|
|
|
|
of the daemon. Look for a file named espeakup under /etc/init.d or
|
|
|
|
/etc/rc.d. Execute the following command with root privileges:
|
|
|
|
/etc/init.d/espeakup start
|
|
|
|
Replace init.d with rc.d, if your distribution uses scripts located under
|
|
|
|
/etc/rc.d.
|
|
|
|
Your distribution will also have a procedure for starting daemons at
|
|
|
|
boot-time, so it is possible to have software speech as soon as user-space
|
|
|
|
daemons are started by the bootup scripts.
|
|
|
|
These procedures are not described in this document.
|
|
|
|
|
|
|
|
If you built Espeakup manually, the "make install" step placed the binary
|
2014-09-25 07:14:51 +08:00
|
|
|
under /usr/bin.
|
2010-10-08 02:20:02 +08:00
|
|
|
Run the following command as root:
|
|
|
|
/usr/bin/espeakup
|
|
|
|
Espeakup should start speaking.
|
|
|
|
|
|
|
|
8.2. Speech Dispatcher
|
|
|
|
|
|
|
|
For this option, you must have a package called
|
|
|
|
Speech Dispatcher running on your system, and it must be configured to
|
|
|
|
work with one of its supported software synthesizers.
|
|
|
|
|
|
|
|
Two open source synthesizers you might use are Flite and Festival. You
|
|
|
|
might also choose to purchase the Software DecTalk from Fonix Sales Inc.
|
|
|
|
If you run a google search for Fonix, you'll find their web site.
|
|
|
|
|
|
|
|
You can obtain a copy of Speech Dispatcher from free(b)soft at
|
|
|
|
http://www.freebsoft.org/. Follow the installation instructions that
|
|
|
|
come with Speech Dispatcher in order to install and configure Speech
|
|
|
|
Dispatcher. You can check out the web site for your Linux distribution
|
|
|
|
in order to get a copy of either Flite or Festival. Your Linux
|
|
|
|
distribution may also have a precompiled Speech Dispatcher package.
|
|
|
|
|
|
|
|
Once you've installed, configured, and tested Speech Dispatcher with your
|
|
|
|
chosen software synthesizer, you still need one more piece of software
|
2014-09-25 07:14:51 +08:00
|
|
|
in order to make things work. You need a package called speechd-up.
|
2010-10-08 02:20:02 +08:00
|
|
|
You get it from the free(b)soft web site mentioned above. After you've
|
|
|
|
compiled and installed speechd-up, you are almost ready to begin using
|
|
|
|
your software synthesizer.
|
|
|
|
|
|
|
|
Now you can begin using your software synthesizer. In order to do so,
|
|
|
|
echo the soft keyword to the synth sys entry like this:
|
|
|
|
|
|
|
|
echo soft >/speakup/synth
|
|
|
|
|
|
|
|
Next run the speechd_up command like this:
|
|
|
|
|
|
|
|
speechd_up &
|
|
|
|
|
|
|
|
Your synth should now start talking, and you should be able to adjust
|
|
|
|
the pitch, rate, etc.
|
|
|
|
|
|
|
|
9. Using The DecTalk PC Card
|
|
|
|
|
|
|
|
The DecTalk PC card is an ISA card that is inserted into one of the ISA
|
|
|
|
slots in your computer. It requires that the DecTalk PC software be
|
|
|
|
installed on your computer, and that the software be loaded onto the
|
|
|
|
Dectalk PC card before it can be used.
|
|
|
|
|
|
|
|
You can get the dec_pc.tgz file from the linux-speakup.org site. The
|
|
|
|
dec_pc.tgz file is in the ~ftp/pub/linux/speakup directory.
|
|
|
|
|
|
|
|
After you have downloaded the dec_pc.tgz file, untar it in your home
|
|
|
|
directory, and read the Readme file in the newly created dec_pc
|
|
|
|
directory.
|
|
|
|
|
|
|
|
The easiest way to get the software working is to copy the entire dec_pc
|
|
|
|
directory into /user/local/lib. To do this, su to root in your home
|
|
|
|
directory, and issue the command:
|
|
|
|
|
|
|
|
cp dec_pc /usr/local/lib
|
|
|
|
|
|
|
|
You will need to copy the dtload command from the dec_pc directory to a
|
|
|
|
directory in your path. Either /usr/bin or /usr/local/bin is a good
|
|
|
|
choice.
|
|
|
|
|
|
|
|
You can now run the dtload command in order to load the DecTalk PC
|
|
|
|
software onto the card. After you have done this, echo the decpc
|
|
|
|
keyword to the synth entry in the sys system like this:
|
|
|
|
|
|
|
|
echo decpc >/speakup/synth
|
|
|
|
|
|
|
|
Your DecTalk PC should start talking, and then you can adjust the pitch,
|
|
|
|
rate, volume, voice, etc. The voice entry in the Speakup sys system
|
|
|
|
will accept a number from 0 through 7 for the DecTalk PC synthesizer,
|
|
|
|
which will give you access to some of the DecTalk voices.
|
|
|
|
|
|
|
|
10. Using Cursor Tracking
|
|
|
|
|
|
|
|
In Speakup version 2.0 and later, cursor tracking is turned on by
|
|
|
|
default. This means that when you are using an editor, Speakup will
|
|
|
|
automatically speak characters as you move left and right with the
|
|
|
|
cursor keys, and lines as you move up and down with the cursor keys.
|
|
|
|
This is the traditional sort of cursor tracking.
|
|
|
|
Recent versions of Speakup provide two additional ways to control the
|
|
|
|
text that is spoken when the cursor is moved:
|
|
|
|
"highlight tracking" and "read window."
|
|
|
|
They are described later in this section.
|
|
|
|
Sometimes, these modes get in your way, so you can disable cursor tracking
|
|
|
|
altogether.
|
|
|
|
|
|
|
|
You may select among the various forms of cursor tracking using the keypad
|
|
|
|
asterisk key.
|
|
|
|
Each time you press this key, a new mode is selected, and Speakup speaks
|
|
|
|
the name of the new mode. The names for the four possible states of cursor
|
|
|
|
tracking are: "cursoring on", "highlight tracking", "read window",
|
|
|
|
and "cursoring off." The keypad asterisk key moves through the list of
|
|
|
|
modes in a circular fashion.
|
|
|
|
|
|
|
|
If highlight tracking is enabled, Speakup tracks highlighted text,
|
|
|
|
rather than the cursor itself. When you move the cursor with the arrow keys,
|
|
|
|
Speakup speaks the currently highlighted information.
|
|
|
|
This is useful when moving through various menus and dialog boxes.
|
|
|
|
If cursor tracking isn't helping you while navigating a menu,
|
|
|
|
try highlight tracking.
|
|
|
|
|
|
|
|
With the "read window" variety of cursor tracking, you can limit the text
|
|
|
|
that Speakup speaks by specifying a window of interest on the screen.
|
|
|
|
See section 15 for a description of the process of defining windows.
|
|
|
|
When you move the cursor via the arrow keys, Speakup only speaks
|
|
|
|
the contents of the window. This is especially helpful when you are hearing
|
|
|
|
superfluous speech. Consider the following example.
|
|
|
|
|
|
|
|
Suppose that you are at a shell prompt. You use bash, and you want to
|
|
|
|
explore your command history using the up and down arrow keys. If you
|
|
|
|
have enabled cursor tracking, you will hear two pieces of information.
|
|
|
|
Speakup speaks both your shell prompt and the current entry from the
|
|
|
|
command history. You may not want to hear the prompt repeated
|
|
|
|
each time you move, so you can silence it by specifying a window. Find
|
|
|
|
the last line of text on the screen. Clear the current window by pressing
|
|
|
|
the key combination speakup f3. Use the review cursor to find the first
|
|
|
|
character that follows your shell prompt. Press speakup + f2 twice, to
|
|
|
|
define a one-line window. The boundaries of the window are the
|
|
|
|
character following the shell prompt and the end of the line. Now, cycle
|
|
|
|
through the cursor tracking modes using keypad asterisk, until Speakup
|
|
|
|
says "read window." Move through your history using your arrow keys.
|
|
|
|
You will notice that Speakup no longer speaks the redundant prompt.
|
|
|
|
|
|
|
|
Some folks like to turn cursor tracking off while they are using the
|
|
|
|
lynx web browser. You definitely want to turn cursor tracking off when
|
|
|
|
you are using the alsamixer application. Otherwise, you won't be able
|
|
|
|
to hear your mixer settings while you are using the arrow keys.
|
|
|
|
|
|
|
|
11. Cut and Paste
|
|
|
|
|
|
|
|
One of Speakup's more useful features is the ability to cut and paste
|
|
|
|
text on the screen. This means that you can capture information from a
|
|
|
|
program, and paste that captured text into a different place in the
|
|
|
|
program, or into an entirely different program, which may even be
|
|
|
|
running on a different console.
|
|
|
|
|
|
|
|
For example, in this manual, we have made references to several web
|
|
|
|
sites. It would be nice if you could cut and paste these urls into your
|
|
|
|
web browser. Speakup does this quite nicely. Suppose you wanted to
|
|
|
|
past the following url into your browser:
|
|
|
|
|
|
|
|
http://linux-speakup.org/
|
|
|
|
|
|
|
|
Use the speakup review keys to position the reading cursor on the first
|
|
|
|
character of the above url. When the reading cursor is in position,
|
|
|
|
press the keypad slash key once. Speakup will say, "mark". Next,
|
|
|
|
position the reading cursor on the rightmost character of the above
|
|
|
|
url. Press the keypad slash key once again to actually cut the text
|
|
|
|
from the screen. Speakup will say, "cut". Although we call this
|
2014-09-25 07:14:51 +08:00
|
|
|
cutting, Speakup does not actually delete the cut text from the screen.
|
2010-10-08 02:20:02 +08:00
|
|
|
It makes a copy of the text in a special buffer for later pasting.
|
|
|
|
|
|
|
|
Now that you have the url cut from the screen, you can paste it into
|
|
|
|
your browser, or even paste the url on a command line as an argument to
|
|
|
|
your browser.
|
|
|
|
|
|
|
|
Suppose you want to start lynx and go to the Speakup site.
|
|
|
|
|
|
|
|
You can switch to a different console with the alt left and right
|
|
|
|
arrows, or you can switch to a specific console by typing alt and a
|
|
|
|
function key. These are not Speakup commands, just standard Linux
|
|
|
|
console capabilities.
|
|
|
|
|
|
|
|
Once you've changed to an appropriate console, and are at a shell prompt,
|
|
|
|
type the word lynx, followed by a space. Now press and hold the speakup
|
|
|
|
key, while you type the keypad slash character. The url will be pasted
|
|
|
|
onto the command line, just as though you had typed it in. Press the
|
|
|
|
enter key to execute the command.
|
|
|
|
|
|
|
|
The paste buffer will continue to hold the cut information, until a new
|
|
|
|
mark and cut operation is carried out. This means you can paste the cut
|
|
|
|
information as many times as you like before doing another cut
|
|
|
|
operation.
|
|
|
|
|
|
|
|
You are not limited to cutting and pasting only one line on the screen.
|
|
|
|
You can also cut and paste rectangular regions of the screen. Just
|
|
|
|
position the reading cursor at the top left corner of the text to be
|
|
|
|
cut, mark it with the keypad slash key, then position the reading cursor
|
|
|
|
at the bottom right corner of the region to be cut, and cut it with the
|
|
|
|
keypad slash key.
|
|
|
|
|
|
|
|
12. Changing the Pronunciation of Characters
|
|
|
|
|
|
|
|
Through the /speakup/i18n/characters sys entry, Speakup gives you the
|
|
|
|
ability to change how Speakup pronounces a given character. You could,
|
|
|
|
for example, change how some punctuation characters are spoken. You can
|
|
|
|
even change how Speakup will pronounce certain letters.
|
|
|
|
|
|
|
|
You may, for example, wish to change how Speakup pronounces the z
|
|
|
|
character. The author of Speakup, Kirk Reiser, is Canadian, and thus
|
|
|
|
believes that the z should be pronounced zed. If you are an American,
|
|
|
|
you might wish to use the zee pronunciation instead of zed. You can
|
|
|
|
change the pronunciation of both the upper and lower case z with the
|
|
|
|
following two commands:
|
|
|
|
|
|
|
|
echo 90 zee >/speakup/characters
|
|
|
|
echo 122 zee >/speakup/characters
|
|
|
|
|
|
|
|
Let's examine the parts of the two previous commands. They are issued
|
|
|
|
at the shell prompt, and could be placed in a startup script.
|
|
|
|
|
|
|
|
The word echo tells the shell that you want to have it display the
|
|
|
|
string of characters that follow the word echo. If you were to just
|
|
|
|
type:
|
|
|
|
|
|
|
|
echo hello.
|
|
|
|
|
|
|
|
You would get the word hello printed on your screen as soon as you
|
|
|
|
pressed the enter key. In this case, we are echoing strings that we
|
|
|
|
want to be redirected into the sys system.
|
|
|
|
|
|
|
|
The numbers 90 and 122 in the above echo commands are the ascii numeric
|
|
|
|
values for the upper and lower case z, the characters we wish to change.
|
|
|
|
|
|
|
|
The string zee is the pronunciation that we want Speakup to use for the
|
|
|
|
upper and lower case z.
|
|
|
|
|
|
|
|
The > symbol redirects the output of the echo command to a file, just
|
|
|
|
like in DOS, or at the Windows command prompt.
|
|
|
|
|
|
|
|
And finally, /speakup/i18n/characters is the file entry in the sys system
|
|
|
|
where we want the output to be directed. Speakup looks at the numeric
|
|
|
|
value of the character we want to change, and inserts the pronunciation
|
|
|
|
string into an internal table.
|
|
|
|
|
|
|
|
You can look at the whole table with the following command:
|
|
|
|
|
|
|
|
cat /speakup/i18n/characters
|
|
|
|
|
|
|
|
Speakup will then print out the entire character pronunciation table. I
|
|
|
|
won't display it here, but leave you to look at it at your convenience.
|
|
|
|
|
|
|
|
13. Mapping Keys
|
|
|
|
|
|
|
|
Speakup has the capability of allowing you to assign or "map" keys to
|
|
|
|
internal Speakup commands. This section necessarily assumes you have a
|
|
|
|
Linux kernel source tree installed, and that it has been patched and
|
|
|
|
configured with Speakup. How you do this is beyond the scope of this
|
|
|
|
manual. For this information, visit the Speakup web site at
|
|
|
|
http://linux-speakup.org/. The reason you'll need the kernel source
|
|
|
|
tree patched with Speakup is that the genmap utility you'll need for
|
|
|
|
processing keymaps is in the
|
|
|
|
/usr/src/linux-<version_number>/drivers/char/speakup directory. The
|
|
|
|
<version_number> in the above directory path is the version number of
|
|
|
|
the Linux source tree you are working with.
|
|
|
|
|
|
|
|
So ok, you've gone off and gotten your kernel source tree, and patched
|
|
|
|
and configured it. Now you can start manipulating keymaps.
|
|
|
|
|
|
|
|
You can either use the
|
|
|
|
/usr/src/linux-<version_number>/drivers/char/speakup/speakupmap.map file
|
|
|
|
included with the Speakup source, or you can cut and paste the copy in
|
|
|
|
section 4 into a separate file. If you use the one in the Speakup
|
|
|
|
source tree, make sure you make a backup of it before you start making
|
|
|
|
changes. You have been warned!
|
|
|
|
|
|
|
|
Suppose that you want to swap the key assignments for the Speakup
|
|
|
|
say_last_char and the Speakup say_first_char commands. The
|
|
|
|
speakupmap.map lists the key mappings for these two commands as follows:
|
|
|
|
|
|
|
|
spk key_pageup = say_first_char
|
|
|
|
spk key_pagedown = say_last_char
|
|
|
|
|
|
|
|
You can edit your copy of the speakupmap.map file and swap the command
|
|
|
|
names on the right side of the = (equals) sign. You did make a backup,
|
|
|
|
right? The new keymap lines would look like this:
|
|
|
|
|
|
|
|
spk key_pageup = say_last_char
|
|
|
|
spk key_pagedown = say_first_char
|
|
|
|
|
|
|
|
After you edit your copy of the speakupmap.map file, save it under a new
|
|
|
|
file name, perhaps newmap.map. Then exit your editor and return to the
|
|
|
|
shell prompt.
|
|
|
|
|
|
|
|
You are now ready to load your keymap with your swapped key assignments.
|
|
|
|
Assuming that you saved your new keymap as the file newmap.map, you
|
|
|
|
would load your keymap into the sys system like this:
|
|
|
|
|
|
|
|
/usr/src/linux-<version_number>/drivers/char/speakup/genmap newmap.map
|
|
|
|
>/speakup/keymap
|
|
|
|
|
|
|
|
Remember to substitute your kernel version number for the
|
|
|
|
<version_number> in the above command. Also note that although the
|
|
|
|
above command wrapped onto two lines in this document, you should type
|
|
|
|
it all on one line.
|
|
|
|
|
|
|
|
Your say first and say last characters should now be swapped. Pressing
|
|
|
|
speakup pagedown should read you the first non-whitespace character on
|
|
|
|
the line your reading cursor is in, and pressing speakup pageup should
|
|
|
|
read you the last character on the line your reading cursor is in.
|
|
|
|
|
|
|
|
You should note that these new mappings will only stay in effect until
|
|
|
|
you reboot, or until you load another keymap.
|
|
|
|
|
|
|
|
One final warning. If you try to load a partial map, you will quickly
|
|
|
|
find that all the mappings you didn't include in your file got deleted
|
2014-09-25 07:14:51 +08:00
|
|
|
from the working map. Be extremely careful, and always make a backup!
|
2010-10-08 02:20:02 +08:00
|
|
|
You have been warned!
|
|
|
|
|
|
|
|
14. Internationalizing Speakup
|
|
|
|
|
|
|
|
Speakup indicates various conditions to the user by speaking messages.
|
|
|
|
For instance, when you move to the left edge of the screen with the
|
|
|
|
review keys, Speakup says, "left."
|
|
|
|
Prior to version 3.1.0 of Speakup, all of these messages were in English,
|
|
|
|
and they could not be changed. If you used a non-English synthesizer,
|
|
|
|
you still heard English messages, such as "left" and "cursoring on."
|
|
|
|
In version 3.1.0 or higher, one may load translations for the various
|
|
|
|
messages via the /sys filesystem.
|
|
|
|
|
|
|
|
The directory /speakup/i18n contains several collections of messages.
|
|
|
|
Each group of messages is stored in its own file.
|
|
|
|
The following section lists all of these files, along with a brief description
|
|
|
|
of each.
|
|
|
|
|
|
|
|
14.1. Files Under the i18n Subdirectory
|
|
|
|
|
|
|
|
* announcements:
|
|
|
|
This file contains various general announcements, most of which cannot
|
|
|
|
be categorized. You will find messages such as "You killed Speakup",
|
|
|
|
"I'm alive", "leaving help", "parked", "unparked", and others.
|
|
|
|
You will also find the names of the screen edges and cursor tracking modes
|
|
|
|
here.
|
|
|
|
|
|
|
|
* characters:
|
|
|
|
See section 12 for a description of this file.
|
|
|
|
|
|
|
|
* chartab:
|
|
|
|
See section 12. Unlike the rest of the files in the i18n subdirectory,
|
|
|
|
this one does not contain messages to be spoken.
|
|
|
|
|
|
|
|
* colors:
|
|
|
|
When you use the "say attributes" function, Speakup says the name of the
|
|
|
|
foreground and background colors. These names come from the i18n/colors
|
|
|
|
file.
|
|
|
|
|
|
|
|
* ctl_keys:
|
|
|
|
Here, you will find names of control keys. These are used with Speakup's
|
|
|
|
say_control feature.
|
|
|
|
|
|
|
|
* formatted:
|
|
|
|
This group of messages contains embedded formatting codes, to specify
|
|
|
|
the type and width of displayed data. If you change these, you must
|
|
|
|
preserve all of the formatting codes, and they must appear in the order
|
|
|
|
used by the default messages.
|
|
|
|
|
|
|
|
* function_names:
|
|
|
|
Here, you will find a list of names for Speakup functions. These are used
|
|
|
|
by the help system. For example, suppose that you have activated help mode,
|
|
|
|
and you pressed keypad 3. Speakup says:
|
|
|
|
"keypad 3 is character, say next."
|
|
|
|
The message "character, say next" names a Speakup function, and it
|
|
|
|
comes from this function_names file.
|
|
|
|
|
|
|
|
* key_names:
|
|
|
|
Again, key_names is used by Speakup's help system. In the previous
|
|
|
|
example, Speakup said that you pressed "keypad 3."
|
|
|
|
This name came from the key_names file.
|
|
|
|
|
|
|
|
* states:
|
|
|
|
This file contains names for key states.
|
|
|
|
Again, these are part of the help system. For instance, if you had pressed
|
|
|
|
speakup + keypad 3, you would hear:
|
|
|
|
"speakup keypad 3 is go to bottom edge."
|
|
|
|
The speakup key is depressed, so the name of the key state is speakup.
|
|
|
|
This part of the message comes from the states collection.
|
|
|
|
|
2021-01-27 06:21:47 +08:00
|
|
|
14.2. Changing language
|
|
|
|
|
|
|
|
14.2.1. Loading Your Own Messages
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
The files under the i18n subdirectory all follow the same format.
|
|
|
|
They consist of lines, with one message per line.
|
|
|
|
Each message is represented by a number, followed by the text of the message.
|
|
|
|
The number is the position of the message in the given collection.
|
|
|
|
For example, if you view the file /speakup/i18n/colors, you will see the
|
|
|
|
following list:
|
|
|
|
|
|
|
|
0 black
|
|
|
|
1 blue
|
|
|
|
2 green
|
|
|
|
3 cyan
|
|
|
|
4 red
|
|
|
|
5 magenta
|
|
|
|
6 yellow
|
|
|
|
7 white
|
|
|
|
8 grey
|
|
|
|
|
|
|
|
You can change one message, or you can change a whole group.
|
|
|
|
To load a whole collection of messages from a new source, simply use
|
|
|
|
the cp command:
|
|
|
|
cp ~/my_colors /speakup/i18n/colors
|
|
|
|
You can change an individual message with the echo command,
|
|
|
|
as shown in the following example.
|
|
|
|
|
|
|
|
The Spanish name for the color blue is azul.
|
|
|
|
Looking at the colors file, we see that the name "blue" is at position 1
|
|
|
|
within the colors group. Let's change blue to azul:
|
|
|
|
echo '1 azul' > /speakup/i18n/colors
|
|
|
|
The next time that Speakup says message 1 from the colors group, it will
|
|
|
|
say "azul", rather than "blue."
|
|
|
|
|
2021-01-27 06:21:47 +08:00
|
|
|
14.2.2. Choose a language
|
|
|
|
|
2010-10-08 02:20:02 +08:00
|
|
|
In the future, translations into various languages will be made available,
|
2021-01-27 06:21:47 +08:00
|
|
|
and most users will just load the files necessary for their language. So far,
|
|
|
|
only French language is available beyond native Canadian English language.
|
|
|
|
|
|
|
|
French is only available after you are logged in.
|
|
|
|
|
|
|
|
Canadian English is the default language. To toggle another language,
|
|
|
|
download the source of Speakup and untar it in your home directory. The
|
|
|
|
following command should let you do this:
|
|
|
|
|
|
|
|
tar xvjf speakup-<version>.tar.bz2
|
|
|
|
|
|
|
|
where <version> is the version number of the application.
|
|
|
|
|
|
|
|
Next, change to the newly created directory, then into the tools/ directory, and
|
|
|
|
run the script speakup_setlocale. You are asked the language that you want to
|
|
|
|
use. Type the number associated to your language (e.g. fr for French) then press
|
|
|
|
Enter. Needed files are copied in the i18n directory.
|
|
|
|
|
|
|
|
Note: the speakupconf must be installed on your system so that settings are saved.
|
|
|
|
Otherwise, you will have an error: your language will be loaded but you will
|
|
|
|
have to run the script again every time Speakup restarts.
|
|
|
|
See section 16.1. for information about speakupconf.
|
|
|
|
|
|
|
|
You will have to repeat these steps for any change of locale, i.e. if you wish
|
|
|
|
change the speakup's language or charset (iso-8859-15 ou UTF-8).
|
|
|
|
|
|
|
|
If you wish store the settings, note that at your next login, you will need to
|
|
|
|
do:
|
|
|
|
|
|
|
|
speakup load
|
|
|
|
|
|
|
|
Alternatively, you can add the above line to your file
|
|
|
|
~/.bashrc or ~/.bash_profile.
|
|
|
|
|
|
|
|
If your system administrator ran himself the script, all the users will be able
|
|
|
|
to change from English to the language choosed by root and do directly
|
|
|
|
speakupconf load (or add this to the ~/.bashrc or
|
|
|
|
~/.bash_profile file). If there are several languages to handle, the
|
|
|
|
administrator (or every user) will have to run the first steps until speakupconf
|
|
|
|
save, choosing the appropriate language, in every user's home directory. Every
|
|
|
|
user will then be able to do speakupconf load, Speakup will load his own settings.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
14.3. No Support for Non-Western-European Languages
|
|
|
|
|
|
|
|
As of the current release, Speakup only supports Western European languages.
|
|
|
|
Support for the extended characters used by languages outside of the Western
|
|
|
|
European family of languages is a work in progress.
|
|
|
|
|
|
|
|
15. Using Speakup's Windowing Capability
|
|
|
|
|
|
|
|
Speakup has the capability of defining and manipulating windows on the
|
|
|
|
screen. Speakup uses the term "Window", to mean a user defined area of
|
|
|
|
the screen. The key strokes for defining and manipulating Speakup
|
|
|
|
windows are as follows:
|
|
|
|
|
|
|
|
speakup + f2 -- Set the bounds of the window.
|
|
|
|
Speakup + f3 -- clear the current window definition.
|
|
|
|
speakup + f4 -- Toggle window silence on and off.
|
|
|
|
speakup + keypad plus -- Say the currently defined window.
|
|
|
|
|
|
|
|
These capabilities are useful for tracking a certain part of the screen
|
|
|
|
without rereading the whole screen, or for silencing a part of the
|
|
|
|
screen that is constantly changing, such as a clock or status line.
|
|
|
|
|
|
|
|
There is no way to save these window settings, and you can only have one
|
|
|
|
window defined for each virtual console. There is also no way to have
|
2011-03-31 09:57:33 +08:00
|
|
|
windows automatically defined for specific applications.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
In order to define a window, use the review keys to move your reading
|
|
|
|
cursor to the beginning of the area you want to define. Then press
|
|
|
|
speakup + f2. Speakup will tell you that the window starts at the
|
|
|
|
indicated row and column position. Then move the reading cursor to the
|
|
|
|
end of the area to be defined as a window, and press speakup + f2 again.
|
|
|
|
If there is more than one line in the window, Speakup will tell you
|
|
|
|
that the window ends at the indicated row and column position. If there
|
|
|
|
is only one line in the window, then Speakup will tell you that the
|
|
|
|
window is the specified line on the screen. If you are only defining a
|
|
|
|
one line window, you can just press speakup + f2 twice after placing the
|
|
|
|
reading cursor on the line you want to define as a window. It is not
|
|
|
|
necessary to position the reading cursor at the end of the line in order
|
|
|
|
to define the whole line as a window.
|
|
|
|
|
|
|
|
16. Tools for Controlling Speakup
|
|
|
|
|
|
|
|
The speakup distribution includes extra tools (in the tools directory)
|
|
|
|
which were written to make speakup easier to use. This section will
|
|
|
|
briefly describe the use of these tools.
|
|
|
|
|
|
|
|
16.1. Speakupconf
|
|
|
|
|
|
|
|
speakupconf began life as a contribution from Steve Holmes, a member of
|
|
|
|
the speakup community. We would like to thank him for his work on the
|
|
|
|
early versions of this project.
|
|
|
|
|
|
|
|
This script may be installed as part of your linux distribution, but if
|
|
|
|
it isn't, the recommended places to put it are /usr/local/bin or
|
|
|
|
/usr/bin. This script can be run by any user, so it does not require
|
|
|
|
root privileges.
|
|
|
|
|
|
|
|
Speakupconf allows you to save and load your Speakup settings. It works
|
|
|
|
by reading and writing the /sys files described above.
|
|
|
|
|
|
|
|
The directory that speakupconf uses to store your settings depends on
|
|
|
|
whether it is run from the root account. If you execute speakupconf as
|
|
|
|
root, it uses the directory /etc/speakup. Otherwise, it uses the directory
|
|
|
|
~/.speakup, where ~ is your home directory.
|
|
|
|
Anyone who needs to use Speakup from your console can load his own custom
|
|
|
|
settings with this script.
|
|
|
|
|
|
|
|
speakupconf takes one required argument: load or save.
|
|
|
|
Use the command
|
|
|
|
speakupconf save
|
|
|
|
to save your Speakup settings, and
|
|
|
|
speakupconf load
|
|
|
|
to load them into Speakup.
|
|
|
|
A second argument may be specified to use an alternate directory to
|
|
|
|
load or save the speakup parameters.
|
|
|
|
|
|
|
|
16.2. Talkwith
|
|
|
|
|
|
|
|
Charles Hallenbeck, another member of the speakup community, wrote the
|
|
|
|
initial versions of this script, and we would also like to thank him for
|
|
|
|
his work on it.
|
|
|
|
|
|
|
|
This script needs root privileges to run, so if it is not installed as
|
|
|
|
part of your linux distribution, the recommended places to install it
|
|
|
|
are /usr/local/sbin or /usr/sbin.
|
|
|
|
|
|
|
|
Talkwith allows you to switch synthesizers on the fly. It takes a synthesizer
|
|
|
|
name as an argument. For instance,
|
|
|
|
talkwith dectlk
|
|
|
|
causes Speakup to use the DecTalk Express. If you wish to switch to a
|
|
|
|
software synthesizer, you must also indicate which daemon you wish to
|
|
|
|
use. There are two possible choices:
|
|
|
|
spd and espeakup. spd is an abbreviation for speechd-up.
|
|
|
|
If you wish to use espeakup for software synthesis, give the command
|
|
|
|
talkwith soft espeakup
|
|
|
|
To use speechd-up, type:
|
|
|
|
talkwith soft spd
|
|
|
|
Any arguments that follow the name of the daemon are passed to the daemon
|
|
|
|
when it is invoked. For instance:
|
|
|
|
talkwith espeakup --default-voice=fr
|
|
|
|
causes espeakup to use the French voice.
|
|
|
|
Note that talkwith must always be executed with root privileges.
|
|
|
|
|
|
|
|
Talkwith does not attempt to load your settings after the new
|
|
|
|
synthesizer is activated. You can use speakupconf to load your settings
|
|
|
|
if desired.
|
|
|
|
|
|
|
|
GNU Free Documentation License
|
|
|
|
Version 1.2, November 2002
|
|
|
|
|
|
|
|
|
|
|
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
|
|
of this license document, but changing it is not allowed.
|
|
|
|
|
|
|
|
|
|
|
|
0. PREAMBLE
|
|
|
|
|
|
|
|
The purpose of this License is to make a manual, textbook, or other
|
|
|
|
functional and useful document "free" in the sense of freedom: to
|
|
|
|
assure everyone the effective freedom to copy and redistribute it,
|
|
|
|
with or without modifying it, either commercially or noncommercially.
|
|
|
|
Secondarily, this License preserves for the author and publisher a way
|
|
|
|
to get credit for their work, while not being considered responsible
|
|
|
|
for modifications made by others.
|
|
|
|
|
|
|
|
This License is a kind of "copyleft", which means that derivative
|
|
|
|
works of the document must themselves be free in the same sense. It
|
|
|
|
complements the GNU General Public License, which is a copyleft
|
|
|
|
license designed for free software.
|
|
|
|
|
|
|
|
We have designed this License in order to use it for manuals for free
|
|
|
|
software, because free software needs free documentation: a free
|
|
|
|
program should come with manuals providing the same freedoms that the
|
|
|
|
software does. But this License is not limited to software manuals;
|
|
|
|
it can be used for any textual work, regardless of subject matter or
|
|
|
|
whether it is published as a printed book. We recommend this License
|
|
|
|
principally for works whose purpose is instruction or reference.
|
|
|
|
|
|
|
|
|
|
|
|
1. APPLICABILITY AND DEFINITIONS
|
|
|
|
|
|
|
|
This License applies to any manual or other work, in any medium, that
|
|
|
|
contains a notice placed by the copyright holder saying it can be
|
|
|
|
distributed under the terms of this License. Such a notice grants a
|
|
|
|
world-wide, royalty-free license, unlimited in duration, to use that
|
|
|
|
work under the conditions stated herein. The "Document", below,
|
|
|
|
refers to any such manual or work. Any member of the public is a
|
|
|
|
licensee, and is addressed as "you". You accept the license if you
|
|
|
|
copy, modify or distribute the work in a way requiring permission
|
|
|
|
under copyright law.
|
|
|
|
|
|
|
|
A "Modified Version" of the Document means any work containing the
|
|
|
|
Document or a portion of it, either copied verbatim, or with
|
|
|
|
modifications and/or translated into another language.
|
|
|
|
|
|
|
|
A "Secondary Section" is a named appendix or a front-matter section of
|
|
|
|
the Document that deals exclusively with the relationship of the
|
|
|
|
publishers or authors of the Document to the Document's overall subject
|
|
|
|
(or to related matters) and contains nothing that could fall directly
|
|
|
|
within that overall subject. (Thus, if the Document is in part a
|
|
|
|
textbook of mathematics, a Secondary Section may not explain any
|
|
|
|
mathematics.) The relationship could be a matter of historical
|
|
|
|
connection with the subject or with related matters, or of legal,
|
|
|
|
commercial, philosophical, ethical or political position regarding
|
|
|
|
them.
|
|
|
|
|
|
|
|
The "Invariant Sections" are certain Secondary Sections whose titles
|
|
|
|
are designated, as being those of Invariant Sections, in the notice
|
|
|
|
that says that the Document is released under this License. If a
|
|
|
|
section does not fit the above definition of Secondary then it is not
|
|
|
|
allowed to be designated as Invariant. The Document may contain zero
|
|
|
|
Invariant Sections. If the Document does not identify any Invariant
|
|
|
|
Sections then there are none.
|
|
|
|
|
|
|
|
The "Cover Texts" are certain short passages of text that are listed,
|
|
|
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
|
|
the Document is released under this License. A Front-Cover Text may
|
|
|
|
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
|
|
|
|
|
|
|
A "Transparent" copy of the Document means a machine-readable copy,
|
|
|
|
represented in a format whose specification is available to the
|
|
|
|
general public, that is suitable for revising the document
|
|
|
|
straightforwardly with generic text editors or (for images composed of
|
|
|
|
pixels) generic paint programs or (for drawings) some widely available
|
|
|
|
drawing editor, and that is suitable for input to text formatters or
|
|
|
|
for automatic translation to a variety of formats suitable for input
|
|
|
|
to text formatters. A copy made in an otherwise Transparent file
|
|
|
|
format whose markup, or absence of markup, has been arranged to thwart
|
|
|
|
or discourage subsequent modification by readers is not Transparent.
|
|
|
|
An image format is not Transparent if used for any substantial amount
|
|
|
|
of text. A copy that is not "Transparent" is called "Opaque".
|
|
|
|
|
|
|
|
Examples of suitable formats for Transparent copies include plain
|
|
|
|
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
|
|
|
or XML using a publicly available DTD, and standard-conforming simple
|
|
|
|
HTML, PostScript or PDF designed for human modification. Examples of
|
|
|
|
transparent image formats include PNG, XCF and JPG. Opaque formats
|
|
|
|
include proprietary formats that can be read and edited only by
|
|
|
|
proprietary word processors, SGML or XML for which the DTD and/or
|
|
|
|
processing tools are not generally available, and the
|
|
|
|
machine-generated HTML, PostScript or PDF produced by some word
|
|
|
|
processors for output purposes only.
|
|
|
|
|
|
|
|
The "Title Page" means, for a printed book, the title page itself,
|
|
|
|
plus such following pages as are needed to hold, legibly, the material
|
|
|
|
this License requires to appear in the title page. For works in
|
|
|
|
formats which do not have any title page as such, "Title Page" means
|
|
|
|
the text near the most prominent appearance of the work's title,
|
|
|
|
preceding the beginning of the body of the text.
|
|
|
|
|
|
|
|
A section "Entitled XYZ" means a named subunit of the Document whose
|
|
|
|
title either is precisely XYZ or contains XYZ in parentheses following
|
|
|
|
text that translates XYZ in another language. (Here XYZ stands for a
|
|
|
|
specific section name mentioned below, such as "Acknowledgements",
|
|
|
|
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
|
|
|
of such a section when you modify the Document means that it remains a
|
|
|
|
section "Entitled XYZ" according to this definition.
|
|
|
|
|
|
|
|
The Document may include Warranty Disclaimers next to the notice which
|
|
|
|
states that this License applies to the Document. These Warranty
|
|
|
|
Disclaimers are considered to be included by reference in this
|
|
|
|
License, but only as regards disclaiming warranties: any other
|
|
|
|
implication that these Warranty Disclaimers may have is void and has
|
|
|
|
no effect on the meaning of this License.
|
|
|
|
|
|
|
|
|
|
|
|
2. VERBATIM COPYING
|
|
|
|
|
|
|
|
You may copy and distribute the Document in any medium, either
|
|
|
|
commercially or noncommercially, provided that this License, the
|
|
|
|
copyright notices, and the license notice saying this License applies
|
|
|
|
to the Document are reproduced in all copies, and that you add no other
|
|
|
|
conditions whatsoever to those of this License. You may not use
|
|
|
|
technical measures to obstruct or control the reading or further
|
|
|
|
copying of the copies you make or distribute. However, you may accept
|
|
|
|
compensation in exchange for copies. If you distribute a large enough
|
|
|
|
number of copies you must also follow the conditions in section 3.
|
|
|
|
|
|
|
|
You may also lend copies, under the same conditions stated above, and
|
|
|
|
you may publicly display copies.
|
|
|
|
|
|
|
|
|
|
|
|
3. COPYING IN QUANTITY
|
|
|
|
|
|
|
|
If you publish printed copies (or copies in media that commonly have
|
|
|
|
printed covers) of the Document, numbering more than 100, and the
|
|
|
|
Document's license notice requires Cover Texts, you must enclose the
|
|
|
|
copies in covers that carry, clearly and legibly, all these Cover
|
|
|
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
|
|
|
the back cover. Both covers must also clearly and legibly identify
|
|
|
|
you as the publisher of these copies. The front cover must present
|
|
|
|
the full title with all words of the title equally prominent and
|
|
|
|
visible. You may add other material on the covers in addition.
|
|
|
|
Copying with changes limited to the covers, as long as they preserve
|
|
|
|
the title of the Document and satisfy these conditions, can be treated
|
|
|
|
as verbatim copying in other respects.
|
|
|
|
|
|
|
|
If the required texts for either cover are too voluminous to fit
|
|
|
|
legibly, you should put the first ones listed (as many as fit
|
|
|
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
|
|
|
pages.
|
|
|
|
|
|
|
|
If you publish or distribute Opaque copies of the Document numbering
|
|
|
|
more than 100, you must either include a machine-readable Transparent
|
|
|
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
|
|
|
a computer-network location from which the general network-using
|
|
|
|
public has access to download using public-standard network protocols
|
|
|
|
a complete Transparent copy of the Document, free of added material.
|
|
|
|
If you use the latter option, you must take reasonably prudent steps,
|
|
|
|
when you begin distribution of Opaque copies in quantity, to ensure
|
|
|
|
that this Transparent copy will remain thus accessible at the stated
|
|
|
|
location until at least one year after the last time you distribute an
|
|
|
|
Opaque copy (directly or through your agents or retailers) of that
|
|
|
|
edition to the public.
|
|
|
|
|
|
|
|
It is requested, but not required, that you contact the authors of the
|
|
|
|
Document well before redistributing any large number of copies, to give
|
|
|
|
them a chance to provide you with an updated version of the Document.
|
|
|
|
|
|
|
|
|
|
|
|
4. MODIFICATIONS
|
|
|
|
|
|
|
|
You may copy and distribute a Modified Version of the Document under
|
|
|
|
the conditions of sections 2 and 3 above, provided that you release
|
|
|
|
the Modified Version under precisely this License, with the Modified
|
|
|
|
Version filling the role of the Document, thus licensing distribution
|
|
|
|
and modification of the Modified Version to whoever possesses a copy
|
|
|
|
of it. In addition, you must do these things in the Modified Version:
|
|
|
|
|
|
|
|
A. Use in the Title Page (and on the covers, if any) a title distinct
|
|
|
|
from that of the Document, and from those of previous versions
|
|
|
|
(which should, if there were any, be listed in the History section
|
|
|
|
of the Document). You may use the same title as a previous version
|
|
|
|
if the original publisher of that version gives permission.
|
|
|
|
B. List on the Title Page, as authors, one or more persons or entities
|
|
|
|
responsible for authorship of the modifications in the Modified
|
|
|
|
Version, together with at least five of the principal authors of the
|
|
|
|
Document (all of its principal authors, if it has fewer than five),
|
|
|
|
unless they release you from this requirement.
|
|
|
|
C. State on the Title page the name of the publisher of the
|
|
|
|
Modified Version, as the publisher.
|
|
|
|
D. Preserve all the copyright notices of the Document.
|
|
|
|
E. Add an appropriate copyright notice for your modifications
|
|
|
|
adjacent to the other copyright notices.
|
|
|
|
F. Include, immediately after the copyright notices, a license notice
|
|
|
|
giving the public permission to use the Modified Version under the
|
|
|
|
terms of this License, in the form shown in the Addendum below.
|
|
|
|
G. Preserve in that license notice the full lists of Invariant Sections
|
|
|
|
and required Cover Texts given in the Document's license notice.
|
|
|
|
H. Include an unaltered copy of this License.
|
|
|
|
I. Preserve the section Entitled "History", Preserve its Title, and add
|
|
|
|
to it an item stating at least the title, year, new authors, and
|
|
|
|
publisher of the Modified Version as given on the Title Page. If
|
|
|
|
there is no section Entitled "History" in the Document, create one
|
|
|
|
stating the title, year, authors, and publisher of the Document as
|
|
|
|
given on its Title Page, then add an item describing the Modified
|
|
|
|
Version as stated in the previous sentence.
|
|
|
|
J. Preserve the network location, if any, given in the Document for
|
|
|
|
public access to a Transparent copy of the Document, and likewise
|
|
|
|
the network locations given in the Document for previous versions
|
|
|
|
it was based on. These may be placed in the "History" section.
|
|
|
|
You may omit a network location for a work that was published at
|
|
|
|
least four years before the Document itself, or if the original
|
|
|
|
publisher of the version it refers to gives permission.
|
|
|
|
K. For any section Entitled "Acknowledgements" or "Dedications",
|
|
|
|
Preserve the Title of the section, and preserve in the section all
|
|
|
|
the substance and tone of each of the contributor acknowledgements
|
|
|
|
and/or dedications given therein.
|
|
|
|
L. Preserve all the Invariant Sections of the Document,
|
|
|
|
unaltered in their text and in their titles. Section numbers
|
|
|
|
or the equivalent are not considered part of the section titles.
|
|
|
|
M. Delete any section Entitled "Endorsements". Such a section
|
|
|
|
may not be included in the Modified Version.
|
|
|
|
N. Do not retitle any existing section to be Entitled "Endorsements"
|
|
|
|
or to conflict in title with any Invariant Section.
|
|
|
|
O. Preserve any Warranty Disclaimers.
|
|
|
|
|
|
|
|
If the Modified Version includes new front-matter sections or
|
|
|
|
appendices that qualify as Secondary Sections and contain no material
|
|
|
|
copied from the Document, you may at your option designate some or all
|
|
|
|
of these sections as invariant. To do this, add their titles to the
|
|
|
|
list of Invariant Sections in the Modified Version's license notice.
|
|
|
|
These titles must be distinct from any other section titles.
|
|
|
|
|
|
|
|
You may add a section Entitled "Endorsements", provided it contains
|
|
|
|
nothing but endorsements of your Modified Version by various
|
|
|
|
parties--for example, statements of peer review or that the text has
|
|
|
|
been approved by an organization as the authoritative definition of a
|
|
|
|
standard.
|
|
|
|
|
|
|
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
|
|
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
|
|
of Cover Texts in the Modified Version. Only one passage of
|
|
|
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
|
|
through arrangements made by) any one entity. If the Document already
|
|
|
|
includes a cover text for the same cover, previously added by you or
|
|
|
|
by arrangement made by the same entity you are acting on behalf of,
|
|
|
|
you may not add another; but you may replace the old one, on explicit
|
|
|
|
permission from the previous publisher that added the old one.
|
|
|
|
|
|
|
|
The author(s) and publisher(s) of the Document do not by this License
|
|
|
|
give permission to use their names for publicity for or to assert or
|
|
|
|
imply endorsement of any Modified Version.
|
|
|
|
|
|
|
|
|
|
|
|
5. COMBINING DOCUMENTS
|
|
|
|
|
|
|
|
You may combine the Document with other documents released under this
|
|
|
|
License, under the terms defined in section 4 above for modified
|
|
|
|
versions, provided that you include in the combination all of the
|
|
|
|
Invariant Sections of all of the original documents, unmodified, and
|
|
|
|
list them all as Invariant Sections of your combined work in its
|
|
|
|
license notice, and that you preserve all their Warranty Disclaimers.
|
|
|
|
|
|
|
|
The combined work need only contain one copy of this License, and
|
|
|
|
multiple identical Invariant Sections may be replaced with a single
|
|
|
|
copy. If there are multiple Invariant Sections with the same name but
|
|
|
|
different contents, make the title of each such section unique by
|
|
|
|
adding at the end of it, in parentheses, the name of the original
|
|
|
|
author or publisher of that section if known, or else a unique number.
|
|
|
|
Make the same adjustment to the section titles in the list of
|
|
|
|
Invariant Sections in the license notice of the combined work.
|
|
|
|
|
|
|
|
In the combination, you must combine any sections Entitled "History"
|
|
|
|
in the various original documents, forming one section Entitled
|
|
|
|
"History"; likewise combine any sections Entitled "Acknowledgements",
|
|
|
|
and any sections Entitled "Dedications". You must delete all sections
|
|
|
|
Entitled "Endorsements".
|
|
|
|
|
|
|
|
|
|
|
|
6. COLLECTIONS OF DOCUMENTS
|
|
|
|
|
|
|
|
You may make a collection consisting of the Document and other documents
|
|
|
|
released under this License, and replace the individual copies of this
|
|
|
|
License in the various documents with a single copy that is included in
|
|
|
|
the collection, provided that you follow the rules of this License for
|
|
|
|
verbatim copying of each of the documents in all other respects.
|
|
|
|
|
|
|
|
You may extract a single document from such a collection, and distribute
|
|
|
|
it individually under this License, provided you insert a copy of this
|
|
|
|
License into the extracted document, and follow this License in all
|
|
|
|
other respects regarding verbatim copying of that document.
|
|
|
|
|
|
|
|
|
|
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
|
|
|
|
A compilation of the Document or its derivatives with other separate
|
|
|
|
and independent documents or works, in or on a volume of a storage or
|
|
|
|
distribution medium, is called an "aggregate" if the copyright
|
|
|
|
resulting from the compilation is not used to limit the legal rights
|
|
|
|
of the compilation's users beyond what the individual works permit.
|
|
|
|
When the Document is included in an aggregate, this License does not
|
|
|
|
apply to the other works in the aggregate which are not themselves
|
|
|
|
derivative works of the Document.
|
|
|
|
|
|
|
|
If the Cover Text requirement of section 3 is applicable to these
|
|
|
|
copies of the Document, then if the Document is less than one half of
|
|
|
|
the entire aggregate, the Document's Cover Texts may be placed on
|
|
|
|
covers that bracket the Document within the aggregate, or the
|
|
|
|
electronic equivalent of covers if the Document is in electronic form.
|
|
|
|
Otherwise they must appear on printed covers that bracket the whole
|
|
|
|
aggregate.
|
|
|
|
|
|
|
|
|
|
|
|
8. TRANSLATION
|
|
|
|
|
|
|
|
Translation is considered a kind of modification, so you may
|
|
|
|
distribute translations of the Document under the terms of section 4.
|
|
|
|
Replacing Invariant Sections with translations requires special
|
|
|
|
permission from their copyright holders, but you may include
|
|
|
|
translations of some or all Invariant Sections in addition to the
|
|
|
|
original versions of these Invariant Sections. You may include a
|
|
|
|
translation of this License, and all the license notices in the
|
|
|
|
Document, and any Warranty Disclaimers, provided that you also include
|
|
|
|
the original English version of this License and the original versions
|
|
|
|
of those notices and disclaimers. In case of a disagreement between
|
|
|
|
the translation and the original version of this License or a notice
|
|
|
|
or disclaimer, the original version will prevail.
|
|
|
|
|
|
|
|
If a section in the Document is Entitled "Acknowledgements",
|
|
|
|
"Dedications", or "History", the requirement (section 4) to Preserve
|
|
|
|
its Title (section 1) will typically require changing the actual
|
|
|
|
title.
|
|
|
|
|
|
|
|
|
|
|
|
9. TERMINATION
|
|
|
|
|
|
|
|
You may not copy, modify, sublicense, or distribute the Document except
|
|
|
|
as expressly provided for under this License. Any other attempt to
|
|
|
|
copy, modify, sublicense or distribute the Document is void, and will
|
|
|
|
automatically terminate your rights under this License. However,
|
|
|
|
parties who have received copies, or rights, from you under this
|
|
|
|
License will not have their licenses terminated so long as such
|
|
|
|
parties remain in full compliance.
|
|
|
|
|
|
|
|
|
|
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
|
|
|
|
The Free Software Foundation may publish new, revised versions
|
|
|
|
of the GNU Free Documentation License from time to time. Such new
|
|
|
|
versions will be similar in spirit to the present version, but may
|
|
|
|
differ in detail to address new problems or concerns. See
|
2020-07-13 17:13:05 +08:00
|
|
|
https://www.gnu.org/copyleft/.
|
2010-10-08 02:20:02 +08:00
|
|
|
|
|
|
|
Each version of the License is given a distinguishing version number.
|
|
|
|
If the Document specifies that a particular numbered version of this
|
|
|
|
License "or any later version" applies to it, you have the option of
|
|
|
|
following the terms and conditions either of that specified version or
|
|
|
|
of any later version that has been published (not as a draft) by the
|
|
|
|
Free Software Foundation. If the Document does not specify a version
|
|
|
|
number of this License, you may choose any version ever published (not
|
|
|
|
as a draft) by the Free Software Foundation.
|
|
|
|
|
|
|
|
|
|
|
|
ADDENDUM: How to use this License for your documents
|
|
|
|
|
|
|
|
To use this License in a document you have written, include a copy of
|
|
|
|
the License in the document and put the following copyright and
|
|
|
|
license notices just after the title page:
|
|
|
|
|
|
|
|
Copyright (c) YEAR YOUR NAME.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
|
|
under the terms of the GNU Free Documentation License, Version 1.2
|
|
|
|
or any later version published by the Free Software Foundation;
|
|
|
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
|
|
A copy of the license is included in the section entitled "GNU
|
|
|
|
Free Documentation License".
|
|
|
|
|
|
|
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
|
|
|
replace the "with...Texts." line with this:
|
|
|
|
|
|
|
|
with the Invariant Sections being LIST THEIR TITLES, with the
|
|
|
|
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
|
|
|
|
|
|
|
If you have Invariant Sections without Cover Texts, or some other
|
|
|
|
combination of the three, merge those two alternatives to suit the
|
|
|
|
situation.
|
|
|
|
|
|
|
|
If your document contains nontrivial examples of program code, we
|
|
|
|
recommend releasing these examples in parallel under your choice of
|
|
|
|
free software license, such as the GNU General Public License,
|
|
|
|
to permit their use in free software.
|
|
|
|
|
|
|
|
The End.
|