Initial commit. In a broken state, do not use.
This commit is contained in:
8
content/site/advanced/00-00-header.md
Normal file
8
content/site/advanced/00-00-header.md
Normal file
@ -0,0 +1,8 @@
|
||||
% Guide for Technical Users of F123Light
|
||||
|
||||
This guide is intended for those who are more experienced (or are not very experienced but want to learn more technically advanced things), about the F123Light operating system. Should you need information about the overall strategy of the project, our motivations, or other non-technical matters, please read our [general project guide](strategy.html).
|
||||
|
||||
Should you have suggestions, corrections, new content, new code, or other contributions to this project, please [join one of our e-mail lists](https://public.f123.org/guide/getting-started.html#our-e-mail-lists) and let us know about it.
|
||||
|
||||
---
|
||||
|
2
content/site/advanced/00-01-introduction0.md
Normal file
2
content/site/advanced/00-01-introduction0.md
Normal file
@ -0,0 +1,2 @@
|
||||
# Introduction to the Advanced Guide
|
||||
|
4
content/site/advanced/00-01-introduction1.md
Normal file
4
content/site/advanced/00-01-introduction1.md
Normal file
@ -0,0 +1,4 @@
|
||||
This guide is intended for those who are more experienced (or are not very experienced but want to learn more technically advanced things), about the F123Light operating system. Should you need information about the overall strategy of the project, our motivations, or other non-technical matters, please read our [general project guide](strategy.html).
|
||||
|
||||
Should you have suggestions, corrections, new content, new code, or other contributions to this project, please [join one of our e-mail lists](getting-started.html#our-e-mail-lists) and let us know about it.
|
||||
|
26
content/site/advanced/01-00-build.md
Normal file
26
content/site/advanced/01-00-build.md
Normal file
@ -0,0 +1,26 @@
|
||||
## Updating F123Light on the Command Line
|
||||
|
||||
Advanced users can perform an update from the command line with the command: "update-f123light"
|
||||
|
||||
If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be: "update-f123light -b dev
|
||||
|
||||
## Building Your Own F123Light Image
|
||||
|
||||
Experienced users also have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use. Please make sure your working SD card has at least 8Gb of free space to perform this procedure.
|
||||
|
||||
## Burning/Flashing Your New Image Using the Command Line
|
||||
|
||||
Experienced or ambitious users can burn the image they have just built on their own Raspberry Pi by using the "sudo fdisk -l" command to identify which device or drive name to use, after plugging-in the USB adapter containing the target MicroSD card.
|
||||
|
||||
*Warning*: This is a risky procedure, so it should not be attempted by inexperienced users or those with valuable information on their computers, or who do not have an up-to-date backup of same.
|
||||
|
||||
Once the user has identified what device holds his or her operating system, and which device will be used to burn the image, the user can type something like the following to actually flash the image which was just created:
|
||||
|
||||
sudo dd if=filename of=device-path bs=2M
|
||||
|
||||
The "sudo" string is used for important commands which require admin powers. The "dd" command is also called disk-dump, and it is used to make exact copies of disks or to burn images on same. The "if" and "of" parameters, stand for input file and output file, and the "bs" parameter stands for block size. Specifying block size is optional, but we have found that using "2M" speeds-up the process. Do note that the "M" in this parameter must be capitalized.
|
||||
|
||||
## Pre-Configuring Wireless Access (WiFi)
|
||||
|
||||
Anyone using our "build-f123light" build script to create an image, can include his or her wireless network information on the configuration file under F123Light/build/ and the computer will boot already with WiFi access to the Internet. However, if you do this, make sure you also change the default passwords for both the normal and root users.
|
||||
|
22
content/site/advanced/01-00-image-burn.md
Normal file
22
content/site/advanced/01-00-image-burn.md
Normal file
@ -0,0 +1,22 @@
|
||||
## Building Your Own F123Light Image
|
||||
|
||||
Experienced users have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use.
|
||||
|
||||
To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop.
|
||||
|
||||
To build an image with all default parameters, go to the command line and enter the following:
|
||||
|
||||
build-f123light
|
||||
|
||||
## Burning/Flashing Your New Image Using the Command Line
|
||||
|
||||
Experienced or ambitious users can burn the image they have just built on their own Raspberry Pi by using the "sudo fdisk -l" command to identify which device or drive name to use, after plugging-in the USB adapter containing the target MicroSD card.
|
||||
|
||||
*Warning*: This is a risky procedure, so it should not be attempted by inexperienced users or those with valuable information on their computers, or who do not have an up-to-date backup of same.
|
||||
|
||||
Once the user has identified what device holds his or her operating system, and which device will be used to burn the image, the user can type something like the following to actually flash the image which was just created:
|
||||
|
||||
sudo dd if=filename of=device-path bs=2M
|
||||
|
||||
The "sudo" string is used for important commands which require admin powers. The "dd" command is also called disk-dump, and it is used to make exact copies of disks or to burn images on same. The "if" and "of" parameters, stand for input file and output file, and the "bs" parameter stands for block size. Specifying block size is optional, but we have found that using "2M" speeds-up the process. Do note that the "M" in this parameter must be capitalized.
|
||||
|
15
content/site/advanced/01-01-image-release-candidate.md
Normal file
15
content/site/advanced/01-01-image-release-candidate.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Downloading, Updating, and Building Images
|
||||
|
||||
## Downloading the Latest Release Candidate Image
|
||||
|
||||
Experienced users may wish to assist us in testing new features and updates. One way to do this is by downloading and trying the latest release candidate image.
|
||||
|
||||
You may find our latest release candidate here:
|
||||
<https://public.f123.org/releaseCandidate>
|
||||
|
||||
To verify file integrity after download, you may use the [sha1sum signature for the above image](https://public.f123.org/releaseCandidate.sha1sum).
|
||||
|
||||
Please be aware that this is a test image and there may be bugs, some of which could be severe. Please do not use test installations as your primary machine or in production environments.
|
||||
|
||||
If you are not an experienced computer user, we recommend that you use instead our [latest stable version of F123Light](https://guide.f123.org/getting-started.html#download), as it has been tested more thoroughly than the above version.
|
||||
|
8
content/site/advanced/01-01-image-standard.md
Normal file
8
content/site/advanced/01-01-image-standard.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Build a Standard Image with F123Light Itself
|
||||
|
||||
To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop.
|
||||
|
||||
To build an image with all default parameters, go to the command line and enter the following:
|
||||
|
||||
build-f123light
|
||||
|
10
content/site/advanced/01-01-update.md
Normal file
10
content/site/advanced/01-01-update.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Updating F123Light on the Command Line
|
||||
|
||||
Advanced users can perform an update from the command line with the command:
|
||||
|
||||
update-f123light
|
||||
|
||||
If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be:
|
||||
|
||||
update-f123light -b dev
|
||||
|
25
content/site/advanced/01-02-image-custom.md
Normal file
25
content/site/advanced/01-02-image-custom.md
Normal file
@ -0,0 +1,25 @@
|
||||
## Build a Custom Image
|
||||
|
||||
To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop.
|
||||
|
||||
You can customize your image by passing special parameters to it. Here is a list of things you can customize about your image:
|
||||
|
||||
* -d <directory> or --work-directory <directory>: The working directory where the image is created and mounted and packages are cached. The default is the current directory.
|
||||
* -o <file> or --output-file <file>: the name of the image file. The default is F123Light-yy.mm.dd.img where yy.mm..dd is the 2 digit year, 2digit month, and 2 digit day.
|
||||
* -H <name> or --hostname <name>: The host name of the installed OS. The default is f123light.
|
||||
* -r <password> or --root-password <password>: The root user's password. The default is root.
|
||||
* -u <name> or --user=<name>: The name of the regular non-root user. The default is f123.
|
||||
* -p <password> or --password=<password>: the regular user's password. The default is f123.
|
||||
* -n <SSID> or --network-name <SSID>: The name of a preconfigured wifi network access point.
|
||||
* -w <password> or --wifi-password <password>: A preconfigured wifi network password. Requires --network-name. Remember to inclose the password in 'apostrophees or single quotes' if it contains special characters or spaces.
|
||||
|
||||
Here are a couple of examples of building an image with some parameters given on the command line:
|
||||
|
||||
build-f123light --output-file custom.img
|
||||
|
||||
This will make an image called custom.img.
|
||||
|
||||
build-f123light -n wifi-network-name -w 'your-password'
|
||||
|
||||
This example creates an image which already contains your Wifi login, so you will not have to re-enter your WiFi password at boot time. Just like the two examples above, you can enter all the parameters listed above and the image will be built with all that information already included.
|
||||
|
25
content/site/advanced/01-03-file-locations.md
Normal file
25
content/site/advanced/01-03-file-locations.md
Normal file
@ -0,0 +1,25 @@
|
||||
## Important locations and File Structure
|
||||
|
||||
With the exceptions of update-f123light, build-f123light, and first-boot, the scripts that power F123Light reside in the /usr/lib/F123-wrappers and /usr/lib/F123-includes directories.
|
||||
|
||||
Each file is named according to what it does, and there is a brief description at the top of the file with the copyright notice. The files in /usr/lib/F123-wrappers are the end product that present information to the user. The files in /usr/lib/F123-includes are functions and code that gets reused almost everywhere to make things easier to extend.
|
||||
|
||||
So, to have menus and input boxes, etc, similar to what we use, you can include something like the following in your scripts:
|
||||
|
||||
# Load F123 includes
|
||||
if [[ -d /usr/lib/F123-includes/ ]]; then
|
||||
for i in /usr/lib/F123-includes/*.sh ; do
|
||||
source $i
|
||||
done
|
||||
fi
|
||||
|
||||
If you need to interact with the preferences, which include such things as tip display options, preferred browser, email client, etc, you can get access to it by sourcing the ~/.preferences file like so:
|
||||
|
||||
source ~/.preferences
|
||||
|
||||
Preferences are stored in an associative array. In order to keep the preferences file well formatted and readable, when writing new preferences please use the write_preferences function defined in /usr/lib/F123-includes/preferences-manager.sh.
|
||||
|
||||
F123Light specific overwrites for applications are in /etc/F123-Config/. This allows different behavior for applications such as irssi when called from the help menu as apposed to when it is called by the user specifically. Users will be able to customize their day to day copy of irssi as much as they want, and the chat support option from the menu will still work as designed when needed.
|
||||
|
||||
Also in /etc/F123-Config/ is a subdirectory called backup. This contains a copy of speechd.conf and any other files that may be necessary to reset something vital to a working state.
|
||||
|
2
content/site/advanced/02-00-fenrir.md
Normal file
2
content/site/advanced/02-00-fenrir.md
Normal file
@ -0,0 +1,2 @@
|
||||
# Fenrir - A Modern Console Screen Reader
|
||||
|
14
content/site/advanced/02-01-fenrir-select.md
Normal file
14
content/site/advanced/02-01-fenrir-select.md
Normal file
@ -0,0 +1,14 @@
|
||||
## Selecting Fenrir Screen Reader Branches
|
||||
|
||||
Sometimes you may want to try a new feature in Fenrir that has not made it to the stable release. For this, you can exit to the command line, then run the following command:
|
||||
|
||||
select-fenrir
|
||||
|
||||
You will be presented with a list of branches in the git repository. Simply select the branch you want a and press enter. The current version of Fenrir will shut down and the version from the selected branch will start.
|
||||
|
||||
There are safeguards in place to make sure you do not end up with a broken Fenrir. If you hear Fenrir speaking, you can press enter to use the selected version. If you do not press enter with in 30 seconds, the computer will restart and you will be using the stable, installed version.
|
||||
|
||||
You can get back to your installed copy of Fenrir by selecting "stable" from the list of branches or by restarting your computer. Also, if you already know the branch you want, you can specify it on the command line and skip the menu system altogether. For example, type the following to launch Fenrir from the master branch:
|
||||
|
||||
select-fenrir master
|
||||
|
2
content/site/advanced/02-02-00-fenrir-code.md
Normal file
2
content/site/advanced/02-02-00-fenrir-code.md
Normal file
@ -0,0 +1,2 @@
|
||||
## Fenrir's Source Code
|
||||
|
36
content/site/advanced/02-02-01-folder-structure.md
Normal file
36
content/site/advanced/02-02-01-folder-structure.md
Normal file
@ -0,0 +1,36 @@
|
||||
### Folder Structure
|
||||
|
||||
Fenrir's source code is organized in the git tree as follows:
|
||||
|
||||
* src/
|
||||
This is the top level of the source code, and contains the executables:
|
||||
+ fenrir
|
||||
run fenrir in foreground (useful for testing or terminal emulation)
|
||||
+ fenrir-pypy
|
||||
run fenrir in foreground using the faster pypy python JIT compiler (also useful for testing or terminal emulation)
|
||||
+ fenrir-daemon
|
||||
spawns fenrir as daemon (used for the "global" background service to read the TTYs).
|
||||
+ fenrir-daemon-pypy
|
||||
spawns fenrir as daemon using the faster pypy python JIT compiler which gives better performance (also used for the "global" background service to read the TTYs).
|
||||
|
||||
+ src/fenrirscreenreader/
|
||||
The top level of the core and modular Fenrir code
|
||||
- brailleDriver
|
||||
Contains all braille drivers, currently incomplete. brailleDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/brailleDriver.py.
|
||||
- commands:
|
||||
Contains a substructure for all commands, vMenus and triggers.
|
||||
- core
|
||||
Contains all the core classes. Its the fenrir API itself. Holds the settings and loads the drivers.
|
||||
- inputDriver
|
||||
Contains all input drivers. inputDriver modules are loaded and accessed in core/inputManager.py. All files here are inherited from core/inputDriver.py
|
||||
- remoteDriver
|
||||
Contains all remote drivers that give access using the remote subsystem. remoteDriver modules are loaded and accessed in core/remoteManager.py. All files here are inherited from core/remoteDriver.py
|
||||
- screenDriver
|
||||
Contains the screen drivers that collect information about the screen and its contents. screenDriver modules are loaded and accessed in core/screenManager.py. All files here are inherited from core/screenDriver.py
|
||||
- soundDriver
|
||||
Contains the sound drivers for the soundicons. soundDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/soundDriver.py
|
||||
- speechDriver
|
||||
Contains the text to speech engine drivers. speechDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/speechDriver.py
|
||||
- utils
|
||||
Contains usefull functions for word wrapping and more.
|
||||
|
197
content/site/advanced/02-02-02-core-classes.md
Normal file
197
content/site/advanced/02-02-02-core-classes.md
Normal file
@ -0,0 +1,197 @@
|
||||
### Core Classes
|
||||
|
||||
These core classes define the heart of Fenrir, found in src/fenrirscreenreader/core.
|
||||
|
||||
* applicationManager.py
|
||||
Currently unused. It was initially used to detect the currently running application to automatically load application profiles, but no reliable detection method was found for applications running inside of screen or tmux.
|
||||
|
||||
* attributeManager.py
|
||||
This is currently the API to handle all kinds of attribute stuff. The hilight tracking is also analyzed here, i.e.
|
||||
```attributeManager.getAttributeByXY(0,0)```
|
||||
gives the attributes for the first cell and row (starting at the upper left corner on the screen). An attribute set looks like the following list:
|
||||
|
||||
``` #start attribute
|
||||
[
|
||||
'default', # fg
|
||||
'default', # bg
|
||||
False, # bold
|
||||
False, # italics
|
||||
False, # underscore
|
||||
False, # strikethrough
|
||||
False, # reverse
|
||||
False, # blink
|
||||
'default', # fontsize
|
||||
'default' # fontfamily
|
||||
]
|
||||
#end attribute```
|
||||
|
||||
Attribute[2] indicates whether or not the cell is bold.
|
||||
|
||||
* barrierManager.py
|
||||
Manages the barrier feature. It chains the current window down to the configured barriers.
|
||||
|
||||
* brailleDriver.py
|
||||
Is the base class for all brailleDrivers.
|
||||
|
||||
* byteManager.py
|
||||
Handles byte input used in terminal emulation mode. It's the opposite of inputManager, which consumes key press/ release events.
|
||||
|
||||
* commandData.py
|
||||
This is a container to hold command information. It will be deprecated in the future.
|
||||
|
||||
* commandManager.py
|
||||
loa
|
||||
|
||||
- cursorManager.py
|
||||
Holds all cursor related information and handles the review cursor.
|
||||
|
||||
- debug.py
|
||||
Contains the debug states (Info, warning, error)
|
||||
|
||||
* debugManager.py
|
||||
produces the debug output and writes it to a file or prints it on screen.
|
||||
|
||||
- environment.py
|
||||
The environment contains almost everything fenrir is, and it's passed to every object fenrir loads, to have information available everywhere. This makes it quite easy to create plugins, as the commands get the information as well. It's a python dictionary. It's mostly named self.env. The only place where it is named environment is the fenrirManager class (for historical reasons). The environment looks like this:
|
||||
|
||||
```environment = {
|
||||
'screen': screenData, # contains the screen information, better access it using the API in cursorManager and screenManager. This will be deprecated.
|
||||
'runtime': runtimeData, # contains all in "core/*Manager.py" classes. its the point to communicate with the fenrir core. its very important example below.
|
||||
'general': generalData, # contains the general information, better access it using the API in fenrirManager will eventually be deprecated
|
||||
'settings': settingsData, # contains the settings information, better access it using the API in settingsManager. this is not going to be deprecated
|
||||
'commandInfo': commandData.commandInfo, # contains global command info like last execution times, itwill be removed, as it was not used.
|
||||
'commandBuffer': commandData.commandBuffer, # contains information that is needed to sored persistent, like the begin and end mark. for this we have the memoryManager now. this is going to be deprecated in fenrir 3
|
||||
'input': inputData, # contains the input information, better access it using the API in inputManager. This will be deprecated.
|
||||
'punctuation': punctuationData, # contains the punctuation information, better access it using the API in punctuationManager This will be deprecated.
|
||||
'output': outputData, # contains the output information, better access it using the API in outputManager This will be deprecated.
|
||||
'soundIcons': {}, # contains the soundicons
|
||||
'bindings': {}, # contains the key bindings
|
||||
'commands':{} # contains all the commands loaded by the commandManager
|
||||
}```
|
||||
|
||||
example of environ usage:
|
||||
```self.env['runtime']['outputManager'].presentText('hello world' , soundIcon='', interrupt=True)```
|
||||
runtime contains all managers (without the .py) as dict entries, so the functions could be used there. The output manager has the method "presentText" that is called here
|
||||
|
||||
Get the setting dateFormat in section general using the settings manager:
|
||||
```dateFormat = self.env['runtime']['settingsManager'].getSetting('general', 'dateFormat')```
|
||||
|
||||
getSetting returns text. There are others to cast as bool or int. Here is an exemple for bool:
|
||||
```isAutoReadIncomming = self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'autoReadIncoming')```
|
||||
|
||||
Settings can also be set here. The following disables "autoReadIncomming":
|
||||
```self.env['runtime']['settingsManager'].setSetting('speech', 'autoReadIncoming', str(False))```
|
||||
|
||||
* eventData.py
|
||||
An enum with all event types
|
||||
|
||||
* eventManager.py
|
||||
This is the queue for events. It has some methods to add events to the queue and dispatches the events to the right places. Most of them are passed to the fenrirManager.
|
||||
|
||||
* fenrirManager.py
|
||||
This is used for startup. It ties all the event cases together where they are passed to the right managers. It also checks for shortcuts and consumes the input, i.e.
|
||||
```input event -> eventManager -> fenrirManager -> inputManager
|
||||
screen change event -> eventManager -> fenrirManager -> screenManager```
|
||||
|
||||
* generalData.py
|
||||
This is a container to hold general information. It will be deprecated in the future.
|
||||
|
||||
* helpManager.py
|
||||
Creates the tutorial information and controls the navigation in tutorial mode
|
||||
|
||||
* i18n.py
|
||||
Loads the gettext and translation module.
|
||||
|
||||
- inputData.py
|
||||
This is a container to hold input information. It will be deprecated in the future.
|
||||
|
||||
* inputDriver.py
|
||||
This is the base class for all input drivers
|
||||
|
||||
* inputManager.py
|
||||
Gets key input events like "key a pressed" and "key a released" and tracks the current pressed keys.
|
||||
event chain:
|
||||
input driver (PlugInputDevice) -> eventManager -> fenrirManager -> inputManager
|
||||
input driver (KeyboardInput) -> eventManager -> fenrirManager -> inputManager
|
||||
|
||||
* memoryManager.py
|
||||
Exists to manage persistent memory like the clipboard.
|
||||
|
||||
* outputData.py
|
||||
This is a container to hold output information. It will be deprecated in the future.
|
||||
|
||||
* outputManager.py
|
||||
This contains methods for playing sound icons and speaking.
|
||||
|
||||
* processManager.py
|
||||
This spawns the threads needed for the drivers to progress more quickly. Fenrir is multithreaded and multiprocessed. so it can split out drivers workers to own processes to get multi cpu core power.
|
||||
|
||||
* punctuationData.py
|
||||
This is a container to hold punctuation information. It will be deprecated in the future.
|
||||
|
||||
* punctuationManager.py
|
||||
Prepares the punctuation for output, replaces custom dicts and removes what will not be spoken.
|
||||
|
||||
* quickMenuManager.py
|
||||
Manages the NVDA like arrow menu for speech rate, volume and pitch.
|
||||
|
||||
* remoteDriver.py
|
||||
The base class for remote drivers.
|
||||
|
||||
* remoteManager.py
|
||||
Loads the remote drivers. Accepts and proceeds all incomming commands.
|
||||
event chain:
|
||||
remote driver (RemoteIncomming) -> eventManager -> fenrirManager -> remoteManager
|
||||
|
||||
* runtimeData.py
|
||||
This is just a placeholder an will be removed.
|
||||
|
||||
* sayAllManager.py
|
||||
This is a WIP for the say all functionality
|
||||
|
||||
* screenData.py
|
||||
This is a container to hold screen information. It will be deprecated in the future.
|
||||
|
||||
* screenDriver.py
|
||||
This is the base class for all screen drivers.
|
||||
|
||||
* screenManager.py
|
||||
Creates the diff and tracks the cursor.
|
||||
event chain:
|
||||
screen driver (ScreenUpdate) -> eventManager -> fenrirManager -> screenManager
|
||||
screen driver (ScreenChanged) -> eventManager -> fenrirManager -> screenManager
|
||||
|
||||
* settingsData.py
|
||||
Holds the default settings.
|
||||
|
||||
* settingsManager.py
|
||||
The settings manager contains all methods to load, save and querry settings.
|
||||
|
||||
* soundDriver.py
|
||||
Base class for sound drivers.
|
||||
|
||||
* speechDriver.py
|
||||
Base class for speech drivers.
|
||||
|
||||
* tableManager.py
|
||||
WIP for a table cell based review. It should speak the cellname in review mode. Example
|
||||
ps
|
||||
```PID TTY
|
||||
123 TTY1```
|
||||
it should not navigate:
|
||||
PID, TTY, 123, TTY1
|
||||
but
|
||||
PID: 123, TTY: TTY1
|
||||
to keep track of the current cell
|
||||
|
||||
* textManager.py
|
||||
Used to manipulate the output for speech, i.e.
|
||||
##########
|
||||
is transformed to:
|
||||
10 times #
|
||||
|
||||
* vmenuManager.py
|
||||
Rebinds the vMenu keys, loads the vMenu, contains the navigation for vMenu, etc.
|
||||
|
||||
most of the *Data.py should be moved to the managers in future.
|
||||
|
68
content/site/advanced/02-02-03-command-classes.md
Normal file
68
content/site/advanced/02-02-03-command-classes.md
Normal file
@ -0,0 +1,68 @@
|
||||
### Commands
|
||||
|
||||
This is the commands class used to build and work with Fenrir commands, i.e. what happens when the user presses a Fenrir key shortcut. The folder structure for building various types of commands is also found here in src/fenrirscreenreader/commands.
|
||||
|
||||
* command_template.py
|
||||
Contains a basic command skeleton that is used for all but onSwitchApplicationProfile commands, last uses switchTrigger_template (as there are load and unload functions)
|
||||
|
||||
#### basic functions:
|
||||
|
||||
1. initialize is called on command creation. It's an own function rather than in custructure.
|
||||
2. shutdown is called if the command is reloaded or fenrir gets shutdown (thought to clean up things)
|
||||
3. getDescription: gives a description for tutorial mode, or in case of vMenu, it's the entry name
|
||||
4. run() is executed if the command is invoked
|
||||
5. the callback function is currently unused. It's thought for special cases like in "sayAll," to notify that the current word is spoken and invoke the next one, so custom usage.
|
||||
|
||||
* switchTrigger_template.py
|
||||
These are the currently disabled application profiles.
|
||||
|
||||
* commands
|
||||
The commands folder contains the "normal" commands like review or say time. Just copy the commands_template.py above into it and add your specific command code. To assign the command in this folder to a keyboard binding, just assign the keys to the command filename without .py. example:
|
||||
Assign add_word_to_spell_check.py to 2 times fenrir + S
|
||||
```2,KEY_FENRIR,KEY_S=add_word_to_spell_check```
|
||||
fenrir will read all python files in a command folder and match the filename to the shortcut without .py. The keybindings are found in config/keyboard/.
|
||||
|
||||
* help
|
||||
Contains the automatically assigned navigation for tutorial mode.
|
||||
|
||||
* onApplicationChange
|
||||
All commands in this folder are triggerd in order if the current foreground application changes - currently disabled
|
||||
|
||||
* onByteInput
|
||||
All commands in this folder are triggerd in order if a byte input event was fired
|
||||
|
||||
* onCursorChange
|
||||
All commands in this folder are triggerd in order if the cursor position changes
|
||||
|
||||
* onHeartBeat
|
||||
All commands in this folder are triggerd in order on heartbeat (a timer defined in the Fenrir code).
|
||||
|
||||
* onKeyInput
|
||||
All commands in this folder are triggerd in order if a key input event was fired.
|
||||
|
||||
* onPlugInputDevice
|
||||
All commands in this folder are triggerd in order if a plug input device event was fired.
|
||||
|
||||
* onScreenChanged
|
||||
All commands in this folder are triggerd in order if an on screen change event was fired (i.e. as you switch from TTY3 to TTY5).
|
||||
|
||||
* onScreenUpdate
|
||||
All commands in this folder are triggerd in order if an on screen update event was fired (as new text appears on the current screen).
|
||||
|
||||
* onSwitchApplicationProfile
|
||||
Contains the application profiles. It matches the application by name and calls the oldApplication.unload and newApplication.load functions, currently disabled.
|
||||
|
||||
* quickMenu
|
||||
Contains the NVDA quick menu navigation.
|
||||
|
||||
* sayAll
|
||||
Contains the callbacks for WIP say all.
|
||||
|
||||
* vmenu-navigation
|
||||
Contains the automatically assigned navigation keys for the vMenu.
|
||||
|
||||
* vmenu-profiles
|
||||
Contains the vMenu structure itself.
|
||||
|
||||
It is only necessary to place a command in the folder that corresponds to the event where it should be executed. Fenrir will read all commands in the event folder and execute them in numerical order. If it is desirable to execute commands within an event folder in a specific order, place numbers at the beginning of their filenames, i.e. 00-do-something.py and 01-do-something-else.py.
|
||||
|
10
content/site/advanced/02-02-fenrir-virtual-menu.md
Normal file
10
content/site/advanced/02-02-fenrir-virtual-menu.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Fenrir Virtual Menus
|
||||
|
||||
Fenrir has a new feature that will perform key presses for you. This feature is very powerful, because it can provide easy to use shortcuts and menus that work the same across applications.
|
||||
|
||||
For example, if you have two editors, Nano and Vim, they save files in different ways. In F123Light, to save a file in Nano, you press control+s. In Vim, however, you must make sure you are in command mode by pressing the escape key, then enter the command :w. If Fenrir has a menu defined for both text editors, you could simply activate the menu by pressing Fenrir+F10 or Fenrir+Alt, then press f for files, and s for save.
|
||||
|
||||
You can also use the arrow keys and enter to select menu choices. If you open the menu and change your mind, simply press escape to close it. If you type a letter that does not exist as a menu option, Fenrir will make an error sound.
|
||||
|
||||
You can already try virtual menus on the Nano text editor.
|
||||
|
68
content/site/advanced/02-03-virtual-menu-creation.md
Normal file
68
content/site/advanced/02-03-virtual-menu-creation.md
Normal file
@ -0,0 +1,68 @@
|
||||
## Creating a Virtual menu in Fenrir
|
||||
|
||||
Since F123Light uses many console applications with non-standard keybindings, the virtual menu is a Fenrir add on which will translate more conventional key combinations into those unusual ones, so the end-user does not have to worry about learning entirely new keyboard shortcuts.
|
||||
|
||||
Fenrir is a flexible framework to create screenreaders for the commandline. It is entirely plugin driven. The virtual menu is no different, as it uses the same simple structure. Its a class named command() with 3 funktions:
|
||||
|
||||
1. initialize(environment)
|
||||
Is invoked by fenrir while loading. The Parameter „environment“ is the complete fenrir runtime, drivers, managers, settings and all kinds of data. Its like the engine in an car. This is the most complex part. Anybody interested in additional details in this area should ask about it in: <mumble.linux-a11y.org> or <irc.linux-a11y.org>.
|
||||
|
||||
2. getDescription() returns a text spoken in tutorial mode or is used as menu entry name.
|
||||
|
||||
3. run, this is fired on activation. It can access all kind of information and functionality with environment.
|
||||
|
||||
Especially for virtual menu, we have created a key sequencer that uses evdev key names with states. A special sequence name with the name sleep gives a small break.
|
||||
|
||||
The menu by itself is structured by folders. With KEY (for key devices) and BYTE for terminal emulation (using escape sequences).
|
||||
Above those folders is a folder per application, as shown below. The user can be locked in those applications menus using the remote manager so they will not get confused by wrong entrys)
|
||||
|
||||
For F123Light, the code for virtual menus resides in:
|
||||
/usr/share/fenrirscreenreader/menus/KEY/
|
||||
|
||||
Inside this directory is the actual macro structure. The Directories directly under KEY are application names that contain the menu for the application.
|
||||
|
||||
% ls
|
||||
vim/ nano/ mutt/ mc/
|
||||
|
||||
Inside those directories are the actual virtual menu directories, so "file", "Tools", etc.
|
||||
|
||||
Here, from the File directory for Nano, is the save command. This activates control+S which is the Fenrir command for Nano. Description is the help text for it if you are trying to learn the keys.
|
||||
|
||||
# Code
|
||||
|
||||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8
|
||||
from fenrirscreenreader.core import debug
|
||||
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
self.keyMakro = [[1, 'KEY_LEFTCTRL'],
|
||||
[1, 'KEY_S'],
|
||||
[0.05, 'SLEEP'],
|
||||
[0, 'KEY_S'],
|
||||
[0, 'KEY_LEFTCTRL']]
|
||||
|
||||
def shutdown(self):
|
||||
pass
|
||||
|
||||
def getDescription(self):
|
||||
return "Save your work."
|
||||
|
||||
def run(self):
|
||||
self.env['runtime']['outputManager'].presentText(
|
||||
"Okay, you will now be asked to save your work.", interrupt=True)
|
||||
if self.env['runtime']['inputManager'].getShortcutType() in ['KEY']:
|
||||
self.env['runtime']['inputManager'].sendKeys(self.keyMakro)
|
||||
elif self.env['runtime']['inputManager'].getShortcutType() in ['BYTE']:
|
||||
self.env['runtime']['byteManager'].sendBytes(self.byteMakro)
|
||||
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
|
||||
# End Code
|
||||
|
11
content/site/advanced/02-04-fenrir-developers.md
Normal file
11
content/site/advanced/02-04-fenrir-developers.md
Normal file
@ -0,0 +1,11 @@
|
||||
## Fenrir Resources and Contacting Developers
|
||||
|
||||
The best places to find Fenrir contributors are:
|
||||
|
||||
* Voice chat: <mumble.linux-a11y.org>
|
||||
* IRC: <irc.linux-a11y.org>, Room: #a11y
|
||||
* Web site: <https://linux-a11y.org>
|
||||
* E-mail list: <fenrir-screenreader@freelists.org>
|
||||
* Wiki: <https://wiki.linux-a11y.org/doku.php?id=fenrir>
|
||||
* Source Code: <https://github.com/chrys87/fenrir>
|
||||
|
42
content/site/advanced/03-01-menu-custom.md
Normal file
42
content/site/advanced/03-01-menu-custom.md
Normal file
@ -0,0 +1,42 @@
|
||||
# Customizing the F123Light Menus
|
||||
|
||||
You may want to add your favorite application to the menu system for easy launching. To do this, create a file called menu under ~/.config/F123 like this:
|
||||
|
||||
mkdir -p ~/.config/F123
|
||||
nano ~/.config/F123/menu
|
||||
|
||||
The process for adding a command line based application is pretty straight forward. This, for example, will add vim:
|
||||
|
||||
exec:Vim Text Editor::vim
|
||||
|
||||
Some applications require special directives to pdmenu, those that do not stay open for example, may need the pause flag. For more information, please read:
|
||||
|
||||
man pdmenurc
|
||||
|
||||
Adding graphical applications, such as chromium takes a bit more work. To do this, we have to suspend Fenrir so that it and Orca aren't trying to read at the same time. We then have to call the graphical application with a special script that loads all the X session components and starts the Orca screen reader. Here is an example to add lxterminal to your personal menu:
|
||||
|
||||
group:LXTerminal
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen &> /dev/null
|
||||
exec:::echo -n "setting set screen#suspendingScreen=$(</tmp/fenrirSuspend)" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lxterminal
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen &> /dev/null
|
||||
exec:::echo -n "setting set screen#suspendingScreen=$(</tmp/fenrirSuspend)" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
||||
endgroup
|
||||
|
||||
Notice that there are some execs even after the lxterminal application is called. This is to restore Fenrir so it will begin reading again after the X session closes.
|
||||
|
||||
### Finding Binary Application Files
|
||||
|
||||
You will usually find binary application files at: /usr/bin
|
||||
|
||||
If you are ever unsure though, the following command will show you where it is, assuming it is in your executable path:
|
||||
|
||||
command -v application-name
|
||||
|
||||
For example:
|
||||
|
||||
% command -v firefox
|
||||
/usr/bin/firefox
|
||||
|
||||
Please note that the "$" symbol is usually used to indicate the command line prompt. In F123Light, we use the "%" symbol, but this can be easily changed.
|
||||
|
12
content/site/advanced/03-02-menu-modes.md
Normal file
12
content/site/advanced/03-02-menu-modes.md
Normal file
@ -0,0 +1,12 @@
|
||||
# F123Light Modes
|
||||
|
||||
in order to help keep clutter down, and to make things more efficient, F123Light offers modes that change the way it presents information. For now, this mostly means different menus, but as this service grows, it could potentially change nearly every aspect of the system.
|
||||
|
||||
Only someone with administrative access can change modes, and only by running a command from the command line. To change modes, run the following command:
|
||||
|
||||
sudo /usr/lib/F123-wrappers/change-mode.sh
|
||||
|
||||
You will be presented with a menu of all available modes. Just arrow to the one you want and press enter to activate it. If you already know the mode you want, simply specify it at the end of the command above.
|
||||
|
||||
The idea behind modes is to have a "default" mode, which only shows the most user-friendly software; a "test" mode, which might be used to administer tests in schools; and "admin" or "advanced" mode, which will give full access for those who are sophisticated users of technology; and other modes such as games, will certainly be suggested by our users.
|
||||
|
23
content/site/advanced/04-01-translate.md
Normal file
23
content/site/advanced/04-01-translate.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Translating with GetText
|
||||
|
||||
If you want to help with F123Light translations, please get in touch with us, as we have simplified greatly the process described here. However, if you just want to translate doing every step manually, read-on.
|
||||
|
||||
To create a translation for a project, the first step is to create a .pot file.
|
||||
|
||||
xgettext -o name.pot -L sourceCodeLanguage file(s)
|
||||
|
||||
Source language can be one of C, C++, ObjectiveC, PO, Shell, Python, Lisp, EmacsLisp, librep, Scheme, Smalltalk, Java, JavaProperties, C#, awk, YCP, Tcl, Perl, PHP, GCC-source, NXStringTable, RST, Glade, Lua, JavaScript, Vala, or Desktop according to the man page. There used to be a python specific translation script called pygettext3 but it is now deprecated. After the .pot file is created, the next step is to create a .po file that contains the translation. The .po must be specified with the full language code including .UTF-8 or appropriate encoding string.
|
||||
|
||||
msginit -i name.pot -l pt_BR.UTF-8
|
||||
|
||||
The package name and copyright information should be set in the .po file. The .po file is the locale name without the .UTF-8, so in the example above, pt_BR.po.
|
||||
|
||||
To finally generate the .mo file, which is what actually provides the translation usable by the software, `run the following:
|
||||
|
||||
msgfmt -o name.mo pt_BR.po
|
||||
|
||||
For the .mo file to actually be used, it must be placed in the correct directory to be available to gettext. Move the .mo file as in:
|
||||
|
||||
mv name.mo /usr/share/locale/pt_BR/LC_MESSAGES/name.mo
|
||||
|
||||
|
4
content/site/advanced/08-00-troubleshooting.md
Normal file
4
content/site/advanced/08-00-troubleshooting.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Troubleshooting Problems
|
||||
|
||||
In this section we have suggestions regarding how you may investigate problems with your software. The idea is to help you figure things out on your own, or at the very least, help you find information which might allow others to help you more rapidly.
|
||||
|
20
content/site/advanced/08-01-update.md
Normal file
20
content/site/advanced/08-01-update.md
Normal file
@ -0,0 +1,20 @@
|
||||
## Troubleshooting update-f123light
|
||||
|
||||
### Update Problems with Version 19.02.04 of F123Light
|
||||
|
||||
For some users, it was necessary to run the update option under the 'Settings' menu, twice, and then their version got correctly updated. If that does not solve your problem, you might want to research further.
|
||||
|
||||
### Logs and More
|
||||
|
||||
You will probably find helpful details in this log:
|
||||
|
||||
/var/log/update-f123light.log
|
||||
|
||||
You might also want to try this command for more potentially useful information:
|
||||
|
||||
pacman -Qi update-f123light-git
|
||||
|
||||
Finally, this command might help with updates, and if there are none, then that is good to know as well:
|
||||
|
||||
yay -Syu
|
||||
|
6
content/site/advanced/08-02-wifi.md
Normal file
6
content/site/advanced/08-02-wifi.md
Normal file
@ -0,0 +1,6 @@
|
||||
## WiFi Issues
|
||||
|
||||
The Raspberry Pi 3B+ works with WiFi channels 1 through 11, but some networks are configured to use channels 12 or 13. Please check if this is the case with the network giving you problems. The solution would be changing the configuration of the WiFi router so it can operate with channels 1 through 11.
|
||||
|
||||
Another potential problem is the frequency being used by your WiFi network. If your WiFi router uses the 5GHz band only, older Raspberry Pi models will not see it. Only the Raspberry Pi 3B Plus, is capable of handling both 2.4GHz and 5GHz. Although our software is developed and supported for the Model 3B+, sometimes people use it on older Raspberry Pis, which in this case, prevents them from accessing 5GHz WiFi networks.
|
||||
|
5
content/site/advanced/09-code-01-gitlab.md
Normal file
5
content/site/advanced/09-code-01-gitlab.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Source Code for F123Light
|
||||
|
||||
F123Light is based on Arch Linux, so the following address is only relevant for the customizations our team has made to that distribution:
|
||||
<https://gitlab.com/f123/>
|
||||
|
8
content/site/autoresponder/00-header.md
Normal file
8
content/site/autoresponder/00-header.md
Normal file
@ -0,0 +1,8 @@
|
||||
Thank you for your interest in F123 (pronounced F 1 2 3).
|
||||
|
||||
Messages in Spanish should be sent to:
|
||||
<informacion@f123.org>
|
||||
|
||||
Messages in Portuguese should be sent to:
|
||||
<info@f123.org>
|
||||
|
12
content/site/autoresponder/03-F123Light.md
Normal file
12
content/site/autoresponder/03-F123Light.md
Normal file
@ -0,0 +1,12 @@
|
||||
If you would like to learn more about the world's most affordable fully-functional talking computer for the blind, please visit our F123Light page at:
|
||||
https://guide.f123.org/
|
||||
|
||||
If you have software-related questions, suggestions, comments, and contributions, please join one of our e-mail lists at:
|
||||
https://guide.f123.org/getting-started.html#our-e-mail-lists
|
||||
|
||||
To volunteer, help, and contribute in various ways, please look at:
|
||||
https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc
|
||||
|
||||
To download the latest version of the F123Light operating system, please visit:
|
||||
https://guide.f123.org/getting-started.html#download
|
||||
|
16
content/site/autoresponder/09-footer.md
Normal file
16
content/site/autoresponder/09-footer.md
Normal file
@ -0,0 +1,16 @@
|
||||
If you are writing regarding other topics, we will respond as soon as possible.
|
||||
|
||||
Thank you,
|
||||
|
||||
The F123 Team
|
||||
<https://F123.org/en/>
|
||||
<https://YouTube.com/user/F123Fernando?feature=CBAQwRs%3D>
|
||||
|
||||
P.S.: Our team does not generally follow nor respond to posts on Facebook, Youtube, Twitter, or LinkedIn. We prioritize messages on our e-mail lists and those e-mailed directly to us. However, we do post occasional announcements in social networks, so if you would like to follow us, please use:
|
||||
|
||||
<https://Twitter.com/F123org>
|
||||
<https://Facebook.com/F123.org>
|
||||
<https://Linkedin.com/in/f123org>
|
||||
|
||||
---
|
||||
|
27
content/site/getting-started/01-01-release-download.md
Normal file
27
content/site/getting-started/01-01-release-download.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Latest Release
|
||||
|
||||
## Download
|
||||
|
||||
This release is still Alpha code, which means that it is under development and it has important problems and limitations.
|
||||
|
||||
We have a single installation file for all available languages, but not all translations are equally complete. Much work remains to be done and any help is most welcome.
|
||||
|
||||
You can find the compressed image file here:
|
||||
<https://public.f123.org/latestImage>
|
||||
|
||||
We are also including the [sha1sum signature for the image](latestImage.sha1sum) file, so you can verify file integrity after download. Please note that the image is compressed with the xz format, which is more efficient than the zip format. You may find [information on how to uncompress xz files here](http://www.e7z.org/open-xz-txz.htm).
|
||||
|
||||
### The First Time You Turn-On the Computer
|
||||
|
||||
During the first time you start or boot the computer, the software will auto-expand the partition and file system to match the size of the Micro-SD card, so it can take a minute and a half or more for the Raspberry Pi 3B+ computer to be ready. Subsequent boots will be faster, i.e. around 30 seconds.
|
||||
|
||||
### Default Username and Passwords
|
||||
|
||||
the default username is: f123
|
||||
|
||||
The default user and admin password is lowercase: f123
|
||||
|
||||
The hostname is (lowercase): f123light
|
||||
|
||||
Advanced users can easily build images with WiFi and other passwords already set to personalized values. [Information on custom images can be found here](advanced.html#build-a-custom-image).
|
||||
|
8
content/site/getting-started/01-02-release-burn.md
Normal file
8
content/site/getting-started/01-02-release-burn.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Burning/Flashing the F123Light Image File to the Micro-SD Card
|
||||
|
||||
Once you download and verify the integrity of the compressed version of the image file, you must uncompress this file and flash or burn it to the micro-SD card which you will use on the Raspberry Pi computer. We recommend that you use a micro-SD card of at least 16Gb in size, but an 8Gb card should also work, even though little disk space will be available for your own files.
|
||||
|
||||
The expressions "flash" or "burn the image" is used because this is not the same as a copy and paste file transfer. While there are many ways to "flash" the image to the card, we have heard good things about both [Etcher](https://etcher.io/) and [Rufus](https://rufus.ie/) software. Etcher apparently works well in Windows, Mac, and Linux, whereas Rufus works well on Windows.
|
||||
|
||||
It is also worth mentioning that burning an image will not prevent you from reformatting or burning other images on the SD card in the future. In other words, even though people use the word "burn", the process is not permanent. It is just another method for temporarily saving a file.
|
||||
|
8
content/site/getting-started/01-03-release-update.md
Normal file
8
content/site/getting-started/01-03-release-update.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Updating the F123Light Operating System
|
||||
|
||||
In the "Main Menu" there is a sub-menu called "Settings", which has an option that makes it easy to update the system, called: "Check for system updates"
|
||||
|
||||
Thanks to this option, it is usually not necessary to flash a new image or use complicated commands whenever a new version of F123Light is available. However, we do recommend that you stay in touch with our team, as at this stage in the project, new versions are sometimes experimental, and are not recommended for all users.
|
||||
|
||||
If you are a technically-oriented or advanced computer user, you might want to explore the more advanced options described in [our technical guide](advanced.html).
|
||||
|
12
content/site/getting-started/01-04-release-build.md
Normal file
12
content/site/getting-started/01-04-release-build.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Developers and Other Advanced Users
|
||||
|
||||
## Updating F123Light on the Command Line
|
||||
|
||||
Advanced users can perform an update from the command line with the command: "update-f123light"
|
||||
|
||||
If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be: "update-f123light -b dev
|
||||
|
||||
## Building Your Own F123Light Image
|
||||
|
||||
Experienced users also have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use. Please make sure your working SD card has at least 8Gb of free space to perform this procedure. You may lern more about building your own image in our [resources for advanced users page](advanced.html).
|
||||
|
4
content/site/getting-started/01-09-acknowledgement.md
Normal file
4
content/site/getting-started/01-09-acknowledgement.md
Normal file
@ -0,0 +1,4 @@
|
||||
## Acknowledgements
|
||||
|
||||
Our work is only possible thanks to a [wide variety of persons and organizations](https://f123.org/en/acknowledgements), from volunteers and our own users, to developers, translators, journalists, teachers, funders, and many more. Thank you all!
|
||||
|
4
content/site/getting-started/02-00-configuration.md
Normal file
4
content/site/getting-started/02-00-configuration.md
Normal file
@ -0,0 +1,4 @@
|
||||
## Initial Operating System Configuration
|
||||
|
||||
The very first time you start-up your computer with the MicroSD card containing F123Light, the start-up or boot process will take longer than usual, as the system is uncompressing and preparing the file system for use. The larger the capacity in your MicroSD card (i.e. the more memory it has), the longer this process will take. In any case, it will generally be two or three minutes at the most.
|
||||
|
28
content/site/getting-started/02-01-fenrir-basics.md
Normal file
28
content/site/getting-started/02-01-fenrir-basics.md
Normal file
@ -0,0 +1,28 @@
|
||||
### Basic Commands for the Fenrir Screen Reader
|
||||
|
||||
Most users will be very happy to know that for maybe the first time in history, using a new screen reader will not necessarily require you to learn new keyboard commands. This is because, if you already use the NVDA screen reader, you will probably feel right at home with the key combinations used by Fenrir, the main screen reader of F123Light.
|
||||
|
||||
#### Controls for Speech Volume, Rate, and Pitch
|
||||
|
||||
Just like in NVDA, you can use Insert, Control, and the arrow keys to modify speech parameters like volume, rate, and pitch. Insert, also called the Fenrir key or the NVDA key, depending on which manual you are reading, can also be the CapsLock key, if you are using the screen reader in laptop mode.
|
||||
|
||||
To change speech volume, rate, or pitch, hold down the Fenrir key and the Control key, and use the left and right arrow keys to select if you want to change volume, rate, or pitch. Once you are on the parameter you wish to change, use the up and down arrow keys to increase or decrease that parameter.
|
||||
|
||||
Once the speech volume, rate, or pitch is at the level you desire, simply release the Fenrir and the Control keys, and continue using your computer normally.
|
||||
|
||||
#### Using Tutorial, Help, or Learn Mode
|
||||
|
||||
Pressing the Fenrir and F1 keys, your screen reader will activate its "Tutorial Mode", which allows you to press just about any key, and hear its name and function, if it has a special screen reader function. When you are in "Tutorial Mode", you can press keys and, other than telling you what they normally do, the system will not do anything else. It is an excellent way to learn your way around Fenrir and your keyboard.
|
||||
|
||||
To deactivate "Tutorial Mode", simply press Fenrir and F1 again, or press the 'Escape' key, also often labeled as 'ESC'. The 'Escape' key is found usually at the top left of most keyboards.
|
||||
|
||||
#### Reviewing the Screen
|
||||
|
||||
Just like with most screen readers, Fenrir uses the numeric keypad on the full desktop keyboard for many of its commands. This is especially true for those which involve movement, such as reading previous or next line, word, or character.
|
||||
|
||||
Assuming that you are using a full-size desktop keyboard, which has a numeric keypad to its right, you can use: numbers 7, 8, and 9, to read previous, current, and next line; numbers 4, 5, and 6, to read previous, current, and next word; and numbers 1, 2, and 3, to read previous, current, and next character.
|
||||
|
||||
If you are using Fenrir in laptop mode, in other words, assuming you do not have a numeric keypad on your keyboard, then you must hold down the CapsLock key, which becomes the new Fenrir key, and press letters U, I, and O, for previous, current, and next line; letters J, K, and L, for previous, current, and next word; and N, M, and the comma symbol, for previous, current, and next character.
|
||||
|
||||
Of course, if you used our fast language switching command to change language, the keyboard layout as well as the instant spell checker, will also change. However, the location remains the same. You will still use your right hand in its standard positioning on the keyboard, to read around the screen when holding down the CapsLock key.
|
||||
|
8
content/site/getting-started/02-02-language-selection.md
Normal file
8
content/site/getting-started/02-02-language-selection.md
Normal file
@ -0,0 +1,8 @@
|
||||
### Selecting the Operating System Language
|
||||
|
||||
The very first version of F123Light is available in English, but shortly will also be available in Brazilian Portuguese, Spanish, and Arabic. Please [join the e-mail list corresponding to the language you are interested in](guide.html#our-e-mail-lists), and you will be notified when it becomes available.
|
||||
|
||||
The very first time F123Light loads, it gives you a chance to select the language you will use the system in. Press 'Enter' for English, or use the up and down arrow keys to select another option and press 'Enter'. Once you do this, the system will make a sound and restart in the language you selected.
|
||||
|
||||
If you selected a language which is still not officially supported, the interface might still not be entirely translated.
|
||||
|
18
content/site/getting-started/02-03-system-passwords.md
Normal file
18
content/site/getting-started/02-03-system-passwords.md
Normal file
@ -0,0 +1,18 @@
|
||||
### Change System Passwords
|
||||
|
||||
Another question that comes-up when you boot your computer for the first time, relates to changing system passwords. If you are just testing the system and have no plans to use it for more than a few minutes, then there is no nee for you to change system passwords. However, if you will use the system for more than just a few minutes, we recommend that you change the default passwords.
|
||||
|
||||
If you press "Enter" for "Yes", you will have a chance to change both the password for the normal user, and the administrator's password. Here is some information which might come-in handy:
|
||||
|
||||
The name of the default user in F123Light is: f123
|
||||
|
||||
Please note that this name is with a lowercase "f".
|
||||
|
||||
The default password for the normal user is exactly the same: f123
|
||||
|
||||
The default name of the root or administrator, is: root
|
||||
|
||||
Here also, the name is entirely in lowercase.
|
||||
|
||||
The default password for the administrator or root user is exactly the same, also in lowercase: root
|
||||
|
9
content/site/getting-started/02-04-configuring-wifi.md
Normal file
9
content/site/getting-started/02-04-configuring-wifi.md
Normal file
@ -0,0 +1,9 @@
|
||||
### Configuring WiFi
|
||||
|
||||
The quickest way to get internet access is usually to just plug-in an Ethernet cable connected to a router providing that access. However, most often people end-up using wireless access through WiFi.
|
||||
|
||||
The configuration process which helps you setup your system when you turn it on for the first time, will also help you configure WiFi, since this access will be required when it is time to select the region where you live.
|
||||
|
||||
Setting-up WiFi is easy, just use the up and down arrow keys to select the name of your WiFi network from the provided list and press 'Enter'.
|
||||
|
||||
Next, enter the password for that WiFi network or access point
|
8
content/site/getting-started/02-05-region-selection.md
Normal file
8
content/site/getting-started/02-05-region-selection.md
Normal file
@ -0,0 +1,8 @@
|
||||
### Selecting Your Region
|
||||
|
||||
The F123Light operating system sometimes needs to know where in the world you are located. This is helpful so it can find out what day and time it is, and it can then figure-out if, for example, a new update to the software is actually new.
|
||||
|
||||
First you must use the up and down arrow keys to select the region where you are and then press 'Enter'.
|
||||
|
||||
Then you need to select the city where you live from a list and again press 'Enter'. Since the list only contains the largest cities, your own city might not be on the list. If this happens, please select another city which is near-by, or at least in the same timezone.
|
||||
|
@ -0,0 +1,4 @@
|
||||
# Introduction to the Basics
|
||||
|
||||
In this section we will describe the commands and shortcuts you can use for routine operations with F123Light. Since the system is undergoing rapid development, there may be times in which the documentation does not perfectly match the latest version of the software. If you encounter difficulties, please [let us know through one of our e-mail lists](guide.html#our-e-mail-lists).
|
||||
|
40
content/site/getting-started/03-02-bluetooth.md
Normal file
40
content/site/getting-started/03-02-bluetooth.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Bluetooth in F123Light
|
||||
|
||||
Connecting bluetooth devices such as headsets and keyboards is fairly straightforward in F123Light.
|
||||
|
||||
## Common Steps to Get Started
|
||||
|
||||
* Start by navigating to the Settings menu by pressing s.
|
||||
* Press b to open the bluetooth manager.
|
||||
* You will hear "screen reader on" followed by "Bluetooth devices frame." Note: this may take up to 15 seconds.
|
||||
* Put your device into pairing or discovery mode. Each device can be different, so it helps to know how to do this on the specific device. For example, some devices allow you to hold in the power button, while others have dedicated pairing buttons.
|
||||
* The "Search button" in the bluetooth device manager is already focused. Press the space bar to activate it.
|
||||
* Press the tab key twice. You will hear some table information that you can ignore.
|
||||
* Use the up and down arrow keys to navigate to the device you want to pair.
|
||||
|
||||
## Pairing Headsets and Speakers
|
||||
|
||||
* Press the tab key to leave the list of devices and focus the search button.
|
||||
* Press the right arrow key twice. The first time you will hear "trust push button." The next time you will hear "Setup ... push button."
|
||||
* Press the space bar to activate setup.
|
||||
* The pairing method is already set, so you can press shift+tab to the "Next push button."
|
||||
* "Audio sink" is selected by default, so again press shift+tab to the "Next push button."
|
||||
* Your headset or speakers should now be connected. Press the space bar to close the setup application.
|
||||
* Press the left arrow once to "Trust push button" and press the space bar.
|
||||
* If you want to pair another device, put the new device into pairing mode, press the left arrow again to the "Search push button" and then tab
|
||||
to go back to the list and find the new device. Repeat either the pairing steps for headsets or speakers, or if your device is a keyboard, continue to the next heading.
|
||||
|
||||
## Pairing a keyboard
|
||||
|
||||
* Press the tab key to leave the list and press the right arrow to the "Pair push button."
|
||||
* Press the space bar on your USB keyboard to begin the pairing process.
|
||||
* You will hear "pairing request for" followed by a string of letters and numbers, followed by a short pause and a 6-digit pairing code, all numbers. On the bluetooth keyboard, type in the 6-digit code followed by the enter key.
|
||||
* Be sure to listen for all 6 digits of the code; it is spoken as a whole number. However, speech is interrupted as you type on the bluetooth keyboard, so you can listen for the code again if you get stuck in the middle.
|
||||
* You should hear "Authorization request for" followed by the letters and numbers you heard when pairing. Press the tab key on the USB keyboard to accept the request.
|
||||
* Once you accept the authorization request, you should hear an upward sweeping tone. This indicates that your keyboard is connected.
|
||||
* Press the escape key until you hear "Bluetooth Devices frame" again. Press the left arrow to the "Trust push button" and press the space bar.
|
||||
|
||||
## All Devices Are Paired and Connected
|
||||
|
||||
* Press alt+F4 to return to the settings menu and the escape key to return to the F123Light main menu.
|
||||
|
34
content/site/getting-started/03-02-editor.md
Normal file
34
content/site/getting-started/03-02-editor.md
Normal file
@ -0,0 +1,34 @@
|
||||
## An Introduction to the Text Editor
|
||||
|
||||
The default text editor in the F123Light system is called Nice Editor (NE). This editor is small in size, fast, easy to use, and feature rich.
|
||||
|
||||
The keyboard shortcuts or key bindings used in the F123Light version of Nice Editor are modified so that anybody who has used an editor under Windows or other graphical user interfaces (GUIS), will have a very easy time using it.
|
||||
|
||||
You will also notice that for some functions, more than one shortcut is available. This is because depending on what editor you use the most, you might for example, close a document with Ctrl+W or maybe with Ctrl+Q. Since both combinations work on F123Light's version of Nano, you will probably be able to just keep using what you are used-to.
|
||||
|
||||
Here is a list of shortcuts. Remember, you can also use Fenrir's virtual menu system (Insert+F10), if you get stuck or can't remember something:
|
||||
|
||||
* Control+O: Open a new file. This does not close any previous files you have open.
|
||||
* Control+S: Save current file.
|
||||
* Control+w: Save the current file and exit if there are no other open files.
|
||||
* Control+q: Save the current file and exit if there are no other open files.
|
||||
* F4: Save the current file and exit if there are no other open files.
|
||||
* F7: Activates the spellchecker.
|
||||
* Hold down the Shift key and move with the arrow keys to highlight portions of the text and use Ctrl+X, Ctrl+C, and Ctrl+V to cut, copy, and paste.
|
||||
* Press Home or End to move directly to the beginning or end of the current line.
|
||||
* Press Control and left or right arrow to move one word at a time.
|
||||
* Press Ctrl+Home or Ctrl+End to move directly to the beginning or end of the current file.
|
||||
* Control+x: Cut the current line so you can use Control+V to move it, i.e. paste it, elsewhere. (only available inside Nano)
|
||||
* Control+c: Copy the current line so you can use Control+V to paste it elsewhere. (only available inside Nano)
|
||||
* Control+v: Paste the current clipboard to the file. (only available inside Nano)
|
||||
* Alt+Space: Changes to the next file, if you have more than one open.
|
||||
* Control+Space: Changes to the previous file, if you have more than one open.
|
||||
* Control+f: Find text within the current document.
|
||||
* Control+h: Find and replace text in the current document.
|
||||
* Alt+c: Try to complete the current word. For this to work, the word you want to complete must already exist somewhere in the document.
|
||||
* Alt+m: Get character, line, and word count for the current document.
|
||||
|
||||
Please note that the Nice Editor sometimes calls files "buffers". You can consider buffers the exact same thing as a file. The only reason this term is used, is because it refers to information that resides on memory and might not be already saved to disk.
|
||||
|
||||
If you forget any of these commands, you can always find this text inside the Virtual Menu (Insert+F10), under the "Help" menu, under "About Nice Editor".
|
||||
|
6
content/site/getting-started/03-04-language-switching.md
Normal file
6
content/site/getting-started/03-04-language-switching.md
Normal file
@ -0,0 +1,6 @@
|
||||
## Fast Language Switching
|
||||
|
||||
If you know more than one language, you can quickly switch between them with Fenrir. Press the Fenrir script key. The Script key is the Super key located between the left control and alt keys. Your Super key may have the Windows logo on it.
|
||||
|
||||
To add a new language, or remove one, open "Configure fast language switching" located under the "Settings" menu.
|
||||
|
12
content/site/getting-started/03-08-remote-assistance.md
Normal file
12
content/site/getting-started/03-08-remote-assistance.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Getting Remote Assistance
|
||||
|
||||
If you are ever stuck, or have broken something and cannot figure out how to fix it, one of our team members may be able to help you. If you go to the help menu and select "Request remote assistance with my computer", a request for help will be issued to the F123 team.
|
||||
|
||||
To get help simply write a brief description of the problem you have. To send the request, type . on a line by itself.
|
||||
|
||||
Please note that this service is experimental at this point and is not yet available 24 hours a day, and for now, it is only available in English. In the near future we will share more details on time and language options in our lists and blog.
|
||||
|
||||
### Important Notice on Remote Assistance
|
||||
|
||||
Requesting remote assistance allows a team member full access to your computer. Anything the root user can do is available to the support staff who answers your request for assistance. You can request a log of everything done in the help session.
|
||||
|
32
content/site/getting-started/03-09-basics-lists.md
Normal file
32
content/site/getting-started/03-09-basics-lists.md
Normal file
@ -0,0 +1,32 @@
|
||||
# Finding or Offering Help
|
||||
|
||||
## Contributing Time, Talent, Contacts, Etc
|
||||
|
||||
If you value the work we do, please help us out. You can help in many ways. here are some ideas:
|
||||
|
||||
* [Watch and like this video](https://youtu.be/KBM8Nq-f2T4) so we can win the Holman Prize and offer computer-building workshops in over 12 countries.
|
||||
* Tell a blind friend or blindness-related organization about us, this is our main page for F123Light: <https://guide.F123.org/>
|
||||
* [Donate a couple of hours a week as a volunteer](https://public.f123.org/F123-Seeks-Volunteers.html), [helping us with translations](https://crwd.in/f123light), proposal-writing, or marketing efforts.
|
||||
* Help with [software development](advanced.html)
|
||||
* [Buy the parts](https://f123.org/partes-f123light) or donate used equipment, and help a blind kid build his or her own talking computer.
|
||||
* Buy a talking computer and give it to a blind kid.
|
||||
* [Introduce us](mailto:information@f123.org?subject=Introducing F123) to a wealthy individual, foundation, or government agency that wants to assist the blind in their education, social inclusion, or employment prospects. Even though we prefer e-mail and dislike all types of social networks, if necessary and unavoidable, you can [introduce us using LinkedIn](https://br.linkedin.com/pub/fernando-botelho/5/a4a/6a2).
|
||||
* [Sponsor one of our courses or computer-building workshops](mailto:information@f123.org?subject=Sponsor F123).
|
||||
|
||||
## Our E-mail Lists
|
||||
|
||||
To join any of the following e-mail lists, you can send a blank e-mail message to the indicated address. You will then receive an e-mail message from the list, requesting confirmation. Just responding to that confirmation e-mail, i.e. pressing "reply" on your e-mail software, and sending the message without writing anything wil confirm and subscribe you to the list.
|
||||
|
||||
If all you want is to get an occasional e-mail from us, sharing the latest news, [join our announcement list](mailto:f123light+subscribe@groups.io). The plan is to send just one message per month, maybe even less.
|
||||
|
||||
* Technically inclined users who can communicate in English should subscribe e-mailing [F123e+subscribe@groups.io](mailto:F123e+subscribe@groups.io)
|
||||
* English speakers who are not developers or technically inclined, but are interested in the project for day-to-day use in note-taking, office work, project management, and other activities, subscribe by sending an e-mail to [F123-Visual-English+subscribe@groups.io](mailto:F123-Visual-English+subscribe@groups.io)
|
||||
* Non-technical users who speak Spanish can join our group by sending an e-mail message to [F123-Visual-espanol+subscribe@groups.io](mailto:F123-Visual-espanol+subscribe@groups.io)
|
||||
* Non-technical users who speak Portuguese can join by sending an e-mail message to [F123-Visual-portugues+subscribe@groups.io](mailto:F123-Visual-portugues+subscribe@groups.io)
|
||||
|
||||
Those who want to keep in touch with the project through social networks, should know that we rarely respond to posts on social networks. Ideally, please get in touch with us via the above lists or via direct e-mail.
|
||||
|
||||
## Contacting Our Team Directly
|
||||
|
||||
Some messages are best sent directly to our team. E-mail [messages in English can be sent to this address](mailto:information@f123.org), [in Spanish to this address](mailto:informacion@f123.org), and [in Portuguese to this address](mailto:info@f123.org).
|
||||
|
16
content/site/guide-index/.html-.md
Normal file
16
content/site/guide-index/.html-.md
Normal file
@ -0,0 +1,16 @@
|
||||
% Online Guide to the F123Light Project
|
||||
|
||||
Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future.
|
||||
|
||||
---
|
||||
|
||||
Click [here for a description of the challenges we seek to overcome and our overall strategy](strategy.html); [here for practical guidance on how to download and use F123Light](getting-started.html), and [here for more advanced technical information](advanced.html).
|
||||
|
||||
If you have questions which are not addressed in any of the above pages or want to run a computer-building workshop, please join one of our [e-mail lists]() and tell us about it. You will also find an announcement list, in case you just want to hear our latest news once a month.
|
||||
|
||||
If you have a couple of hours a week or more, which you would like to use to [remotely volunteer for our cause, please checkout this document]() describing some of the opportunities we have.
|
||||
|
||||
We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is our lists. If it is something you rather write directly to us, here are our direct e-mail addresses according to language.
|
||||
|
||||
This document is version number: 19.02.25
|
||||
|
22
content/site/guide-index/.html.html
Normal file
22
content/site/guide-index/.html.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Content-Style-Type" content="text/css" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<title>Online Guide to the F123Light Project</title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<h1 class="title">Online Guide to the F123Light Project</h1>
|
||||
</div>
|
||||
<p>Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future.</p>
|
||||
<hr />
|
||||
<p>Click <a href="strategy.html">here for a description of the challenges we seek to overcome and our overall strategy</a>; <a href="getting-started.html">here for practical guidance on how to download and use F123Light</a>, and <a href="advanced.html">here for more advanced technical information</a>.</p>
|
||||
<p>If you have questions which are not addressed in any of the above pages or want to run a computer-building workshop, please join one of our <a href="">e-mail lists</a> and tell us about it. You will also find an announcement list, in case you just want to hear our latest news once a month.</p>
|
||||
<p>If you have a couple of hours a week or more, which you would like to use to <a href="">remotely volunteer for our cause, please checkout this document</a> describing some of the opportunities we have.</p>
|
||||
<p>We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is our lists. If it is something you rather write directly to us, here are our direct e-mail addresses according to language.</p>
|
||||
<p>This document is version number: 19.02.25</p>
|
||||
</body>
|
||||
</html>
|
2
content/site/guide-index/01-00-header.md
Normal file
2
content/site/guide-index/01-00-header.md
Normal file
@ -0,0 +1,2 @@
|
||||
% Online Guide to the F123Light Project
|
||||
|
4
content/site/guide-index/01-01-welcome.md
Normal file
4
content/site/guide-index/01-01-welcome.md
Normal file
@ -0,0 +1,4 @@
|
||||
Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future.
|
||||
|
||||
---
|
||||
|
16
content/site/guide-index/02-01-index.md
Normal file
16
content/site/guide-index/02-01-index.md
Normal file
@ -0,0 +1,16 @@
|
||||
Feel free to suggest additional resources for this page. Here is what we already have:
|
||||
|
||||
* [The Challenges We Will Overcome and How](strategy.html)
|
||||
* [Practical Guidance on How to Download and Use F123Light](getting-started.html)
|
||||
* [Advanced Technical Information](advanced.html)
|
||||
* [Different Ways in Which You Can Help](https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc)
|
||||
* [Our E-mail Lists for Announcements, Questions, and Suggestions](https://public.f123.org/guide/getting-started.html#our-e-mail-lists)
|
||||
|
||||
## Computer-Building Workshops
|
||||
|
||||
If you would like to be part of one such workshop, please join one of our lists and [watch and like this video](https://youtu.be/KBM8Nq-f2T4), so we can win the Holman Prize. Thanks!
|
||||
|
||||
## Social Media and Lists
|
||||
|
||||
We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is [our lists](https://guide.f123.org/getting-started.html#our-e-mail-lists). If it is something you rather write directly to us, here are [our e-mail addresses according to language](https://public.f123.org/guide/getting-started.html#contacting-our-team-directly).
|
||||
|
4
content/site/guide-index/content-license.md
Normal file
4
content/site/guide-index/content-license.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
|
||||
This work by [F123 Consulting](https://f123.org/en/) is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/). We also have another way for you to freely use our content, if this license does not meet your needs. [Contact us for alternative licensing options](mailto:license@f123.org).
|
||||
|
7
content/site/strategy/01-01-introduction-general.md
Normal file
7
content/site/strategy/01-01-introduction-general.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Introduction
|
||||
|
||||
The [F123 Consulting](https://www.F123.org/en/) team has developed [F123Light](https://guide.f123.org/), the world's most affordable fully functional talking computer for the blind. The project's objective is to enhance access to education and employment for the blind through the use of low-cost competitive technologies, training, and technical support. The strategy is to scale-up through the use of mass-produced and easily assembled hardware kits, as well as freely distributed and cooperatively developed open source software.
|
||||
|
||||
The first version of F123Light will be launched in early 2019 and will be available in English, Brazilian Portuguese, Spanish, and Arabic. Contributors to F123Light come from countries as varied as Algeria, Brazil, Egypt, Germany, India, Latvia,
|
||||
Russia, the United Arab Emirates, the United Kingdom, and the United States.
|
||||
|
4
content/site/strategy/02-01-problem-complexity.md
Normal file
4
content/site/strategy/02-01-problem-complexity.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Defining the Problem
|
||||
|
||||
Improving access to education and employment opportunities for the blind is, as is the case with most social challenges, a complex problem which involves a variety of social, economic, and technological factors. The following are some of the problems we have identified as important and which we hope to address through our F123Light initiative.
|
||||
|
10
content/site/strategy/02-02-0problem-cost.md
Normal file
10
content/site/strategy/02-02-0problem-cost.md
Normal file
@ -0,0 +1,10 @@
|
||||
## The Typically High Cost of Assistive Technology
|
||||
|
||||
Most companies which develop and market sophisticated assistive technologies, such as screen reading software, are based in developed countries where they depend largely on government purchases to sustain their work. As a result, their business model is not optimized for affordability, as tends to be the case with any corporation that sells primarily to governments. As an example, the cost for [Jaws for Windows](https://www.freedomscientific.com/Products/Blindness/JAWS), a screen reader which is quite popular among wealthy governments, is about US$2000 per license.
|
||||
|
||||
In addition, there are other factors, such as the high complexity of some of these technologies, the high level of specialization required of developers, and the high marketing and distribution costs for assistive technologies. High marketing costs are particularly the case among the blind, who tend to be widely dispersed geographically, as well as in all social classes, ethnicities, nationalities, and age groups.
|
||||
|
||||
In addition, the cost of hardware products for the blind also tends to be very high, relative to their features and overall technical characteristics. The reason for this seems to be that, in addition to reduced competition due to the small market size, custom-made hardware is always more expensive when its production volumes are smaller than those reached by mainstream products. This is the case, because even though persons with disabilities are an estimated 10 to 15 percent of the overall population, within that group there is great diversity. For example, persons who are blind are estimated to be only about [two to three percent of the overall population in the United States](http://www.disabilitystatistics.org/reports/acs.cfm?statistic=1).
|
||||
|
||||
Finally, cost is a relative concept, as it depends greatly on the income level of the potential customer. In this regard assistive technology tends to be very expensive given that the prevalence of poverty, i.e. the [percentage of visually impaired persons living below the poverty line in the United States is roughly one third](http://www.disabilitystatistics.org/reports/acs.cfm?statistic=7). World-wide the problem persists, with [persons with disabilities being the poorest among the poor](https://siteresources.worldbank.org/SOCIALPROTECTION/Resources/SP-Discussion-papers/Disability-DP/1109.pdf).
|
||||
|
10
content/site/strategy/02-03-problem-replication.md
Normal file
10
content/site/strategy/02-03-problem-replication.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Social Impact and Value Versus Price Confusion
|
||||
|
||||
The high relative and absolute cost of most assistive technologies negatively impact the blind at multiple levels. In addition to restricting immediate access to software and devices, it can also have negative consequences even when funding is obtained to purchase the needed technology.
|
||||
|
||||
The classic model in most non-profits is to request funding from government agencies or foundations, purchase equipment and software, hire a teacher, and then offer training for the blind. This approach quickly fails in its greater goal of improving access to education and employment for the blind, since as soon as the training is finished, it becomes abundantly clear that neither the blind person, his or her family or school, nor local companies are able to afford the technology in which training was offered.
|
||||
|
||||
When nobody in the local community can afford to purchase the selected technology, it also means that even the rare donation is not usually maintained or replaced when necessary. As a result costs with virus protection, backups, and physical upgrades, as well as maintenance and security cannot be absorbed, and the donated technology becomes progressively less useful and the users increasingly less productive. Since talking computers can have such a substantial impact on the productivity and competitiveness of the blind, their malfunction can also close the doors that might have been opened with great effort.
|
||||
|
||||
In sum, the "best" technology is a relative concept, and the choice of the most expensive options rarely if ever substitute for a careful analysis of local circumstances. This is the reason why so many pilot projects are never scaled-up and so many initiatives fail as soon as external funding ends.
|
||||
|
4
content/site/strategy/03-01-strategy-introduction.md
Normal file
4
content/site/strategy/03-01-strategy-introduction.md
Normal file
@ -0,0 +1,4 @@
|
||||
# The F123 Strategy
|
||||
|
||||
Many traditional businesses attempt to centralize control over as many aspects of the production, distribution, and [maitenance](https://www.consumerreports.org/consumer-protection/right-to-repair-laws-could-make-it-easier-to-get-a-phone-or-laptop-fixed/) processes of their services and products, even when such control is not strictly necessary for the proper operation of the product nor optimal in increasing overall efficiency. In other words, there are costs which are imposed artificially, which go above and beyond what would be necessary to provide the product or service, but which are imposed exclusively as a means to increase short-term profits. Sometimes these business choices are called [market failures](https://en.wikipedia.org/wiki/Market_failure)), since they restrict market competition and increase prices, However, F123 Consulting takes a different approach. Many of our choices tend to be a conscious reversal of these choices in order to ensure low cost, high efficiency, and great longevity for everything we do.
|
||||
|
26
content/site/strategy/03-02-strategy-software.md
Normal file
26
content/site/strategy/03-02-strategy-software.md
Normal file
@ -0,0 +1,26 @@
|
||||
## Mass-Partnering for Software Development and Maintenance
|
||||
|
||||
The use of free and open source software has always been at the core of the F123 strategy to achieve as much as possible with scarce resources. The greatest advantage of open source is not its short-term pricing advantage, but its licensing structure and community of developers, which makes it possible to achieve [massive and widespread cooperation](https://thenewstack.io/contributes-linux-kernel/) without the need for specific partnership contracts between all organizations or individuals. Even [industry leaders who have traditionally attempted to undermine advancements in the adoption of the open source development model](https://www.extremetech.com/computing/239616-hell-freezes-microsoft-joins-linux-foundation), have changed their approach to working with this large segment of the software world.
|
||||
|
||||
In the context of digital accessibility for the blind, there is already [ample evidence](http://community.nvda-project.org/usersByCountry.html) of the widespread use of free and open source software. F123 [supports projects such as NVDA](https://duckduckgo.com/?q=NVDA+conference+F123.access&t=ffsb&atb=v53-1&ia=web), yet, the F123Light initiative seeks to address a different set of needs among the blind who live in developing countries.
|
||||
|
||||
### Cost Revisited
|
||||
|
||||
While an initiative such as the free and open source [NVDA screen reader](https://www.nvaccess.org/) is extremely valuable, the F123 team is pushing the envelope of what is possible to accomplish with [ultra-low-cost computers](https://www.raspberrypi.org/). NVDA enables blind persons to save thousands of dollars, as they are no longer forced to buy expensive traditional proprietary screen readers such as Jaws for Windows, but it still requires them to absorb the cost of the Windows operating system, hardware which is powerful enough to run it, and related costs such as antivirus software. In other words, the blind are still forced to deal with and find funding for the [planned obsolescence strategy](https://www.gaia.com/article/how-is-planned-obsolescence-harmful-to-the-environment) of various companies, in addition to the natural wear and tear of hardware and overall technological change.
|
||||
|
||||
Our choice of computers based on ARM processors such as the Raspberry Pi stems from the fact that they tend to be dramatically more affordable and still offer sufficient computing performance given our needs and design choices. Specifically, despite the fact that we are using an extremely affordable computer, our device boots-up faster than most conventional laptops and still allows our users to be productive and competitive in their use of e-mail, text editors, spreadsheets, and web browsers. In this regard, our most interesting decision was to emphasize text-based interfaces over the traditional [graphical user interface](https://en.wikipedia.org/wiki/Graphical_user_interface) (GUI).
|
||||
|
||||
Graphical interfaces tend to demand a lot of computing power for visual effects that are entirely irrelevant for the blind. In fact, the only advantage of GUI's for the blind is the use of menus, which present the user with multiple choices instead of requiring that he or she type complicated-sounding commands on the command line interface (CLI). However, [there are text-based menus](http://joeyh.name/code/pdmenu/) which allow us to make our text-based environment as friendly or more friendly than any graphical interface we have ever tested.
|
||||
|
||||
## Software Choices and Universal Design Considerations
|
||||
|
||||
In a perfect world, all software companies would adopt "[universal design](https://en.wikipedia.org/wiki/Universal_design)" principles, and other than our need for more efficient and fast computing, there would be no need for us to work with text-only menus. However, both in desktop and web interfaces, the blind are not a priority, even for the most powerful and resource-rich companies. This [was the case in the 1990's](https://nfb.org/images/nfb/publications/bm/bm99/bm991201.htm) and is still the case on the 21st century, even in companies which are [supposed to be the gold standard in accessibility](https://www.marcozehe.de/2015/01/06/apple-are-losing-their-edge-also-in-accessibility-quality/).
|
||||
|
||||
Many organizations and companies claim that they do not have the resources or expertise to offer fully accessible software or web pages, but if even the most successful companies fail to deliver consistently accessible products, lack of resources seems to be at the very least, an insufficient explanation. At other times it is claimed that legislation should be better, but it is impossible to correctly regulate technologies which have not yet emerged, and dangerous to establish too many restrictions for companies which then may lose their leadership in the marketplace to foreign competitors without such concerns. This probably explains why many large companies seem to launch accessibility campaigns only after they have established themselves as leaders in their industry and need to look for expansion in what they consider niche markets, in order to try to sustain growth.
|
||||
|
||||
In our view, the blind, their friends, and their organizations must keep their pressure and advocacy efforts to ensure continued progress (or at least prevent regression), but we do not expect such efforts to, on average, be more powerful than the competitive pressures companies face every day nor the influence from so many groups which governments also must respond to. In other words, the overall patterns observed in the last 30+ years are likely to persist and the blind community better have a "plan B" for its most basic computing needs, if it wants consistent, productive, affordable, stable, long-term digital accessibility.
|
||||
|
||||
## Software at the Core of Our Strategy
|
||||
|
||||
Since our team does not have any truly innovative means to pressure for new and more effective legislation nor better compliance with existing accessibility laws, we will focus our energies and creativity on ensuring that basic computing functionality will always be affordable, effective, and efficient for our community. The objective is not to find a perfect solution nor break new ground in artificial intelligence or any other fashionable area, but to utilize that which is proven, accessible for decades, and ensure that non-technical persons also have the luxury of resilience in the face of ever changing priorities and fads among industry leaders and governments.
|
||||
|
36
content/site/strategy/03-03-strategy-hardware.md
Normal file
36
content/site/strategy/03-03-strategy-hardware.md
Normal file
@ -0,0 +1,36 @@
|
||||
## Our Hardware Choices
|
||||
|
||||
Two important challenges faced by projects who want to make it easy for non-technical persons to enjoy the benefits of free and open source software are distribution and installation. The F123 team is addressing these obstacles by helping technically-inclined blind persons support other less-technical blind persons, and by standardizing our work around specific hardware platforms. At this time, our software is designed to work with the [Raspberry Pi 3 Model B+](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/).
|
||||
|
||||
Of course, our software can and has been used in other computers, but the decision to standardize on the Raspberry Pi 3 Model B+, which is sufficiently powerful for productive use of text-based applications, saves a lot of time and effort for both the development team and our users. Issues with software drivers are resolved more easily, testing is simpler, efficient distribution is already taken care of, and potential help from sighted users of these devices already exists around the world.
|
||||
|
||||
### List of Computer Parts
|
||||
|
||||
Since extreme affordability is absolutely essential, [every part selected for use in our project is both produced and distributed world-wide in mass](https://f123.org/partes-f123light). In addition to the Raspberry Pi computer, we also use:
|
||||
|
||||
@. A Micro SD memory card.
|
||||
|
||||
This is the computer's hard disk.
|
||||
|
||||
@. Heat sinks and computer case.
|
||||
|
||||
Parts which protect the circuit board and help cool it.
|
||||
|
||||
@. AC Adapter.
|
||||
|
||||
Allows you to connect the computer to the electrical outlet.
|
||||
|
||||
@. Power Pack or Battery Pack.
|
||||
|
||||
Many versions of this part exist. These are usually used to recharge cell phones, but we can use it to power the talking computer for many hours.
|
||||
|
||||
@. Standard USB keyboard.
|
||||
|
||||
@. Standard headphones with 3.5mm audio jack.
|
||||
|
||||
There are of course, Bluetooth keyboards and headphones, with a wide variety of prices and reliability, but in our experience, none of those are as affordable, durable, and easy-to-find and maintain as the traditional wired originals.
|
||||
|
||||
Actually, there is one exception to the rule of only using widely available parts and that is the computer carrying case. This part is very helpful, but at the same time, in a worse-case scenario, importing it across continents can be considered somewhat optional. Any person or organization with experience working with textiles should be able to put together a carrying case, and we have heard of users carrying their talking computer even in plastic shopping bags.
|
||||
|
||||
Finally, what brings it all together and makes this device so helpful is our F123Light software, which combines a wide variety of free and open source software, many developed, maintained, and used by organizations big and small for purposes which often have nothing to do with blindness. In other words, we have designed the entire project to minimize costs, and maximize productivity, sustainability, decentralization, and longevity.
|
||||
|
4
content/site/strategy/04-01-questions.md
Normal file
4
content/site/strategy/04-01-questions.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Common Questions and Suggestions
|
||||
|
||||
Questions and suggestions are always welcome. The following are some of the more common questions and suggestions we receive, and we are sharing them here as these might be helpful in focusing your creativity in new areas. Please always feel free to ask new questions, request clarifications, or make suggestions on [our e-mail lists or directly with our team](https://guide.f123.org/getting-started.html#finding-or-offering-help).
|
||||
|
15
content/site/strategy/04-02-questions-smartphones.md
Normal file
15
content/site/strategy/04-02-questions-smartphones.md
Normal file
@ -0,0 +1,15 @@
|
||||
## Using Smartphones Instead of the Raspberry Pi Computer
|
||||
|
||||
We are frequently asked why we are not using smartphones instead of Raspberry Pi computers, as smartphones are so powerful, affordable, and widely available today. While we do not automatically exclude the possibility of using smartphones in the future, the reasons why we believe it is not currently a better alternative to the Raspberry Pi for young blind students and others are:
|
||||
|
||||
* Competitive pressures force manufacturers to continuously update hardware and software features on phones, so any scarce resources invested in adapting these devices to productive and blind-accessible educational uses, are quickly lost due to the rapid changes in phone operating systems and the unavailability of slightly older phone models.
|
||||
* Smartphones are optimized in every way for the visual consumption of information and their lack of keyboards and delicate glass screens make them sub optimal for the daily use of children in a school setting. These phones are too easily damaged or broken, and if used without major software changes, become distraction machines rather than educational tools.
|
||||
* Competitive pressures also foster phone designs which do not allow the end-user to exchange the battery, so the cost of medium to long-term maintenance is unnecessarily high, and probably significantly higher than that of a Raspberry Pi that uses a phone charger or power bank.
|
||||
* There is ample evidence that due to the extreme competitive pressures faced by the smartphone industry, too often either phone manufacturers or phone companies install software that tracks and monitors users in order to display advertising, or sell user location information to commercial entities, or both. This seems to be especially true with the most affordable phone models. We believe that this is undesirable for users of any age, and entirely unacceptable for children.
|
||||
|
||||
Our choice of the Raspberry Pi as a platform, minimizes distractions, as we have greater control over what software is installed. Greater security, as neither the manufacturer nor the phone company have a chance to install tracking and advertising software of any kind. Finally, even though the Raspberry Pi hardware evolves, it retains its technical patterns for a much longer time period, extending the usefulness of our work for much longer.
|
||||
|
||||
In sum, affordable phones based on the Android operating system are not durable, are not secure from digital attacks, are expensive to maintain in realistic day-to-day use by children, offer too many distractions if the operating system is not entirely modified, and change too often as a platform for most software development investment to continue being useful across time and phone models.
|
||||
|
||||
We have also been asked about recycling discarded tablets for use by the blind, and many of the same issues described above also apply in that case.
|
||||
|
8
content/site/strategy/04-03-questions-buying.md
Normal file
8
content/site/strategy/04-03-questions-buying.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Buying Versus Assembling the F123Light Computer
|
||||
|
||||
Some people have asked if they can buy one of these talking computers already assembled and with the F123Light software preinstalled:
|
||||
|
||||
We can assemble the computer in Brazil and ship to anywhere in the world. So [get in touch with us via e-mail](https://guide.f123.org/getting-started.html#contacting-our-team-directly) if you need one urgently. In the next few months we will also setup a partnership with an international manufacturer. As soon as that is finalized, we will provide links to their online store in our pages.
|
||||
|
||||
People who are blind and wish to become local distributors, should get in touch with us via e-mail.
|
||||
|
8
content/site/strategy/04-04-questions-braille.md
Normal file
8
content/site/strategy/04-04-questions-braille.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Using Braille with the F123Light Computer
|
||||
|
||||
We have been asked if the F123Light computer is compatible with Braille displays available for use with various electronic devices ranging from laptops to smartphones and conventional computers:
|
||||
|
||||
Since our initial focus was to create the world's most affordable fully functional talking computer for the blind, we did not include a Braille display in our first few prototypes. However, we have been asked for this option and will start researching low-cost Braille displays which we can include in the near future. We expect that integrating any of the major brands into our device will not be difficult.
|
||||
|
||||
Once the Braille display option becomes available, we will announce it in our e-mail lists and web pages.
|
||||
|
9
content/site/strategy/04-05-questions-technology.md
Normal file
9
content/site/strategy/04-05-questions-technology.md
Normal file
@ -0,0 +1,9 @@
|
||||
## Technology Cannot be the Main Focus in Education
|
||||
|
||||
Sometimes it is said that our societies are giving too much emphasis to technological tools rather than values and personal development:
|
||||
|
||||
We believe that no technology can substitute for personal growth and a proper education. This is why we give as much emphasis to training as we do to actual software development. Good technology is that which becomes invisible so that children can study and adults can work, without worrying or being distracted by the digital tools they might be using.
|
||||
|
||||
We also believe strongly that at the end of the day, it is not our tools but our personalities and values that actually have the greatest influence in our lives, so in some ways, our technological strategy is just a smaller side-effect from a greater objective, which is to give a chance for the blind to learn to use, maintain, and improve their own tools, and have the confidence and generosity of spirit to teach one another as well. A good example of this is our campaign to teach the blind to help one-another to build their own talking computers in workshops all over the world:
|
||||
<https://www.youtube.com/watch?v=KBM8Nq-f2T4&feature=youtu.be>
|
||||
|
12
content/site/strategy/04-06-questions-sustainability.md
Normal file
12
content/site/strategy/04-06-questions-sustainability.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Where is the Catch?
|
||||
|
||||
It is understandable that an often unasked but important question is: How can you survive if you distribute your software for free and anyone can assemble this computer from widely available standard parts?
|
||||
|
||||
The simple and short answer is that we have been around for about a decade now, offering project management and consulting services to organizations, foundations, and government agencies interested in helping the blind in an effective, efficient, and scalable way, and will probably continue to be around for many more years. However, our strategy is designed to ensure that no dependency is created on F123 Consulting.
|
||||
|
||||
The more complete answer is that when one uses hardware that is generic and available everywhere from multiple manufacturers and distributors; software that is freely available world-wide and licensed in a way that allows for distribution, modification, and copying by anyone (i.e. open source); and documentation and other materials also licensed in a similar way (i.e. [Creative Commons](https://creativecommons.org/licenses/by-nc-sa/4.0/)); there is nothing to stop anyone from continuing our work whether we are still here or have long since stopped providing our services. In fact, decentralized replication and continuation is part of our plan.
|
||||
|
||||
In sum, most mathematics teachers or cooks do not make a living because they teach secret formulas or cook secret recipes, they make a living because enough people do not have time to teach mathematics to their own kids, and do not have time to cook their own meal. Of course, it is not a strategy or business model that is conducive to making excessive amounts of money, but then, there are more important things in life.
|
||||
|
||||
Of course, we do ask that you help society reward this type of courage by [contributing to this initiative in some way](https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc).
|
||||
|
Reference in New Issue
Block a user