pax_global_header 0000666 0000000 0000000 00000000064 14757714175 0014534 g ustar 00root root 0000000 0000000 52 comment=5b642cd9e2168bd0a52a2c518e53d4ef8e78febd
fenrir/ 0000775 0000000 0000000 00000000000 14757714175 0012365 5 ustar 00root root 0000000 0000000 fenrir/.gitignore 0000664 0000000 0000000 00000000146 14757714175 0014356 0 ustar 00root root 0000000 0000000 __pycache__/
*\.pyc
fenrir.egg-info/
fenrir_screenreader.egg-info/
dist/
build/
*.kate-swp
.directory
fenrir/CREDITS 0000664 0000000 0000000 00000000416 14757714175 0013406 0 ustar 00root root 0000000 0000000 # Fenrir screen reader
## Developers
* Storm Dragon: Project leader
* Jeremiah: Coder.
## Previous Developers
* Chrys: coder.
## Special thanks to:
* F123 Consulting for suggestions, some funding, and endless testing.
* Stormux for continuation of the project.
fenrir/LICENCE 0000664 0000000 0000000 00000016744 14757714175 0013366 0 ustar 00root root 0000000 0000000 GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
fenrir/README.md 0000664 0000000 0000000 00000010551 14757714175 0013646 0 ustar 00root root 0000000 0000000 # Fenrir
A modern, modular, flexible and fast console screenreader.
It should run on any operating system. If you want to help, or write drivers to make it work on other systems, just let me know.
This software is licensed under the LGPL v3.
## OS Requirements
- Linux (ptyDriver, vcsaDriver, evdevDriver)
- macOS (ptyDriver)
- BSD (ptyDriver)
- Windows (ptyDriver)
## Core Requirements
- python3 >= 3.3
- screen, input, speech, sound drivers dependencies see "Features, Drivers, Extras".
## Features, Drivers, Extras, Dependencies
### Input Drivers:
1. "evdevDriver" input driver for linux evdev
- python-evdev >=0.6.3 (This is commonly referred to as python3-evdev by your distribution)
- python-pyudev
- loaded uinput kernel module
- ReadWrite permission
- /dev/input
- /dev/uinput
2. "ptyDriver" terminal emulation input driver
- python-pyte
### Screen Drivers:
1. "vcsaDriver" screen driver for linux VCSA devices
- python-dbus
- Read permission to the following files and services:
- /sys/devices/virtual/tty/tty0/active
- /dev/tty[1-64]
- /dev/vcsa[1-64]
- read logind DBUS
2. "ptyDriver" terminal emulation driver
- python-pyte
### Speech Drivers:
1. "genericDriver" (default) speech driver for sound as subprocess:
- espeak or espeak-ng
2. "speechdDriver" speech driver for Speech-dispatcher:
- Speech-dispatcher
- python-speechd
3. "emacspeakDriver" speech driver for emacspeak
- emacspeak
### Sound Drivers:
1. "genericDriver" (default) sound driver for sound as subprocess:
- Sox
2. "gstreamerDriver" sound driver for gstreamer
- gstreamer >=1.0
- GLib
## Extras:
1. spellchecker
- python-pyenchant
- aspell-YourLanguageCode (example aspell-en for us English)
2. Unix daemon (also needed for Systemd):
- python-daemonize
3. Modify system volume:
- pyalsaaudio (needs libasound2's headers).
## installation
If there is a package for your distrobution of choice, please let us know so we can add it here.
- Archlinux: PKGBUILD in AUR
- fenrir: stable release
- fenrir-git: Bleeding edge release
- Manual:
- install "espeak" and "sox" with your package manager
- sudo pip install -r requirements.txt
- run install.sh or uninstall.sh as root
- You can also just run it from Git without installing:
Requires root privileges
cd src/fenrir/
sudo ./fenrir
Settings "settings.conf" is located in the "config" directory or after installation in /etc/fenrir/settings.
Take care to use drivers from the config matching your installed drivers.
By default it uses:
- sound driver: genericDriver (via sox, could configured in settings.conf)
- speech driver: genericDriver (via espeak or espeak-ng, could configured in settings.conf)
- input driver: evdevDriver
## Configure pulseaudio
Pulseaudio by default only plays sound for the user its currently running for. As fenrir is running as root, your local user does not hear the sound and speech produced by fenrir.
for this fenrir provides a script to configure pulseaudio to stream the sound played as root to your local user. This is not a issue of fenrir but this is how pulseaudio works.
just run the configuration script twice (once as user, once as root):
/usr/share/fenrirscreenreader/tools/configure_pulse.sh
sudo /usr/share/fenrirscreenreader/tools/configure_pulse.sh
The script is also located in the tools directory in git
## Configure pipewire
Pipewire by default only plays sound for the user its currently running for. As fenrir is running as root, your local user does not hear the sound and speech produced by fenrir.
for this fenrir provides a script to configure pipewire to stream the sound played as root to your local user. This is not a issue of fenrir but this is how pipewire works.
just run the configuration script twice (once as user, once as root):
/usr/share/fenrirscreenreader/tools/configure_pipewire.sh
sudo /usr/share/fenrirscreenreader/tools/configure_pipewire.sh
The script is also located in the tools directory in git
## localization
copy fenrir.mo translations file from fenrir/locale/your_language/LC_MESSAGES/fenrir.mo to /usr/share/locale/your_language/LC_MESSAGES/fenrir.mo
## Documentation and Support
- Email list: [stormux+subscribe@groups.io](mailto:stormux+subscribe@groups.io?subject=subscribe) with the subject subscribe.
- [Fenrir Wiki](https://git.stormux.org/storm/fenrir/wiki)
- IRC: irc.stormux.org #stormux
fenrir/TODO 0000664 0000000 0000000 00000000050 14757714175 0013050 0 ustar 00root root 0000000 0000000 V2.0
Cleanup folders and config files.
fenrir/autostart/ 0000775 0000000 0000000 00000000000 14757714175 0014413 5 ustar 00root root 0000000 0000000 fenrir/autostart/runit/ 0000775 0000000 0000000 00000000000 14757714175 0015554 5 ustar 00root root 0000000 0000000 fenrir/autostart/runit/fenrir/ 0000775 0000000 0000000 00000000000 14757714175 0017041 5 ustar 00root root 0000000 0000000 fenrir/autostart/runit/fenrir/run 0000664 0000000 0000000 00000000063 14757714175 0017567 0 ustar 00root root 0000000 0000000 #!/bin/sh
[ -r ./conf ] && . ./conf
exec fenrir -f
fenrir/autostart/systemd/ 0000775 0000000 0000000 00000000000 14757714175 0016103 5 ustar 00root root 0000000 0000000 fenrir/autostart/systemd/Arch/ 0000775 0000000 0000000 00000000000 14757714175 0016760 5 ustar 00root root 0000000 0000000 fenrir/autostart/systemd/Arch/fenrir.service 0000664 0000000 0000000 00000000517 14757714175 0021632 0 ustar 00root root 0000000 0000000 [Unit]
Description=Fenrir screenreader
Wants=systemd-udev-settle.service
After=systemd-udev-settle.service getty.target
[Service]
Type=forking
PIDFile=/var/run/fenrir.pid
ExecStart=/usr/bin/fenrir
ExecReload=/usr/bin/kill -HUP $MAINPID
Restart=always
#Group=fenrirscreenreader
#User=fenrirscreenreader
[Install]
WantedBy=getty.target
fenrir/autostart/systemd/Debian/ 0000775 0000000 0000000 00000000000 14757714175 0017265 5 ustar 00root root 0000000 0000000 fenrir/autostart/systemd/Debian/fenrir.service 0000664 0000000 0000000 00000000707 14757714175 0022140 0 ustar 00root root 0000000 0000000 [Unit]
Description=Fenrir screenreader
Wants=systemd-udev-settle.service
After=systemd-udev-settle.service sound.target
[Service]
Type=forking
PIDFile=/var/run/fenrir.pid
ExecStart=/usr/local/bin/fenrir
ExecReload=/usr/bin/kill -HUP $MAINPID
Restart=always
#Group=fenrirscreenreader
#User=fenrirscreenreader
[Install]
# start as early as possible in boot process
#WantedBy=sound.target
# start as soon the login prompt is available
WantedBy=getty.target
fenrir/bugs 0000664 0000000 0000000 00000000663 14757714175 0013255 0 ustar 00root root 0000000 0000000 Please report Bugs and feature requests to:
https://github.com/chrys87/fenrir/issues
For bugs, please provide a debug file that shows the issue.
How to create a debug file:
1. first delete old stuff:
sudo rm /var/log/fenrir.log
2. start fenrir in debug mode
sudo fenrir -d
3.
stop fenrir (fenrirKey + q)
the debug file is in /var/log/fenrir.log
please be as precise as possible to make it easy to solve the problem.
fenrir/check-dependencies.py 0000775 0000000 0000000 00000010432 14757714175 0016443 0 ustar 00root root 0000000 0000000 #!/usr/bin/env python3
import os
import sys
from dataclasses import dataclass
from typing import List, Optional
@dataclass
class Dependency:
name: str
depType: str # screen, input, sound, speech, core
moduleName: str
checkCommands: Optional[List[str]] = None # Command-line tools to check
pythonImports: Optional[List[str]] = None # Python packages to check
devicePaths: Optional[List[str]] = None # Device files to check
def check_dependency(dep: Dependency) -> bool:
"""Check if a single dependency is satisfied."""
isAvailable = True
if dep.pythonImports:
for package in dep.pythonImports:
try:
moduleName = package.split('.')[0]
__import__(moduleName)
print(f'{package}: OK')
except ImportError:
print(f'{package}: FAIL')
isAvailable = False
if dep.checkCommands:
for cmd in dep.checkCommands:
if os.path.exists(f'/usr/bin/{cmd}') or os.path.exists(f'/bin/{cmd}'):
print(f'{cmd}: OK')
else:
print(f'{cmd}: FAIL')
isAvailable = False
if dep.devicePaths:
for path in dep.devicePaths:
if os.path.exists(path):
print(f'{path}: OK')
else:
print(f'{path}: FAIL')
isAvailable = False
return isAvailable
# Define all dependencies
dependencyList = [
# Core dependencies
Dependency('FenrirCore', 'core', 'core',
pythonImports=['daemonize', 'enchant']),
# Screen drivers
Dependency('DummyScreen', 'screen', 'dummyDriver'),
Dependency('VCSA', 'screen', 'vcsaDriver',
pythonImports=['dbus'],
devicePaths=['/dev/vcsa']),
Dependency('PTY', 'screen', 'ptyDriver',
pythonImports=['pyte']),
# Input drivers
Dependency('DummyInput', 'input', 'dummyDriver'),
Dependency('DebugInput', 'input', 'debugDriver'),
Dependency('Evdev', 'input', 'evdevDriver',
pythonImports=['evdev', 'evdev.InputDevice', 'evdev.UInput', 'pyudev']),
Dependency('PTYInput', 'input', 'ptyDriver',
pythonImports=['pyte']),
# Sound drivers
Dependency('DummySound', 'sound', 'dummyDriver'),
Dependency('DebugSound', 'sound', 'debugDriver'),
Dependency('GenericSound', 'sound', 'genericDriver',
checkCommands=['play', 'sox']),
Dependency('GStreamer', 'sound', 'gstreamerDriver',
pythonImports=['gi', 'gi.repository.GLib', 'gi.repository.Gst']),
# Speech drivers
Dependency('DummySpeech', 'speech', 'dummyDriver'),
Dependency('DebugSpeech', 'speech', 'debugDriver'),
Dependency('Speechd', 'speech', 'speechdDriver',
pythonImports=['speechd']),
Dependency('GenericSpeech', 'speech', 'genericDriver',
checkCommands=['espeak-ng'])
]
defaultModules = {
'FenrirCore',
'VCSA',
'Evdev',
'GenericSpeech',
'GenericSound'
}
def check_all_dependencies():
print('Checking dependencies...\n')
availableModules = []
# Group dependencies by type for organized output
for depType in ['core', 'screen', 'input', 'sound', 'speech']:
print(f'{depType.upper()} DRIVERS')
print('-' * 20)
depsOfType = [d for d in dependencyList if d.depType == depType]
for dep in depsOfType:
print(f'\nChecking {dep.name}:')
if check_dependency(dep):
availableModules.append(dep.name)
print('')
print_summary(availableModules)
def print_summary(availableModules: List[str]):
print('=' * 20)
print('SUMMARY')
print('=' * 20)
missingModules = defaultModules - set(availableModules)
if missingModules:
print('Default Setup: FAIL')
print('\nUnavailable Default Modules:')
for module in missingModules:
print(f'- {module}')
print('\nYou may need to install the missing dependencies for the modules above or reconfigure fenrir to not use them.')
else:
print('Default Setup: OK')
print('\nAvailable Modules:')
for module in availableModules:
print(f'- {module}')
if __name__ == '__main__':
check_all_dependencies()
fenrir/config/ 0000775 0000000 0000000 00000000000 14757714175 0013632 5 ustar 00root root 0000000 0000000 fenrir/config/keyboard/ 0000775 0000000 0000000 00000000000 14757714175 0015432 5 ustar 00root root 0000000 0000000 fenrir/config/keyboard/Readme.md 0000664 0000000 0000000 00000015322 14757714175 0017154 0 ustar 00root root 0000000 0000000
Keymap for Fenrir
KEY_RESERVED
KEY_ESC
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_0
KEY_MINUS
KEY_EQUAL
KEY_BACKSPACE
KEY_TAB
KEY_Q
KEY_W
KEY_E
KEY_R
KEY_T
KEY_Y
KEY_U
KEY_I
KEY_O
KEY_P
KEY_LEFTBRACE
KEY_RIGHTBRACE
KEY_ENTER
KEY_LEFTCTRL
KEY_A
KEY_S
KEY_D
KEY_F
KEY_G
KEY_H
KEY_J
KEY_K
KEY_L
KEY_SEMICOLON
KEY_APOSTROPHE
KEY_GRAVE
KEY_LEFTSHIFT
KEY_BACKSLASH
KEY_Z
KEY_X
KEY_C
KEY_V
KEY_B
KEY_N
KEY_M
KEY_COMMA
KEY_DOT
KEY_SLASH
KEY_RIGHTSHIFT
KEY_KPASTERISK
KEY_LEFTALT
KEY_SPACE
KEY_CAPSLOCK
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_NUMLOCK
KEY_SCROLLLOCK
KEY_KP7
KEY_KP8
KEY_KP9
KEY_KPMINUS
KEY_KP4
KEY_KP5
KEY_KP6
KEY_KPPLUS
KEY_KP1
KEY_KP2
KEY_KP3
KEY_KP0
KEY_KPDOT
KEY_ZENKAKUHANKAKU
KEY_102ND
KEY_F11
KEY_F12
KEY_RO
KEY_KATAKANA
KEY_HIRAGANA
KEY_HENKAN
KEY_KATAKANAHIRAGANA
KEY_MUHENKAN
KEY_KPJPCOMMA
KEY_KPENTER
KEY_RIGHTCTRL
KEY_KPSLASH
KEY_SYSRQ
KEY_RIGHTALT
KEY_LINEFEED
KEY_HOME
KEY_UP
KEY_PAGEUP
KEY_LEFT
KEY_RIGHT
KEY_END
KEY_DOWN
KEY_PAGEDOWN
KEY_INSERT
KEY_DELETE
KEY_MACRO
['KEY_MIN_INTERESTING', 'KEY_MUTE']
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_POWER
KEY_KPEQUAL
KEY_KPPLUSMINUS
KEY_PAUSE
KEY_SCALE
KEY_KPCOMMA
['KEY_HANGEUL', 'KEY_HANGUEL']
KEY_HANJA
KEY_YEN
KEY_LEFTMETA
KEY_RIGHTMETA
KEY_COMPOSE
KEY_STOP
KEY_AGAIN
KEY_PROPS
KEY_UNDO
KEY_FRONT
KEY_COPY
KEY_OPEN
KEY_PASTE
KEY_FIND
KEY_CUT
KEY_HELP
KEY_MENU
KEY_CALC
KEY_SETUP
KEY_SLEEP
KEY_WAKEUP
KEY_FILE
KEY_SENDFILE
KEY_DELETEFILE
KEY_XFER
KEY_PROG1
KEY_PROG2
KEY_WWW
KEY_MSDOS
['KEY_COFFEE', 'KEY_SCREENLOCK']
['KEY_DIRECTION', 'KEY_ROTATE_DISPLAY']
KEY_CYCLEWINDOWS
KEY_MAIL
KEY_BOOKMARKS
KEY_COMPUTER
KEY_BACK
KEY_FORWARD
KEY_CLOSECD
KEY_EJECTCD
KEY_EJECTCLOSECD
KEY_NEXTSONG
KEY_PLAYPAUSE
KEY_PREVIOUSSONG
KEY_STOPCD
KEY_RECORD
KEY_REWIND
KEY_PHONE
KEY_ISO
KEY_CONFIG
KEY_HOMEPAGE
KEY_REFRESH
KEY_EXIT
KEY_MOVE
KEY_EDIT
KEY_SCROLLUP
KEY_SCROLLDOWN
KEY_KPLEFTPAREN
KEY_KPRIGHTPAREN
KEY_NEW
KEY_REDO
KEY_F13
KEY_F14
KEY_F15
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F20
KEY_F21
KEY_F22
KEY_F23
KEY_F24
KEY_PLAYCD
KEY_PAUSECD
KEY_PROG3
KEY_PROG4
KEY_DASHBOARD
KEY_SUSPEND
KEY_CLOSE
KEY_PLAY
KEY_FASTFORWARD
KEY_BASSBOOST
KEY_PRINT
KEY_HP
KEY_CAMERA
KEY_SOUND
KEY_QUESTION
KEY_EMAIL
KEY_CHAT
KEY_SEARCH
KEY_CONNECT
KEY_FINANCE
KEY_SPORT
KEY_SHOP
KEY_ALTERASE
KEY_CANCEL
KEY_BRIGHTNESSDOWN
KEY_BRIGHTNESSUP
KEY_MEDIA
KEY_SWITCHVIDEOMODE
KEY_KBDILLUMTOGGLE
KEY_KBDILLUMDOWN
KEY_KBDILLUMUP
KEY_SEND
KEY_REPLY
KEY_FORWARDMAIL
KEY_SAVE
KEY_DOCUMENTS
KEY_BATTERY
KEY_BLUETOOTH
KEY_WLAN
KEY_UWB
KEY_UNKNOWN
KEY_VIDEO_NEXT
KEY_VIDEO_PREV
KEY_BRIGHTNESS_CYCLE
['KEY_BRIGHTNESS_AUTO', 'KEY_BRIGHTNESS_ZERO']
KEY_DISPLAY_OFF
['KEY_WIMAX', 'KEY_WWAN']
KEY_RFKILL
KEY_MICMUTE
['BTN_0', 'BTN_MISC']
BTN_1
BTN_2
BTN_3
BTN_4
BTN_5
BTN_6
BTN_7
BTN_8
BTN_9
['BTN_LEFT', 'BTN_MOUSE']
BTN_RIGHT
BTN_MIDDLE
BTN_SIDE
BTN_EXTRA
BTN_FORWARD
BTN_BACK
BTN_TASK
['BTN_JOYSTICK', 'BTN_TRIGGER']
BTN_THUMB
BTN_THUMB2
BTN_TOP
BTN_TOP2
BTN_PINKIE
BTN_BASE
BTN_BASE2
BTN_BASE3
BTN_BASE4
BTN_BASE5
BTN_BASE6
BTN_DEAD
['BTN_A', 'BTN_GAMEPAD', 'BTN_SOUTH']
['BTN_B', 'BTN_EAST']
BTN_C
['BTN_NORTH', 'BTN_X']
['BTN_WEST', 'BTN_Y']
BTN_Z
BTN_TL
BTN_TR
BTN_TL2
BTN_TR2
BTN_SELECT
BTN_START
BTN_MODE
BTN_THUMBL
BTN_THUMBR
['BTN_DIGI', 'BTN_TOOL_PEN']
BTN_TOOL_RUBBER
BTN_TOOL_BRUSH
BTN_TOOL_PENCIL
BTN_TOOL_AIRBRUSH
BTN_TOOL_FINGER
BTN_TOOL_MOUSE
BTN_TOOL_LENS
BTN_TOOL_QUINTTAP
BTN_TOUCH
BTN_STYLUS
BTN_STYLUS2
BTN_TOOL_DOUBLETAP
BTN_TOOL_TRIPLETAP
BTN_TOOL_QUADTAP
['BTN_GEAR_DOWN', 'BTN_WHEEL']
BTN_GEAR_UP
KEY_OK
KEY_SELECT
KEY_GOTO
KEY_CLEAR
KEY_POWER2
KEY_OPTION
KEY_INFO
KEY_TIME
KEY_VENDOR
KEY_ARCHIVE
KEY_PROGRAM
KEY_CHANNEL
KEY_FAVORITES
KEY_EPG
KEY_PVR
KEY_MHP
KEY_LANGUAGE
KEY_TITLE
KEY_SUBTITLE
KEY_ANGLE
KEY_ZOOM
KEY_MODE
KEY_KEYBOARD
KEY_SCREEN
KEY_PC
KEY_TV
KEY_TV2
KEY_VCR
KEY_VCR2
KEY_SAT
KEY_SAT2
KEY_CD
KEY_TAPE
KEY_RADIO
KEY_TUNER
KEY_PLAYER
KEY_TEXT
KEY_DVD
KEY_AUX
KEY_MP3
KEY_AUDIO
KEY_VIDEO
KEY_DIRECTORY
KEY_LIST
KEY_MEMO
KEY_CALENDAR
KEY_RED
KEY_GREEN
KEY_YELLOW
KEY_BLUE
KEY_CHANNELUP
KEY_CHANNELDOWN
KEY_FIRST
KEY_LAST
KEY_AB
KEY_NEXT
KEY_RESTART
KEY_SLOW
KEY_SHUFFLE
KEY_BREAK
KEY_PREVIOUS
KEY_DIGITS
KEY_TEEN
KEY_TWEN
KEY_VIDEOPHONE
KEY_GAMES
KEY_ZOOMIN
KEY_ZOOMOUT
KEY_ZOOMRESET
KEY_WORDPROCESSOR
KEY_EDITOR
KEY_SPREADSHEET
KEY_GRAPHICSEDITOR
KEY_PRESENTATION
KEY_DATABASE
KEY_NEWS
KEY_VOICEMAIL
KEY_ADDRESSBOOK
KEY_MESSENGER
['KEY_BRIGHTNESS_TOGGLE', 'KEY_DISPLAYTOGGLE']
KEY_SPELLCHECK
KEY_LOGOFF
KEY_DOLLAR
KEY_EURO
KEY_FRAMEBACK
KEY_FRAMEFORWARD
KEY_CONTEXT_MENU
KEY_MEDIA_REPEAT
KEY_10CHANNELSUP
KEY_10CHANNELSDOWN
KEY_IMAGES
KEY_DEL_EOL
KEY_DEL_EOS
KEY_INS_LINE
KEY_DEL_LINE
KEY_FN
KEY_FN_ESC
KEY_FN_F1
KEY_FN_F2
KEY_FN_F3
KEY_FN_F4
KEY_FN_F5
KEY_FN_F6
KEY_FN_F7
KEY_FN_F8
KEY_FN_F9
KEY_FN_F10
KEY_FN_F11
KEY_FN_F12
KEY_FN_1
KEY_FN_2
KEY_FN_D
KEY_FN_E
KEY_FN_F
KEY_FN_S
KEY_FN_B
KEY_BRL_DOT1
KEY_BRL_DOT2
KEY_BRL_DOT3
KEY_BRL_DOT4
KEY_BRL_DOT5
KEY_BRL_DOT6
KEY_BRL_DOT7
KEY_BRL_DOT8
KEY_BRL_DOT9
KEY_BRL_DOT10
KEY_NUMERIC_0
KEY_NUMERIC_1
KEY_NUMERIC_2
KEY_NUMERIC_3
KEY_NUMERIC_4
KEY_NUMERIC_5
KEY_NUMERIC_6
KEY_NUMERIC_7
KEY_NUMERIC_8
KEY_NUMERIC_9
KEY_NUMERIC_STAR
KEY_NUMERIC_POUND
KEY_NUMERIC_A
KEY_NUMERIC_B
KEY_NUMERIC_C
KEY_NUMERIC_D
KEY_CAMERA_FOCUS
KEY_WPS_BUTTON
KEY_TOUCHPAD_TOGGLE
KEY_TOUCHPAD_ON
KEY_TOUCHPAD_OFF
KEY_CAMERA_ZOOMIN
KEY_CAMERA_ZOOMOUT
KEY_CAMERA_UP
KEY_CAMERA_DOWN
KEY_CAMERA_LEFT
KEY_CAMERA_RIGHT
KEY_ATTENDANT_ON
KEY_ATTENDANT_OFF
KEY_ATTENDANT_TOGGLE
KEY_LIGHTS_TOGGLE
BTN_DPAD_UP
BTN_DPAD_DOWN
BTN_DPAD_LEFT
BTN_DPAD_RIGHT
KEY_ALS_TOGGLE
KEY_BUTTONCONFIG
KEY_TASKMANAGER
KEY_JOURNAL
KEY_CONTROLPANEL
KEY_APPSELECT
KEY_SCREENSAVER
KEY_VOICECOMMAND
KEY_BRIGHTNESS_MIN
KEY_BRIGHTNESS_MAX
KEY_KBDINPUTASSIST_PREV
KEY_KBDINPUTASSIST_NEXT
KEY_KBDINPUTASSIST_PREVGROUP
KEY_KBDINPUTASSIST_NEXTGROUP
KEY_KBDINPUTASSIST_ACCEPT
KEY_KBDINPUTASSIST_CANCEL
KEY_RIGHT_UP
KEY_RIGHT_DOWN
KEY_LEFT_UP
KEY_LEFT_DOWN
KEY_ROOT_MENU
KEY_MEDIA_TOP_MENU
KEY_NUMERIC_11
KEY_NUMERIC_12
KEY_AUDIO_DESC
KEY_3D_MODE
KEY_NEXT_FAVORITE
KEY_STOP_RECORD
KEY_PAUSE_RECORD
KEY_VOD
KEY_UNMUTE
['KEY_DATA', 'KEY_FASTREVERSE']
KEY_SLOWREVERSE
['BTN_TRIGGER_HAPPY', 'BTN_TRIGGER_HAPPY1']
BTN_TRIGGER_HAPPY2
BTN_TRIGGER_HAPPY3
BTN_TRIGGER_HAPPY4
BTN_TRIGGER_HAPPY5
BTN_TRIGGER_HAPPY6
BTN_TRIGGER_HAPPY7
BTN_TRIGGER_HAPPY8
BTN_TRIGGER_HAPPY9
BTN_TRIGGER_HAPPY10
BTN_TRIGGER_HAPPY11
BTN_TRIGGER_HAPPY12
BTN_TRIGGER_HAPPY13
BTN_TRIGGER_HAPPY14
BTN_TRIGGER_HAPPY15
BTN_TRIGGER_HAPPY16
BTN_TRIGGER_HAPPY17
BTN_TRIGGER_HAPPY18
BTN_TRIGGER_HAPPY19
BTN_TRIGGER_HAPPY20
BTN_TRIGGER_HAPPY21
BTN_TRIGGER_HAPPY22
BTN_TRIGGER_HAPPY23
BTN_TRIGGER_HAPPY24
BTN_TRIGGER_HAPPY25
BTN_TRIGGER_HAPPY26
BTN_TRIGGER_HAPPY27
BTN_TRIGGER_HAPPY28
BTN_TRIGGER_HAPPY29
BTN_TRIGGER_HAPPY30
BTN_TRIGGER_HAPPY31
BTN_TRIGGER_HAPPY32
BTN_TRIGGER_HAPPY33
BTN_TRIGGER_HAPPY34
BTN_TRIGGER_HAPPY35
BTN_TRIGGER_HAPPY36
BTN_TRIGGER_HAPPY37
BTN_TRIGGER_HAPPY38
BTN_TRIGGER_HAPPY39
BTN_TRIGGER_HAPPY40
fenrir/config/keyboard/desktop.conf 0000664 0000000 0000000 00000011203 14757714175 0017747 0 ustar 00root root 0000000 0000000 KEY_FENRIR,KEY_H=toggle_tutorial_mode
KEY_CTRL=shut_up
KEY_FENRIR,KEY_KP9=review_bottom
KEY_FENRIR,KEY_KP7=review_top
KEY_KP8=review_curr_line
KEY_KP7=review_prev_line
KEY_KP9=review_next_line
KEY_FENRIR,KEY_KP4=review_line_begin
KEY_FENRIR,KEY_KP6=review_line_end
KEY_FENRIR,KEY_KP1=review_line_first_char
KEY_FENRIR,KEY_KP3=review_line_last_char
KEY_FENRIR,KEY_ALT,KEY_1=present_first_line
KEY_FENRIR,KEY_ALT,KEY_2=present_last_line
KEY_KP5=review_curr_word
KEY_KP4=review_prev_word
KEY_KP6=review_next_word
KEY_FENRIR,KEY_SHIFT,KEY_KP5=review_curr_word_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP4=review_prev_word_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP6=review_next_word_phonetic
KEY_KP2=review_curr_char
KEY_KP1=review_prev_char
KEY_KP3=review_next_char
KEY_FENRIR,KEY_SHIFT,KEY_KP2=review_curr_char_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP1=review_prev_char_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP3=review_next_char_phonetic
KEY_FENRIR,KEY_CTRL,KEY_KP8=review_up
KEY_FENRIR,KEY_CTRL,KEY_KP2=review_down
KEY_FENRIR,KEY_KPDOT=exit_review
KEY_KPDOT=cursor_position
KEY_FENRIR,KEY_I=indent_curr_line
KEY_FENRIR,KEY_KP5=curr_screen
KEY_FENRIR,KEY_KP8=curr_screen_before_cursor
KEY_FENRIR,KEY_KP2=curr_screen_after_cursor
#=cursor_read_to_end_of_line
#=review_screen_last_char
#=review_screen_first_char
#=cursor_column
#=cursor_lineno
#=braille_flush
#=braille_return_to_cursor
#=braille_pan_left
#=braille_pan_right
#=cursor_read_line_to_cursor
KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1
KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1
KEY_FENRIR,KEY_1=bookmark_1
KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2
KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2
KEY_FENRIR,KEY_2=bookmark_2
KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3
KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3
KEY_FENRIR,KEY_3=bookmark_3
KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4
KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4
KEY_FENRIR,KEY_4=bookmark_4
KEY_FENRIR,KEY_CTRL,KEY_5=clear_bookmark_5
KEY_FENRIR,KEY_SHIFT,KEY_5=set_bookmark_5
KEY_FENRIR,KEY_5=bookmark_5
KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6
KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6
KEY_FENRIR,KEY_6=bookmark_6
KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7
KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7
KEY_FENRIR,KEY_7=bookmark_7
KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8
KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8
KEY_FENRIR,KEY_8=bookmark_8
KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9
KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9
KEY_FENRIR,KEY_9=bookmark_9
KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10
KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10
KEY_FENRIR,KEY_0=bookmark_10
KEY_FENRIR,KEY_KPSLASH=set_window_application
2,KEY_FENRIR,KEY_KPSLASH=clear_window_application
KEY_KPPLUS=last_incoming
KEY_FENRIR,KEY_F2=toggle_braille
KEY_FENRIR,KEY_F3=toggle_sound
KEY_FENRIR,KEY_F4=toggle_speech
KEY_KPENTER=temp_disable_speech
KEY_FENRIR,KEY_CTRL,KEY_P=toggle_punctuation_level
KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check
KEY_FENRIR,KEY_BACKSLASH=toggle_output
KEY_FENRIR,KEY_CTRL,KEY_E=toggle_emoticons
key_FENRIR,KEY_KPENTER=toggle_auto_read
KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time
KEY_FENRIR,KEY_KPASTERISK=toggle_highlight_tracking
KEY_FENRIR,KEY_KPMINUS=toggle_barrier
KEY_FENRIR,KEY_Q=quit_fenrir
KEY_FENRIR,KEY_T=time
2,KEY_FENRIR,KEY_T=date
KEY_KPSLASH=toggle_auto_indent
KEY_KPMINUS=attribute_cursor
#=toggle_has_attribute
KEY_FENRIR,KEY_S=spell_check
2,KEY_FENRIR,KEY_S=add_word_to_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check
KEY_FENRIR,KEY_BACKSPACE=forward_keypress
KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=clear_clipboard
KEY_FENRIR,KEY_HOME=first_clipboard
KEY_FENRIR,KEY_END=last_clipboard
KEY_FENRIR,KEY_PAGEUP=prev_clipboard
KEY_FENRIR,KEY_PAGEDOWN=next_clipboard
KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard
KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_CTRL,KEY_C=copy_last_echo_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
KEY_FENRIR,KEY_F5=import_clipboard_from_file
KEY_FENRIR,KEY_F6=export_clipboard_to_file
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks
KEY_FENRIR,KEY_X=set_mark
KEY_FENRIR,KEY_SHIFT,KEY_X=marked_text
KEY_FENRIR,KEY_F10=toggle_vmenu_mode
KEY_FENRIR,KEY_SPACE=current_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value
KEY_FENRIR,KEY_RIGHT=next_quick_menu_entry
KEY_FENRIR,KEY_UP=next_quick_menu_value
KEY_FENRIR,KEY_LEFT=prev_quick_menu_entry
KEY_FENRIR,KEY_DOWN=prev_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_S=save_settings
# linux specific
KEY_FENRIR,KEY_F7=import_clipboard_from_x
KEY_FENRIR,KEY_F8=export_clipboard_to_x
KEY_FENRIR,KEY_CTRL,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_CTRL,KEY_DOWN=dec_alsa_volume
KEY_FENRIR,KEY_SHIFT,KEY_V=announce_fenrir_version
fenrir/config/keyboard/laptop.conf 0000664 0000000 0000000 00000011534 14757714175 0017604 0 ustar 00root root 0000000 0000000 KEY_FENRIR,KEY_H=toggle_tutorial_mode
KEY_CTRL=shut_up
KEY_FENRIR,KEY_SHIFT,KEY_O=review_bottom
KEY_FENRIR,KEY_SHIFT,KEY_U=review_top
KEY_FENRIR,KEY_I=review_curr_line
KEY_FENRIR,KEY_U=review_prev_line
KEY_FENRIR,KEY_O=review_next_line
KEY_FENRIR,KEY_SHIFT,KEY_J=review_line_begin
KEY_FENRIR,KEY_SHIFT,KEY_L=review_line_end
KEY_FENRIR,KEY_CTRL,KEY_J=review_line_first_char
KEY_FENRIR,KEY_CTRL,KEY_L=review_line_last_char
KEY_FENRIR,KEY_ALT,KEY_1=present_first_line
KEY_FENRIR,KEY_ALT,KEY_2=present_last_line
KEY_FENRIR,KEY_K=review_curr_word
KEY_FENRIR,KEY_J=review_prev_word
KEY_FENRIR,KEY_L=review_next_word
KEY_FENRIR,KEY_ALT,KEY_K=review_curr_word_phonetic
KEY_FENRIR,KEY_ALT,KEY_J=review_prev_word_phonetic
KEY_FENRIR,KEY_ALT,KEY_L=review_next_word_phonetic
KEY_FENRIR,KEY_COMMA=review_curr_char
KEY_FENRIR,KEY_M=review_prev_char
KEY_FENRIR,KEY_DOT=review_next_char
KEY_FENRIR,KEY_ALT,KEY_COMMA=curr_char_phonetic
KEY_FENRIR,KEY_ALT,KEY_M=prev_char_phonetic
KEY_FENRIR,KEY_ALT,KEY_DOT=next_char_phonetic
KEY_FENRIR,KEY_CTRL,KEY_I=review_up
KEY_FENRIR,KEY_CTRL,KEY_COMMA=review_down
KEY_FENRIR,KEY_SLASH=exit_review
KEY_FENRIR,KEY_SHIFT,KEY_DOT=cursor_position
2,KEY_FENRIR,KEY_I=indent_curr_line
KEY_FENRIR,KEY_SHIFT,KEY_K=curr_screen
KEY_FENRIR,KEY_SHIFT,KEY_I=curr_screen_before_cursor
KEY_FENRIR,KEY_SHIFT,KEY_COMMA=curr_screen_after_cursor
#=cursor_read_to_end_of_line
#=cursor_column
#=cursor_lineno
#=braille_flush
#=braille_return_to_cursor
#=braille_pan_left
#=braille_pan_right
KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1
KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1
KEY_FENRIR,KEY_1=bookmark_1
KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2
KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2
KEY_FENRIR,KEY_2=bookmark_2
KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3
KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3
KEY_FENRIR,KEY_3=bookmark_3
KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4
KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4
KEY_FENRIR,KEY_4=bookmark_4
KEY_FENRIR,KEY_CTRL,KEY_5=clear_bookmark_5
KEY_FENRIR,KEY_SHIFT,KEY_5=set_bookmark_5
KEY_FENRIR,KEY_5=bookmark_5
KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6
KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6
KEY_FENRIR,KEY_6=bookmark_6
KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7
KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7
KEY_FENRIR,KEY_7=bookmark_7
KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8
KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8
KEY_FENRIR,KEY_8=bookmark_8
KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9
KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9
KEY_FENRIR,KEY_9=bookmark_9
KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10
KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10
KEY_FENRIR,KEY_0=bookmark_10
KEY_FENRIR,KEY_CTRL,KEY_8=set_window_application
2,KEY_FENRIR,KEY_CTRL,KEY_8=clear_window_application
KEY_FENRIR,KEY_SEMICOLON=last_incoming
KEY_FENRIR,KEY_F2=toggle_braille
KEY_FENRIR,KEY_F3=toggle_sound
KEY_FENRIR,KEY_F4=toggle_speech
KEY_FENRIR,KEY_ENTER=temp_disable_speech
KEY_FENRIR,KEY_SHIFT,KEY_CTRL,KEY_P=toggle_punctuation_level
KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_ENTER=toggle_output
KEY_FENRIR,KEY_SHIFT,KEY_E=toggle_emoticons
KEY_FENRIR,KEY_ENTER=toggle_auto_read
KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time
KEY_FENRIR,KEY_Y=toggle_highlight_tracking
#=toggle_barrier
#=cursor_read_line_to_cursor
KEY_FENRIR,KEY_Q=quit_fenrir
KEY_FENRIR,KEY_T=time
2,KEY_FENRIR,KEY_T=date
KEY_FENRIR,KEY_BACKSLASH=toggle_auto_indent
KEY_FENRIR,KEY_MINUS=attribute_cursor
#=toggle_has_attribute
KEY_FENRIR,KEY_S=spell_check
2,KEY_FENRIR,KEY_S=add_word_to_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check
KEY_FENRIR,KEY_BACKSPACE=forward_keypress
KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=clear_clipboard
KEY_FENRIR,KEY_HOME=first_clipboard
KEY_FENRIR,KEY_END=last_clipboard
KEY_FENRIR,KEY_PAGEUP=prev_clipboard
KEY_FENRIR,KEY_PAGEDOWN=next_clipboard
KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard
KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_CTRL,KEY_U=copy_last_echo_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
KEY_FENRIR,KEY_F5=import_clipboard_from_file
KEY_FENRIR,KEY_F6=export_clipboard_to_file
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks
KEY_FENRIR,KEY_X=set_mark
KEY_FENRIR,KEY_SHIFT,KEY_X=marked_text
KEY_FENRIR,KEY_F10=toggle_vmenu_mode
KEY_FENRIR,KEY_SPACE=current_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value
KEY_FENRIR,KEY_RIGHT=next_quick_menu_entry
KEY_FENRIR,KEY_UP=next_quick_menu_value
KEY_FENRIR,KEY_LEFT=prev_quick_menu_entry
KEY_FENRIR,KEY_DOWN=prev_quick_menu_value
KEY_FENRIR,KEY_ALT,KEY_RIGHT=inc_speech_pitch
KEY_FENRIR,KEY_ALT,KEY_LEFT=dec_speech_pitch
KEY_FENRIR,KEY_CTRL,KEY_S=save_settings
# linux specific
KEY_FENRIR,KEY_F7=import_clipboard_from_x
KEY_FENRIR,KEY_F8=export_clipboard_to_x
KEY_FENRIR,KEY_CTRL,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_CTRL,KEY_DOWN=dec_alsa_volume
KEY_FENRIR,KEY_SHIFT,KEY_V=announce_fenrir_version
fenrir/config/keyboard/nvda-desktop.conf 0000664 0000000 0000000 00000010776 14757714175 0020713 0 ustar 00root root 0000000 0000000 KEY_FENRIR,KEY_F1=toggle_tutorial_mode
KEY_FENRIR,KEY_H=toggle_tutorial_mode
KEY_CTRL=shut_up
KEY_SHIFT,KEY_KP9=review_bottom
KEY_SHIFT,KEY_KP7=review_top
KEY_KP8=review_curr_line
KEY_KP7=review_prev_line
KEY_KP9=review_next_line
KEY_SHIFT,KEY_KP1=review_line_begin
KEY_SHIFT,KEY_KP3=review_line_end
KEY_FENRIR,KEY_KP1=review_line_first_char
KEY_FENRIR,KEY_KP3=review_line_last_char
KEY_FENRIR,KEY_ALT,KEY_1=present_first_line
KEY_FENRIR,KEY_ALT,KEY_2=present_last_line
KEY_KP5=review_curr_word
KEY_KP4=review_prev_word
KEY_KP6=review_next_word
2,KEY_KP5=review_curr_word_phonetic
2,KEY_KP4=review_prev_word_phonetic
2,KEY_KP6=review_next_word_phonetic
KEY_KP2=review_curr_char
KEY_KP1=review_prev_char
KEY_KP3=review_next_char
2,KEY_KP2=review_curr_char_phonetic
2,KEY_KP1=review_prev_char_phonetic
2,KEY_KP3=review_next_char_phonetic
KEY_FENRIR,KEY_CTRL,KEY_KP8=review_up
KEY_FENRIR,KEY_CTRL,KEY_KP2=review_down
KEY_FENRIR,KEY_KPDOT=exit_review
KEY_KPDOT=cursor_position
KEY_FENRIR,KEY_I=indent_curr_line
KEY_FENRIR,KEY_B=curr_screen
KEY_FENRIR,KEY_KP8=curr_screen_before_cursor
KEY_FENRIR,KEY_KP2=curr_screen_after_cursor
KEY_FENRIR,KEY_SHIFT,KEY_PAGEDOWN=cursor_read_to_end_of_line
#=cursor_column
#=cursor_lineno
#=braille_flush
KEY_FENRIR,KEY_CTRL,KEY_T=braille_return_to_cursor
#=braille_pan_left
#=braille_pan_right
KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1
KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1
KEY_FENRIR,KEY_1=bookmark_1
KEY_FENRIR,KEY_K=bookmark_1
KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2
KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2
KEY_FENRIR,KEY_2=bookmark_2
KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3
KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3
KEY_FENRIR,KEY_3=bookmark_3
KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4
KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4
KEY_FENRIR,KEY_4=bookmark_4
KEY_FENRIR,KEY_CTRL,KEY_5=clear_bookmark_5
KEY_FENRIR,KEY_SHIFT,KEY_5=set_bookmark_5
KEY_FENRIR,KEY_5=bookmark_5
KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6
KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6
KEY_FENRIR,KEY_6=bookmark_6
KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7
KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7
KEY_FENRIR,KEY_7=bookmark_7
KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8
KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8
KEY_FENRIR,KEY_8=bookmark_8
KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9
KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9
KEY_FENRIR,KEY_9=bookmark_9
KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10
KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10
KEY_FENRIR,KEY_0=bookmark_10
KEY_FENRIR,KEY_KPSLASH=set_window_application
2,KEY_FENRIR,KEY_KPSLASH=clear_window_application
KEY_KPPLUS=last_incoming
#=toggle_braille
KEY_FENRIR,KEY_F3=toggle_sound
KEY_FENRIR,KEY_F4=toggle_speech
KEY_KPENTER=temp_disable_speech
KEY_FENRIR,KEY_P=toggle_punctuation_level
KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check
KEY_FENRIR,KEY_S=toggle_output
KEY_FENRIR,KEY_CTRL,KEY_E=toggle_emoticons
key_FENRIR,KEY_5=toggle_auto_read
KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time
KEY_FENRIR,KEY_KPASTERISK=toggle_highlight_tracking
KEY_FENRIR,KEY_KPMINUS=toggle_barrier
KEY_FENRIR,KEY_Q=quit_fenrir
KEY_FENRIR,KEY_T=time
KEY_FENRIR,KEY_F12=time
2,KEY_FENRIR,KEY_T=date
2,KEY_FENRIR,KEY_F12=date
KEY_KPSLASH=toggle_auto_indent
KEY_FENRIR,KEY_F=attribute_cursor
#=toggle_has_attribute
KEY_FENRIR,KEY_F7=spell_check
2,KEY_FENRIR,KEY_S=add_word_to_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check
KEY_FENRIR,KEY_F2=forward_keypress
KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume
#=clear_clipboard
KEY_FENRIR,KEY_HOME=first_clipboard
KEY_FENRIR,KEY_END=last_clipboard
KEY_FENRIR,KEY_PAGEUP=prev_clipboard
KEY_FENRIR,KEY_PAGEDOWN=next_clipboard
KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard
KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=copy_last_echo_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
KEY_FENRIR,KEY_F5=import_clipboard_from_file
KEY_FENRIR,KEY_F6=export_clipboard_to_file
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks
KEY_FENRIR,KEY_F9=set_mark
KEY_FENRIR,KEY_F10=marked_text
KEY_FENRIR,KEY_F10=toggle_vmenu_mode
KEY_FENRIR,KEY_SPACE=current_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_RIGHT=next_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_UP=next_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_LEFT=prev_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_DOWN=prev_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_C=save_settings
# linux specific
#=import_clipboard_from_x
KEY_FENRIR,KEY_F8=export_clipboard_to_x
KEY_FENRIR,KEY_ALT,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_alsa_volume
fenrir/config/keyboard/nvda-laptop.conf 0000664 0000000 0000000 00000011341 14757714175 0020526 0 ustar 00root root 0000000 0000000 KEY_FENRIR,KEY_F1=toggle_tutorial_mode
KEY_FENRIR,KEY_H=toggle_tutorial_mode
KEY_CTRL=shut_up
KEY_FENRIR,KEY_CTRL,KEY_END=review_bottom
KEY_FENRIR,KEY_CTRL,KEY_HOME=review_top
KEY_FENRIR,KEY_SHIFT,KEY_DOT=review_curr_line
KEY_FENRIR,KEY_U=review_prev_line
KEY_FENRIR,KEY_O=review_next_line
KEY_FENRIR,KEY_HOME=review_line_begin
KEY_FENRIR,KEY_END=review_line_end
KEY_FENRIR,KEY_CTRL,KEY_J=review_line_first_char
KEY_FENRIR,KEY_CTRL,KEY_L=review_line_last_char
KEY_FENRIR,KEY_ALT,KEY_1=present_first_line
KEY_FENRIR,KEY_ALT,KEY_2=present_last_line
KEY_FENRIR,KEY_CTRL,KEY_DOT=review_curr_word
KEY_FENRIR,KEY_J=review_prev_word
KEY_FENRIR,KEY_L=review_next_word
2,KEY_FENRIR,KEY_CTRL,KEY_DOT=review_curr_word_phonetic
2,KEY_FENRIR,KEY_J=review_prev_word_phonetic
2,KEY_FENRIR,KEY_L=review_next_word_phonetic
KEY_FENRIR,KEY_COMMA=review_curr_char
KEY_FENRIR,KEY_M=review_prev_char
KEY_FENRIR,KEY_DOT=review_next_char
2,KEY_FENRIR,KEY_COMMA=curr_char_phonetic
2,KEY_FENRIR,KEY_M=prev_char_phonetic
2,KEY_FENRIR,KEY_DOT=next_char_phonetic
KEY_FENRIR,KEY_CTRL,KEY_I=review_up
KEY_FENRIR,KEY_CTRL,KEY_COMMA=review_down
KEY_FENRIR,KEY_SLASH=exit_review
KEY_FENRIR,KEY_SHIFT,KEY_DOT=cursor_position
2,KEY_FENRIR,KEY_I=indent_curr_line
KEY_FENRIR,KEY_B=curr_screen
KEY_FENRIR,KEY_SHIFT,KEY_I=curr_screen_before_cursor
KEY_FENRIR,KEY_SHIFT,KEY_COMMA=curr_screen_after_cursor
KEY_FENRIR,KEY_SHIFT,KEY_PAGEDOWN=cursor_read_to_end_of_line
#=cursor_column
#=cursor_lineno
#=braille_flush
KEY_FENRIR,KEY_CTRL,KEY_T=braille_return_to_cursor
#=braille_pan_left
#=braille_pan_right
KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1
KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1
KEY_FENRIR,KEY_1=bookmark_1
KEY_FENRIR,KEY_K=bookmark_1
KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2
KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2
KEY_FENRIR,KEY_2=bookmark_2
KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3
KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3
KEY_FENRIR,KEY_3=bookmark_3
KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4
KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4
KEY_FENRIR,KEY_4=bookmark_4
KEY_FENRIR,KEY_CTRL,KEY_5=clear_bookmark_5
KEY_FENRIR,KEY_SHIFT,KEY_5=set_bookmark_5
KEY_FENRIR,KEY_5=bookmark_5
KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6
KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6
KEY_FENRIR,KEY_6=bookmark_6
KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7
KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7
KEY_FENRIR,KEY_7=bookmark_7
KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8
KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8
KEY_FENRIR,KEY_8=bookmark_8
KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9
KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9
KEY_FENRIR,KEY_9=bookmark_9
KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10
KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10
KEY_FENRIR,KEY_0=bookmark_10
KEY_FENRIR,KEY_CTRL,KEY_8=set_window_application
2,KEY_FENRIR,KEY_CTRL,KEY_8=clear_window_application
KEY_FENRIR,KEY_SEMICOLON=last_incoming
#=toggle_braille
KEY_FENRIR,KEY_F3=toggle_sound
KEY_FENRIR,KEY_F4=toggle_speech
KEY_FENRIR,KEY_ENTER=temp_disable_speech
KEY_FENRIR,KEY_P=toggle_punctuation_level
KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check
KEY_FENRIR,KEY_S=toggle_output
KEY_FENRIR,KEY_SHIFT,KEY_E=toggle_emoticons
KEY_FENRIR,KEY_5=toggle_auto_read
KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time
KEY_FENRIR,KEY_Y=toggle_highlight_tracking
#=toggle_barrier
KEY_FENRIR,KEY_Q=quit_fenrir
KEY_FENRIR,KEY_T=time
KEY_FENRIR,KEY_F12=time
2,KEY_FENRIR,KEY_T=date
2,KEY_FENRIR,KEY_F12=date
KEY_FENRIR,KEY_BACKSLASH=toggle_auto_indent
KEY_FENRIR,KEY_F=attribute_cursor
#=toggle_has_attribute
KEY_FENRIR,KEY_F7=spell_check
2,KEY_FENRIR,KEY_S=add_word_to_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check
KEY_FENRIR,KEY_F2=forward_keypress
KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume
#=clear_clipboard
#=first_clipboard
#=last_clipboard
KEY_FENRIR,KEY_PAGEUP=prev_clipboard
KEY_FENRIR,KEY_PAGEDOWN=next_clipboard
KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard
KEY_FENRIR,KEY_C=copy_marked_to_clipboard
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=copy_last_echo_to_clipboard
KEY_FENRIR,KEY_V=paste_clipboard
KEY_FENRIR,KEY_F5=import_clipboard_from_file
KEY_FENRIR,KEY_F6=export_clipboard_to_file
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks
KEY_FENRIR,KEY_F9=set_mark
KEY_FENRIR,KEY_F10=marked_text
KEY_FENRIR,KEY_SHIFT,KEY_F10=toggle_vmenu_mode
KEY_FENRIR,KEY_SPACE=current_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_RIGHT=next_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_UP=next_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_LEFT=prev_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_DOWN=prev_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_C=save_settings
# linux specific
#=import_clipboard_from_x
KEY_FENRIR,KEY_F8=export_clipboard_to_x
KEY_FENRIR,KEY_ALT,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_alsa_volume
fenrir/config/keyboard/pty.conf 0000664 0000000 0000000 00000004736 14757714175 0017127 0 ustar 00root root 0000000 0000000 # This file contains terminal escape sequences as shortcut
# It is used for PTY screen / Input driver (Terminal emulation)
# ^[ is used as escape
# f1 - fenrir help
^[OP=toggle_tutorial_mode
# double tap control+end read attributes
2,^[[1;5F=attribute_cursor
#=toggle_has_attribute
# escape - stop speech
^[=shut_up
# context menu key - stop speech
^[[29~=shut_up
# alt+shift+down - review to bottom
^[[1;4B=review_bottom
# alt+shift_up - review to top
^[[1;4A=review_top
# alt+down - review current line
^[[1;3B=review_curr_line
# alt+left - review previous line
^[[1;3D=review_prev_line
# alt+right - review next line
^[[1;3C=review_next_line
# alt+shift+left - beginning of line
^[[1;4D=review_line_begin
# alt+shift+right - end of line
^[[1;4C=review_line_end
# control+down - review current word
^[[1;5B=review_curr_word
# control+left - review previous word
^[[1;5D=review_prev_word
# control+right - review next word
^[[1;5C=review_next_word
# shift+down - review current character
^[[1;2B=review_curr_char
# shift+left - review previous character
^[[1;2D=review_prev_char
# shift+right - review next character
^[[1;2C=review_next_char
# control+shift+down - current character phonetic
^[[1;6B=curr_char_phonetic
# control+shift+left - previous character phonetic
^[[1;6D=prev_char_phonetic
# control+shift+right - next character phonetic
^[[1;6C=next_char_phonetic
# f2 - toggle sound
^[OQ=toggle_sound
# f3 - toggle highlight tracking
^[OR=toggle_highlight_tracking
alt+f12 - quit fenrir
^[[24;3~=quit_fenrir
# alt+f12 - time
^[[24;3~=time
# 2,alt+f12 - date
2,^[[24;3~=date
# alt+[ - previous clipboard
^[[=prev_clipboard
# alt+] - next clipboard
^[]=next_clipboard
# control+f6 - Read current clipboard
^[[17;5~=curr_clipboard
# f6 - copy to clipboard
^[[17~=copy_marked_to_clipboard
# shift+f6 - clear clipboard
^[[17;2~=clear_clipboard
# f7 - paste clipboard
^[[18~=paste_clipboard
# alt+f8 - export clipboard to X
^[[19;3~=export_clipboard_to_x
# control+f8 - import clipboard from X
^[[19;5~=import_clipboard_from_x
# alt+f9 - export clipboard to file
^[[20;3~=export_clipboard_to_file
# control+f9 - import clipboard from file
^[[20;5~=import_clipboard_from_file
# shift+f5 - remove marks
^[[15;2~=remove_marks
# f5 - set mark
^[[15~=set_mark
# f8 - Last utterance to clipboard
^[[19~=copy_last_echo_to_clipboard
# lat+\ Toggle auto announcement of indentation
^[\=toggle_auto_indent
# alt+end - temperarily disable speech
^[[1;3F=temp_disable_speech
# control+end - toggle auto read
^[[1;5F=toggle_auto_read
fenrir/config/keyboard/pty2.conf 0000664 0000000 0000000 00000002071 14757714175 0017177 0 ustar 00root root 0000000 0000000 # This file contains terminal escape sequences as shortcut
# It is used for PTY screen / Input driver (Terminal emulation)
# ^[ is used as escape
^[h=toggle_tutorial_mode
^[/=shut_up
^[[D=shut_up
^[O=review_bottom
^[U=review_top
#^[[1;3B=review_curr_line
^[i=review_curr_line
^[u=review_prev_line
^[o=review_next_line
^[J=review_line_begin
^[L=review_line_end
^[j=review_line_first_char
^[L=review_line_last_char
^[k=review_curr_word
^[j=review_prev_word
^[l=review_next_word
^[,=review_curr_char
^[m=review_prev_char
^[.=review_next_char
^[<=curr_char_phonetic
^[M=prev_char_phonetic
^[>=next_char_phonetic
^[OR=toggle_sound
^[OS=toggle_speech
^[8=toggle_highlight_tracking
^[Q=quit_fenrir
^[t=time
^[T=date
^[[5~=prev_clipboard
^[[6~=next_clipboard
^[C=curr_clipboard
^[c=copy_marked_to_clipboard
^[v=paste_clipboard
^[[15~=import_clipboard_from_file
^[X=remove_marks
^[x=set_mark
^[\=toggle_auto_indent
^[B=copy_last_echo_to_clipboard
# alt+f8 - export clipboard to X
# ^[[19;3~=export_clipboard_to_x
# # control+f8 - import clipboard from X
# ^[[19;5~=import_clipboard_from_x
fenrir/config/keyboard/speakup.conf 0000664 0000000 0000000 00000016301 14757714175 0017752 0 ustar 00root root 0000000 0000000 # Fenrir comment: copy of speakup DefaultKeyAssignments converted to fenrir syntax
# Fenrir comment: https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/drivers/staging/speakup/DefaultKeyAssignments
# Fenrir comment: The insert or shift key named below is the fenrir key
# This file is intended to give you an overview of the default keys used
# by speakup for it's review functions. You may change them to be
# anything you want but that will take some familiarity with key
# mapping.
# We have remapped the insert or zero key on the keypad to act as a
# shift key. Well, actually as an altgr key. So in the following list
# InsKeyPad-period means hold down the insert key like a shift key and
# hit the keypad period.
# KeyPad-8 Say current Line
KEY_KP8=review_curr_line
# InsKeyPad-8 say from top of screen to reading cursor.
KEY_FENRIR,KEY_KP8=curr_screen_before_cursor
# KeyPad-7 Say Previous Line (UP one line)
KEY_KP7=review_prev_line
# KeyPad-9 Say Next Line (down one line)
KEY_KP9=review_next_line
# KeyPad-5 Say Current Word
KEY_KP5=review_curr_word
# InsKeyPad-5 Spell Current Word
KEY_FENRIR,KEY_KP5=review_curr_word_phonetic
# KeyPad-4 Say Previous Word (left one word)
KEY_KP4=review_prev_word
# InsKeyPad-4 say from left edge of line to reading cursor.
KEY_FENRIR,KEY_KP4=cursor_read_line_to_cursor
# KeyPad-6 Say Next Word (right one word)
KEY_KP6=review_next_word
# InsKeyPad-6 Say from reading cursor to right edge of line.
KEY_FENRIR,KEY_KP6=cursor_read_to_end_of_line
# KeyPad-2 Say Current Letter
KEY_KP2=review_curr_char
# InsKeyPad-2 say current letter phonetically
KEY_FENRIR,KEY_KP2=review_curr_char_phonetic
# KeyPad-1 Say Previous Character (left one letter)
KEY_KP1=review_prev_char
# KeyPad-3 Say Next Character (right one letter)
KEY_KP3=review_next_char
# KeyPad-plus Say Entire Screen
KEY_KPPLUS=curr_screen
# InsKeyPad-plus Say from reading cursor line to bottom of screen.
KEY_FENRIR,KEY_KPPLUS=curr_screen_after_cursor
# KeyPad-Minus Park reading cursor (toggle)
# TODO
# InsKeyPad-minus Say character hex and decimal value.
# TODO
# KeyPad-period Say Position (current line, position and console)
KEY_KPDOT=cursor_position
# InsKeyPad-period say colour attributes of current position.
KEY_FENRIR,KEY_KPDOT=attribute_cursor
# InsKeyPad-9 Move reading cursor to top of screen (insert pgup)
KEY_FENRIR,KEY_KP9=review_bottom
# InsKeyPad-3 Move reading cursor to bottom of screen (insert pgdn)
KEY_FENRIR,KEY_KP3=review_top
# InsKeyPad-7 Move reading cursor to left edge of screen (insert home)
KEY_FENRIR,KEY_KP7=review_screen_first_char
# InsKeyPad-1 Move reading cursor to right edge of screen (insert end)
KEY_FENRIR,KEY_KP1=review_screen_last_char
# ControlKeyPad-1 Move reading cursor to last character on current line.
KEY_CTRL,KEY_KP1=review_line_end
# KeyPad-Enter Shut Up (until another key is hit) and sync reading cursor
KEY_KPENTER=temp_disable_speech
# InsKeyPad-Enter Shut Up (until toggled back on).
KEY_FENRIR,KEY_KPENTER=toggle_speech
# InsKeyPad-star n go to line (y) or column (x). Where 'n' is any
# allowed value for the row or column for your current screen.
# TODO
# KeyPad-/ Mark and Cut screen region.
KEY_KPSLASH=copy_marked_to_clipboard
# InsKeyPad-/ Paste screen region into any console.
KEY_FENRIR,KEY_KPSLASH=paste_clipboard
# Hitting any key while speakup is outputting speech will quiet the
# synth until it has caught up with what is being printed on the
# console.
# following by other fenrir commands
KEY_FENRIR,KEY_H=toggle_tutorial_mode
KEY_CTRL=shut_up
KEY_FENRIR,KEY_KP4=review_line_begin
#=review_line_end
#=review_line_first_char
#=review_line_last_char
KEY_FENRIR,KEY_ALT,KEY_1=present_first_line
KEY_FENRIR,KEY_ALT,KEY_2=present_last_line
KEY_FENRIR,KEY_SHIFT,KEY_KP4=review_prev_word_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP6=review_next_word_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP1=review_prev_char_phonetic
KEY_FENRIR,KEY_SHIFT,KEY_KP3=review_next_char_phonetic
KEY_FENRIR,KEY_CTRL,KEY_KP8=review_up
KEY_FENRIR,KEY_CTRL,KEY_KP2=review_down
#=exit_review
KEY_FENRIR,KEY_I=indent_curr_line
KEY_KPPLUS=curr_screen
#=cursor_column
#=cursor_lineno
#=braille_flush
#=braille_return_to_cursor
#=braille_pan_left
#=braille_pan_right
KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1
KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1
KEY_FENRIR,KEY_1=bookmark_1
KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2
KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2
KEY_FENRIR,KEY_2=bookmark_2
KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3
KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3
KEY_FENRIR,KEY_3=bookmark_3
KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4
KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4
KEY_FENRIR,KEY_4=bookmark_4
KEY_FENRIR,KEY_CTRL,KEY_5=clear_bookmark_5
KEY_FENRIR,KEY_SHIFT,KEY_5=set_bookmark_5
KEY_FENRIR,KEY_5=bookmark_5
KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6
KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6
KEY_FENRIR,KEY_6=bookmark_6
KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7
KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7
KEY_FENRIR,KEY_7=bookmark_7
KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8
KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8
KEY_FENRIR,KEY_8=bookmark_8
KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9
KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9
KEY_FENRIR,KEY_9=bookmark_9
KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10
KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10
KEY_FENRIR,KEY_0=bookmark_10
KEY_FENRIR,KEY_KPSLASH=set_window_application
2,KEY_FENRIR,KEY_KPSLASH=clear_window_application
#=last_incoming
KEY_FENRIR,KEY_F2=toggle_braille
KEY_FENRIR,KEY_F3=toggle_sound
KEY_FENRIR,KEY_F9=toggle_punctuation_level
KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check
KEY_FENRIR,KEY_BACKSLASH=toggle_output
KEY_FENRIR,KEY_CTRL,KEY_E=toggle_emoticons
key_FENRIR,KEY_KPENTER=toggle_auto_read
KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time
KEY_FENRIR,KEY_KPASTERISK=toggle_highlight_tracking
KEY_FENRIR,KEY_KPMINUS=toggle_barrier
KEY_FENRIR,KEY_Q=quit_fenrir
KEY_FENRIR,KEY_T=time
2,KEY_FENRIR,KEY_T=date
KEY_KPSLASH=toggle_auto_indent
#=toggle_has_attribute
KEY_FENRIR,KEY_S=spell_check
2,KEY_FENRIR,KEY_S=add_word_to_spell_check
KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check
KEY_FENRIR,KEY_BACKSPACE=forward_keypress
KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume
KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=clear_clipboard
KEY_FENRIR,KEY_HOME=first_clipboard
KEY_FENRIR,KEY_END=last_clipboard
KEY_FENRIR,KEY_PAGEUP=prev_clipboard
KEY_FENRIR,KEY_PAGEDOWN=next_clipboard
KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard
KEY_FENRIR,KEY_CTRL,KEY_C=copy_last_echo_to_clipboard
KEY_FENRIR,KEY_F5=import_clipboard_from_file
KEY_FENRIR,KEY_F6=export_clipboard_to_file
KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks
KEY_FENRIR,KEY_X=set_mark
KEY_FENRIR,KEY_SHIFT,KEY_X=marked_text
KEY_FENRIR,KEY_F10=toggle_vmenu_mode
KEY_FENRIR,KEY_SPACE=current_quick_menu_entry
KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value
KEY_FENRIR,KEY_RIGHT=next_quick_menu_entry
KEY_FENRIR,KEY_UP=next_quick_menu_value
KEY_FENRIR,KEY_LEFT=prev_quick_menu_entry
KEY_FENRIR,KEY_DOWN=prev_quick_menu_value
KEY_FENRIR,KEY_CTRL,KEY_S=save_settings
# linux specific
KEY_FENRIR,KEY_F7=import_clipboard_from_x
KEY_FENRIR,KEY_F8=export_clipboard_to_x
KEY_FENRIR,KEY_CTRL,KEY_UP=inc_alsa_volume
KEY_FENRIR,KEY_CTRL,KEY_DOWN=dec_alsa_volume
fenrir/config/punctuation/ 0000775 0000000 0000000 00000000000 14757714175 0016203 5 ustar 00root root 0000000 0000000 fenrir/config/punctuation/de.conf 0000664 0000000 0000000 00000004377 14757714175 0017455 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:.-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:Leer
&:===:Und
':===:Apostroph
@:===:At
\:===:Backslash
|:===:Pipe
!:===:Ausrufezeichen
^:===:Hoch
::===:Doppelpunkt
,:===:Komma
-:===:Minus
$:===:Dollar
.:===:Punkt
>:===:Größer als
`:===:Grave
#:===:Hash
{:===:Geschweifte Klammer auf
[:===:eckige Klammer auf
(:===:Klammer auf
<:===:Kleiner als
%:===:Prozent
+:===:Plus
?:===:Fragezeichen?
":===:Gänsefüßchen
):===:Klammer zu
}:===:Geschweifte Klammer zu
]:===:Eckige Klammer zu
;:===:Semikolon
/:===:Geteilt durch
*:===:Mal
~:===:Tilde
_:===:Lienie unten
=:===:Istgleich
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/default.conf 0000664 0000000 0000000 00000004241 14757714175 0020477 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:-$~+*-/\@#
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:space
&:===:and
':===:apostrophe
@:===:at
\:===:backslash
|:===:bar
!:===:bang
^:===:carrot
::===:colon
,:===:comma
-:===:dash
$:===:dollar
.:===:dot
>:===:greater
`:===:grave
#:===:hash
{:===:left brace
[:===:left bracket
(:===:left paren
<:===:less
%:===:percent
+:===:plus
?:===:question?
":===:quote
):===:right paren
}:===:right brace
]:===:right bracket
;:===:semicolon
/:===:slash
*:===:star
~:===:tilde
_:===:line
=:===:equals
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/en.conf 0000664 0000000 0000000 00000004240 14757714175 0017454 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:space
&:===:and
':===:apostrophe
@:===:at
\:===:backslash
|:===:bar
!:===:bang
^:===:carrot
::===:colon
,:===:comma
-:===:dash
$:===:dollar
.:===:dot
>:===:greater
`:===:grave
#:===:hash
{:===:left brace
[:===:left bracket
(:===:left paren
<:===:less
%:===:percent
+:===:plus
?:===:question?
":===:quote
):===:right paren
}:===:right brace
]:===:right bracket
;:===:semicolon
/:===:slash
*:===:star
~:===:tilde
_:===:line
=:===:equals
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/es.conf 0000664 0000000 0000000 00000004423 14757714175 0017464 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:.-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:espacio
&:===:et
':===:apóstrofo
@:===:arroba
\:===:barra inversa
|:===:barra vertical
!:===:Cerrar exclamación
^:===:circumplejo
::===:dos puntos
,:===:coma
-:===:guion
$:===:dólar
.:===:punto
>:===:mayor que
`:===:grave
#:===:signo de número
{:===:abrir yave
[:===:abrir corchete
(:===:abrir paréntesis
<:===:menor que
%:===:porciento
+:===:más
?:===:cerrar interrogación?
":===:comillas
):===:cerrar paréntesis
}:===:cerrar yave
]:===:cerrar corchete
;:===:punto y coma
/:===:barra
*:===:asterisco
~:===:tilde
_:===:subrayado
=:===:igual
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/fr.conf 0000664 0000000 0000000 00000004521 14757714175 0017463 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:.-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:espace
&:===:et
':===:apostrophe
@:===:arobase
\:===:barre oblique inversée
|:===:barre verticale
!:===:point d'exclamation
^:===:accent circonflexe
::===:deux points
,:===:virgule
-:===:tiret
$:===:dollar
.:===:point
>:===:suppérieur Ã
`:===:accent grave
#:===:dièse
{:===:accolade ouvrante
[:===:crochet ouvrant
(:===:parenthèse ouvrante
<:===:inférieur Ã
%:===:pourcent
+:===:plus
?:===:point d'interrogation
":===:guillemet
):===:parenthèse fermante
}:===:accolade fermante
]:===:crochet fermant
;:===:point virgule
/:===:barre oblique
*:===:astérisque
~:===:tildé
_:===:souligné
=:===:égale Ã
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/pl.conf 0000664 0000000 0000000 00000004373 14757714175 0017474 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:.-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:spacja
&:===:ampersant
':===:apostrof
@:===:małpa
\:===:bekslesz
|:===:pionowa kreska
!:===:wykrzyknik
^:===:daszek
::===:dwukropek
,:===:przecinek
-:===:myślnik
$:===:dolar
.:===:kropka
>:===:większe
`:===:akcent
#:===:hasz
{:===:lewa klamra
[:===:lewy nawias kwadratowy
(:===:lewy nawias
<:===:mniejsze
%:===:procent
+:===:plus
?:===:pytajnik
":===:cudzysłów
):===:prawy nawias
}:===:prawa klamra
]:===:prawy nawias kwadratowy
;:===:średnik
/:===:slesz
*:===:gwiazdka
~:===:tylda
_:===:podkreślnik
=:===:równa się
[customDict]
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/punctuation/rhvoice-en.conf 0000664 0000000 0000000 00000004541 14757714175 0021115 0 ustar 00root root 0000000 0000000 # how to use this file?
# the # on the beginning of the line is a comment
# the different sections are seperated by [Dict] is the section name. Dict is a keyword
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
[levelDict]
none:===:
some:===:-$~+*-/\@
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
[punctDict]
:===:space
&:===:and
':===:apostrophe
@:===:at
\:===:backslash
|:===:bar
!:===:bang
^:===:carrot
::===:colon
,:===:comma
-:===:dash
$:===:dollar
.:===:dot
>:===:greater
`:===:grave
#:===:hash
{:===:left brace
[:===:left bracket
(:===:left paren
<:===:less
%:===:percent
+:===:plus
?:===:question?
":===:quote
):===:right paren
}:===:right brace
]:===:right bracket
;:===:semicolon
/:===:slash
*:===:star
~:===:tilde
_:===:line
=:===:equals
[customDict]
regex;(?i)certificates:===:certiffikets
regex;(?i)certificate:===:certifficate
regex;(?i)lowblow:===:LowBlow
regex;(?i)nginx:===:EngineX
regex;(?i)shit:===:shitt
regex;(?i)slither:===:slitther
[emoticonDict]
regex;(?:^|\s)(?::-\)|:\))(?:\s|$):===:smile
regex;(?:^|\s)(?::-\(|:\()(?:\s|$):===:frown
regex;(?:^|\s)(?::-D|:D)(?:\s|$):===:big grin
regex;(?:^|\s)(?:;-\)|;\))(?:\s|$):===:wink
regex;(?:^|\s)(?::-P|:P)(?:\s|$):===:tongue out
regex;(?:^|\s)(?::-O|:O)(?:\s|$):===:surprised
regex;(?:^|\s)(?::-/|:/)(?:\s|$):===:skeptical
regex;(?:^|\s)(?:>:-\(|>:\()(?:\s|$):===:angry
regex;(?:^|\s)(?::'\(|:'-\()(?:\s|$):===:crying
regex;(?:^|\s)(?::-\||:\|)(?:\s|$):===:neutral
regex;(?:^|\s)(?:8-\)|B-\))(?:\s|$):===:cool
regex;(?:^|\s)8-X(?:\s|$):===:skull and crossbones
regex;(?:^|\s)(?:X-X|x-x)(?:\s|$):===:knocked out
regex;(?:^|\s)(?::-X|:-x|:X|:x)(?:\s|$):===:lips sealed
regex;(?:^|\s)XD(?:\s|$):===:laughing hard
regex;(?:^|\s)\^_\^(?:\s|$):===:happy
regex;(?:^|\s)-_-(?:\s|$):===:annoyed
regex;(?:^|\s)o_O(?:\s|$):===:confused
regex;(?:^|\s)>_<(?:\s|$):===:frustrated
regex;(?:^|\s)\\o/(?:\s|$):===:hurray
regex;(?:^|\s)<3(?:\s|$):===:heart
regex;(?:^|\s)3(?:\s|$):===:broken heart
regex;(?:^|\s)(?:Oo|oO)(?:\s|$):===:WTF?
regex;(?:^|\s)<{-.-}>(?:\s|$):===:Raves
regex;(?:^|\s)-\.-(?:\s|$):===:bugged
regex;(?:^|\s)>\.<(?:\s|$):===:laughing
regex;(?:^|\s)(?:>:\)|>:-\))(?:\s|$):===:evil smile
regex;(?:^|\s)\^\^(?:\s|$):===:enjoy smile
regex;(?:^|\s)->(?:\s|$):===:arrow right
regex;(?:^|\s)<-(?:\s|$):===:arrow left
fenrir/config/scripts/ 0000775 0000000 0000000 00000000000 14757714175 0015321 5 ustar 00root root 0000000 0000000 fenrir/config/scripts/wlan__-__key_y.sh 0000775 0000000 0000000 00000000565 14757714175 0020541 0 ustar 00root root 0000000 0000000 #!/bin/sh
#output the ESSID and signal level
#needs iw (for iwconfig)
if [[ $(nmcli device wifi | wc -l ) -ge 2 ]]; then
echo "Signal $(nmcli -f IN-USE,SIGNAL device wifi | grep "*" | tail -n1 | cut -f 2 -d '*') %"
echo "Name $(nmcli -f IN-USE,SSID device wifi | grep "*" | tail -n1 | cut -f 2 -d '*') "
else
echo "Leider keine Wlan verbindung $(whoami)"
fi
fenrir/config/settings/ 0000775 0000000 0000000 00000000000 14757714175 0015472 5 ustar 00root root 0000000 0000000 fenrir/config/settings/settings.conf 0000664 0000000 0000000 00000015524 14757714175 0020210 0 ustar 00root root 0000000 0000000 [sound]
# Turn sound on or off:
enabled=True
# Select the driver used to play sounds, choices are genericDriver and gstreamerDriver.
# Sox is the default.
#driver=gstreamerDriver
driver=genericDriver
# Sound themes. These are the pack of sounds used for sound alerts.
# Sound packs may be located at /usr/share/sounds
# For system wide availability, or ~/.local/share/fenrirscreenreader/sounds
# For the current user.
theme=default
# Sound volume controls how loud the sounds for your selected soundpack are.
# 0 is quietest, 1.0 is loudest.
volume=1.0
# shell commands for generic sound driver
# the folowing variable are substituted
# fenrirVolume = the current volume setting
# fenrirSoundFile = the soundfile for an soundicon
# fenrirFrequence = the frequency to play
# fenrirDuration = the duration of the frequency
# the following command is used to play a soundfile
genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile
#the following command is used to generate a frequency beep
genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence
[speech]
# Turn speech on or off:
enabled=True
# Select speech driver, options are speechdDriver or genericDriver:
driver=speechdDriver
#driver=genericDriver
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
rate=0.5
# Pitch controls the pitch of the voice, select from 0, lowest, to 1.0, highest.
pitch=0.5
# Pitch for capital letters
capitalPitch=0.9
# Volume controls the loudness of the voice, select from 0, quietest, to 1.0, loudest.
volume=1.0
# Module is used for Speech-dispatcher, to select the speech module you want to use.
# Consult Speech-dispatcher's configuration and help Fenrir find out which modules are available.
# The default is specified in speechd.conf.
#module=espeak-ng
# Voice selects the voice you want to use, for example, en-GB-scotland will use the Scotish English voice in Espeak,
# To find out which voices are available, consult the documentation provided with your selected synthesizer.
# This also sets the voice used in the generic driver.
# You can add a variant by adding +name onto the end.
# voice=en-us
# Select the language you want Fenrir to use.
#language=en
# Read new text as it happens?
autoReadIncoming=True
# Speak individual numbers instead of whole string.
readNumbersAsDigits = False
# genericSpeechCommand is the command that is executed for talking
# the following variables are replaced with values
# fenrirText = is the text that should be spoken
# fenrirModule = may be the speech module like used in speech-dispatcher, not every TTY need this
# fenrirLanguage = the language
# fenrirVoice = is the current voice that should be used. Set the voice variable above.
# the current volume, pitch and rate is calculated like this
# value = min + settingValue * (min - max )
# fenrirVolume = is replaced with the current volume
# fenrirPitch = is replaced with the current pitch
# fenrirRate = is replaced with the current speed (speech rate)
genericSpeechCommand=espeak-ng -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
# min and max values of the TTS system that is used in genericSpeechCommand
fenrirMinVolume=0
fenrirMaxVolume=200
fenrirMinPitch=0
fenrirMaxPitch=99
fenrirMinRate=80
fenrirMaxRate=450
[screen]
driver=vcsaDriver
encoding=auto
screenUpdateDelay=0.05
suspendingScreen=
autodetectSuspendingScreen=True
[keyboard]
driver=evdevDriver
# filter input devices NOMICE, ALL or a DEVICE NAME
device=ALL
# gives Fenrir exclusive access to the keyboard and lets it control keystrokes.
grabDevices=True
ignoreShortcuts=False
# the current shortcut layout located in /etc/fenrirscreenreader/keyboard
keyboardLayout=desktop
# echo chars while typing.
# 0 = None
# 1 = always
# 2 = only while capslock
charEchoMode=1
# echo deleted chars
charDeleteEcho=True
# echo word after pressing space
wordEcho=False
# interrupt speech on any keypress
interruptOnKeyPress=True
# you can filter the keys on that the speech should interrupt (empty = all keys, otherwhise the given keys)
interruptOnKeyPressFilter=
# timeout for double tap in sec
doubleTapTimeout=0.2
[general]
debugLevel=0
# debugMode sets where the debug output should send to:
# debugMode=File writes to debugFile (Default:/tmp/fenrir-PID.log)
# debugMode=Print just prints on the screen
debugMode=File
debugFile=
punctuationProfile=default
punctuationLevel=some
respectPunctuationPause=True
newLinePause=True
numberOfClipboards=10
# used path for "export_clipboard_to_file"
# $user is replaced by username
#clipboardExportPath=/home/$user/fenrirClipboard
clipboardExportPath=/tmp/fenrirClipboard
emoticons=True
# define the current Fenrir key
fenrirKeys=KEY_KP0,KEY_META,KEY_INSERT
scriptKeys=KEY_COMPOSE
timeFormat=%H:%M:%P
dateFormat=%A, %B %d, %Y
autoSpellCheck=True
spellCheckLanguage=en_US
# path for your scripts "scriptKeys" functionality
scriptPath=/usr/share/fenrirscreenreader/scripts
# overload commands, and create new one without changing Fenrir default
commandPath=
#fenrirBGColor = the backgroundcolor
#fenrirFGColor = the foregroundcolor
#fenrirUnderline = speak the underline attribute
#fenrirBold = speak the bold attribute
#fenrirBlink = speak the blink attribute
#fenrirFont = the font
#fenrirFontSize = the fontsize
attributeFormatString=Background fenrirBGColor,Foreground fenrirFGColor,fenrirUnderline,fenrirBold,fenrirBlink, Font fenrirFont,Fontsize fenrirFontSize
# present indentation
autoPresentIndent=False
# speak is only invoked on changeing ident level, sound always
# 0 = sound and speak
# 1 = sound only
# 2 = speak only
autoPresentIndentMode=1
# play a sound when attributes are changeing
hasAttributes=True
# shell for PTY emulatiun (empty = default shell)
shell=
[focus]
#follow the text cursor
cursor=True
#follow highlighted text changes
highlight=False
[remote]
enable=True
# driver
# unixDriver = unix sockets
# tcpDriver = tcp (localhost only)
driver=unixDriver
# tcp port
port=22447
# socket filepath
socketFile=
# allow settings to overwrite
enableSettingsRemote=True
# allow commands to be executed
enableCommandRemote=True
[barrier]
enabled=True
leftBarriers=│└┌─
rightBarriers=│┘â”─
[review]
lineBreak=True
endOfScreen=True
# leave the review when pressing a key
leaveReviewOnCursorChange=True
# leave the review when changing the screen
leaveReviewOnScreenChange=True
[promote]
enabled=True
inactiveTimeoutSec=120
list=
[menu]
vmenuPath=
quickMenu=speech#rate;speech#pitch;speech#volume
[time]
# automatic time anouncement
enabled=False
# present time
presentTime=True
# present date (on change)
presentDate=True
# present time after a given period of seconds
delaySec=0
# present time after to given minutes example every 15 minutes: 00,15,30,45
# if delaySec is >0 onMinutes is ignored
onMinutes=00,30
# announce via soundicon (not interrupting)
announce=True
# interrupt current speech for time announcement
interrupt=False
fenrir/config/sound/ 0000775 0000000 0000000 00000000000 14757714175 0014762 5 ustar 00root root 0000000 0000000 fenrir/config/sound/default/ 0000775 0000000 0000000 00000000000 14757714175 0016406 5 ustar 00root root 0000000 0000000 fenrir/config/sound/default/Accept.wav 0000664 0000000 0000000 00000113120 14757714175 0020322 0 ustar 00root root 0000000 0000000 RIFFH– WAVEfmt ( þÿ €» î € ª 8›qfact €% data – ¼§1j¸©‚€6˜tÃéÃO G>Û
u³e'óî
ÍvÏý"ŽÄt„A}ÿ}öÉöd®lÏ|ßïO¸»`Œ#!h,ˆ"Ìè#%?E%€V&’åð'£¿?)o¸‰*#¤Î+gW-h§H.Õi}/ît¬0…ŸÕ1Áø2{±4•I,5±b<6ÛÖE7×€H8%iëX?o@2àÏ@ #Ap&B²ÄB0ÌZC‚QèC„+mDPDéD‡\EàÆE¥<(FK‹€F »ÏFd¾G…RG†GU.°GÇùÐG]èG!PöG
ÌúG5ËõG4IçGçBÏGo¶G1£‚GÚ NG^ìGûMÈF<3wFó¡FD¡¸Eœ9KE·tÔDŸ]TD ËC…k8CœB¯Õ÷AÎöIAN#“@UoÓ?Lð
?è¼9>#í_=;š}<²Þ’;IÖŸ:þ¤9T¡8ê–7<
ƒ6áLh5áF4uP3üZë1öH³0Bt/ðn..…ùá,¯+eÔ5*¦}Ö(v6q'×-&“•$&™#Þo¤!¬J$ 3]ŸðÛ6ü‡$ôõžú_KGƇ)a•ˆ åo©>ﯕ˜Xêzß<& ªzÜ *”kv'ßÁÚ¢™õVÿ˜¡ýEEëûDÁ5úcÊ€ø‘ ÌöÕƒõD´góùq·ñ
ýð•\îG{²ì2î
ëã-féÉyÄç&æ«2‹ä%ôâºaá>EÒßþGÞ'vÂÜÞéAÛ•ÆÙ³PØe~àÖ1vÕxÔû0´Òiî\ѲsÐíöÂÎO€ÍËḚƒËX çÉcÃÈ@¨Ç‚P•Æ¿ìŠÅ A‰ÄÏzø ‰BºÁ$"ÝÀˆ À¢™?¿’z¾[Mɽü2½K{¼y³ã»ïˆV»gæÓºUå[ºšî¹z%Œ¹›‘4¹ õç¸ÿ`¦¸Båo¸ÀD¸¹l$¸±†¸pæ¸ü’¸“‘¸°å,¸ ‘P¸d“¸ò깸ê“ÿ¸¾ˆP¹
¬¹¡6ºoÛ†º™£»m€»aa!¼4À¼oäi½[\¾„ݾñA§¿”z{ÀÈZÁ“åBÂ6Ø5Ã7Æ2ÄY‹9ÅJÆ‹dÇŸa‡Èçö³ÉÀ”éÊå(Ìw/oÍ˾Ί¬Ð‰ŸvÑømÞÒ\àMÔǽÄÕäËB×ÿÎÇØ ŠSÚ§¾åÛ6-~Ýڔ߀³ÀàïEjâÍ䬳Ìå…ç®Aé¯më ÷Æì± î]?ZðZg(ò$,ùó‹@Ìõ¼V¡÷O xùVNPûi‘)ý±™ÿ÷Þ ³¸¸.“&m‡OFY
}ñôNÇÉ
F‰œ6æl:&-ÚuÌäÀO$ÙñÁØÛsn” !¢ÎÇ"3>i$©—&b™'¤Þ')§9¯*¡Y/,Ü÷§-¹Î/Ê™0Òâ1Ý :3H‰4Ï"Ï5›Ü7J?8th9݇:
;Õ§<ú§= J> –‡?¯f@
g:A=“B‡
¿B³¥oC“?D µ¬Då8E¿°¸E]û+F[ª’Fc¥ìF]Ö9Gt)zG G&òÓG£KíG
ùG7´øGZµêGÏGc@§GÃÊqG2/GŸ|ßF.³‚FóàF–¢E2[ETÊDùuðC“uFCüâBÚÌAÎzý@å!@•<:?_§F>”MG=ºY<<¤ø%;qY:×8i( 7üÿ]60l5!§º3íY2"|ï0Æ”{/:yþ-¼mx,n¸é*N¡R)+r³'—v&Úû]$ãP¨"@Æë ®(à[_È$/_»ÕbἈ+=¥7•SL‰“]qÃkBw
»p€Ü®‡F^òà‘Z™• jê˜þi7œüåãŸú¦S¤ø”ê©ö¥±ô˺òÞÅðŠœÓî8Ñäìÿ‚ùê‰éè.ç_PåšÚvã红áe_Ôß &Þ.nJÜœ’Ú\ïÛØ«Þ/׃¹‹Õ‰×ïÓóŽ\Ò|4ÒÐLQÏì”ÙÍ+ñkÌ~Ë݇¯ÉÈXaÈ#9Ç.oæÅ?ºÄ³ê™Ãß±…ÂýÑ}Á#†‚Àú”¿·Š²¾EÞ½
g½;^¼n™²»¿þ»ˆu…ºW!ºã"‘¹˜,¹›Ö¸´E¸D«V¸LÞ,¸Äí¸–å¸”Î¸|®¸í‡;¸fZk¸B"ª¸·Ø÷¸ÒsT¹y濹g :º3úF™Z»é§ ¼>µ¼HÙw½î¸H¾û•'¿-GÀ/ Á©qÂA‰+ç±MÄš²|ÅõP¸Æ´N ÈkTÉLb´Ê7îÌÀÅ–ÍFÏ‘&¥Ðè<Ò ÝÓ¹‡ÕZÊ;×OáøØ ¢¾Ú®ŒÜ§¤bÞi#@àÑÅ$â•%äªÚæ]{ùçgœöé ÑøëüªÿíÚº
ðãò=¸+ôÁ@öa6Xø©£qún“Œüœ¨þ•!Å DÒá@*þß±Uñ3 ËpL}¸b
ÒPv{†‰–“ŒVœ¬Œ Åß‚‡™xd@èz“¡a!e A#ýõ%µè&éñ¯(aBn*>#,–~Î-0Ÿo/]=1¬ø‘2ær4#P‡5ç6ð6/ÐL8‘Çœ9JËß:\Œ<™¾==¿X>‡Td?º.b@DgQADÁ1BCöÄC³hwD*EçE³î/FŤ¢FGWG`”˜G÷}ÉGؽéGÑEùGøG¤æGŽ:ÃG¶¢G{FKG-/öFjFoFo“E=ÈûDôTDGœC,dÔB{žüAF#A#@aÒ??i>Ÿ#Þ<A«;ñj:¶9±ž½7çS6öQÛ4‘ÂV3µ¶Å1œ‰(0¥™.DHË,ëù+óB)Œn'8%³©#å!¹!¼¿ÀlÀ
¸áÖ©Ï”DylzX©³2ésÅ@Ú'¡¨
)tó==˜û–ʨåÿ¶Uýžƒû!ìàø!̨ö}°rôð%?òï¸ð‚õáí"g¹ëš˜•éÜwçãa^å‘
L㆔@á…<ßÂ_@ÝÛ¦LÛ˜ÚaÙ[y€×zÿ¨ÕçÛÓ¨ÒÝ·bÐ?‰·ÎoŒÍÌ.†ËÉÚ ÊÑ÷ˆÈ)êÇÓÃÅtÏuÄ5z7îiÂÊðèÀ¯^Ù¿¥þÙ¾ë½î½ü¿?¼Åȃ»?ÙºdU@º’9¹¹#D¹
á¸ÃA¸ùÎQ¸ÍË%¸ŸJ¸Y¸ ¸‡C/¸Ð"`¸I˜£¸}™ù¸b¹ýܹ"2jº¤˜ »Õ
»»6j~¼{S½—":¾Æ2¿&;ÀÞUÁý´^ºÃL/Ũ°_ÆNÉÇkBÉSíÉʸ°_ÌŸOÎ `´Ï"trÑZ=ÓÝÕäDöÖgÔãØªÜÚkÞÜ-jêÞ]ÿàk%ãrÈBåÚoçˆÇ£ééûÝë5àîˆÛbð>S¬ò«ùôEJ÷wƒùÅòû*iIþ7Î ÛQøWQO)¥Ê7ù µØJ¸i™Hä—Ó*ôilÈk¨W:Þ88
‚É4õST (?k"¹ôx$oà|&npv(Ze*ŠBH,'n.[ê/{¨§1(³W3z´ù4%36ž¹8?Ö†9jì:«A<Ù}…=8Õ¸>•ÉÚ?fë@ç/éA1ÕB\.®CstD’'EPÇE÷zSFâËF^0GÚÉ€Gù½GúÿäG*ŸøG”Ø÷G¥âG¹GK÷zGÒ‹(GÎÐÁF2ÜFFËÉ·E5»EÞ×]DúL“C€MµBÄA Ù¿@†æ¨?̓>÷ÿC=q¯ö;ÿë—:§(9œ§7"À6uv4Æ2¡1Ç®9/V^-Þ’u+¬î)"÷}'Ð=p%XW#ÒÞ3!‡ná¦Ï¶*ÆŸH”®ù9¤+HH0ç”k$®
ɬªï;0¹É7W
QäýÛÀqû½@ ù‹öæY#ôHg¹ñ„lSï2"òìð?–ê*|@èã‹ñåz"ªãxñjáV¨4ßCôÝöåÚróÍØÓóÁÖ#ÂÔðÏÒŽ…éÐiëÏåHÍ˳ÍäÉ£ÎJȇÁÆvtIÅ&ãÃyÊŽÂyMÁÃUÀiñ¿ÇDû½h§½áj(¼¶Ú]»B<¨º’κVÊ|¹Æa¹ŽÀ§¸»^¸¬a*¸ÿÙ¸ˆ…¸Dn¸U—9¸óüt¸o”Ƹ-L.¹¦¬¹i³?ºéº¨»¬z|¼Ÿÿe½Ðhd¾õmw¿(ÀžÀ÷ ÚÁzï(Ãm‹ÄGþÿÅVP‡Çß É>BËÊç†Ì#øRÎ
ê.ÐÔ+Òp'ÔÍAÖÛ1؈NTÚ_ó‚ÜF½Þñá:1QãY¯©åÖ
è'æsê!äìþµZï3éÖñøìWôˆõÜö_5eùyÝïû˜|þ…$ P ––>"Ĭ¬Z˜44/¹
ÆŸ9iµšÌ*Aë™ö¨@;aàÙ·¿!¿'G#åS~%±†©'ÖÈ)ÁÙ+ãÜ-áSÐ/Þµ1«Í‰3ÍM5Ø~ 7ZN¡8_¬/:{«;8ô=KÝf>¹S¦?çÐ@x-æAÄåB½NÏC¾x¢Dmô^E{FaÏ’FÁ¸ G6iG–°GƒBàG™õ÷GdŸ÷G÷7ßGp¿®G>fGÿÃGÂiFÅOýE”žUE†–Dã@ÀC~
ÓBü4ÏAšµ@LÝ„?®?>âä