User Tools

Site Tools


playground:playground

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
playground:playground [2019/11/18 12:54]
127.0.0.1 external edit
playground:playground [2020/04/21 18:58]
didier
Line 1: Line 1:
 +====== Fenrir User Manual for Slint users ======
 +
 +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.
 +
 +==== Credit and intended audience ==== 
 +
 +This document is just a customization for Slint of the genuine [[https://​github.com/​chrys87/​fenrir/​blob/​master/​docu/​user.txt|Fenrir User Manual]] mostly written by Chrys, main developer of Fenrir.  ​
 +
 +It has been adapted to its intended audience: end users of Fenrir on Slint where it is already installed, thus concentrates on its setting and usage. You will find more information about its features, installation and how customize and troubleshoot it and contribute to its development on [[https://​github.com/​chrys87/​fenrir|the Fenrir Git repository]].
 +
 +==== Getting started with Fenrir ====
 +
 +Fenrir is a screen reader, that reads aloud the text displayed on the screen and allows to review it, like espeakup and speechd-up also shipped in Slint. \\
 +In Slint it is mostly used in console mode, and uses the synthesizers and voices provided by Speech Dispatcher. \\
 +Keyboard shortcuts are bound to commands to read the screen, review it and perform other actions like modify the settings on the fly, switch languages, copy and paste text, provide miscellaneous information. \\
 +=== Configuration file ===
 +The permanent settings are recorded in the configuration file /​etc/​fenrirscreenreader/​settings.conf,​ that is heavily commented. \\
 +These settings are described in this user guide.
 +
 +To start Fenrir once type as root:
 +  service start fenrir
    
-This page is being written ​and not yet complete+To enable auto start on system boot type as root: 
 +  speak-with fenrir 
 +and confirm that you want to have it started at boot time.
  
-===== Get acquainted with Slint =====+If you are using Fenrir for the first time you may want to take a look at these resources:​ 
 +  * [[#​Keybindings|Keybindings]] 
 +  * [[#Tutorial Mode|Tutorial Mode]]
  
-==== Introduction ​==== +====== Keybindings ====== 
-This document is intended to allow people who have already used another "​Unix-like"​ system to get quickly acquainted with +  
-Slint. We assume that the reader+Two series of key bindings are provided
-  ​* knows the main Unix commands and the associated concepts, +  - the [[#Desktop layout|Desktop layout]] uses numeric keypad ​(here abbreviated ​as keypad). 
-  * knows how-to edit text file (such as a configuration file+  ​- the [[#Laptop layout|Laptop layout]] for keyboards that do not have numeric keypad.
-  ​* can read simple shell script.+
  
-==== Installationconfiguration,​ startup ​====+The layout is set in the configuration file in the section [[#​Keyboard|Keyboard]].  
 +=== Fenrir Key === 
 +The Fenrir Key is for invoking screen reader commands. Fenrir can utilize more than one FenrirKey at the same time. 
 +By default the following keys are used: 
 +  - Insert 
 +  - KeyPad Insert 
 +  - Meta (SuperWindows)  
 +  
 +==Script Key === 
 +To invoke "​Scripts"​ the Script Key is mandatory. The shortcut is encoded in the filename of the script. See [[#​Scripting|Scripting]]
  
-=== Installation ===+By default the Script Key is Compose (the key between AltGr and Ctrl at the right of the space bar).
  
-The installation media can be obtained ​on Slint's repository ​(see above).+For instance, pressing Script Key + L switches between the languages possibly listed in the configuration file. Feel free to write you own scripts to expand Fenrir features and share them! 
 +=== Desktop Layout === 
 +^Shortcut ​  ​^Command ^ 
 +^[[#​General|General]]^ 
 +|CTRL|[[#​shut up|shut up (interrupts speech)]]| 
 +|FenrirKey + Q|[[#quit Fenrir|quits fenrir]]| 
 +^[[#Review modes|Review modes]]^ 
 +|FenrirKey + KeyPad dot|[[#exit review|exit review]]| 
 +|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 + 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]]| 
 +^[[#​Tutorial mode|Tutorial mode]]^ 
 +|FenrirKey + H|[[#​Tutorial Mode|toggle tutorial mode]]| 
 +^[[#​Information|Information]]^ 
 +|FenrirKey + T|[[#​Time|Announce time]]| 
 +|FenrirKey + T +T|[[#​Date|Announce date]]| 
 +|FenrirKey + CTRL + <​n>​|[[#​clear Bookmark <​n>​|clear bookmark number <​n>​]]| 
 +|FenrirKey + Shift + <​n>​|[[#​set Bookmark <​n>​|set bookmark number <​n>​]]| 
 +|FenrirKey + <​n>​|[[#​read Bookmark <​n>​|read bookmark number <​n>​]]| 
 +|KeyPad dot|[[#​cursor position|cursor position]]| 
 +|<​Unbound>​|[[#​cursor column|cursor column]]| 
 +|<​Unbound>​|[[#​cursor line number|cursor line number]]| 
 +^[[#Screen Interaction|Screen Interaction]]^ 
 +|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 + P|[[#import clipboard from file|import clipboard from file]]| 
 +|FenrirKey + Alt + Shift +C|[[#​export clipboard to file|export clipboard to file]]| 
 +|FenrirKey + CTRL + Shift + X|[[#Remove Marks|remove marks]]| 
 +|FenrirKey + X|[[#Set mark|set mark]]| 
 +|FenrirKey + Shift + X|[[#Get text between marks|announce marked text]]| 
 +|<​Unbound>​|export clipboard to X| 
 +^[[#Window mode|Window mode]]^ 
 +|FenrirKey + KeyPad Slash|[[#​Create Window|set window application]]| 
 +|2 * FenrirKey + KeyPad Slash|[[#​Remove Window|clear window application]]| 
 +|KeyPad Plus|[[#​last incoming|read last incoming]]| 
 +^[[#Quick Settings: toggle or switch|Quick settings: toggle or switch]]^ 
 +|Compose + L |[[#switch language|switch language]]| 
 +|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]]| 
 +^[[#Quick Settings: speech and sound|Quick Settings: speech and sound]]^ 
 +|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 + Up|increase Alsa volume| 
 +|FenrirKey + CTRL + Down|decrease Alsa volume| 
 +^[[#​Spellchecker|Spell checker]]^ 
 +|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]]| 
 +=== Laptop Layout === 
 +^Shortcut ​  ​^Command ^ 
 +^[[#​General|General]]^ 
 +|FenrirKey + H|[[#​Tutorial Mode|toggle tutorial mode]]| 
 +|CTRL|[[#​shut up|shut up (interrupts speech)]]| 
 +^[[#Review modes|Review modes]]^ 
 +|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 + Shift + 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]]| 
 +|FenrirKey + CTRL + ALT + K|[[#review current word phonetic|reviews current word phonetic]]| 
 +|FenrirKey + CTRL + ALT + J|[[#review previous word phonetic|reviews previous word phonetic]]| 
 +|FenrirKey + CTRL + ALT + L|[[#review next word phonetic|reviews next word phonetic]]| 
 +|FenrirKey + comma|[[#​review current character|reviews current character]]| 
 +|FenrirKey + M|[[#review previous character|reviews previous character]]| 
 +|FenrirKey + dot|[[#​review next character|reviews next character]]| 
 +|FenrirKey + CTRL + ALT + comma|[[#​review current character phonetic|reviews current character phonetic]]| 
 +|FenrirKey + CTRL + ALT + M|[[#review previous character phonetic|reviews previous character phonetic]]| 
 +|FenrirKey + CTRL + ALT + 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]]| 
 +|FenrirKey + I +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]]| 
 +^[[#​Tutorial mode|Tutorial mode]]^ 
 +|FenrirKey + H|[[#​Tutorial Mode|toggle tutorial mode]]| 
 +^[[#​Information|Information]]^ 
 +|FenrirKey + T|[[#​Time|Announce time]]| 
 +|FenrirKey + T +T|[[#​Date|Announce date]]| 
 +|FenrirKey + CTRL + <​n>​|[[#​clear Bookmark <​n>​|clear bookmark number <​n>​]]| 
 +|FenrirKey + Shift + 1|[[#set Bookmark <​n>​|set bookmark bumber <​n>​]]| 
 +|FenrirKey + 1|[[#read Bookmark <​n>​|bookmark number <​n>​]]| 
 +|<​Unbound>​|[[#​cursor column|cursor column]]| 
 +|<​Unbound>​|[[#​cursor line number|cursor line number]]| 
 +^[[#Screen Interaction|Screen Interaction]]^ 
 +|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 + F5|[[#​import clipboard from file|import clipboard from file]]| 
 +|FenrirKey + Alt + Shift +C|[[#​export clipboard to file|export clipboard to file]]| 
 +|FenrirKey + CTRL + Shift + X|[[#Remove Marks|remove marks]]| 
 +|FenrirKey + X|[[#Set mark|set mark]]| 
 +|FenrirKey + Shift + X|[[#Get text between marks|announce marked text]]| 
 +|<​Unbound>​|export clipboard to X| 
 +^[[#Window mode|Window mode]]^ 
 +|FenrirKey + CTRL + 8|[[#Create Window|set window application]]| 
 +|2 * FenrirKey + CTRL + 8|[[#Remove Window|clear window application]]| 
 +|FenrirKey + Semicolon|[[#​last incoming|read last incoming]]| 
 +^[[#Quick Settings: toggle or switch|Quick settings: toggle or switch]]^ 
 +|Compose + L |[[#switch language|switch language]]| 
 +|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]]| 
 +|FenrirKey + T +T|[[#​Date|Announce date]]| 
 +^[[#Quick Settings: speech and sound|Quick Settings: speech and sound]]^ 
 +|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 + Up|increases Alsa volume| 
 +|FenrirKey + CTRL + Down|decreases Alsa volume| 
 +^[[#​Spellchecker|Spell checker]]^ 
 +|FenrirKey + S|[[#spell check|spell check]]| 
 +|FenrirKey + S +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]]| 
 +==== 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 from the text cursor. ​ Attention: after using the review mode, the review cursor will stay open until you use the ''​exit review''​ shortcut. \\ 
 +Think when using clipboard operations and similar. The review cursor is always preferred over the text cursor. \\ 
 +Fenrir sounds a bell sound if the used review command jumps to another line or end of 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. 
 +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 a mark: 
 +  - navigate with review or textcursor to the position you want to set the mark. Attention: if a review cursor is set, that is the 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 methods to interact with the current screen. 
 +=== forward keypress === 
 +This just forwards the next shortcut to the screen Fenrir shortcut or not. This is useful if the currently pressed shortcut is also in use by Fenrir. 
 +=== Clipboard === 
 +Fenrir provides a clipboard with multible items represented by a list. You navigate throught the list and paste the selected clipboard. 
 +== copy marked to clipboard == 
 +To copy something 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 the first item on your clipboard. 
 +== clear clipboard == 
 +You can remove all items from the current clipboard by ''clear clipboard''​ functionality. 
 +== first clipboard == 
 +This moves quick to the first item of the clipboard. 
 +== last clipboard == 
 +This moves quick to the last item of the clipboard. 
 +== previous clipboard == 
 +Go to previous item in the clipboard. 
 +== next clipboard == 
 +Go to next item on the clipboard.  
 +== read current clipboard == 
 +Read the content of the current item of the clipboard. 
 +== paste clipboard == 
 +Pass whatever item is currently selected by first, last, prev or next clipboard commands. 
 +if no special clipboard is selected the (last copiedis used. 
 +== export clipboard to file == 
 +This allows you to export the current clipboard to a configurable filepath. This is useful to share the clipboard with a graphical desktop. 
 +== import clipboard from file == 
 +Import a clipboard from a configurable file. This is useful to share the clipboard with a graphical desktop. 
 +==== Quick Settings: toggle or switch ==== 
 +Fenrir provides shortcuts to change settings temporarily and on the fly without the need to permanently change the ''​settings.conf''​ file. 
 +=== switch language === 
 +switch between the languages listed in the line beginning with langages= in ''​setting.conf''​ during run time. The next language after the current one will be used.   
 +=== 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 a 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 what is automatically 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. 
 +==== Quick Settings: speech and sound ==== 
 +=== 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 announces these changes for you. This is used by:  
 +    * wifi-menu 
 +    * dialog 
 +    * alpine 
 +==== Tutorial Mode ==== 
 +Fenrir provides a Tutorial mode.  
 +When you enter tutorial mode, screen reader commands are intercepted ​ and explained instead of executing them. ''​Arrow up''​ and ''​Arrow Down''​ let you navigate through a list of all available commands with shortcuts and description. Pressing escape leaves the tutorial mode
  
-Slint provides a text installer, the document Slint-HOWTO presents +==== Information ==== 
-the installation process.+=== 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 the area. 
 +By default Fenrir ​provides ​10 bookmarks. Those can be set and accessed via shortcut. 
 +This is useful for status lines or other information where the position does not change. 
 +== set Bookmark <n> == 
 +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 <​n>''​. <n> represents the number 1 - 10 (set bookmark 0 for the tenth bookmark). 
 +== read Bookmark <n> == 
 +If bookmark is set you can access the area just by pressing the ''​bookmark <​n>''​ shortcut. <n> represents the number 1 - 10. Bookmarks are dynamic. That means the content changes with the screen.  
 +== clear Bookmark <n> == 
 +to remove a bookmark just press the ''​clear bookmark <​n>''​ shortcut. ​ <n> represents the number 1 - <​n>​. 
 +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 indent 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 position 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 position of a cursor (column of the current line). 
 +=== cursor line number === 
 +Read the current Y position of a 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 automatically incoming ​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 built-in spellcheckerit 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 a dictionary, please see Emoticon Dictionary. 
 +See section [[#​General|General]] in ''​settings.conf''​ to see how to enable or disable this feature.
  
-The ISO images include a polyglot and accessible installers, which also completes the system configuration:​ choosing the +==== Time ==== 
-language, the keyboard layout and creating ordinary users.+Announce the time at periodical incrementsTo track the time easily. 
 +You can define 2 different ways of time announcements. 
 +  - periodic 
 +  - on fix minutes
  
-=== Configuration ​post-installation ===+The settings proposed below can be implemented editing in the [[#Configuration ​file|configuration file]]
  
-The tasks of configuration ​and administration must be carried out as +Example periodic, every 20 minutes "​delaySec=20":​ 
-rootIf you are logged ​in as a normal usertype ''​su'​' (to obtain root + 
-privileges) or ''​su -'' ​(to become root)The ''​sudo command''​, although +  [time] 
-available, is rarely ​used to administer Slackware+  enabled=True 
-  ​* To create "​ordinary"​ userstype ''​adduser''​ +  presentTime=True 
-  * To change ​the font for the console type ''​setconsolefont''​ +  presentDate=True 
-  * To change ​the console keymap edit /etc/rc.d/rc.keymap and make it executable +  delaySec=20 
-  ​* To change the LANG edit /etc/profile.d/lang.sh and case occurring ​/etc/profile.d/lang.cshNotein Slackware /​bin/​sh ​is a symlink ​to /bin/bash+  onMinutes= 
-  * To modify ​the keyboard settings ​for (in graphical mode), copy usr/​share/​X11/​xorg.conf.d/​90-keyboard-layout.conf to /etc/X11/xorg.conf.dhen edit the copyThe file /​etc/​X11/​xkb/​rules/​evdev.lst lists all known alues for XkbModelXkbLayoutXkbVariant and XkbOptions under the respective headings ​''​! model'',​ ''​! layout'',​ ''​! variant''​ and ''​! option''​ +  announce=True 
-  * You can re-run the setup scripts (already ​used at the end of installation) using the command ​''​pkgtool'', ​menu entry ''​Setup''​.+  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 respected before 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 performing more longer ​tasks
 +you can define a list of words which you want to hear a sound icon for after a 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. 
 +===== Dictionary ===== 
 +You can make use of different kinds of built-in dictionary'​s. 
 +A dictionary has a name and list of keys and values separated by :===: 
 +Example to be set in the [[#​Configuration file|configuration file]] 
 +  [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 ==== 
 +The default punctuation settings ​are recorded ​in thd directory /​etc/​fenrirscreenreader/​punctuation/​default.conf 
 +=== 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 they are recognized. the default punctuation level is set in settings.conf. The 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 just replace the key with the value without any special functionality. This might be used to fix incorrectly spoken words, make words more common, shorter or just for fun. :) 
 +==== Emoticons ==== 
 +The Emoticons dictionary "​[emoticonDict]"​ by default contains some emoticons. it can replace ":​)"​ with "​smile" ​or "​XD"​ with "​loool"​ Making chat more colorful. 
 +A nice feature with this dictionary ​ is that you can toggle the substitution on or off during run time or in settings.conf. This is useful because while doing programming or other serious work you want to hear colons and perryns not smiles. 
 +====== Configuration ====== 
 +You can configure Fenrir in the following places (ordered by priority):​ 
 +  - Commandline Parameters ​''​-o'' ​see [[#Set settings options|Set settings options]] 
 +  - /​etc/​fenrirscreenreader/​settings/​settings.conf see [[#​Settings|Settings]] 
 +  - hard coded defaults 
 +===== Commandline Arguments ===== 
 +==== Set settings options ==== 
 +You can specify options that overwrite the setting.conf. 
 +This is done with ''​-o <list of options>'' ​parameter. 
 +The list of options have the following syntax 
 +  fenrir -o "​section#​setting=value;​section#​setting=value"​ 
 + 
 +For example changing the sound driver to gstreamer and disabling Braille ​  
 +  fenrir -o "​sound#​driver=gstreamerDriver;​braille#​enabled=False=False"​ 
 +or change the debug level to verbose 
 +  fenrir -o "​general#​debugLevel=3"​ 
 +You can find the available ​sections and variables here [[#​Settings]] 
 +See Syntax [[#​settings.conf syntax]] 
 +==== settings.conf syntax ==== 
 +the syntax of the [[#​Settings|settings.conf]] is quite simple and similar to a "​*.ini"​ filethere are 4 different elements.  
 +  - Sections 
 +  - Settings 
 +  - Values 
 +  - Comments 
 + 
 +A comment starts with a # and is ignored by Fenrir. 
 +  # this is a comment 
 +To group settings we have sections. 
 +A section can look like this: 
 +  [Section] 
 +A setting looks like this: 
 +  settingName=Value 
 + 
 +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 
 +     
 +===== Settings ===== 
 +==== 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''​ 
 + 
 +These are 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/fenrirscreenreader/ 
 + 
 +Sound volume controls how loud the sounds for your selected sound pack are. 
 +  volume=1.
 +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 variables 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 ==== 
 +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 
 + 
 +This Selects the driver used to generate speech output. 
 + 
 +We recommend top keep the default in Slint to benefit of all available synthesizers and associated voices 
 + 
 +The rate selects how fast Fenrir will speak 
 +  rate=0.
 +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. 
 + 
 +The Module sets here selects the synthesizer ​to use by speech-dispatcher. If not set, the one set in /etc/speech-dispatcher/speechd.conf will be used\\ 
 +TO list the available modulestype: 
 +  spd-list -s 
 +To be able to switch languages on the fly, set below a module that supports all languages between which you want to be able to switch\\ 
 +To make this choice type: 
 +  spd-list 
 +Example of module setting: 
 +  module=espeak-ng 
 + 
 +Voice selects the voice you want to useThis setting won't hold if you switch languages on the fly (see below) or also set the language. \\ 
 +To find out which voices are available, for a given module, type: 
 +  spd-say -o <​module>​ -L 
 +For instance: 
 +  spd-say -o rhvoice -L 
 +If you use the module espeak-ng or espak-ng-mbrola-generic , you can also run: 
 +  espeak-ng-list-voices 
 +Example using the pico module: 
 +  voice=virginie 
 + 
 +Languages ​lists the languages among which to switch pressing: 
 +  Compose+l 
 +The Compose key is the one between AltrGr and Ctrl on the right of the space bar. \\   
 +For the module in use, the languages available can be listed with typing: 
 +  spd-list -ls <​module>​ 
 +For instance: 
 +  spd-list -ls espeak-ng-mbrola-generic 
 +Be careful: ​all languages listed below should be provided by the module in use, else switching languages on the fly won't be possible. ​ Example using the pico module: 
 +  languages=en-GB fr-FR es-ES it-IT 
 + 
 +You can also set the language to use by default, which doesn'​t need to be listed among the ones you might want to switch (but then you will need to restart fenrir to get it back). \\ 
 +It will supersede the voice that you might have also set. Example using the pico module: 
 +  language=de-DE 
 + 
 +Read new text as it occurs 
 +autoReadIncoming=True 
 +Values: on=''​True'',​ off=''​False''​ 
 + 
 +==== Screen ==== 
 +The settings ​for screens(TTYPTY) are configured in the ''​[screen]'' ​section. 
 + 
 +The driver to get the information from the 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 on the screen. 
 +  screenUpdateDelay=0.05 
 +Values: in Seconds 
 + 
 +If you want Fenrir to not be active on any screen for various 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 are running an X server. So Screens running an GUI can be 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 for grabbing keybord input and for recieving 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 capabilities. 
 +  * ''​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 intercept Fenrir related shortcuts. 
 +  grabDevices=True 
 +Values: on=''​True'', ​off=''​False''​ 
 + 
 +The following makes sense if you are using a second screenreader and want to have some hooked eventsFenrir ignores all shortcuts then.  
 +  ignoreShortcuts=False 
 +Values: on=''​True'',​ off=''​False''​ 
 + 
 +The current keyboard layout used for shortcuts. 
 +  keyboardLayout=desktop 
 + ​Values:​ An absolute Path to a Keyboard definition file or a Filename without extension located in  ''/​etc/​fenrir/​keyboard''​ 
 +  
 +Announce characters while typing. 
 +  charEcho=False 
 +Values: on=''​True'',​ off=''​False''​
  
-Slint includes the main text editors such as pico, nano, elvis and vim +Announce deleted characters 
-and file managers mc and thunar and, of course, all common utilities and +  ​charDeleteEcho=True 
-shellsuseful to configure and administer the system.+Values: on=''​True''​off=''​False''​
  
-In general, Slint does not prejudge how the system will be used. It is up +Announce word after pressing space 
-to the administrator to customize it for its intended usage by editing the +  ​wordEcho=False 
-configuration files located in /etc or its sub-directories. It helps to read the comments +Values: on=''​True'',​ off=''​False''​
-in scripts for management of services located in /etc/rc.d as well as in the +
-configuration files.+
  
-=== Startup ===+Interrupt speech on any keypress 
 +  interruptOnKeyPress=False 
 +Values: on=''​True'',​ off=''​False''​
  
-At first startup after installation your system will be in "​console"​ mode, +You can filter the keys that speech should interrupt ​ 
-without a GUI. If you prefer to start in graphical mode, replace +  ​interruptOnKeyPressFilter= 
-"id:3:​initdefault:"​ with "​id:​4:​initdefault:" ​(runlevel 4 instead of 3in +Values: (Listempty = all keys, otherwise interrupt with specified keys
-the file /​etc/​inittab+
  
-Otherwise, to switch from console to graphical mode, choose first your +The timeout that is used for double tap shortcuts 
-window manager or desktop by default through command ''​xwmconfig''​ either as +  ​doubleTapTimeout=0.2 
-root (for all) or as ordinary user (for that user). Then type ''​startx'' ​to +Values: Seconds 
-start this window manager or desktop from the console after system startup.+==== General ==== 
 +Overall settings can be configured from the section ​''​[general]''​.
  
-In Slint the run levels configured in /​etc/​inittab are+Set the current debug level
-  ​* 0: shutdown +  ​debugLevel=
-  * 1: single user +Valuesoff=0, error=1, warning=2, info=3
-  * 3multi user (default level) +
-  * 4: idem 3, but with a sessions manager for X +
-  * 7: reboot+
  
-At these levels correspond scripts ​in /etc/rc.d+the current punctuation and dict file in use
-  ​* rc.S runs at startupit initializes the system, checks then mount the file systems. +  ​punctuationProfile=default 
-  * rc.M in multi user mode starts most services (daemons launched by scripts ​in /etc/rc.d if executable). +Values: Textsee available profiles ​in ''​/etc/fenrir/​punctuation'' ​or in ''​sourceTree/​config/​punctuation''​
-  * rc.K goes into single user mode (run level 1 or S). +
-  * rc.4 starts a session manager: gdm, kdm or xdm, others can be added editing that script. +
-  * rc.0 shuts down the system (symlink to rc.6). +
-  * rc.6 reboots or shuts down (if called as rc.0) the system cleanly.+
  
-Note. The administrator can add services scripts (daemons manager) ​in +The current punctuation level in use: 
-/etc/rc.d. Place the ''​start''​ of the demons ​in /​etc/​rc.d/​rc.local and the +  ​punctuationLevel=some 
-''​stop''​ in /​etc/​rc.d/​rc.local_shutdown. /​etc/​rc.d/​rc.local is run by +Values: Text, See available levels ​in the used punctuation file 
-/​etc/​rc.d/​rc.M,​ /​etc/​rc.d/​rc.local_shutdown by /​etc/​rc.d/​rc.6+
  
-In addition Slackware includes a structure ​for managing services by run +Respect pause for punctuations:​ 
-level in a ''​sysvinit'' ​fashion for the software not included in the +  ​respectPunctuationPause=True 
-distribution (commercial onesnoticeably) that need it.+Values: on=''​True'', ​off=''​False''​
  
-The management of services to be launched at startup can be done+Add a pause on Line break
-  ​* manually making executable(''​chmod 755 <script name>''​) or not: (''​chmod 644 <script name>''​) the corresponding script in /​etc/​rc/​.d +  ​newLinePause=True 
-  * using the command ''​pkgtool''​ (choose ​''​Setup'' ​then ''​services'' ​in the menu).+Valueson=''​True''​, off=''​False''​
  
-NoteAs all administration tools, ​''​pkgtool'' ​should be run as root.+Specify the path where the clipboard should be exported to. 
 +See [[#export clipboard to file|export clipboard to file]]. 
 +The variable ​''​$user'' ​is replaced by the current logged username. 
 +  clipboardExportPath=/​tmp/​fenrirClipboard 
 +Values: Text, Systemfilepath
  
-==== Management ​of software packages ===+The number ​of available clipboards:​ 
-=== Presentation of Slint software packages ===+  numberOfClipboards=10 
 +Values: Integer, 1 - 999
  
-Slint is distributed as a set of software packages containing +Replace emoticons like :) or ;) with text insertions: 
-applications and associated documents, and if necessary scripts executed +  ​emoticons=True 
-during installationnoticeably for creating symbolic links or manage the +Values: on=''​True''​off=''​False'​' ​ 
-configuration files and services' ​management scripts.+
  
-A Slint package consists in a file tree archived with ''​tar''​ and once +Define the current Fenrir keys: 
-compressed ​ with ''​gzip''​nowadays with ''​xz ''​.+  ​fenrirKeys=KEY_KP0,KEY_META,​KEY_INSERT 
 +Values, Text list, separated by comma.
  
-A shell script ​called "​SlackBuild"​ compiles binaries to be shipped in the +Define the current ​script ​keys:  
-archive and installs them in the package'​s tree alongside other files. It +  ​scriptKey=KEY_COMPOSE 
-usually ends with the execution of the ''​makepkg''​ commandwhich makes the +ValuesText listseparated by comma.
-archive from the package'​s file tree, including case occuring the +
-appropriate installation scriptscf. "man makepkg"​.+
  
-The software packages are in the directories of installation media indicated +The time format to be used for (time command) output
-above. Each of these directories contains following files+  ​timeFormat=%H:%M:%P 
-  ​* PACKAGES.TXT ​=> Name, size, and description of each package.\\ ​ +Values: see python specification for [[https://​docs.python.org/​3/​library/​datetime.html#​strftime-and-strptime-behavior|datetime.strftime]]
-  * FILE_LIST => All files included in the directory.\\  +
-  * MANIFEST.bz2 => The characteristics of each file (to be) installed by each package (file compressed with ''​bzip2''​)+
  
-For instancethe contents of the directory source/ap/tmux/ +The date format to be used for (date command) output: 
-is: +  dateFormat=%A%B %d, %Y 
-<​code>​ +Values: see python specification for [[https://docs.python.org/3/​library/​datetime.html#​strftime-and-strptime-behavior|datetime.strftime]]
-. +
-|-- slack-desc         ​application'​s description +
-|-- tmux-1.8.tar.xz ​   source archive +
-`-- tmux.SlackBuild ​   should be (made) executable +
-</​code>​+
  
-This allows in particular to build a package with other compilation options +Enable ​or Disable spellcheck whilst typing: 
-and/or for a newer version by editing the SlackBuild, and case occuring ​ by +  autoSpellCheck=True 
-copying in the package source directory a different version of the +Values: on=''​True'',​ off=''​False''  ​
-software's source archive.+
  
-In our example to modernize ''​tmux'',​ just download the most recent (at time of writing) source archive +The use of the dictionary with spellcheck
-tmux-1.9a.tar.gz from the [[http://​tmux.sourceforge.net/​|tmux website]], place +  ​spellCheckLanguage=en_US 
-it in source/​ap/​tmux/​ and type as root from that directory +Values: Text, see aspell dictionary's.
-'​VERSION=1.9a./​tmux.SlackBuild'​ to build a/​tmp/​tmux-1.9a-i486-1.txz package +
-that can replace the previous one with the command ​'upgradepkg +
-/tmp/tmux-1.9a-i486-1.txz'​+
  
-=== The Slackware packages database ===+Folder Path for your scripts "​scriptKey"​ functionality:​  
 +  scriptPath=/​usr/​share/​fenrirscreenreader/​scripts 
 +Values: Text, Existing path on file system.
  
-It consists of text files in the directory ​/var/log of installed ​system:+Override commands or create new ones without changing ​the Fenrir defaults: 
 +  commandPath=/usr/share/​fenrirscreenreader/​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 configuration for basic focus is in the 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 in the section ''​[review]''​.
  
-/var/log/​packages/<​package>​provides summary data about the package and +If "next wordchar" or "prev word/char" create a linebreak, announce it
-lists installed files\\ +  ​lineBreak=True 
-/​var/​log/​scripts/<​package>​lists case occurring the +Valueson=''​True'',​ off=''​False''​
-commands run by installation scripts\\ +
-/​var/​log/​removed_packages/<​package>:​ +
-provide information about deleted package\\  +
-/​var/​log/​removed_scripts/<​package>:​ lists the commands run by installation +
-scripts of removed packages+
  
-As they are text files, ​you can read them with ''​less'' ​or with a text +If "next word/ char" or "prev word/​char"​ cannot be performed because ​you reached the end of the screen, announce it: 
-editor. They are updated and used by package management programs. They allow +  endOfScreen=True 
-for example to know the contents of package, in which packages(s) is +Values: on=''​True'',​ off=''​False''​ 
-shipped an installed file or whether a file was modified or deleted since +   
-installation.+Leave the review mode when pressing ​key: 
 +  ​leaveReviewOnKeypress=False 
 +Values: on=''​True'',​ off=''​False''​
  
-The files PACKAGES.TXT and FILE_LIST included in the package directories are +Leave the review mode when changing the screen (From TTY3 to TTY4): 
-also used for their management.+  ​leaveReviewOnScreenChange=True 
 +Values: on=''​True'',​ off=''​False''​ 
 +==== Promote ==== 
 +"​Promoted Lists" are configured in the section ''​[promote]''​. 
 +Turn Promoted Lists" on or off: 
 +  enabled=True 
 +Values: on=''​True'',​ off=''​False''​
  
-=== Installing, removing and updating software packages ===+The minimum time interval of inactivity to activate promoting. 
 +By default it promotes after 120 Seconds inactivity:​ 
 +  inactiveTimeoutSec=120 
 +Values: in Seconds  ​
  
-These functions are provided respectively by the commands ​''​installpkg''​, +Define a list of promoted words comma seperated:​ 
-''​removepkg'',​ ''​upgradepkg''​, cf. their man pages.+  list= 
 +Values: text (comma seperated) 
 +Example to promote the word "​nickname"​ or a bash prompt: 
 +  list=nickname,​$:,#:​ 
 +   
 +==== Time ==== 
 +The automated time announcement is configured in the section ​''​[time]''​. 
 +Time announcement is disabled by default. 
 +Turn time announcement on or off: 
 +  enabled=True 
 +Values: on=''​True'', ​off=''​False''​
  
-Caution: ''​ugradepkg'' ​would be better named ''​replacepkg'' ​as that command +Should the time be announced:​ 
-installs the specified package then removes the previously installed one, +  presentTime=True 
-regardless of their respective versions.+Valueson=''​True''​, off=''​False''​
  
-The command ​''​pkgtool'', ​menu driven, allows to install, remove, examine the +Should the date be announced (just on date change): 
-content of packages and more generally administer the system: ​''​pkgtool'' ​is +  presentDate=True 
-the "Swiss army knife" of Slackware. In addition to "man pkgtool",​ get to +Values: on=''​True'', ​off=''​False''​
-know the tool browsing its menu.+
  
-The command ''​slackpkg'',​ build atop other Slackware package tools, provides +Announce after given period ​of seconds: 
-in addition an access to local or remote mirror ​of official Slackware +  ​delaySec=0 
-packages. This allows e.g. to download and install a set of packages or keep +Value: in Seconds0 = Deactivated  ​
-the system up to date with a single command. Its operation is governed by +
-the configuration files /​etc/​slackpkg/​slackpkg.conf and +
-/​etc/​slackpkg/​mirrorssee "man slackpkg"​ and "man slackpkg.conf"​.+
  
-=== The software package'​s database on Slackware'​s website ===+Announce after fixed minutes in an hour. if delaySec is >0 onMinutes is ignored: 
 +  onMinutes=00,30 
 +Example every 15 minutes:  
 +  onMinutes=00,15,30,45
  
-The [[http://​packages.slackware.com/​|Slackware Package Browser]] allows to make search using +Just play soundicon, (not interrupting)
-following criteria+  ​announce=True 
-  ​* Package +Values: on=''​True'',​ off=''​False'' ​ 
-  * Label +
-  * Description +
-  ​* Content+
  
-in one or more packages directories, ​for all versions of Slackware from 8.1 +Interrupt current speech ​for time announcement:​ 
-up to "​current"​.\\ +  ​interrupt=False 
-It also provides access to the files' ​tree of each of +Values: on=''​True'',​ off=''​False'​
-these versions.+====== Customization ======
  
 +===== Scripting =====
 +Scripts can be in any language, bash, python, sh or others. Place your scripts in the directory /​usr/​share/​fenrirscreenreader/​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/​fenrirscreenreader/​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.
 +The script gets some parameters from fenrir when it is executed. So that information is available in your script then.
  
-Finally, some trusted third party offer packages already built. See +==== Parameterlist ==== 
-especially those offered by Eric Hameleers aka +^Parameter ^Content ^ 
-[[http://​www.slackware.com/​~alien/​slackbuilds/​|Alien BOB]], +|$1|Username of the current logged in user|
-[[http://​rlworkman.net/​pkgs/​|Robby Workman]] and Matteo Bernardini aka +
-[[http://​ponce.cc/​slackware/​|ponce]], Slackware contributors.+
  
-The website http://www.slackware.org.uk/​ also hosts packages or Slackbuilds +==== Examples ==== 
-such as those proposed by distributions derived from Slackware, as [[http://www.salixos.org/|Salix]] +Script that just speaks the current username when pressing ScriptKey + H.\\ 
-maintained mainly by George Vlahavas, or desktops not included in Slackware,​ +File''​/usr/share/fenrirscreenreader/scripts/helloWorld__-__key_h.sh'':​ 
-such as [[http://www.slackware.org.uk/msb/|Mate]] proposed by Chess Griffin and +  #!/bin/bash 
-Willy Sudiarto Raharjo, or provided by +  echo $1
-[[http://​slacky.eu/​slacky/​Pagina_principale|slacky.eu]]+
  
-Packages that can be installed on Slackware are also available 
-elsewhere. Important warnings: 
-  * Know who proposes these packages and preferably trust contributors of Slackware or at least of http://​slackbuilds.org 
-  * Carefully inspect the contents of packages before installation,​ including a check  of the permissions of files and any changes to existing directories and files. Use ''​less'',​ ''​tar''​ and/or ''​explodepkg'',​ see "man explodepkg"​. 
-  * Never install a package whose sources and SlackBuild are not available. 
  
-s.+===== Commands ===== 
 +You can place your own commands in "/​usr/​share/​fenrirscreenreader/​commands"​ (path is configurable in settings.conf). 
 +Commands are python files with a special scheme. You can assign them to a shortcut using the filename without an extension or place them in a hook trigger like OnInput or OnScreenChange. For further 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 a command is as follows:
  
-=== Build your own packages ===+  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
  
-This is the recommended method if no SlackBuild ​is available, to benefit of +  * [[https://​github.com/​chrys87/​fenrir/​blob/​master/​src/​fenrir/​commands/​command_template.py|Template lives here]] 
-the Slackware package management tools and maintain a "clean" ​system.+  * The class needs to have the name "​command"​. 
 +  * "​initialize" ​is running once whilst loading the command. 
 +  * "​shutdown"​ is running on unload like the command (quit fenrir) 
 +  * "getDescriptsion" ​just returns an string. That String is used in Tutorial Mode. 
 +  * "​run"​ is executed when the command is invoked. (shortcut is pressed, or trigger isn't running) 
 +  * setCAllback is currently not used. and has no functionality yet.
  
-The software ''​slacktrack'',​ included in Slackware, can help you, as "man 
-makepkg"​. Inspecting existing Slackbuilds and 
-[[http://​slackbuilds.org/​templates/​|templates]] proposed at slackbuilds.org can 
-inspire you. Browse [[http://​docs.slackware.com|SlackDocs]] with the key word 
-"​package"​ or "​install"​ to learn more. 
  
-==== Maintainance of the system ​====+====== Troubleshooting ======
  
-To be informed of the availability of software packages ​that meet security +Below are fenric instructions ​that do not all apply to Slint.
-breaches, email majordomo@slackware.com with the phrase "​subscribe +
-slackware-security"​ in the body.+
  
-For a stable version updates are few, because they are only intended to fill +Slint users may request help on the Slint mailing list.
-a security breach or to correct a major bug and not just to provide a more +
-recent version of software included in the distribution. Users are expected +
-to modernize their software themselves if they wish, see previous chapter +
-for how to do that: Slackware is not a rolling releases, but publishes a +
-succession of stable versions.+
  
-Updating or reinstalling a package can lead to reinstall a file (usually a +===== Fenrir does not start ===== 
-configuration file) already ​installed. In this case if they don't match the +  - Have you installed ​all the dependencies [[#Support and Requirements|Support and Requirements]] 
-system will install ​new file next to the precedent ​with a .new extension +  - Try using master, ​lot of changes take place there to make Fenrir compatible ​with more systems 
-and you get to decide what to do on case by case basismerge the two +===== Fenrir does not utilize the shortcuts ===== 
-files, keep the former ​as is or replace ​it with the new one.+  - Make sure you have python3-evdev installed 
 +  - Use the latest Fenrir version 
 +  - Make sure that Fenrir has permission ​to /​dev/​input/​* and /dev/uinput (or run it as root) 
 +===== No sound at all ===== 
 +  - Run the script ​to configure Pulseaudio once as root and once as your user. This will setup Pulseaudio but require ​restart of Pulseaudio. The script is located in ''​tools/​configure_pulse.sh''​ 
 +  - Use ALSA 
 +  - [[https://​www.freedesktop.org/​wiki/​Software/​PulseAudio/​Documentation/​User/​SystemWide/​|Configure Pulse system wide]] (Not recommended) 
 +  - Use gstreamerDriver:​ change ''​settings.conf''​ in the section ''​sound''​ the line ''​driver=genericDriver''​ to ''​driver=gstreamerDriver''​ 
 +  - Use wave sound-icons:​ change ''​settings.conf''​ in the section ''​sound''​ the line ''​theme=default''​ to ''​theme=default-wav''​ 
 +  - Use most current version of [[http://​sox.sourceforge.net/​|sox]] with opus support 
 +  - Try [[https://​github.com/​i-rinat/​apulse|apulse]] (not tested by myself but might work). Please give me feedback if you try it out. 
 +===== You get sound-icons but no speech ===== 
 +  - If you are using speech-dispatcher run "​spd-conf"​ once as user and as root. 
 +  - You can test if speech-dispatcher works by invoking ​it as root\\ ​ ''​sudo spd-say "hello world"''​ 
 +===== Bugreports and feature requests ===== 
 +Please report Bugs and feature requests to: 
 +[[https://​github.com/​chrys87/​fenrir/​issues|https://​github.com/​chrys87/​fenrir/​issues]]
  
-The practice of installing on system ​software package shipped in another +for bugs please provide ​[[#Howto create ​debug file|debug]] file that shows the issue. 
-version of Slackware is discouraged and often failsBetter try to rebuild ​+==== How-to create ​debug file ==== 
-package for the installed version, running the SlackBuild ​in a copy of the +  - Delete old debug stuff\\ ​ ''​sudo rm /​var/​log/​fenrir.log''​ 
-source directory of that package, gathered from the other version. And of +  - Start fenrir ​in debug mode\\ ''​sudo fenrir -d''​ 
-course, it is strongly unadvised to install packages intended for or +  - Do your stuff to reproduce ​the problem 
-included ​in another distribution,​ unless it be deemed 100% compatible with +  - Stop fenrir (''​fenrirKey + q''​) 
-Slint's identical version.+the debug file is located ​in ''/​var/​log/​fenrir.log''​
  
 +Please be as precise as possible to make it easy to solve the problem.
  
playground/playground.txt · Last modified: 2020/04/21 18:58 by didier