1258 lines
55 KiB
Plaintext
1258 lines
55 KiB
Plaintext
====== Fenrir User Manual ======
|
|
|
|
Fenrir is a modern command line screen reader written in Python3.
|
|
|
|
It has a modular structure, a flexible based driver model, is highly configurable and easy to customize and extend ([[fenrir_development_manual|see Developer Manual]]).
|
|
|
|
Please see the following pages for the [[fenrir_current_version|current]] and [[fenrir_git_version|Git]] version of Fenrir.
|
|
|
|
|
|
====== Support and Requirements ======
|
|
|
|
Fenrir requires several drivers to interact with the operating system.
|
|
|
|
===== Speech Drivers =====
|
|
|
|
A speech driver is for communication with the text to speech system like [[speech-dispatcher|Speech-dispatcher]] or [[espeak|Espeak]]. \\
|
|
See section [[#Speech|Speech]] in ''settings.conf'' for more information.
|
|
|
|
|
|
==== SpeechDispatcher ====
|
|
|
|
This driver is used by default.
|
|
It uses speech-dispatcher as its backend.
|
|
|
|
Dependency's:
|
|
|
|
* speech-dispatcher (installed and configured, [[https://devel.freebsoft.org/speechd#sec2|Documentation]])
|
|
* python-speechd
|
|
|
|
==== Generic ====
|
|
|
|
This invokes speech via a sub-process. This is almost the same as entering the command by commandline. The performance depends on the overhead of the speech syntheses application but it is really flexible.
|
|
|
|
Dependency's:
|
|
* Espeak or Espeak-ng
|
|
|
|
The Requirements are flexible, they depend on the configuration in settings.conf.
|
|
|
|
==== Dummy ====
|
|
|
|
this is just for debugging, logs are output to the screen and logged as well.
|
|
|
|
===== Sound Drivers =====
|
|
|
|
To play sound icons and similar.\\
|
|
See section [[#Sound|Sound]] in ''settings.conf'' for more information.
|
|
|
|
==== Generic ====
|
|
|
|
This driver is used by default.
|
|
|
|
Dependency's:
|
|
|
|
* [[sox|Sox]]
|
|
The Requirements are flexible, they depend on the configuration in settings.conf.
|
|
|
|
==== Gstreamer ====
|
|
|
|
if you prefer to use Gstreamer for sound output.
|
|
|
|
Dependency's:
|
|
* Gstreamer >= 1.x
|
|
* Glibc
|
|
|
|
==== Dummy ====
|
|
|
|
this is just for debugging, logs are output to the screen and logged as well.
|
|
|
|
===== Input Drivers =====
|
|
|
|
Input drivers are to capture the shortcuts issued to the screen reader from the keyboard.\\
|
|
See section [[#Keyboard|Keyboard]] in ''settings.conf'' for more information.
|
|
|
|
==== Evdev ====
|
|
|
|
This driver is used by default.
|
|
|
|
Evdev is the low level input device framework for Linux.
|
|
|
|
Dependency's:
|
|
|
|
* Python-evdev >=0.6.3
|
|
* loaded uinput kernel module
|
|
* exclusive access to the input devices
|
|
Read permission to the following files and services:
|
|
* /dev/input
|
|
* /dev/uinput
|
|
|
|
===== Screen Drivers =====
|
|
|
|
The job of a screen driver is to get the information of the current screen.\\
|
|
See section [[#Screen|Screen]] in ''settings.conf'' for more information.
|
|
|
|
==== VCSA ====
|
|
|
|
This driver is used by default.
|
|
For Linux VCSA devices. These exist on any current standard installation of Linux.
|
|
|
|
Dependency's:
|
|
|
|
* Python-dbus
|
|
Read permission to the following files and services:
|
|
* /sys/devices/virtual/tty/tty0/active
|
|
* /dev/vcsa[1-64] ([[https://linux.die.net/man/4/vcsa|VCSA manpage]])
|
|
* read Systemd DBUS
|
|
|
|
===== Braille Drivers =====
|
|
This is for Braille support.
|
|
Braille is currently a work in progress and is planned for the Fenrir 2.0 release.\\
|
|
See section [[#Braille|Braille]] in ''settings.conf'' for more information.
|
|
|
|
|
|
==== BrlTTY ====
|
|
|
|
This driver is used by default.
|
|
It uses [[brltty|BrlTTY]] to communicate with with a Braille device.
|
|
|
|
Dependency's:
|
|
|
|
* BrlTTY (configured and running, [[http://mielke.cc/brltty/doc/Manual-BRLTTY/English/BRLTTY.html|Documentation]])
|
|
* python-brlapi (configured, [[http://mielke.cc/brltty/doc/Manual-BrlAPI/English/BrlAPI.html|Documentation]])
|
|
===== Current Platforms =====
|
|
|
|
Currently Fenrir completely supports the following Platforms:
|
|
* Linux TTY
|
|
Support for further Systems are planned.
|
|
|
|
====== Installation ======
|
|
|
|
Fenrir can run without installation. It just requires the dependencies to be installed first.
|
|
|
|
We recommend to try it out before installation to be sure everything works and prevent yourself from experiencing a non-talking environment.
|
|
|
|
===== Try Out =====
|
|
Fenrir does not require installation. You can try out if everything works before you want to install. In this way you can be sure that your system doesnt break or does not talking.
|
|
for that you can just grab the code and run as root ''src/fenrir/fenrir'' (in foreground) or ''src/fenrir/fenrir-daemon'' (in background, that one is used by systemd for autostart)
|
|
|
|
===== Install it =====
|
|
|
|
==== Documented operating systems ====
|
|
|
|
==== Arch Linux ====
|
|
|
|
For Arch there are PKGBUILDs in the AUR:
|
|
* [[https://aur.archlinux.org/packages/fenrir/|fenrir]]
|
|
* [[https://aur.archlinux.org/packages/fenrir-git/|fenrir-git]]
|
|
|
|
==== Manual ====
|
|
|
|
- Download the latest stable version from the [[https://linux-a11y.org/index.php?page=fenrir-screenreader|Fenrir-Project]] site.
|
|
- Unpack the archive
|
|
- install the needed Dependencys an standard installation requires the following.
|
|
* python3 >= 3.3 (and all the following is needed for python3 )
|
|
* python3-speechd (screen)
|
|
* python3-dbus (screen)
|
|
* python3-evdev >= 0.6.4(input)
|
|
* python3-daemonize (background service)
|
|
* python3-brlapi (braille)
|
|
* python3-pyenchant (spellchecker)
|
|
* your language for aspell (aspell-<lang>) (spellchecker)
|
|
* sox (sound)
|
|
* For an individual installation see [[#Support and Requirements|Support and Requirements]] or cunsult the [[https://github.com/chrys87/fenrir/blob/master/README.md|Readme]])
|
|
- run "install.sh" as root
|
|
|
|
this installs fenrir as the following
|
|
* Application:''/opt/fenrir''
|
|
* Settings:''/etc/fenrir''
|
|
* Sound Icons:''/usr/share/fenrir/''
|
|
|
|
to remove fenrir just run deinstall.sh as root
|
|
|
|
==== Git ====
|
|
|
|
if you want to get the latest code you can just use git to get an development snapshot:
|
|
|
|
git clone https://github.com/chrys87/fenrir.git
|
|
|
|
===== Auto Start =====
|
|
|
|
To start Fenrir once:
|
|
systemctl start fenrir
|
|
|
|
To enable auto start on system boot:
|
|
systemctl enable fenrir
|
|
|
|
====== First Steps ======
|
|
|
|
If you are using Fenrir for the first time you may want to take a look at these resources:
|
|
* [[#Keyindings|Keyindings]]
|
|
* [[#Tutorial Mode|Tutorial Mode]]
|
|
|
|
====== Features ======
|
|
|
|
===== Commands =====
|
|
|
|
==== Keyindings ====
|
|
|
|
Normal commands can invoked in to ways:
|
|
- Using a Metakey ([[#Fenrir Key|FenrirKey]])
|
|
- Shortcuts with an single key
|
|
|
|
=== Fenrir Key ===
|
|
The Fenrir Key is for invoking screen reader commands. Fenrir can handle more than one Key as FenrirKey at the same time.
|
|
By default the following keys are used:
|
|
- Insert
|
|
- KeyPad Insert
|
|
- Meta (Super, Windows)
|
|
|
|
=== Script Key ===
|
|
To invoke "Scripts" the Script Key is mandatory. The shortcut is encoded in the filename of the script. See [[#Scripting|Scripting]]
|
|
===Desktop Layout===
|
|
^Shortcut ^Command ^
|
|
|FenrirKey + H|[[#Tutorial Mode|toggle tutorial mode]]|
|
|
|CTRL|[[#shut up|shut up (interrupts speech)]]|
|
|
|FenrirKey + KeyPad 9|[[#review bottom|reviews bottom]]|
|
|
|FenrirKey + KeyPad 7|[[#review top|reviews top]]|
|
|
|KeyPad 8|[[#review current line|reviews current line]]|
|
|
|KeyPad 7|[[#review previous line|reviews previous line]]|
|
|
|KeyPad 9|[[#review next line|reviews next line]]|
|
|
|FenrirKey + KeyPad 4|[[#review line beginning|reviews line beginning]]|
|
|
|FenrirKey + KeyPad 6|[[#review line ending|reviews line ending]]|
|
|
|FenrirKey + KeyPad 1|[[#review line first character|reviews line first character]]|
|
|
|FenrirKey + KeyPad 3|[[#review line last character|reviews line last character]]|
|
|
|FenrirKey + Alt + 1|[[#present first line|presents first line]]|
|
|
|FenrirKey + Alt + 2|[[#present last line|presents last line]]|
|
|
|KeyPad 5|[[#review current word|reviews current word]]|
|
|
|KeyPad 4|[[#review previous word|reviews previous word]]|
|
|
|KeyPad 6|[[#review next word|reviews next word]]|
|
|
|FenrirKey + Shift + KeyPad 5|[[#review current word phonetic|reviews current word phonetic]]|
|
|
|FenrirKey + Shift + KeyPad 4|[[#review previous word phonetic|reviews previous word phonetic]]|
|
|
|FenrirKey + Shift + KeyPad 6|[[#review next word phonetic|reviews next word phonetic]]|
|
|
|KeyPad 2|[[#review current character|reviews current char]]|
|
|
|KeyPad 1|[[#review previous character|reviews previous char]]|
|
|
|KeyPad 3|[[#review next character|reviews next char]]|
|
|
|FenrirKey + Shift + KeyPad 2|[[#review current character phonetic|reviews current character phonetic]]|
|
|
|FenrirKey + Shift + KeyPad 1|[[#review previous character phonetic|reviews previous character phonetic]]|
|
|
|FenrirKey + Shift + KeyPad 3|[[#review next character phonetic|reviews next character phonetic]]|
|
|
|FenrirKey + CTRL + KeyPad 8|[[#review up|reviews up]]|
|
|
|FenrirKey + CTRL + KeyPad 2|[[#review down|reviews down]]|
|
|
|FenrirKey + KeyPad dot|[[#exit review|exit review]]|
|
|
|KeyPad dot|[[#cursor position|cursor position]]|
|
|
|FenrirKey + I|[[#indent current line|indent curr line]]|
|
|
|FenrirKey + KeyPad 5|[[#current screen|current screen]]|
|
|
|FenrirKey + KeyPad 8|[[#current screen before cursor|current screen before cursor]]|
|
|
|FenrirKey + KeyPad 2|[[#current screen after cursor|current screen after cursor]]|
|
|
|<Unbound>|[[#cursor read to end of line|cursor read to end of line]]|
|
|
|<Unbound>|[[#cursor column|cursor column]]|
|
|
|<Unbound>|[[#cursor line number|cursor line number]]|
|
|
|<Unbound>|[[#braille flush|Braille flush]]|
|
|
|<Unbound>|[[#braille pan left|Braille pan left]]|
|
|
|<Unbound>|[[#braille pan right|Braille pan right]]|
|
|
|<Unbound>|[[#braille return to cursor|Braille return to cursor]]|
|
|
|FenrirKey + CTRL + 1|[[#clear Bookmark X|clear bookmark 1]]|
|
|
|FenrirKey + Shift + 1|[[#set Bookmark X|set bookmark 1]]|
|
|
|FenrirKey + 1|[[#read Bookmark X|bookmark 1]]|
|
|
|FenrirKey + CTRL + 2|[[#clear Bookmark X|clear bookmark 2]]|
|
|
|FenrirKey + Shift + 2|[[#set Bookmark X|set bookmark 2]]|
|
|
|FenrirKey + 2|[[#read Bookmark X|bookmark 2]]|
|
|
|FenrirKey + CTRL + 3|[[#clear Bookmark X|clear bookmark 3]]|
|
|
|FenrirKey + Shift + 3|[[#set Bookmark X|set bookmark 3]]|
|
|
|FenrirKey + 3|[[#read Bookmark X|bookmark 3]]|
|
|
|FenrirKey + CTRL + 4|[[#clear Bookmark X|clear bookmark 4]]|
|
|
|FenrirKey + Shift + 4|[[#set Bookmark X|set bookmark 4]]|
|
|
|FenrirKey + 4|[[#read Bookmark X|bookmark 4]]|
|
|
|FenrirKey + CTRL + 5|[[#clear Bookmark X|clear bookmark 5]]|
|
|
|FenrirKey + Shift + 5|[[#set Bookmark X|set bookmark 5]]|
|
|
|FenrirKey + 5|[[#read Bookmark X|bookmark 5]]|
|
|
|FenrirKey + CTRL + 6|[[#clear Bookmark X|clear bookmark 6]]|
|
|
|FenrirKey + Shift + 6|[[#set Bookmark X|set bookmark 6]]|
|
|
|FenrirKey + 6|[[#read Bookmark X|bookmark 6]]|
|
|
|FenrirKey + CTRL + 7|[[#clear Bookmark X|clear bookmark 7]]|
|
|
|FenrirKey + Shift + 7|[[#set Bookmark X|set bookmark 7]]|
|
|
|FenrirKey + 7|[[#read Bookmark X|bookmark 7]]|
|
|
|FenrirKey + CTRL + 8|[[#clear Bookmark X|clear bookmark 8]]|
|
|
|FenrirKey + Shift + 8|[[#set Bookmark X|set bookmark 8]]|
|
|
|FenrirKey + 8|[[#read Bookmark X|bookmark 8]]|
|
|
|FenrirKey + CTRL + 9|[[#clear Bookmark X|clear bookmark 9]]|
|
|
|FenrirKey + Shift + 9|[[#set Bookmark X|set bookmark 9]]|
|
|
|FenrirKey + 9|[[#read Bookmark X|bookmark 9]]|
|
|
|FenrirKey + CTRL + 0|[[#clear Bookmark X|clear bookmark 10]]|
|
|
|FenrirKey + Shift + 0|[[#set Bookmark X|set bookmark 10]]|
|
|
|FenrirKey + 0|[[#read Bookmark X|bookmark 10]]|
|
|
|FenrirKey + KeyPad Slash|[[#Create Window|set window application]]|
|
|
|2 * FenrirKey + KeyPad Slash|[[#Remove Window|clear window application]]|
|
|
|KeyPad Plus|[[#last incoming|read last incoming]]|
|
|
|FenrirKey + F2|[[#toggle braille|toggles braille]]|
|
|
|FenrirKey + F3|[[#toggle sound|toggles sound]]|
|
|
|FenrirKey + F4|[[#toggle speech|toggles speech]]|
|
|
|KeyPad Enter|[[#disable speech temporarily|temporarily disables speech]]|
|
|
|FenrirKey + CTRL + P|[[#toggle punctuation level|toggles punctuation level]]|
|
|
|FenrirKey + RightBrace|[[#toggle auto spell check|toggle auto spell check]]|
|
|
|FenrirKey + Backslash|[[#toggle output|toggles output]]|
|
|
|FenrirKey + CTRL + E|[[#toggle emoticons|toggles emoticons]]|
|
|
|FenrirKey + KeyPad Enter|[[#toggle auto read|toggles auto read]]|
|
|
|FenrirKey + CTRL + T|[[#toggle auto time|toggles auto time]]|
|
|
|FenrirKey + KeyPad ASTERISK|[[#toggle highlight tracking|toggles highlight tracking]]|
|
|
|FenrirKey + Q|[[#quit Fenrir|quits fenrir]]|
|
|
|FenrirKey + T|[[#Time|Announce time]]|
|
|
|2 * FenrirKey + T|[[#Date|Announce date]]|
|
|
|FenrirKey + S|[[#spell check|spell check]]|
|
|
|2 * FenrirKey + S|[[#add word to spell check|add word to spell check]]|
|
|
|FenrirKey + Shift + S|[[#removes word from spell check|removes word from spell check]]|
|
|
|FenrirKey + Backspace|[[#forward keypress|forward keypress]]|
|
|
|FenrirKey + Up|[[#increase speech volume|increase speech volume]]|
|
|
|FenrirKey + Down|[[#decrease speech volume|decrease speech volume]]|
|
|
|FenrirKey + Right|[[#increase speech rate|increase speech rate]]|
|
|
|FenrirKey + Left|[[#decrease speech rate|decrease speech rate]]|
|
|
|FenrirKey + Alt + Right|[[#increase speech pitch|increase speech pitch]]|
|
|
|FenrirKey + Alt + Left|[[#decrease speech pitch|decrease speech pitch]]|
|
|
|FenrirKey + Alt + Up|[[#increase sound volume|increase sound volume]]|
|
|
|FenrirKey + Alt + Down|[[#decrease sound volume|decrease sound volume]]|
|
|
|FenrirKey + CTRL + Shift + C|[[#clear clipboard|clears clipboard]]|
|
|
|FenrirKey + Home|[[#first clipboard|first clipboard]]|
|
|
|FenrirKey + End|[[#last clipboard|last clipboard]]|
|
|
|FenrirKey + PageUp|[[#previous clipboard|previous clipboard]]|
|
|
|FenrirKey + PageDown|[[#next clipboard|next clipboard]]|
|
|
|FenrirKey + Shift + C|[[#read current clipboard|current clipboard]]|
|
|
|FenrirKey + C|[[#copy marked to clipboard|copy marked text to clipboard]]|
|
|
|FenrirKey + V|[[#paste clipboard|paste clipboard contents]]|
|
|
|FenrirKey + CTRL + Shift + X|[[#Remove Marks|remove marks]]|
|
|
|FenrirKey + X|[[#Set mark|set mark]]|
|
|
|FenrirKey + Shift + X|[[#Get text between marks|announce marked text]]|
|
|
^Linux specific ^
|
|
|<Unbound>|export clipboard to X|
|
|
|FenrirKey + CTRL + Up|include Alsa volume|
|
|
|FenrirKey + CTRL + Down|decrease Alsa volume|
|
|
|
|
===Laptop Layout===
|
|
^Shortcut ^Command ^
|
|
|FenrirKey + H|[[#Tutorial Mode|toggle tutorial mode]]|
|
|
|CTRL|[[#shut up|shut up (interrupts speech)]]|
|
|
|FenrirKey + Shift + O|[[#review bottom|reviews bottom]]|
|
|
|FenrirKey + Shift + U|[[#review top|reviews top]]|
|
|
|FenrirKey + I|[[#review current line|reviews current line]]|
|
|
|FenrirKey + U|[[#review previous line|reviews previous line]]|
|
|
|FenrirKey + O|[[#review next line|reviews next line]]|
|
|
|FenrirKey + Shift + J|[[#review line beginning|reviews line beginning]]|
|
|
|FenrirKey + SHFIT + L|[[#review line ending|reviews line ending]]|
|
|
|FenrirKey + CTRL + J|[[#review line first character|reviews line first character]]|
|
|
|FenrirKey + CTRL + L|[[#review line last character|reviews line last character]]|
|
|
|FenrirKey + Alt + 1|[[#present first line|presents first line]]|
|
|
|FenrirKey + Alt + 2|[[#present last line|presents last line]]|
|
|
|FenrirKey + K|[[#review current word|reviews current word]]|
|
|
|FenrirKey + J|[[#review previous word|reviews previous word]]|
|
|
|FenrirKey + L|[[#review next word|reviews next word]]|
|
|
|2 * FenrirKey + K|[[#review current word phonetic|reviews current word phonetic]]|
|
|
|2 * FenrirKey + J|[[#review previous word phonetic|reviews previous word phonetic]]|
|
|
|2 * FenrirKey + L|[[#review next word phonetic|reviews next word phonetic]]|
|
|
|FenrirKey + comma|[[#review current character|reviews current char]]|
|
|
|FenrirKey + M|[[#review previous character|reviews previous char]]|
|
|
|FenrirKey + dot|[[#review next character|reviews next char]]|
|
|
|2 * FenrirKey + comma|[[#review current character phonetic|reviews current character phonetic]]|
|
|
|2 * FenrirKey + M|[[#review previous character phonetic|reviews previous character phonetic]]|
|
|
|2 * FenrirKey + dot|[[#review next character phonetic|reviews next character phonetic]]|
|
|
|FenrirKey + CTRL + I|[[#review up|reviews up]]|
|
|
|FenrirKey + CTRL + comma|[[#review down|reviews down]]|
|
|
|FenrirKey + Slash|[[#exit review|exit review]]|
|
|
|FenrirKey + Shift + dot|[[#cursor position|cursor position]]|
|
|
|2 * FenrirKey + I|[[#indent current line|indent curr line]]|
|
|
|FenrirKey + Shift + K|[[#current screen|current screen]]|
|
|
|FenrirKey + Shift + I|[[#current screen before cursor|current screen before cursor]]|
|
|
|FenrirKey + Shift + comma|[[#current screen after cursor|current screen after cursor]]|
|
|
|<Unbound>|[[#cursor read to end of line|cursor read to end of line]]|
|
|
|<Unbound>|[[#cursor column|cursor column]]|
|
|
|<Unbound>|[[#cursor line number|cursor line number]]|
|
|
|<Unbound>|[[#braille flush|Braille flush]]|
|
|
|<Unbound>|[[#braille pan left|Braille pan left]]|
|
|
|<Unbound>|[[#braille pan right|Braille pan right]]|
|
|
|<Unbound>|[[#braille return to cursor|Braille return to cursor]]|
|
|
|FenrirKey + CTRL + 1|[[#clear Bookmark X|clear bookmark 1]]|
|
|
|FenrirKey + Shift + 1|[[#set Bookmark X|set bookmark 1]]|
|
|
|FenrirKey + 1|[[#read Bookmark X|bookmark 1]]|
|
|
|FenrirKey + CTRL + 2|[[#clear Bookmark X|clear bookmark 2]]|
|
|
|FenrirKey + Shift + 2|[[#set Bookmark X|set bookmark 2]]|
|
|
|FenrirKey + 2|[[#read Bookmark X|bookmark 2]]|
|
|
|FenrirKey + CTRL + 3|[[#clear Bookmark X|clear bookmark 3]]|
|
|
|FenrirKey + Shift + 3|[[#set Bookmark X|set bookmark 3]]|
|
|
|FenrirKey + 3|[[#read Bookmark X|bookmark 3]]|
|
|
|FenrirKey + CTRL + 4|[[#clear Bookmark X|clear bookmark 4]]|
|
|
|FenrirKey + Shift + 4|[[#set Bookmark X|set bookmark 4]]|
|
|
|FenrirKey + 4|[[#read Bookmark X|bookmark 4]]|
|
|
|FenrirKey + CTRL + 5|[[#clear Bookmark X|clear bookmark 5]]|
|
|
|FenrirKey + Shift + 5|[[#set Bookmark X|set bookmark 5]]|
|
|
|FenrirKey + 5|[[#read Bookmark X|bookmark 5]]|
|
|
|FenrirKey + CTRL + 6|[[#clear Bookmark X|clear bookmark 6]]|
|
|
|FenrirKey + Shift + 6|[[#set Bookmark X|set bookmark 6]]|
|
|
|FenrirKey + 6|[[#read Bookmark X|bookmark 6]]|
|
|
|FenrirKey + CTRL + 7|[[#clear Bookmark X|clear bookmark 7]]|
|
|
|FenrirKey + Shift + 7|[[#set Bookmark X|set bookmark 7]]|
|
|
|FenrirKey + 7|[[#read Bookmark X|bookmark 7]]|
|
|
|FenrirKey + CTRL + 8|[[#clear Bookmark X|clear bookmark 8]]|
|
|
|FenrirKey + Shift + 8|[[#set Bookmark X|set bookmark 8]]|
|
|
|FenrirKey + 8|[[#read Bookmark X|bookmark 8]]|
|
|
|FenrirKey + CTRL + 9|[[#clear Bookmark X|clear bookmark 9]]|
|
|
|FenrirKey + Shift + 9|[[#set Bookmark X|set bookmark 9]]|
|
|
|FenrirKey + 9|[[#read Bookmark X|bookmark 9]]|
|
|
|FenrirKey + CTRL + 0|[[#clear Bookmark X|clear bookmark 10]]|
|
|
|FenrirKey + Shift + 0|[[#set Bookmark X|set bookmark 10]]|
|
|
|FenrirKey + 0|[[#read Bookmark X|bookmark 10]]|
|
|
|FenrirKey + CTRL + 8|[[#Create Window|set window application]]|
|
|
|2 * FenrirKey + CTRL + 8|[[#Remove Window|clear window application]]|
|
|
|FenrirKey + Semicolon|[[#last incoming|read last incoming]]|
|
|
|FenrirKey + F2|[[#toggle braille|toggles braille]]|
|
|
|FenrirKey + F3|[[#toggle sound|toggles sound]]|
|
|
|FenrirKey + F4|[[#toggle speech|toggles speech]]|
|
|
|FenrirKey + Enter|[[#disable speech temporarily|temporarily disables speech]]|
|
|
|FenrirKey + Shift + CTRL + P|[[#toggle punctuation level|toggles punctuation level]]|
|
|
|FenrirKey + RightBrace|[[#toggle auto spell check|toggle auto spell check]]|
|
|
|FenrirKey + Shift + Enter|[[#toggle output|toggles output]]|
|
|
|FenrirKey + Shift + E|[[#toggle emoticons|toggles emoticons]]|
|
|
|FenrirKey + Enter|[[#toggle auto read|toggles auto read]]|
|
|
|FenrirKey + CTRL + T|[[#toggle auto time|toggles auto time]]|
|
|
|FenrirKey + Y|[[#toggle highlight tracking|toggles highlight tracking]]|
|
|
|FenrirKey + Q|[[#quit Fenrir|quits fenrir]]|
|
|
|FenrirKey + T|[[#Time|Announce time]]|
|
|
|2 * FenrirKey + T|[[#Date|Announce date]]|
|
|
|FenrirKey + S|[[#spell check|spell check]]|
|
|
|2 * FenrirKey + S|[[#add word to spell check|add word to spell check]]|
|
|
|FenrirKey + Shift + S|[[#removes word from spell check|removes word from spell check]]|
|
|
|FenrirKey + Backspace|[[#forward keypress|forward keypress]]|
|
|
|FenrirKey + Up|[[#increase speech volume|increase speech volume]]|
|
|
|FenrirKey + Down|[[#decrease speech volume|decrease speech volume]]|
|
|
|FenrirKey + Right|[[#increase speech rate|increase speech rate]]|
|
|
|FenrirKey + Left|[[#decrease speech rate|decrease speech rate]]|
|
|
|FenrirKey + Alt + Right|[[#increase speech pitch|increase speech pitch]]|
|
|
|FenrirKey + Alt + Left|[[#decrease speech pitch|decrease speech pitch]]|
|
|
|FenrirKey + Alt + Up|[[#increase sound volume|increase sound volume]]|
|
|
|FenrirKey + Alt + Down|[[#decrease sound volume|decrease sound volume]]|
|
|
|FenrirKey + CTRL + Shift + C|[[#clear clipboard|clears clipboard]]|
|
|
|FenrirKey + Home|[[#first clipboard|first clipboard]]|
|
|
|FenrirKey + End|[[#last clipboard|last clipboard]]|
|
|
|FenrirKey + PageUp|[[#previous clipboard|previous clipboard]]|
|
|
|FenrirKey + PageDown|[[#next clipboard|next clipboard]]|
|
|
|FenrirKey + Shift + C|[[#read current clipboard|current clipboard]]|
|
|
|FenrirKey + C|[[#copy marked to clipboard|copy marked text to clipboard]]|
|
|
|FenrirKey + V|[[#paste clipboard|paste clipboard contents]]|
|
|
|FenrirKey + CTRL + Shift + X|[[#Remove Marks|remove marks]]|
|
|
|FenrirKey + X|[[#Set mark|set mark]]|
|
|
|FenrirKey + Shift + X|[[#Get text between marks|announce marked text]]|
|
|
^Linux specific ^
|
|
|<Unbound>|export clipboard to X|
|
|
|FenrirKey + CTRL + Up|increases Alsa volume|
|
|
|FenrirKey + CTRL + Down|decreases Alsa volume|
|
|
==== General ====
|
|
=== quit Fenrir ===
|
|
Just stops fenrir.
|
|
=== shut up ===
|
|
Interrupt the current spoken.
|
|
==== Review Modes ====
|
|
Fenrir provides a virtual cursor, with it you can navigate all over the screen without changing the text cursor.
|
|
|
|
Using the review feature will open the review mode automatically.
|
|
|
|
The review cursor always starts at the text cursor. Attention: after using the review mode, the review cursor will stay open until you use the ''exit review'' shortcut.
|
|
|
|
Think about that when using clipboard operations and similar. The review cursor is always prefered over the text cursor.
|
|
|
|
Fenrir can bell a sound if the used review command jumped to an other line or end the screen.
|
|
=== exit review ===
|
|
You can leave the review mode by pressing the ''exit review'' shortcut.
|
|
=== review bottom ===
|
|
Set the review cursor to first column in the last line.
|
|
=== review top ===
|
|
Set the review cursor to the first column in the first line
|
|
=== review current line ===
|
|
Set the review cursor to the beginn of the the current line and review it.
|
|
=== review previous line ===
|
|
Set the review cursor to the previous line and review it.
|
|
=== review next line ===
|
|
Set the review cursor to the next line and review it.
|
|
=== review line beginning ===
|
|
Set the review cursor to the begin of the current line
|
|
=== review line ending ===
|
|
Set the review cursor to the end of the current line
|
|
=== review line first character ===
|
|
Set the review cursor the first char (that is not space) in the current line and review it.
|
|
=== review line last character ===
|
|
Set the review cursor the last char (that is not space) in the current line and review it.
|
|
=== review current word ===
|
|
Sets the review cursor to the beginning of the current word and review it.
|
|
=== review previous word ===
|
|
Sets the review cursor to the beginning of the previous word and review it.
|
|
=== review next word ===
|
|
Sets the review cursor to the beginning of the next word and review it.
|
|
=== review current word phonetic ===
|
|
Sets the review cursor to the beginning of the current word and spell it phonetic.
|
|
=== review previous word phonetic ===
|
|
Sets the review cursor to the beginning of the previous word and spell it phonetic.
|
|
=== review next word phonetic ===
|
|
Sets the review cursor to the beginning of the next word and spell it phonetic.
|
|
=== review current character ===
|
|
Does not change the review cursor. Just announce the current char.
|
|
=== review previous character ===
|
|
Sets review cursor to the previous column and review it
|
|
=== review next character ===
|
|
Sets review cursor to the next column and review it
|
|
=== review current character phonetic ===
|
|
Does not change the review cursor. Just announce the current char phonetic.
|
|
=== review previous character phonetic ===
|
|
Sets review cursor to the previous column and announce the char phonetic.
|
|
=== review next character phonetic ===
|
|
Sets review cursor to the next column and announce the char phonetic.
|
|
=== review up ===
|
|
Set the review cursor in the same column one line above the current one and review it.
|
|
=== review down ===
|
|
Set the review cursor in the same column one line below the current one and review it.
|
|
==== Handling marking ====
|
|
A mark defines a point of origin or end to prepare to copy or paste a block of text.
|
|
\\
|
|
Examples where you need marks are:
|
|
* copy to clipboard
|
|
* set window application
|
|
* set bookmark 1 - X
|
|
=== Set mark ===
|
|
How to set an mark:
|
|
- navigate with review or textcursor to the position you want to set the mark. Attention: if a review cursor is set, that one is prefered. If you want to use text cursor, be sure that you are not in review mode.
|
|
- press shortcut for ''set mark''
|
|
you can set two marks (begin and end). Some commands allow some simpler usecases just using the whole line if only one mark is set. you may want to try this out.
|
|
=== Get text between marks ===
|
|
To get the text that is currently between your marks press shortcut for ''marked text''.\\
|
|
=== Remove Marks ===
|
|
You can remove all current marks by pressing the shortcut for ''remove marks''.
|
|
Changing the screen also removes the marks.
|
|
==== Screen Interaction ====
|
|
Fenrir provides several functionality to interact with the current screen.
|
|
=== forward keypress ===
|
|
This just forewarts the next shortcut to the screen whatever it is an Fenrir shortcut or not. This is useful if the currently pressed shortcut is also in use by Fenrir itself.
|
|
=== Clipboard ===
|
|
Fenrir provides an clipboard with multible slots, represented by an list. You navigate thought the list and paste the selected clipboard.
|
|
== copy marked to clipboard ==
|
|
To copy somthing to the clipboard you need to set one or two marks. if you set one mark, the text between the mark and your current cursor is copied to clipboard. Setting two marks just copies the text between the marks into the clipboard. If you copy something it is always placed as first element in your clipboard list.
|
|
== clear clipboard ==
|
|
You can remove all elements from the current clipboard list by ''clear clipboard'' functionalty.
|
|
== first clipboard ==
|
|
This moves quick to the first element of the clipboard list.
|
|
== last clipboard ==
|
|
This moves quick to the last element of the clipboard list.
|
|
== previous clipboard ==
|
|
Go to previous element in the clipboard list
|
|
== next clipboard ==
|
|
Go to next element in the clipboard list
|
|
== read current clipboard ==
|
|
Read the content of the current element of the clipboard list
|
|
== paste clipboard ==
|
|
Past whatever element is currently selected by first, last, prev or next clipboard commands.
|
|
if no special clipboard is selected the first one (last copied) is used.
|
|
==== Quick Settings ====
|
|
Fenrir provides some shortcuts to change settings temporarily and on the fly without need to permanently change the ''settings.conf'' file.
|
|
=== toggle braille ===
|
|
Enables and disables Braille. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle sound ===
|
|
Enables and disables sound. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle speech ===
|
|
Enables and disables speech. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== disable speech temporarily ===
|
|
Disables the speech until next key press. it might be useful if you want to listen to music or similar. As soon as an key is pressed it is going to be enabled again.
|
|
=== toggle punctuation level ===
|
|
Cycle between all available punctuation levels. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle auto spell check ===
|
|
Enables and disables automatic spellchecker (when typing). This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle emoticons ===
|
|
Enables and disables emoticons. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== toggle output ===
|
|
Enables and disables all output at once (sound, braille, speech). This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle auto read ===
|
|
Enables and disables that incoming is automatic spoken. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle auto time ===
|
|
Enables and disables auto time functionality. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== toggle highlight tracking ===
|
|
Enables and disables highlight tracking. This is not persistent stored in your ''settings.conf'' but during run time.
|
|
=== increase speech volume ===
|
|
Increase the volume of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== decrease speech volume ===
|
|
Decrease the volume of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== increase speech rate ===
|
|
Increase the rate of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== decrease speech rate ===
|
|
Decrease the rate of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== increase speech pitch ===
|
|
Increase the pitch of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== decrease speech pitch ===
|
|
Decrease the pitch of the speech. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== increase sound volume ===
|
|
Increase the volume of the sound. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
=== decrease sound volume ===
|
|
Decrease the volume of the sound. This is not persistent stored in your ''settings.conf'' but during runtime.
|
|
==== Window Mode ====
|
|
Fenrir supports window mode, a window is a partial area of the screen.
|
|
=== Create Window ===
|
|
To create a window you need to do the following:
|
|
- set a beginning mark (as the start of the window)
|
|
- set an end mark (where the window should end)
|
|
- press ''set window application'' shortcut.
|
|
Now Fenrir ignores anything outside of the window.\\
|
|
=== Remove Window ===
|
|
You can remove the window by pressing ''the clear window application'' shortcut.
|
|
Now Fenrir will read everything on the screen again.
|
|
==== Tracking Modes ====
|
|
Different types of tracking are currently supported
|
|
See section [[#Focus|Focus]] in ''settings.conf'' for more information.
|
|
=== Cursor Tracking ===
|
|
This follows the text cursor. This is the typical way an application works. This is used by:
|
|
* almost any shell such as (Bash, Zsh, sh)
|
|
* vim
|
|
* nano
|
|
* emacs
|
|
* mutt
|
|
* tintin++
|
|
=== Highlight Tracking ===
|
|
In some applications there are no text cursors. In those applications cursor changes are represented by different colors or attributes (underlined or bold). This mode tracks and announce this changes for you. This is used by:
|
|
* wifi-menu
|
|
* dialog
|
|
* alpine
|
|
==== Tutorial Mode ====
|
|
Fenrir provides a Tutorial mode.
|
|
When you enter tutorial mode, sscreen reader commands are intercepted and explained instead of executing them.
|
|
|
|
==== Information ====
|
|
=== Time ===
|
|
Announces the current Time.
|
|
=== Date ===
|
|
Announces the current Date.
|
|
=== Bookmarks ===
|
|
Bookmarks provide quick access to part of the screen without the need to navigate to that area.
|
|
By default Fenrir provides 10 bookmarks. Those can be set and accessed via shortcut.
|
|
This is useful for status lines or other information that the position does not change.
|
|
== set Bookmark X ==
|
|
You need to set the bookmark first. For that you have to set one or two lines for use.
|
|
- Set marks (one or two)
|
|
- press shortcut for ''set bookmark X''. X represents the number 1 - 10.
|
|
== read Bookmark X ==
|
|
If a bookmark is set you can access the area just by pressing the ''bookmark X'' shortcut. X represents the number 1 - 10. Bookmarks are dynamic. That means the content changes with the screen.
|
|
== clear Bookmark X ==
|
|
to remove a bookmark just press the ''clear bookmark X'' shortcut. X represents the number 1 - 10.
|
|
Afterward the bookmark is no longer available.
|
|
=== cursor position ===
|
|
You can get information about the current cursor and its position by using the "cursor position" functionality.
|
|
=== indent current line ===
|
|
Announce the current indention level of the current line. It represents the number of trailing spaces of the line.
|
|
=== current screen ===
|
|
Reads all the current screen from the beginning to the end.
|
|
=== current screen before cursor ===
|
|
Reads current screen from the beginning of the screen to the current cursor position.
|
|
=== current screen after cursor ===
|
|
Read anything after current cursor postion to the end.
|
|
=== cursor read to end of line ===
|
|
Read from the current cursor position to the end of the current line.
|
|
=== cursor column ===
|
|
Read the current X postion of an cursor (column of the current line).
|
|
=== cursor line number ===
|
|
Read the current Y postion of an cursor (line number).
|
|
=== present first line ===
|
|
Reads just the first line. this is maybe useful for status information.
|
|
=== present last line ===
|
|
Presets the last line. This is maybe useful for status information.
|
|
=== last incoming ===
|
|
Repeat the last automatical inomming text.
|
|
===== Input =====
|
|
==== Echo ====
|
|
Fenrir provides different methods of echoing content:
|
|
* Word: Will speak each word after you push space
|
|
* Character: speak any letter you type on the screen
|
|
* Delete Character: speaks the character prior to the cursor when you push backspace
|
|
==== Silence on Key press ====
|
|
==== Spellchecker ====
|
|
Fenrir has a build-in spellchecker, it can invoke automatically while typing or be called by a shortcut.
|
|
Commands to add or remove the current word to the dictionary are included.
|
|
As using the spellchecker is enhanced usage. You will need dictionary aspell-<language>.
|
|
See section [[#General|General]] in ''settings.conf'' for more information.
|
|
=== spell check ===
|
|
Invokes the spellcheck on the word that contains the Review or text cursor.
|
|
=== add word to spell check ===
|
|
Adds the word under the Review or Text cursor to the dictionary.
|
|
=== removes word from spell check ===
|
|
Removes the word under the Review or Text cursor from the dictionary.
|
|
===== Announcements =====
|
|
==== Emoticons ====
|
|
If you want to replace ":)" emoticons with "smile" in speech you can use this feature.
|
|
It can be toggled on or off.
|
|
You can define emoticons in an dictionary, please see Emoticon Dictionary.
|
|
See section [[#General|General]] in ''settings.conf'' to see how to enable or disable this feature.
|
|
|
|
==== Time ====
|
|
Announce the time in an periodic way. So you can track the time more easy.
|
|
You can define 2 different ways of time announcements.
|
|
- periodic
|
|
- on fix minutes
|
|
|
|
Example periodic, every 20 minutes "delaySec=20":
|
|
|
|
[time]
|
|
enabled=True
|
|
presentTime=True
|
|
presentDate=True
|
|
delaySec=20
|
|
onMinutes=
|
|
announce=True
|
|
interrupt=False
|
|
|
|
Example on fix minutes in an hour. example every quarter "delaySec=0" and "onMinutes=00,15,30,45":
|
|
|
|
[time]
|
|
enabled=True
|
|
presentTime=True
|
|
presentDate=True
|
|
#delaySec is repected bevore onMinutes so it need to be set to 0
|
|
delaySec=0
|
|
onMinutes=00,15,30,45
|
|
announce=True
|
|
interrupt=False
|
|
==== Promoted List ====
|
|
Promoted Lists are a nice feature if you are away from your computer or doing more longer tasks.
|
|
you can define a list of words for that you want to hear a sound icon after an period of inactivity.
|
|
Example if the word "chrys" appears after 120 Seconds of inactivity:
|
|
[promote]
|
|
enabled=True
|
|
inactiveTimeoutSec=120
|
|
list=chrys
|
|
See section [[#Promote|Promote]] in ''settings.conf'' for more information.
|
|
==== Punctuation ====
|
|
Fenrir handles punctuation levels and names for you.
|
|
For that job it provides several dicts
|
|
See levelDict
|
|
See punctuationDict
|
|
===== Braille =====
|
|
Fenrir provides Braille support in Version >= 2.0.
|
|
See section [[#Braille|Braille]] in ''settings.conf'' for more information.
|
|
==== braille flush ====
|
|
If an message appers on the Braille device you can flush it to got back to the review- or system cursor
|
|
==== braille pan left ====
|
|
If an line is more longer than your braille device is you can move the view (called panning) to the left.
|
|
So you can read stuff without need to move the review- or system cursor.
|
|
==== braille pan right ====
|
|
If an line is more longer than your braille device is you can move the view (called panning) to the right.
|
|
So you can read stuff without need to move the review- or system cursor.
|
|
==== braille return to cursor ====
|
|
If you finished with reading the line on its braille device using panning, the focus can be returned to the current used cursor by using "return to cursor" command.
|
|
===== Dictionary =====
|
|
You can make use of different kinds of build-in dictionary's.
|
|
A dictionary has a name and list of keys and values separated by :===:
|
|
Example:
|
|
[customDict]
|
|
chrys:===:Chrys is cool
|
|
lollipop:===:lolli
|
|
that means that every instance "chrys" is displayed, speech will say Chrys is cool.
|
|
"lollipop" is spoken as "lolli".
|
|
Before making changes to a dictionary we recommend making a backup of your current dictionary in case future updates overwrite your local changes.
|
|
==== Punctuation ====
|
|
=== Level ===
|
|
The punctuation level dict contains lists with "what punctuation is spoken in what level".
|
|
the default one looks like this:
|
|
[levelDict]
|
|
none:===:
|
|
some:===:.-$~+*-/\@
|
|
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
|
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
|
the level "none" has no values. so it should not speak any punctuation (sadly this is not respected by every TTS system)
|
|
if "some" is the current level the following are spoken: dot dash dollar tilde plus star slash backslash at.
|
|
same for most and all. you can add new levels. if you cycle punctuation levels those are recognized. the default punctuation level is set in settings.conf. default is "some".
|
|
=== Punctuation ===
|
|
The punctuation dictionary "[punctDict]" contains how the punctuation is spoken.
|
|
Example:
|
|
[punctDict]
|
|
_:===:line
|
|
speaks an _ as "line".
|
|
[punctDict]
|
|
_:===:underscore
|
|
speaks an _ as underscore.
|
|
for question mark an ? is appended to the word that the TTS system can announce the question correctly.
|
|
==== Custom ====
|
|
The dict "[customDict]" is just for your own use. it does just replace the key by the value without any special functionality. This might be used to correct phonetic wrongly spoken words,make words more common or just shorter. Or even just for fun :).
|
|
==== Emoticons ====
|
|
The Emoticons dict "[emoticonDict]" contains by default some emoticons. it replaces ":)" by "smile" or "XD" by "loool". So chatting is a little more colorful.
|
|
The special on that dict is that you can toggle the substitution it on or off during run time or in settings.conf. This is useful because while doing programming or other serious work you want here colons and parans not smiles.
|
|
====== Configuration ======
|
|
===== Prepare =====
|
|
===== Settings =====
|
|
You can configure Fenrir in the following places (ordered by priority):
|
|
- /etc/fenrir/settings/settings.conf
|
|
- <sourceTree>/config/settings/settings.conf
|
|
- run with hard coded defaults.
|
|
==== settings.conf syntax ====
|
|
the syntax of the "settings.conf" is really simple and is similar to a "*.ini" file, there are 3 different elements.
|
|
- Sections
|
|
- Settings
|
|
- Comments
|
|
|
|
A section can look like this:
|
|
[Section]
|
|
A setting looks like this:
|
|
settingName=Value
|
|
A comment starts with an #.
|
|
# this is a comment
|
|
|
|
Example:
|
|
[sound]
|
|
# Turn sound on or off:
|
|
enabled=True
|
|
# Select the driver used to play sounds, choices are genericDriver and gstreamerDriver.
|
|
# Sox is default.
|
|
driver=genericDriver
|
|
|
|
|
|
==== Sound ====
|
|
The sound is configured in section ''[sound]''.
|
|
|
|
Turn sound on or off:
|
|
enabled=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Select the driver used to play sounds.
|
|
The genericDriver using Sox is the default.
|
|
|
|
driver=genericDriver
|
|
|
|
Available Drivers:
|
|
* ''genericDriver'' using the generic driver, for Fenrir <1.5 just use ''generic''
|
|
* ''gstreamerDriver'' using the gstreamer, for Fenrir <1.5 just use ''gstreamer''
|
|
|
|
This is the pack of sounds used for sound icons.
|
|
theme=default
|
|
By default we ship two sound packs.
|
|
- ''default'' opus encoded, for newer sox versions
|
|
- ''default-wav'' wav encoded, just for compatibility
|
|
Sound packs are located at /usr/share/sounds/fenrir/
|
|
|
|
Sound volume controls how loud the sounds for your selected sound pack are.
|
|
volume=1.0
|
|
Values: ''0.0'' is quietest, ''1.0'' is loudest.
|
|
|
|
=== Generic Driver ===
|
|
The generic sound driver uses shell commands for play sound and frequencies.
|
|
|
|
''genericPlayFileCommand'' defines the command that is used to play a sound file.
|
|
genericPlayFileCommand=<your command for playing a file>
|
|
''genericFrequencyCommand'' defines the command that is used playing frequencies.
|
|
genericFrequencyCommand=<your command for playing a frequence>
|
|
|
|
The following variable are substituted in ''genericPlayFileCommand'' and ''genericFrequencyCommand'':
|
|
* ''fenrirVolume'' = the current volume setting
|
|
* ''fenrirSoundFile'' = the sound file for an sound icon
|
|
* ''fenrirFrequence'' = the frequency to play
|
|
* ''fenrirDuration'' = the duration of the frequency
|
|
|
|
Example genericPlayFileCommand (default)
|
|
genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile
|
|
Example genericFrequencyCommand (default)
|
|
genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence
|
|
==== Speech ====
|
|
The speech is configured in section ''[speech]''.
|
|
Turn speech on or off:
|
|
enabled=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
# Select speech driver, options are speechdDriver (default), genericDriver or espeakDriver:
|
|
driver=speechdDriver
|
|
#driver=espeakDriver
|
|
#driver=genericDriver
|
|
|
|
Select the driver used to generate speech output.
|
|
|
|
driver=speechdDriver
|
|
|
|
Available Drivers:
|
|
* ''genericDriver'' using the generic driver, for Fenrir <1.5 this is not available
|
|
* ''speechdDriver'' using speech-dispatcher, for Fenrir <1.5 just use ''speechd''
|
|
* ''espeakDriver'' using the espeak directly, for Fenrir <1.5 just use ''espeak''
|
|
|
|
The rate selects how fast Fenrir will speak.
|
|
rate=0.65
|
|
Values: Range Minimum:''0.0'' is slowest, Maximum:''1.0'' is fastest.
|
|
|
|
Pitch controls the pitch of the voice.
|
|
pitch=0.5
|
|
Values: Range Minimum:''0.0'' is lowest, Maximum:''1.0'' is highest.
|
|
|
|
A Pitch for capital letters can be set.
|
|
capitalPitch=0.9
|
|
Values: Range Minimum:''0.0'' is lowest, Maximum:''1.0'' is highest.
|
|
|
|
The Volume controls the loudness of the voice.
|
|
volume=1.0
|
|
Values: Range Minimum:''0.0'' is quietest, Maximum:''1.0'' is loudest.
|
|
|
|
Some speech drivers like speechdDriver can support various modules. these can be set here.
|
|
module=espeak
|
|
Values: Text, Consult speech-dispatcher's configuration to see what modules are available.
|
|
|
|
Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
|
or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
|
voice=
|
|
Values: Text, see your TTS synths documentation what is available.
|
|
|
|
Select the language you want Fenrir to use.
|
|
language=english-us
|
|
Values: Text, see your TTS synths documentation what is available.
|
|
|
|
Read new text as it occurs
|
|
autoReadIncoming=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
=== Generic Driver ===
|
|
The generic speech driver uses shell commands for speech synthisus.
|
|
|
|
''genericSpeechCommand'' defines the command that is executed for creating speech
|
|
The following variables are substituted in ''genericSpeechCommand'':
|
|
* ''FenrirText'' = is the text that should be spoken
|
|
* ''fenrirModule'' = may be the speech module like used in speech-dispatcher, not every TTY needs this
|
|
* ''fenrirLanguage'' = the language to speak in
|
|
* ''fenrirVoice'' = is the current voice that should be used
|
|
* ''fenrirVolume'' = is replaced with the current volume
|
|
* ''fenrirPitch'' = is replaced with the current pitch
|
|
* ''fenrirRate'' = is replaced with the current speed (speech rate)
|
|
|
|
Example genericSpeechCommand (default):
|
|
genericSpeechCommand=espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice "fenrirText"
|
|
|
|
Those are the minimum and maximum values of the TTS system that is used in genericSpeechCommand. They are needed to calculate the abstract range in volume, rate and pitch 0.0 - 1.0.
|
|
|
|
FenrirMinVolume=0
|
|
fenrirMaxVolume=200
|
|
fenrirMinPitch=0
|
|
fenrirMaxPitch=99
|
|
fenrirMinRate=80
|
|
fenrirMaxRate=450
|
|
|
|
The current volume, pitch and rate is calculated like this
|
|
value = min + [volume,pitch,rate] * (min - max )
|
|
==== Braille ====
|
|
Braille is a WIP and not ready yet.
|
|
Braille support can be configured in section ''[braille]''.
|
|
|
|
Turn braille on or off:
|
|
enabled=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
Select the driver used for communication with an braille device.
|
|
driver=brlapiDriver
|
|
Values: Text, available Driver
|
|
Available Drivers:
|
|
* ''brlttyDriver'' using brltty for braille communication, for Fenrir <1.5 just use ''brltty''
|
|
|
|
The braille layout can be configured here
|
|
layout=en
|
|
Values: Text, see braille driver for layouts.
|
|
|
|
To what should the flush timeout relate to
|
|
flushMode=word
|
|
Values: Text, an flushMode
|
|
Existing flushModes:
|
|
* ''word'' = flush after (number of words to display) * seconds
|
|
* ''char'' = flush after (number of chars to display) * seconds
|
|
* ''fix'' = flush after X seconds
|
|
* ''none'' = no automatic flush (manual via shortcut)
|
|
|
|
Seconds to flush (see flushMode)
|
|
flushTimeout=3
|
|
Values: Integer, in Seconds or ''-1'' = no automatic flush (manual via shortcut)
|
|
The total flush time calculates in relation to flushMode.
|
|
|
|
How should the braille cursor focused be tracked?
|
|
cursorFocusMode=page
|
|
Values: Text, an existing cursor focus mode
|
|
Available cursor focus modes:
|
|
* ''page'' = if cursor cross the border move to next page and start at begin
|
|
* ''fixCell'' = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
|
|
|
|
|
Define the cell on the Braille device where Fenrir should scroll and keep the cursor
|
|
fixCursorOnCell=-1
|
|
Values: Integer
|
|
* ''0'' = first cell on device,
|
|
* ''-1'' = last cell on device
|
|
* ''>0'' = fix cell number
|
|
|
|
What cursor should fenrir show on braille device
|
|
cursorFollowMode=review
|
|
Values: Text, an exsiting cursor following mode.
|
|
Existing cursor following mode:
|
|
* ''none'' = no automatic toggle command used
|
|
* ''review'' = priority to review
|
|
* ''last'' = follow last used cursor
|
|
|
|
number of cells in panning (horizontal). How many cell should be panned on press the routing key?
|
|
panSizeHorizontal=0
|
|
Values: Integer,
|
|
* ''0'' = display size
|
|
* ''>0'' number of cells
|
|
==== Screen ====
|
|
The settings for screens, (TTY, PTY) is done in the ''[screen]'' section.
|
|
|
|
The driver that gets the information from a screen:
|
|
driver=vcsaDriver
|
|
Available Drivers:
|
|
* ''vcsaDriver'' using the VCSA driver (for TTYs), for Fenrir <1.5 just use ''vcsa''
|
|
The encoding of the screen
|
|
encoding=cp850
|
|
Values:''cp850'' is used for Western languages like USA or Europe.
|
|
|
|
The driver updates Fenrir with changes upon the screen.
|
|
screenUpdateDelay=0.05
|
|
Values: in Seconds
|
|
|
|
If you want Fenrir to not be active on any screen. That can have different reasons. Maybe an X server or Wayland is running on that screen. You can make Fenrir ignore it or multiple screens seperated by '','' with:
|
|
suspendingScreen=
|
|
Values: Depends on driver:
|
|
* VCSA: the number of the TTY. TTY6 is ''6''.
|
|
Example ignore TTY1 and TTY2:
|
|
suspendingScreen=1,2
|
|
|
|
There is also the ability to let Fenrir auto detect screens that running an X. So Screens running an GUI are ignored.
|
|
autodetectSuspendingScreen=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
==== Keyboard ====
|
|
The settings for keyboard and input related configuration is located in the section ''[keyboard]'' of the ''settings.conf'' file.
|
|
|
|
Select the driver used to for grabbing the keybord and recieve shortcuts.
|
|
driver=evdevDriver
|
|
Values: Text, available Driver
|
|
Available Drivers:
|
|
* ''evdevDriver'' uses the evdev input system of linux, for Fenrir <1.5 just use ''evdev''
|
|
|
|
You can let Fenrir know about what input devices are to be used.
|
|
device=ALL
|
|
Values:
|
|
* ''ALL'' use all devices with key capabilitys.
|
|
* ''NOMICE'' Exclude mices from handling.
|
|
* ''<Device Name>'' just use the device with the given name.
|
|
|
|
Gives Fenrir exclusive access to the keyboard and lets it control keystrokes. This is needed to consume the Fenrir related shortcuts.
|
|
grabDevices=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
The following just make sense if you are using an second screenreader and just wanna have some hooked events. Fenrir ignores all shortcuts then.
|
|
ignoreShortcuts=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
The current keyboard layout used for shortcuts.
|
|
keyboardLayout=desktop
|
|
Values: A absolute Path to an Keyboard definition file or a Filename without extension located in ''/etc/fenrir/keyboard''
|
|
|
|
Announce chars while typing.
|
|
charEcho=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
Announce deleted chars
|
|
charDeleteEcho=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Announce word after pressing space
|
|
wordEcho=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
Interrupt speech on any keypress
|
|
interruptOnKeyPress=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
You can filter the keys on that the speech should interrupt
|
|
interruptOnKeyPressFilter=
|
|
Values: (List) empty = all keys, otherwhise interrupt on given keys
|
|
|
|
The timeout that is used for double tap shortcuts
|
|
doubleTapTimeout=0.2
|
|
Values: Seconds
|
|
==== General ====
|
|
Overall stuff can be configured in section ''[general]''.
|
|
|
|
Set the current debug level:
|
|
debugLevel=1
|
|
Values: off=0, error=1, warning=2, info=3
|
|
|
|
the current used punctuation and dict file:
|
|
punctuationProfile=default
|
|
Values: Text, see available profiles in ''/etc/fenrir/punctuation'' or in ''sourceTree/config/punctuation''
|
|
|
|
The current used punctuation level.
|
|
punctuationLevel=some
|
|
Values: Text, See available levels in the used punctuation file.
|
|
|
|
Respect pause for punctuations.
|
|
respectPunctuationPause=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Add a pause on Line break.
|
|
newLinePause=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
The number of available cipboards:
|
|
numberOfClipboards=10
|
|
Values: Integer, 1 - 999
|
|
|
|
Replace emoticons like :) or ;) with there names.
|
|
emoticons=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Define the current fenrir keys.
|
|
fenrirKeys=KEY_KP0,KEY_META,KEY_INSERT
|
|
Values, Text list, separated by comma.
|
|
|
|
Define the current script keys.
|
|
scriptKey=KEY_COMPOSE
|
|
Values, Text list, separated by comma.
|
|
|
|
The timeformat that is used for output (time command)
|
|
timeFormat=%H:%M:%P
|
|
Values: see python specification for [[https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior|datetime.strftime]]
|
|
|
|
The date format that is used for output (date command).
|
|
dateFormat=%A, %B %d, %Y
|
|
Values: see python specification for [[https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior|datetime.strftime]]
|
|
|
|
Enable or Disable the spellchecker while typing.
|
|
autoSpellCheck=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
The used dictionary for the spellchecker.
|
|
spellCheckLanguage=en_US
|
|
Values: Text, see aspell dictionary's.
|
|
|
|
Folder Path for your scripts "scriptKey" functionality.
|
|
scriptPath=/usr/share/fenrir/scripts
|
|
Values: Text, Existing path on file system.
|
|
|
|
Overload commands or create new one without changing Fenrir default.
|
|
commandPath=/usr/share/fenrir/commands
|
|
Values: Text, Existing path on file system.
|
|
Subfolders in commandPath are:
|
|
* ''commands'' = to create shortcut commands
|
|
* ''onInput'' = executed while typing
|
|
* ''onScreenChange'' = executed on change the screen (change from TTY4 to TTY6)
|
|
* ''onScreenUpdate'' = executed when the screen is captured
|
|
|
|
==== Focus ====
|
|
The basic focus configuration is done in section ''[focus]''.
|
|
Follow the text cursor:
|
|
cursor=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Follow highlighted text changes (Highlight Tracking)
|
|
highlight=False
|
|
Values: on=''True'', off=''False''
|
|
==== Review ====
|
|
Configurations for the review mode are done in section ''[review]''.
|
|
|
|
If "next word/ char" or "prev word/char" create an linebreak announce it.
|
|
lineBreak=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
If "next word/ char" or "prev word/char" can not be done because you reached the end of the screen announce it.
|
|
endOfScreen=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Leave the review mode when pressing a key
|
|
leaveReviewOnKeypress=False
|
|
Values: on=''True'', off=''False''
|
|
|
|
Leave the review mode when changing the screen (From TTY3 to TTY4)
|
|
leaveReviewOnScreenChange=True
|
|
Values: on=''True'', off=''False''
|
|
==== Promote ====
|
|
"Promoted Lists" are configured in section ''[promote]''.
|
|
Turn Promoted Lists" on or off:
|
|
enabled=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
The minimum time interval for inactivity that activates promoting.
|
|
By default it promotes after 120 Seconds inactivity.
|
|
inactiveTimeoutSec=120
|
|
Values: in Seconds
|
|
|
|
Define the list of promoted words comma seperated.
|
|
list=
|
|
Values: text (comma seperated)
|
|
Example to promote the word "nickname" or an bash prompt:
|
|
list=nickname,$:,#:
|
|
|
|
==== Time ====
|
|
The automated time announcement is configured in section ''[time]''.
|
|
Time announcement is disabled by default.
|
|
Turn time announcement on or off:
|
|
enabled=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Should the time be announced:
|
|
presentTime=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Should the date be announced (just on date change):
|
|
presentDate=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Announce after a given period of seconds
|
|
delaySec=0
|
|
Value: in Seconds, 0 = Deactivated
|
|
|
|
Announce after to fix minutes in an hour. if delaySec is >0 onMinutes is ignored.
|
|
onMinutes=00,30
|
|
Example every 15 minutes:
|
|
onMinutes=00,15,30,45
|
|
|
|
Just play an soundicon (not interrupting)
|
|
announce=True
|
|
Values: on=''True'', off=''False''
|
|
|
|
Interrupt current speech for time announcement
|
|
interrupt=False
|
|
Values: on=''True'', off=''False''
|
|
====== Customization ======
|
|
===== Scripting =====
|
|
Scripts can be in any language, bash, python, sh or others. Place your scripts in the directory /usr/share/fenrir/scripts/ (the path is configurable in settings.conf).
|
|
The script key is the applications key. Usually this key can be found on the keyboard located just left of the right most control key.
|
|
When you name a script, the key name appears in the script seperated by the sequence __-__. So, for example, if you have a python weather script you want assigned to the script key plus the letter w you would name the script /usr/share/fenrir/scripts/weather__-__key_w.py
|
|
Then, to access the script, simply press the script key and the letter w.
|
|
Scripts must be executable. So, make sure to chmod 755 your script when you place it in the scripts directory.
|
|
===== Commands =====
|
|
You can place your own commands in "/usr/share/fenrir/commands" (path is configurable in settings.conf).
|
|
Commands are python files with an special scheme. You can assign them to an shortcut using the filename without extension or place them in an hook trigger like OnInput or OnScreenChange. For deeper information see developer guide.
|
|
Good Examples: [[https://github.com/chrys87/fenrir/blob/master/src/fenrir/commands/commands/date.py|"date.py"]] (announce the Date), [[https://github.com/chrys87/fenrir/blob/master/src/fenrir/commands/commands/shut_up.py|"shut_up.py"]] (interrupt output)
|
|
the basic scheme for an command is the following:
|
|
|
|
from core import debug
|
|
|
|
class command():
|
|
def __init__(self):
|
|
pass
|
|
def initialize(self, environment):
|
|
self.env = environment
|
|
def shutdown(self):
|
|
pass
|
|
def getDescription(self):
|
|
return _('No description found')
|
|
def run(self):
|
|
pass
|
|
def setCallback(self, callback):
|
|
pass
|
|
|
|
* [[https://github.com/chrys87/fenrir/blob/master/src/fenrir/commands/command_template.py|Template is here]]
|
|
* The class needs to have the name "command".
|
|
* "initialize" is running once while loading the command.
|
|
* "shutdown" is running on unload the command (like quit fenrir)
|
|
* "getDescriptsion" just returns an string. That Sting is used in Tutorial Mode.
|
|
* "run" is executed when the command is invoked. (shortcut is pressed, or trigger is running)
|
|
* setCAllback is currently not used. and has no functionality yet.
|
|
|
|
|
|
====== Trouble Shooting ======
|
|
Fenrir does not start
|
|
- Did you installed all dependencys
|
|
- Try master, i changed many things for make it compatible to more systems
|
|
Fenrir does not consume the shortcuts
|
|
- make sure you have python3-evdev installed
|
|
- use latest Fenrir version
|
|
No Sound:
|
|
- run script to configure pulse for Fenrir ''tools/configure_pulse.sh'' (once as user and once as root, then restart)
|
|
- use ALSA
|
|
- configure pulse systemwide
|