Compare commits
485 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2cc2fda28c | ||
|
c99d0f6ee1 | ||
|
1552b962a1 | ||
|
09391bfe84 | ||
|
e76ca9889a | ||
|
73206ce393 | ||
|
5b642cd9e2 | ||
|
4966b87ba1 | ||
|
145cab6221 | ||
|
e46926f145 | ||
|
8cd50c5070 | ||
|
ed918a0334 | ||
|
760b873abe | ||
|
46c348634c | ||
|
9da925c80d | ||
|
9c45ca1b5f | ||
|
d1be848ebb | ||
|
bc4319bf5e | ||
|
6f8139ed8f | ||
|
f1a6c75459 | ||
|
1d746eb709 | ||
|
80f549fde9 | ||
|
9f57f7faec | ||
|
099d49d670 | ||
|
67b6c79678 | ||
|
191181a6a5 | ||
|
c77d2bddd8 | ||
|
90d8e62db0 | ||
|
d6a9332f80 | ||
|
55ce73322b | ||
|
78ca59a938 | ||
|
dd52d08171 | ||
|
29a2db0e0c | ||
|
b6201235e6 | ||
|
f7584463e3 | ||
|
8ef3d2856b | ||
|
8f28ee360a | ||
|
8782d53d03 | ||
|
7d276c95ea | ||
|
d70073274b | ||
|
f6d3baebc1 | ||
|
5a59ef6325 | ||
|
baa4c9a937 | ||
|
3757a1ceeb | ||
|
1696d62526 | ||
|
84514edc96 | ||
|
0e787c21ab | ||
|
9cdf80b313 | ||
|
24e82936a9 | ||
|
0f932fb93a | ||
|
4c9e0bfd36 | ||
|
353f9d3676 | ||
|
064172648f | ||
|
95170e7d39 | ||
|
a93df78ffc | ||
|
9758c072b5 | ||
|
4054cb2732 | ||
|
e3a9937778 | ||
|
ee7baf5314 | ||
|
8e4cbc2fd5 | ||
|
5904c9cf6c | ||
|
5249f13be9 | ||
|
1d91c62c67 | ||
|
bc72765544 | ||
|
b54a226833 | ||
|
295167c865 | ||
|
af857d7976 | ||
|
6785fde7c9 | ||
|
0b4b2c6a84 | ||
|
0b2536e0e3 | ||
|
8d8f5dc613 | ||
|
7514744cdd | ||
|
d84edf520e | ||
|
e123c8ebfa | ||
|
bd975df912 | ||
|
0a2e9533bd | ||
|
1649f18a8f | ||
|
619b67ea70 | ||
|
dda9d5e4e7 | ||
|
56f403b0b9 | ||
|
10bc181241 | ||
|
8ae82cbc4b | ||
|
f5242f7092 | ||
|
c9924f66da | ||
|
6644634d98 | ||
|
a8642a6440 | ||
|
a84bee851d | ||
|
c3d1ccd10b | ||
|
a7b28af947 | ||
|
110a2ddb31 | ||
|
842e7c70ac | ||
|
f4a6c22c39 | ||
|
9fb72d1df4 | ||
|
58fb9441b7 | ||
|
f45a77c7e1 | ||
|
bcf17ff021 | ||
|
63124f4f68 | ||
|
cd34b02835 | ||
|
b219251d6c | ||
|
41104d4e40 | ||
|
7d04672fa4 | ||
|
be6e1be785 | ||
|
cd421712f5 | ||
|
73f4c69cf0 | ||
|
99889d4c6c | ||
|
45cd5e0f1d | ||
|
c605b8afbc | ||
|
bd0aeefc9f | ||
|
3191d335a3 | ||
|
20f2182c8a | ||
|
de0fb55394 | ||
|
cb6b66b400 | ||
|
cc4e0915dd | ||
|
85e52bfe21 | ||
|
a78a3f56a7 | ||
|
492b575b64 | ||
|
47f7517ef3 | ||
|
def4690040 | ||
|
072a5e6f6f | ||
|
e857d336d9 | ||
|
21e97919fa | ||
|
77ffac9d5d | ||
|
01bb846590 | ||
|
e24ad9ec11 | ||
c26e3c545c | |||
2a41b95c16 | |||
3abf7dcbe2 | |||
bb1ef35056 | |||
959fecedf9 | |||
|
a0de790154 | ||
|
0ed4eef266 | ||
|
4d9e392b84 | ||
|
05e8fd6791 | ||
|
7b20c95309 | ||
|
12bfca24f5 | ||
|
523e9f43b1 | ||
|
eaa86cb376 | ||
|
9a3778e25f | ||
|
a3bb82e524 | ||
|
99496e121b | ||
|
22f214ae49 | ||
|
05e3b0b3f9 | ||
|
4a1aa1e388 | ||
|
d503a8a29b | ||
9fae16caf6 | |||
|
da216c5e77 | ||
|
e8f5b8b853 | ||
f7aca66aa4 | |||
|
399f021475 | ||
|
7cadae70b6 | ||
|
35b8384210 | ||
|
03ef4710fd | ||
|
2f189da4d0 | ||
|
02152bfb36 | ||
|
23792fc897 | ||
|
08594bfad2 | ||
|
4955a3d846 | ||
|
231b03ff5c | ||
|
43b5a9c4bf | ||
|
4502f8321a | ||
|
37dad53325 | ||
|
d1a17dee91 | ||
|
ed1aec1901 | ||
|
c555bef0eb | ||
|
29dbceee5a | ||
|
562ab419d7 | ||
|
a47c2529b0 | ||
|
f261583a4b | ||
|
7a1f93607d | ||
|
9ab92174e3 | ||
|
53e6c67339 | ||
|
9187c7eedf | ||
|
65fa0a54de | ||
|
7fdd5878f2 | ||
|
fb20f1a681 | ||
|
566f2ca8a4 | ||
|
404672a5b1 | ||
|
c59d729748 | ||
|
146f133874 | ||
|
6c0556977e | ||
|
51d5e796bb | ||
|
346f7756bc | ||
|
70982a2887 | ||
|
b727ec30b2 | ||
|
26284cc480 | ||
|
b6474bfd9d | ||
|
bb095022e0 | ||
|
fd63321554 | ||
|
5b5536444d | ||
|
48427c247c | ||
|
3d93dcbd98 | ||
|
b4e6b50530 | ||
|
340421ce5a | ||
|
c878ed2b74 | ||
|
3bbc88f351 | ||
|
1b82dfafba | ||
|
4002bc07e1 | ||
|
d5ca736f7c | ||
|
f04d8584d9 | ||
|
6761b6267c | ||
|
bed06374f1 | ||
|
cfb3695196 | ||
|
8b5ae6a803 | ||
|
effb576089 | ||
|
981bf85cf0 | ||
|
aa5bb94237 | ||
|
a05a85ee34 | ||
|
8ee7823e21 | ||
|
ce9ffaa107 | ||
|
1bb2d35425 | ||
|
617942f828 | ||
|
42a690de77 | ||
|
d01d4f0773 | ||
|
7e4217254a | ||
|
0279edf4ff | ||
|
d38c409518 | ||
|
28f29154cb | ||
|
8bed7ce8e2 | ||
|
a3acf7d9cc | ||
|
7749be508e | ||
572435bd12 | |||
|
a4b4560a6b | ||
|
cda91a1ab6 | ||
|
d084a11145 | ||
|
882889ee1c | ||
|
4365d0c306 | ||
|
ce4da1834f | ||
|
23edc5eaa7 | ||
|
ca5ce66f31 | ||
|
c50b64b2f1 | ||
|
2f0e8470e1 | ||
|
26ad967725 | ||
|
7125bfac0f | ||
|
7afbd90403 | ||
|
8b49ab8914 | ||
|
7736559e92 | ||
|
a386ef8d0d | ||
|
52f1c221c3 | ||
|
32794f2fe5 | ||
|
13742ba980 | ||
|
d6498f053c | ||
|
8e39b7b884 | ||
|
fe96d204a7 | ||
|
cacfaac649 | ||
|
3f85d672a6 | ||
|
8663ad1ac9 | ||
|
05165d2868 | ||
|
6dbd82da71 | ||
|
45a27be679 | ||
|
f676819eae | ||
|
46427342b3 | ||
|
7dd5b609de | ||
|
1155103389 | ||
|
6b6de57c9e | ||
|
7f91223f94 | ||
|
59c4a2beb4 | ||
|
c407f2f418 | ||
|
6db1e9378f | ||
|
128f30c05b | ||
|
ef68584b18 | ||
|
aa7d556782 | ||
|
4d834a7a4c | ||
|
e3b24aac95 | ||
|
4d6f6fb038 | ||
|
2f592338fe | ||
|
082f392305 | ||
|
2c81540634 | ||
|
9657d23c4f | ||
|
9554dbbf6d | ||
|
f70cb1670e | ||
|
ecacae23d0 | ||
|
d380ab711d | ||
|
0e8ebc43b4 | ||
|
55e9f9e4b4 | ||
|
3271fe9010 | ||
|
288661afa2 | ||
|
c7f62cd1ff | ||
|
4444a90aa2 | ||
|
88e77d310c | ||
|
99984915e4 | ||
|
7ce4bc0811 | ||
|
228f6ba417 | ||
|
bf49e9d72a | ||
|
3a86f2f9d0 | ||
|
47027aaa4f | ||
|
efb53c8b53 | ||
|
9ddb823861 | ||
|
dbb3955a79 | ||
|
2bd9ea2ee3 | ||
|
a76aa855a3 | ||
|
48ab30a370 | ||
|
6bf7ad6b74 | ||
|
7527fc3552 | ||
|
c7b5134cd5 | ||
|
44c75a90ee | ||
|
c3ab4fabcb | ||
|
a54e053f91 | ||
|
3d5841ded9 | ||
|
0a78d4d3c6 | ||
|
975efcace0 | ||
|
2da58e73ad | ||
|
c517ed0a6d | ||
|
3bd8e5e561 | ||
|
8423dbe4ab | ||
|
4a70a0442e | ||
|
b1d9e943ed | ||
|
a574e94348 | ||
|
968ffd42a3 | ||
|
61a0e69dfa | ||
|
c1b91d7fef | ||
|
994d65a196 | ||
|
364c759de7 | ||
|
69632cb0b1 | ||
|
ba6826284f | ||
|
181c9bd2fe | ||
|
1b1d6ac269 | ||
|
6d5c4cb5f2 | ||
|
a8603c89d7 | ||
|
a7a0ab0d86 | ||
|
9af6c410c8 | ||
|
f015fa8193 | ||
|
b9af6f2b46 | ||
|
152c4c2185 | ||
|
be19a67fcd | ||
|
a5b7694e59 | ||
|
ec4b1408b6 | ||
|
2082c73554 | ||
|
7835b145ac | ||
|
8ffca527ab | ||
|
05b9a72b38 | ||
|
224739ecfb | ||
|
371adb7417 | ||
|
f418adb817 | ||
|
9e48fb1cf6 | ||
|
8ea6e37537 | ||
52adc37434 | |||
|
c843bf313c | ||
|
19e59dcbd5 | ||
|
de92aa33b2 | ||
|
d17d2817d3 | ||
|
c8be993dd6 | ||
|
c4cc983c5a | ||
|
8394ad551e | ||
|
c3ccf3c5df | ||
|
82c3ef97f8 | ||
|
83fadb8854 | ||
|
23badb0940 | ||
|
014d23c61a | ||
|
13d06d8470 | ||
|
ee7dc30376 | ||
|
c8f85351b6 | ||
|
742d3073dd | ||
|
49e2e4f3a3 | ||
|
db6ea0c3b5 | ||
|
9130503b36 | ||
|
2fe27bdc36 | ||
|
52c7389ba4 | ||
|
ec44730741 | ||
|
b9f1feaa60 | ||
|
97e0368f61 | ||
|
b23ef94bec | ||
|
955ee74b47 | ||
|
24e78beb88 | ||
|
ff1d474ca2 | ||
|
37b68c6e36 | ||
|
6ab98189ff | ||
|
fe7152c0d9 | ||
|
3461b88969 | ||
|
3cb042b4b6 | ||
|
ddcd0b9071 | ||
|
a4129fecbf | ||
|
185ee8cae2 | ||
|
85e81168ce | ||
|
60b0bf272a | ||
|
da8e28540e | ||
|
49c9645b8a | ||
|
47bcaa425b | ||
|
16d657e761 | ||
|
97e70f1ef8 | ||
|
05c9aafbfd | ||
|
bafc67b7bb | ||
|
4f0bc98ff8 | ||
|
ff96933fff | ||
|
67c99c0dfe | ||
|
31fd3be23a | ||
|
3e91913241 | ||
|
efe4bac439 | ||
|
5a82409f01 | ||
|
2118f64344 | ||
|
851be844cb | ||
|
2f7b55f3b8 | ||
|
287d2e68be | ||
|
ddc30dc6d4 | ||
|
435071aad5 | ||
|
876e8fa563 | ||
|
c5160b6b82 | ||
|
9c14242328 | ||
|
498dcedb75 | ||
|
276c33c834 | ||
|
c0cb26a991 | ||
|
93b5498e04 | ||
|
4178c37b72 | ||
|
0059fedd3c | ||
|
87c987ab4c | ||
|
38fca03d4a | ||
|
e6c3ea3df0 | ||
|
514b5368b4 | ||
|
17c2045e46 | ||
|
d1d22897a1 | ||
|
4fc28fd163 | ||
|
1d0c11d442 | ||
|
766e165ffb | ||
|
78c65b29c2 | ||
|
81a20e2b95 | ||
|
a01aaeddb4 | ||
|
2070b3c6cb | ||
|
9b6eceeb87 | ||
|
633b90f1e8 | ||
|
721bc4a3b7 | ||
|
1922a47cb5 | ||
|
6fd2f60d66 | ||
|
8322aa7905 | ||
|
7ce471cd08 | ||
|
58208beb3a | ||
|
20ff9e1296 | ||
|
1de114748b | ||
|
c836f13d62 | ||
|
33f056ee88 | ||
|
5cd8d13656 | ||
|
666630e7ef | ||
|
74fa308904 | ||
|
4e254d7115 | ||
|
da33a951a4 | ||
|
52fc63d9a2 | ||
|
f0ce975d36 | ||
|
5d168d232a | ||
|
f0da503a96 | ||
|
474fdb53b8 | ||
|
f32d56a00d | ||
|
d0a310a31a | ||
|
6c7a197f26 | ||
|
53f5c3edee | ||
|
57da53e2ea | ||
|
457adb8278 | ||
|
2c9d9f7b92 | ||
|
5564ae780c | ||
|
70fc93f311 | ||
|
6c5251b69b | ||
|
cb7df7862d | ||
|
af8bf385a7 | ||
|
ff8df58334 | ||
|
dd84da9849 | ||
|
d65a3fc596 | ||
|
4dc0d7b204 | ||
|
122af8eacd | ||
|
3232c3672f | ||
|
acbd057f2e | ||
|
528f39768c | ||
|
37a7e22154 | ||
|
445210dba8 | ||
|
b5c94a506d | ||
|
e2ecacfb2a | ||
|
c52de66bb6 | ||
|
5a13b87b7c | ||
|
152cb6490f | ||
|
eedba07df7 | ||
|
abf92cda6b | ||
|
a4d4bcb63b | ||
|
c448d24ebe | ||
|
68eab1daf6 | ||
|
a56bca1481 | ||
|
8f658171e2 | ||
|
8285ccaaed | ||
|
39684dea75 | ||
|
4f22cb6fd3 | ||
|
3227dcc602 | ||
|
c199d574ef | ||
|
c1c20f8a1f | ||
|
86c6a45361 | ||
|
7e82042661 | ||
|
a0134fb23e | ||
|
2bb64d7f33 | ||
|
5643d2ccc0 | ||
|
6089d0c768 | ||
|
3b933d3c63 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,3 +4,5 @@ fenrir.egg-info/
|
||||
fenrir_screenreader.egg-info/
|
||||
dist/
|
||||
build/
|
||||
*.kate-swp
|
||||
.directory
|
||||
|
9
CREDITS
9
CREDITS
@ -3,11 +3,16 @@
|
||||
|
||||
## Developers
|
||||
|
||||
* Chrys: Main coder.
|
||||
* Storm Dragon Sounds and keyboard layout, tiny bits of code.
|
||||
* 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.
|
||||
|
108
README.md
108
README.md
@ -1,20 +1,27 @@
|
||||
# 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
|
||||
|
||||
## OS Requirements
|
||||
|
||||
- Linux (ptyDriver, vcsaDriver, evdevDriver)
|
||||
- macOS (ptyDriver)
|
||||
- BSD (ptyDriver)
|
||||
- Windows (ptyDriver)
|
||||
|
||||
# Core Requirements
|
||||
- python3 >= 3.3
|
||||
- screen, input, speech, sound or braille drivers dependencies see "Features, Drivers, Extras".
|
||||
|
||||
# Features, Drivers, Extras, Dependencies
|
||||
# Input Drivers:
|
||||
## 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
|
||||
@ -25,7 +32,9 @@ This software is licensed under the LGPL v3.
|
||||
2. "ptyDriver" terminal emulation input driver
|
||||
- python-pyte
|
||||
|
||||
# Screen Drivers:
|
||||
|
||||
### Screen Drivers:
|
||||
|
||||
1. "vcsaDriver" screen driver for linux VCSA devices
|
||||
- python-dbus
|
||||
- Read permission to the following files and services:
|
||||
@ -36,30 +45,29 @@ This software is licensed under the LGPL v3.
|
||||
2. "ptyDriver" terminal emulation driver
|
||||
- python-pyte
|
||||
|
||||
# Speech Drivers:
|
||||
|
||||
### Speech Drivers:
|
||||
|
||||
1. "genericDriver" (default) speech driver for sound as subprocess:
|
||||
- espeak or espeak-ng
|
||||
2. "espeakDriver" speech driver for Espeak or Espeak-NG:
|
||||
- python-espeak
|
||||
3. "speechdDriver" speech driver for Speech-dispatcher:
|
||||
2. "speechdDriver" speech driver for Speech-dispatcher:
|
||||
- Speech-dispatcher
|
||||
- python-speechd
|
||||
4. "emacspeakDriver" speech driver for emacspeak
|
||||
3. "emacspeakDriver" speech driver for emacspeak
|
||||
- emacspeak
|
||||
|
||||
# Braille Drivers:
|
||||
1. "BrlttyDriver" braille driver (WIP):
|
||||
- brltty (configured and running)
|
||||
- python-brlapi
|
||||
|
||||
# Sound Drivers:
|
||||
### Sound Drivers:
|
||||
|
||||
1. "genericDriver" (default) sound driver for sound as subprocess:
|
||||
- Sox
|
||||
2. "gstreamerDriver" sound driver for gstreamer
|
||||
- gstreamer >=1.0
|
||||
- GLib
|
||||
|
||||
# Extras:
|
||||
|
||||
## Extras:
|
||||
|
||||
1. spellchecker
|
||||
- python-pyenchant
|
||||
- aspell-YourLanguageCode (example aspell-en for us English)
|
||||
@ -68,23 +76,63 @@ This software is licensed under the LGPL v3.
|
||||
3. Modify system volume:
|
||||
- pyalsaaudio (needs libasound2's headers).
|
||||
|
||||
# installation
|
||||
|
||||
## 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
|
||||
- PIP: sudo pip install fenrir-screenreader
|
||||
- Manual: run install.sh and uninstall.sh as root
|
||||
- you also can just run it from Git without installing:
|
||||
You can just run the following as root:
|
||||
if you are in Fenrir Git rootfolder:
|
||||
cd src/fenrir/
|
||||
sudo ./fenrir
|
||||
- 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)
|
||||
- braille driver: brlttyDriver (WIP)
|
||||
- input driver: evdevDriver
|
||||
|
||||
# Documentation
|
||||
You can see all information on the Wiki:
|
||||
https://wiki.linux-a11y.org/doku.php?id=fenrir_user_manual
|
||||
|
||||
## 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
|
||||
|
85
TODO v2.0
85
TODO v2.0
@ -1,85 +0,0 @@
|
||||
ToDo list for Fenrir Version 2.0
|
||||
Things needing little knowledge are marked with "(Easy for contribution)". so just start with those :).
|
||||
[] = ToDo
|
||||
[W] = WIP
|
||||
[X] = Done
|
||||
[S] = Stopped
|
||||
|
||||
Cleanups:
|
||||
[] Migrate *Data.py to classes and use getter/setter (Easy for contribution)
|
||||
[] commandsData.py
|
||||
[] eventData.py
|
||||
[] generalData.py
|
||||
[] inputData.py
|
||||
[] outputData.py
|
||||
[] punctuationData.py
|
||||
[] runtimeData.py
|
||||
[w] screenData.py
|
||||
[] settingsData -> defaultSettings.py
|
||||
[] Unify Key Forewarding and Sticky mode for keyboard and bytecode inputDrivers.
|
||||
[] replace lines by a list insteed of and \n seperated string. (currently we need to split to often) (Easy for contribution)
|
||||
General (Easy for contribution)
|
||||
[w] make fenrir runnable without root permissions
|
||||
[] make fenrir runable without settingsfile. fallback to defaults
|
||||
[] Detect progressbars and just present percent
|
||||
|=============== |100%
|
||||
[=================> ] 100%
|
||||
######################## 100%
|
||||
Imporove attribute handling
|
||||
[] beep on review by word (once for multiple, capital wins) (Easy for contribution)
|
||||
[] configurable (by char, by word, none) (Easy for contribution)
|
||||
https://github.com/jwilk/vcsapeek/blob/master/linuxvt.py
|
||||
|
||||
Improved Say all
|
||||
[] speech callbacks
|
||||
[] speech process by word
|
||||
[] all the text of all pages
|
||||
[] command to stop and place review cursor at this position
|
||||
[] command to slow down speech on keypress
|
||||
[] place say all at clipboard buffer
|
||||
|
||||
Table review mode
|
||||
[] toggle table mode/ select headline
|
||||
[] next line
|
||||
[] prev line
|
||||
[] current line
|
||||
[] next cell
|
||||
[] prev cell
|
||||
[] current cell
|
||||
[] select field separator
|
||||
|
||||
Braille Support:
|
||||
[] brailleFocusMode:
|
||||
[] manual = no automatic toggle command used
|
||||
[] last = follow last used cursor
|
||||
[] print cursor in review
|
||||
[] print cursor in textmode
|
||||
[] word wrapping (if word does not fit print it at next page)
|
||||
https://docs.python.org/2/library/textwrap.html#textwrap.TextWrapper
|
||||
drop_whitespace = False
|
||||
replace_whitespace = False
|
||||
w.fill(i).split('\n')
|
||||
[] command toggle used cursor (in manual brailleFocusMode)
|
||||
[] capture input from braile
|
||||
[] make routing keys assignable by keyboard
|
||||
[] make brailleTable configurable
|
||||
[] pkg-config --variable=tablesdir liblouis
|
||||
returns on Arch:/usr/share/liblouis/tables
|
||||
http://mielke.cc/brltty/doc/Manual-BrlAPI/English/BrlAPI.html
|
||||
https://git.gnome.org/browse/orca/tree/src/orca/braille.py
|
||||
https://wiki.gnome.org/Attic/LSR/ScratchPad/Braille/BrlAPI
|
||||
https://github.com/google/brailleback/blob/master/third_party/brltty/Bindings/Python/brlapi.pyx
|
||||
|
||||
[] ATK input driver (don't grab on graphical interface)
|
||||
https://git.linux-a11y.org/AIT/pyatspi2/src/master/examples/keypress.py
|
||||
|
||||
Driver (speech):
|
||||
[S] talkey driver ( verry unresponsive for espeak in linux)
|
||||
https://pypi.python.org/pypi/ptyprocess#downloads
|
||||
https://github.com/tbsaunde/yasr/blob/master/yasr/tts.c
|
||||
[] Dectalk SpeechDriver (Easy for contribution, device needed - i dont own one)
|
||||
https://github.com/tvraman/emacspeak/blob/master/servers/obsolete/python/dectalk.py
|
||||
https://github.com/tbsaunde/yasr/blob/master/yasr/tts.c
|
||||
[] MacOS speech Driver
|
||||
Settings:
|
||||
[] menue for settings configuration (Easy for contribution)
|
22
TODOv3.0
22
TODOv3.0
@ -1,22 +0,0 @@
|
||||
ToDo list for Fenrir Version 3.0
|
||||
Things needing little knowledge are marked with "(Easy for contribution)". so just start with those :).
|
||||
[] = ToDo
|
||||
[W] = WIP
|
||||
[X] = Done
|
||||
[S] = Stopped
|
||||
|
||||
__TODO___
|
||||
Application Profiles (low priority):
|
||||
- reimplement process detection without subprocessing
|
||||
- fenrir is not able to detect the current application inside of screen.
|
||||
ps -e -H -o pid,pgrp,ppid,tty,cmd
|
||||
http://stackoverflow.com/questions/24861351/how-to-detect-if-python-script-is-being-run-as-a-background-process/24862213
|
||||
fd = os.open("/dev/tty5", os.O_RDONLY )
|
||||
os.tcgetpgrp(fd)
|
||||
- add perApplicationTrigger trigger
|
||||
per application commands
|
||||
per application onScreenChange
|
||||
per application onInput
|
||||
- per application shortcuts
|
||||
|
||||
___DONE___
|
@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
exec fenrir
|
||||
[ -r ./conf ] && . ./conf
|
||||
exec fenrir -f
|
||||
|
@ -1,18 +1,15 @@
|
||||
[Unit]
|
||||
Description=Fenrir screenreader
|
||||
Wants=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service sound.target
|
||||
After=systemd-udev-settle.service getty.target
|
||||
[Service]
|
||||
Type=forking
|
||||
PIDFile=/var/run/fenrir.pid
|
||||
ExecStart=/usr/bin/fenrir-daemon
|
||||
ExecStart=/usr/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
|
||||
|
@ -5,7 +5,7 @@ After=systemd-udev-settle.service sound.target
|
||||
[Service]
|
||||
Type=forking
|
||||
PIDFile=/var/run/fenrir.pid
|
||||
ExecStart=/usr/local/bin/fenrir-daemon
|
||||
ExecStart=/usr/local/bin/fenrir
|
||||
ExecReload=/usr/bin/kill -HUP $MAINPID
|
||||
Restart=always
|
||||
#Group=fenrirscreenreader
|
||||
|
@ -1,208 +1,134 @@
|
||||
#!/bin/env python3
|
||||
import os, sys
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# default installation
|
||||
# core
|
||||
# speech: speech-dispatcher
|
||||
# sound: sox
|
||||
# braille: brltty:
|
||||
defaultInstallation = ['FenrirCore','vcsaDriver','brlapiDriver','evdevDriver','genericDriver (speech)', 'genericDriver (sound)']
|
||||
currentInstallation = []
|
||||
import os
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
from typing import List, Optional
|
||||
|
||||
print('checking dependencys...')
|
||||
# CORE
|
||||
print('')
|
||||
print('fenrir core:')
|
||||
available = True
|
||||
try:
|
||||
from daemonize import Daemonize
|
||||
print('python3-daemonize: OK')
|
||||
except:
|
||||
print('python3-daemonize: FAIL')
|
||||
available = available and False
|
||||
|
||||
try:
|
||||
import enchant
|
||||
print('pyenchant: OK')
|
||||
except:
|
||||
print('pyenchant: FAIL')
|
||||
available = available and False
|
||||
|
||||
if available:
|
||||
currentInstallation.append('FenrirCore')
|
||||
|
||||
# SCREEN
|
||||
print('--------------------')
|
||||
print('screen driver')
|
||||
# VCSA (screen driver)
|
||||
print('vcsaDriver')
|
||||
available = True
|
||||
try:
|
||||
import dbus
|
||||
print('python3-dbus: OK')
|
||||
except:
|
||||
print('python3-dbus: FAIL')
|
||||
available = available and False
|
||||
if os.path.exists('/dev/vcsa'):
|
||||
print('VCSA Device: OK')
|
||||
else:
|
||||
print('VCSA Device: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('vcsaDriver')
|
||||
print('')
|
||||
# pty emulation (screen driver)
|
||||
print('ptyDriver')
|
||||
available = True
|
||||
try:
|
||||
import pyte
|
||||
print('pyte: OK')
|
||||
except:
|
||||
print('pyte: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('ptyDriver (screen)')
|
||||
|
||||
# BRAILLE
|
||||
print('--------------------')
|
||||
print('braille driver')
|
||||
# brltty (braille driver)
|
||||
print('brlapiDriver')
|
||||
available = True
|
||||
try:
|
||||
import brlapi
|
||||
print('python3-brlapi: OK')
|
||||
except:
|
||||
print('python3-brlapi: FAIL')
|
||||
available = available and False
|
||||
|
||||
if available:
|
||||
currentInstallation.append('brlapiDriver')
|
||||
# INPUT
|
||||
print('--------------------')
|
||||
print('input driver')
|
||||
# evdev (input driver)
|
||||
print('evdevDriver')
|
||||
available = True
|
||||
try:
|
||||
import evdev
|
||||
from evdev import InputDevice, UInput
|
||||
print('python3-evdev: OK')
|
||||
except:
|
||||
print('python3-evdev: FAIL')
|
||||
available = available and False
|
||||
try:
|
||||
import pyudev
|
||||
print('python3-pyudev: OK')
|
||||
except:
|
||||
print('python3-pyudev: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('evdevDriver')
|
||||
# pty emulation (input driver)
|
||||
print('')
|
||||
print('ptyDriver')
|
||||
available = True
|
||||
try:
|
||||
import pyte
|
||||
print('pyte: OK')
|
||||
except:
|
||||
print('pyte: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('ptyDriver (Input)')
|
||||
# SOUND
|
||||
print('--------------------')
|
||||
print('sound driver')
|
||||
print('genericDriver (uses sox by default)')
|
||||
available = True
|
||||
if os.path.exists('/usr/bin/play') and os.path.exists('/usr/bin/sox'):
|
||||
print('sox: OK')
|
||||
else:
|
||||
print('sox: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('genericDriver (sound)')
|
||||
print('')
|
||||
# gstreamer (sound driver)
|
||||
print('gstreamerDriver')
|
||||
available = True
|
||||
try:
|
||||
import gi
|
||||
print('gi: OK')
|
||||
except:
|
||||
print('gi: FAIL')
|
||||
available = available and False
|
||||
try:
|
||||
from gi.repository import GLib
|
||||
print('gi GLib: OK')
|
||||
except:
|
||||
print('gi GLib: FAIL')
|
||||
available = available and False
|
||||
try:
|
||||
gi.require_version('Gst', '1.0')
|
||||
from gi.repository import Gst
|
||||
print('gi Gst: OK')
|
||||
except:
|
||||
print('gi Gst: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('gstreamerDriver')
|
||||
@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
|
||||
|
||||
# SPEECH
|
||||
print('--------------------')
|
||||
print('speech driver')
|
||||
# speechd (speech driver)
|
||||
print('speechdDriver')
|
||||
available = True
|
||||
try:
|
||||
import speechd
|
||||
print('python3-speechd: OK')
|
||||
except:
|
||||
print('python3-speechd: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('speechdDriver')
|
||||
print('')
|
||||
# espeak (speech driver)
|
||||
print('espeakDriver')
|
||||
available = True
|
||||
try:
|
||||
from espeak import espeak
|
||||
print('python3-espeak: OK')
|
||||
except:
|
||||
print('python3-espeak: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('espeakDriver')
|
||||
print('genericDriver (uses espeak by default)')
|
||||
available = True
|
||||
if os.path.exists('/usr/bin/espeak') or os.path.exists('/bin/espeak'):
|
||||
print('espeak: OK')
|
||||
else:
|
||||
print('espeak: FAIL')
|
||||
available = available and False
|
||||
if available:
|
||||
currentInstallation.append('genericDriver (speech)')
|
||||
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
|
||||
|
||||
# SUMMERY
|
||||
print('====================')
|
||||
available = True
|
||||
missing = []
|
||||
for element in defaultInstallation:
|
||||
if not element in currentInstallation:
|
||||
available = False
|
||||
missing.append(element)
|
||||
if available:
|
||||
print('Default Setup: OK')
|
||||
else:
|
||||
print('Default Setup: FAIL')
|
||||
print('Unavailable Default Modules:')
|
||||
for e in missing:
|
||||
print(e)
|
||||
print('you may need to install the missing dependencys for the modules above or reconfigure fenrir to not use them')
|
||||
print('')
|
||||
print('Available Modules:')
|
||||
for element in currentInstallation:
|
||||
print(element)
|
||||
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()
|
||||
|
@ -32,12 +32,15 @@ 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
|
||||
@ -61,7 +64,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_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
|
||||
@ -93,12 +96,6 @@ 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_UP=inc_speech_volume
|
||||
KEY_FENRIR,KEY_DOWN=dec_speech_volume
|
||||
KEY_FENRIR,KEY_RIGHT=inc_speech_rate
|
||||
KEY_FENRIR,KEY_LEFT=dec_speech_rate
|
||||
KEY_FENRIR,KEY_ALT,KEY_RIGHT=inc_speech_pitch
|
||||
KEY_FENRIR,KEY_ALT,KEY_LEFT=dec_speech_pitch
|
||||
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
|
||||
@ -108,15 +105,24 @@ 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_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
|
||||
|
@ -6,7 +6,7 @@ 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_SHFIT,KEY_L=review_line_end
|
||||
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
|
||||
@ -83,6 +83,7 @@ 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
|
||||
@ -93,12 +94,6 @@ 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_UP=inc_speech_volume
|
||||
KEY_FENRIR,KEY_DOWN=dec_speech_volume
|
||||
KEY_FENRIR,KEY_RIGHT=inc_speech_rate
|
||||
KEY_FENRIR,KEY_LEFT=dec_speech_rate
|
||||
KEY_FENRIR,KEY_ALT,KEY_RIGHT=inc_speech_pitch
|
||||
KEY_FENRIR,KEY_ALT,KEY_LEFT=dec_speech_pitch
|
||||
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
|
||||
@ -115,8 +110,19 @@ 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
|
||||
|
128
config/keyboard/nvda-desktop.conf
Normal file
128
config/keyboard/nvda-desktop.conf
Normal file
@ -0,0 +1,128 @@
|
||||
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
|
128
config/keyboard/nvda-laptop.conf
Normal file
128
config/keyboard/nvda-laptop.conf
Normal file
@ -0,0 +1,128 @@
|
||||
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
|
@ -1,3 +1,7 @@
|
||||
# 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
|
||||
|
@ -1,10 +1,14 @@
|
||||
# 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
|
||||
#^[[1;3B=review_curr_line
|
||||
^[i=review_curr_line
|
||||
^[u=review_prev_line
|
||||
^[o=review_next_line
|
||||
^[J=review_line_begin
|
||||
@ -36,3 +40,7 @@
|
||||
^[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
|
||||
|
218
config/keyboard/speakup.conf
Normal file
218
config/keyboard/speakup.conf
Normal file
@ -0,0 +1,218 @@
|
||||
# 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<x|y> 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
|
@ -46,8 +46,33 @@ _:===:Lienie unten
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:Grins
|
||||
;):===:Zwinker
|
||||
XD:===:loool
|
||||
:D:===:Lach
|
||||
<{-.-}>:===:Raves
|
||||
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
|
||||
|
@ -4,7 +4,7 @@
|
||||
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
||||
[levelDict]
|
||||
none:===:
|
||||
some:===:-$~+*-/\@
|
||||
some:===:-$~+*-/\@#
|
||||
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
||||
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
||||
|
||||
@ -46,9 +46,33 @@ _:===:line
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:smile
|
||||
;):===:wink
|
||||
XD:===:LOL
|
||||
:D:===:laugh
|
||||
<{-.-}>:===:Raves
|
||||
\o/:===:Hurray
|
||||
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
|
||||
|
@ -46,8 +46,33 @@ _:===:line
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:smile
|
||||
;):===:twinker
|
||||
XD:===:loool
|
||||
:D:===:lought
|
||||
<{-.-}>:===:Raves
|
||||
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
|
||||
|
@ -46,8 +46,33 @@ _:===:subrayado
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:sonrisa
|
||||
;):===:twinker
|
||||
XD:===:loool
|
||||
:D:===:lought
|
||||
<{-.-}>:===:Raves
|
||||
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
|
||||
|
@ -46,8 +46,33 @@ _:===:souligné
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:sourire
|
||||
;):===:clin d'oeil
|
||||
XD:===:explosé de rire
|
||||
:D:===:rire
|
||||
<{-.-}>:===:Raves
|
||||
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
|
||||
|
@ -46,8 +46,33 @@ _:===:podkreślnik
|
||||
[customDict]
|
||||
|
||||
[emoticonDict]
|
||||
:):===:smile
|
||||
;):===:twinker
|
||||
XD:===:loool
|
||||
:D:===:lought
|
||||
<{-.-}>:===:Raves
|
||||
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
|
||||
|
84
config/punctuation/rhvoice-en.conf
Normal file
84
config/punctuation/rhvoice-en.conf
Normal file
@ -0,0 +1,84 @@
|
||||
# how to use this file?
|
||||
# the # on the beginning of the line is a comment
|
||||
# the different sections are seperated by [<name>Dict] <name> 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
|
@ -1,234 +0,0 @@
|
||||
[sound]
|
||||
# Turn sound on or off:
|
||||
enabled=True
|
||||
|
||||
# Select the driver used to play sounds, choices are generic and gstreamer.
|
||||
# Sox is the default.
|
||||
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 chosen soundpack are.
|
||||
# 0 is quietest, 1.0 is loudest.
|
||||
volume=1.0
|
||||
|
||||
# shell commands for generic sound driver
|
||||
# the folowing variable are substituded
|
||||
# fenrirVolume = the current volume setting
|
||||
# fenrirSoundFile = the soundfile for an soundicon
|
||||
# fenrirFrequence = the frequence to play
|
||||
# fenrirDuration = the duration of the frequence
|
||||
# the following command is used for play a soundfile
|
||||
genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile 2>/dev/null
|
||||
#the following command is used for generating a frequency beep
|
||||
genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence 2>/dev/null
|
||||
|
||||
[speech]
|
||||
# Turn speech on or off:
|
||||
enabled=True
|
||||
|
||||
# Select speech driver, options are speechdDriver (default), genericDriver or espeakDriver:
|
||||
#driver=speechdDriver
|
||||
#driver=genericDriver
|
||||
driver=espeakDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=
|
||||
|
||||
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
|
||||
rate=0.35
|
||||
|
||||
# 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 ti find out which modules are available.
|
||||
# The default is Espeak.
|
||||
module=espeak
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
voice=f3
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
language=en_US
|
||||
|
||||
# Read new text as it happens?
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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 used in Speech-dispatcher, not every TTY needs this
|
||||
# fenrirLanguage = the language
|
||||
# fenrirVoice = is the current voice that should be used
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# these are the minimum and maximum values of the TTS system used in genericSpeechCommand
|
||||
fenrirMinVolume=0
|
||||
fenrirMaxVolume=200
|
||||
fenrirMinPitch=0
|
||||
fenrirMaxPitch=99
|
||||
fenrirMinRate=80
|
||||
fenrirMaxRate=450
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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 let consume keystrokes.
|
||||
grabDevices=True
|
||||
ignoreShortcuts=False
|
||||
# the current shortcut layout located in /etc/fenrirscreenreader/keyboard
|
||||
keyboardLayout=desktop
|
||||
# echo chars while typing.
|
||||
charEcho=True
|
||||
## echo deleted chars
|
||||
charDeleteEcho=True
|
||||
# echo word after pressing space
|
||||
wordEcho=True
|
||||
# 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=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
punctuationProfile=default
|
||||
punctuationLevel=some
|
||||
respectPunctuationPause=True
|
||||
newLinePause=True
|
||||
numberOfClipboards=10
|
||||
# used path for "export_clipboard_to_file"
|
||||
# $user is replaced by username
|
||||
clipboardExportPath=/tmp/fenrirClipboard
|
||||
emoticons=True
|
||||
# define the current Fenrir key
|
||||
fenrirKeys=KEY_KP0,KEY_META
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
scriptPath=/usr/share/fenrirscreenreader/scripts
|
||||
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
|
||||
autoPresentIndent=False
|
||||
# play a sound when attributes are changeing
|
||||
hasAttributes=True
|
||||
# shell for PTY emulatiun (empty = default shell)
|
||||
shell=
|
||||
|
||||
[focus]
|
||||
cursor=True
|
||||
highlight=False
|
||||
|
||||
[remote]
|
||||
enable=True
|
||||
# driver
|
||||
# unixDriver = unix sockets
|
||||
# tcpDriver = tcp (localhost only)
|
||||
driver=unixDriver
|
||||
# tcp port
|
||||
port=22447
|
||||
# socket filepath
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[time]
|
||||
enabled=False
|
||||
presentTime=True
|
||||
presentDate=True
|
||||
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
|
||||
announce=True
|
||||
# interrupt current speech for time announcement
|
||||
interrupt=False
|
||||
|
@ -1,247 +0,0 @@
|
||||
[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 (default), genericDriver or espeakDriver:
|
||||
#driver=speechdDriver
|
||||
#driver=espeakDriver
|
||||
driver=genericDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=/home/chrys/Projekte/emacspeak/servers/espeak
|
||||
|
||||
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
|
||||
rate=0.65
|
||||
|
||||
# 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 espeak.
|
||||
#module=espeak
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
# This also sets the voice used in the generic driver.
|
||||
voice=en-us
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
#language=english-us
|
||||
|
||||
# Read new text as it happens?
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# those are the 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
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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.
|
||||
charEcho=False
|
||||
# echo deleted chars
|
||||
charDeleteEcho=True
|
||||
# echo word after pressing space
|
||||
wordEcho=False
|
||||
# interrupt speech on any keypress
|
||||
interruptOnKeyPress=False
|
||||
# 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: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
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
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
# path for your scripts "scriptKey" 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
|
||||
autoPresentIndent=False
|
||||
# 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
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[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
|
@ -1,247 +0,0 @@
|
||||
[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 (default), genericDriver or espeakDriver:
|
||||
#driver=speechdDriver
|
||||
#driver=espeakDriver
|
||||
driver=genericDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=/home/chrys/Projekte/emacspeak/servers/espeak
|
||||
|
||||
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
|
||||
rate=0.65
|
||||
|
||||
# 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 espeak.
|
||||
#module=espeak
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
# This also sets the voice used in the generic driver.
|
||||
voice=en-us
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
#language=english-us
|
||||
|
||||
# Read new text as it happens?
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# those are the 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
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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.
|
||||
charEcho=False
|
||||
# echo deleted chars
|
||||
charDeleteEcho=True
|
||||
# echo word after pressing space
|
||||
wordEcho=False
|
||||
# interrupt speech on any keypress
|
||||
interruptOnKeyPress=False
|
||||
# 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: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
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
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
# path for your scripts "scriptKey" 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
|
||||
autoPresentIndent=False
|
||||
# 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
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[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
|
@ -32,16 +32,12 @@ genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine
|
||||
# Turn speech on or off:
|
||||
enabled=True
|
||||
|
||||
# Select speech driver, options are speechdDriver (default), genericDriver or espeakDriver:
|
||||
#driver=speechdDriver
|
||||
#driver=espeakDriver
|
||||
driver=genericDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=/home/chrys/Projekte/emacspeak/servers/espeak
|
||||
# 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.65
|
||||
rate=0.5
|
||||
|
||||
# Pitch controls the pitch of the voice, select from 0, lowest, to 1.0, highest.
|
||||
pitch=0.5
|
||||
@ -53,20 +49,24 @@ 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 espeak.
|
||||
#module=espeak
|
||||
# The default is specified in speechd.conf.
|
||||
#module=espeak-ng
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
# Voice 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.
|
||||
voice=en-us
|
||||
# You can add a variant by adding +name onto the end.
|
||||
# voice=en-us
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
#language=english-us
|
||||
#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
|
||||
@ -78,9 +78,9 @@ autoReadIncoming=True
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
genericSpeechCommand=espeak-ng -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# those are the min and max values of the TTS system that is used in genericSpeechCommand
|
||||
# min and max values of the TTS system that is used in genericSpeechCommand
|
||||
fenrirMinVolume=0
|
||||
fenrirMaxVolume=200
|
||||
fenrirMinPitch=0
|
||||
@ -88,37 +88,6 @@ fenrirMaxPitch=99
|
||||
fenrirMinRate=80
|
||||
fenrirMaxRate=450
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[screen]
|
||||
driver=vcsaDriver
|
||||
encoding=auto
|
||||
@ -136,13 +105,16 @@ ignoreShortcuts=False
|
||||
# the current shortcut layout located in /etc/fenrirscreenreader/keyboard
|
||||
keyboardLayout=desktop
|
||||
# echo chars while typing.
|
||||
charEcho=False
|
||||
# 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=False
|
||||
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
|
||||
@ -151,10 +123,10 @@ doubleTapTimeout=0.2
|
||||
[general]
|
||||
debugLevel=0
|
||||
# debugMode sets where the debug output should send to:
|
||||
# debugMode=File writes to debugFile (Default: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=File writes to debugFile (Default:/tmp/fenrir-PID.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
debugFile=
|
||||
punctuationProfile=default
|
||||
punctuationLevel=some
|
||||
respectPunctuationPause=True
|
||||
@ -167,12 +139,12 @@ clipboardExportPath=/tmp/fenrirClipboard
|
||||
emoticons=True
|
||||
# define the current Fenrir key
|
||||
fenrirKeys=KEY_KP0,KEY_META,KEY_INSERT
|
||||
scriptKey=KEY_COMPOSE
|
||||
scriptKeys=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
# path for your scripts "scriptKey" functionality
|
||||
# path for your scripts "scriptKeys" functionality
|
||||
scriptPath=/usr/share/fenrirscreenreader/scripts
|
||||
# overload commands, and create new one without changing Fenrir default
|
||||
commandPath=
|
||||
@ -184,7 +156,13 @@ commandPath=
|
||||
#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)
|
||||
@ -205,7 +183,7 @@ driver=unixDriver
|
||||
# tcp port
|
||||
port=22447
|
||||
# socket filepath
|
||||
socketpath=/tmp/
|
||||
socketFile=
|
||||
# allow settings to overwrite
|
||||
enableSettingsRemote=True
|
||||
# allow commands to be executed
|
||||
@ -229,6 +207,10 @@ enabled=True
|
||||
inactiveTimeoutSec=120
|
||||
list=
|
||||
|
||||
[menu]
|
||||
vmenuPath=
|
||||
quickMenu=speech#rate;speech#pitch;speech#volume
|
||||
|
||||
[time]
|
||||
# automatic time anouncement
|
||||
enabled=False
|
||||
|
@ -1,248 +0,0 @@
|
||||
[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 (default), genericDriver, emacspeak or espeakDriver:
|
||||
#driver=speechdDriver
|
||||
#driver=espeakDriver
|
||||
driver=genericDriver
|
||||
#driver=emacspeakDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=/home/chrys/Projekte/emacspeak/servers/espeak
|
||||
|
||||
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
|
||||
rate=0.65
|
||||
|
||||
# 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 espeak.
|
||||
#module=espeak
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
# This also sets the voice used in the generic driver.
|
||||
voice=en-us
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
#language=english-us
|
||||
|
||||
# Read new text as it happens?
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# those are the 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
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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.
|
||||
charEcho=False
|
||||
# echo deleted chars
|
||||
charDeleteEcho=True
|
||||
# echo word after pressing space
|
||||
wordEcho=False
|
||||
# interrupt speech on any keypress
|
||||
interruptOnKeyPress=False
|
||||
# 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: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
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
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
# path for your scripts "scriptKey" 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
|
||||
autoPresentIndent=False
|
||||
# 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
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[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
|
@ -1,193 +0,0 @@
|
||||
[sound]
|
||||
enabled=True
|
||||
driver=genericDriver
|
||||
theme=default
|
||||
volume=1.0
|
||||
# shell commands for generic sound driver
|
||||
genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile
|
||||
genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence
|
||||
|
||||
[speech]
|
||||
enabled=True
|
||||
#driver=speechdDriver
|
||||
driver=genericDriver
|
||||
serverPath=
|
||||
rate=0.80
|
||||
pitch=0.5
|
||||
# Pitch for capital letters
|
||||
capitalPitch=0.9
|
||||
module=espeak
|
||||
voice=en-us
|
||||
language=english-us
|
||||
volume=1.0
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# these are the min and max values of the TTS system that is used in genericSpeechCommand
|
||||
fenrirMinVolume=0
|
||||
fenrirMaxVolume=200
|
||||
fenrirMinPitch=0
|
||||
fenrirMaxPitch=99
|
||||
fenrirMinRate=80
|
||||
fenrirMaxRate=890
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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
|
||||
grabDevices=True
|
||||
ignoreShortcuts=False
|
||||
keyboardLayout=desktop
|
||||
charEcho=False
|
||||
charDeleteEcho=True
|
||||
wordEcho=False
|
||||
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=1
|
||||
# debugMode sets where the debug output should send to:
|
||||
# debugMode=File writes to debugFile (Default: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
punctuationProfile=default
|
||||
punctuationLevel=some
|
||||
respectPunctuationPause=True
|
||||
newLinePause=True
|
||||
numberOfClipboards=10
|
||||
# used path for "export_clipboard_to_file"
|
||||
# $user is replaced by username
|
||||
clipboardExportPath=/tmp/fenrirClipboard
|
||||
emoticons=True
|
||||
fenrirKeys=KEY_KP0,KEY_META
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat="%A, %B %d, %Y"
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
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
|
||||
autoPresentIndent=False
|
||||
# play a sound when attributes are changeing
|
||||
hasAttributes=False
|
||||
# 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
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[time]
|
||||
# automatic time anouncement
|
||||
enabled=False
|
||||
# present time
|
||||
presentTime=True
|
||||
# present date (on change)
|
||||
presentDate=True
|
||||
# present time after x 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
|
||||
announce=True
|
||||
# interrupt current speech for time announcement
|
||||
interrupt=False
|
@ -1,247 +0,0 @@
|
||||
[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 (default), genericDriver or espeakDriver:
|
||||
driver=speechdDriver
|
||||
#driver=espeakDriver
|
||||
#driver=genericDriver
|
||||
|
||||
# server path for emacspeak
|
||||
serverPath=/home/chrys/Projekte/emacspeak/servers/espeak
|
||||
|
||||
# The rate selects how fast Fenrir will speak. Options range from 0, slowest, to 1.0, fastest.
|
||||
rate=0.65
|
||||
|
||||
# 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 espeak.
|
||||
module=espeak
|
||||
|
||||
# Voice selects the varient you want to use, for example, f5 will use the female voice #5 in Espeak,
|
||||
# or if using the Espeak module in Speech-dispatcher. To find out which voices are available, consult the documentation provided with your selected synthesizer.
|
||||
# This also sets the voice used in the generic driver.
|
||||
voice=
|
||||
|
||||
# Select the language you want Fenrir to use.
|
||||
language=english-us
|
||||
|
||||
# Read new text as it happens?
|
||||
autoReadIncoming=True
|
||||
|
||||
# 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 -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText"
|
||||
|
||||
# those are the 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
|
||||
|
||||
[braille]
|
||||
enabled=False
|
||||
driver=dummyDriver
|
||||
layout=en
|
||||
# to what should the flush timeout relate to
|
||||
# word = flush after (number of words to display) * seconds
|
||||
# char = flush after (number of chars to display) * seconds
|
||||
# fix = flush after X seconds
|
||||
# none = no automatic flush (manual via shortcut)
|
||||
flushMode=word
|
||||
# seconds to flush or
|
||||
# -1 = no automatic flush (manual via shortcut)
|
||||
flushTimeout=3
|
||||
# how should the cursor be focused?
|
||||
# page = if cursor cross the border move to next page and start at beginn
|
||||
# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth.
|
||||
cursorFocusMode=page
|
||||
# define the cell on the Braille device where fenrir should scroll and keep the cursor
|
||||
# 0 = first cell on device
|
||||
# -1 = last cell on device
|
||||
# >0 = fix cell number
|
||||
fixCursorOnCell=-1
|
||||
#How should the braille follow the focus
|
||||
# none = no automatic toggle command used
|
||||
# review = priority to review
|
||||
# last = follow last used cursor
|
||||
cursorFollowMode=review
|
||||
# number of cells in panning (horizontal)
|
||||
# 0 = display size, >0 number of cells
|
||||
panSizeHorizontal=0
|
||||
|
||||
[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.
|
||||
charEcho=False
|
||||
# echo deleted chars
|
||||
charDeleteEcho=True
|
||||
# echo word after pressing space
|
||||
wordEcho=False
|
||||
# interrupt speech on any keypress
|
||||
interruptOnKeyPress=False
|
||||
# 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: /var/log/fenrirscreenreader/fenrir.log)
|
||||
# debugMode=Print just prints on the screen
|
||||
debugMode=File
|
||||
debugFile=/var/log/fenrirscreenreader/fenrir.log
|
||||
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
|
||||
scriptKey=KEY_COMPOSE
|
||||
timeFormat=%H:%M:%P
|
||||
dateFormat=%A, %B %d, %Y
|
||||
autoSpellCheck=True
|
||||
spellCheckLanguage=en_US
|
||||
# path for your scripts "scriptKey" 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
|
||||
autoPresentIndent=False
|
||||
# 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
|
||||
socketpath=/tmp/
|
||||
# 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=
|
||||
|
||||
[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
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
Subproject commit fcefe65ecd6812b7a39d8f6a4bf44805c2a9717a
|
@ -1 +0,0 @@
|
||||
Subproject commit 0537ad1a8b9f73e6d58775ffc08f7625bc601fa3
|
@ -1 +0,0 @@
|
||||
https://stackoverflow.com/questions/880227/what-is-the-minimum-i-have-to-do-to-create-an-rpm-file
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
# needs pandoc and php installed
|
||||
|
||||
# remove old files
|
File diff suppressed because it is too large
Load Diff
2109
docs/fenrir.adoc
Normal file
2109
docs/fenrir.adoc
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
||||
install it.
|
||||
1. build it
|
||||
make -f /usr/share/selinux/strict/include/Makefile fenrir.pp
|
||||
2. install it
|
||||
semodule -i /path/to/fenrir.pp
|
||||
|
||||
|
||||
# created with that
|
||||
# systemctl start fenrir
|
||||
# ausearch -c '(r-daemon)' --raw | audit2allow -M fenrir
|
||||
# semodule -X 300 -i fenrir.pp
|
||||
|
@ -1,10 +0,0 @@
|
||||
module fenrir 1.0;
|
||||
|
||||
require {
|
||||
type user_home_t;
|
||||
type init_t;
|
||||
class file { execute execute_no_trans open read };
|
||||
}
|
||||
|
||||
#============= init_t ==============
|
||||
allow init_t user_home_t:file { execute execute_no_trans open read };
|
14
install.sh
14
install.sh
@ -17,8 +17,9 @@ install -m755 -d /usr/share/fenrirscreenreader/scripts
|
||||
cp -af "config/scripts/wlan__-__key_y.sh" /usr/share/fenrirscreenreader/scripts/
|
||||
|
||||
# keyboard
|
||||
install -m644 -D "config/keyboard/desktop.conf" /etc/fenrirscreenreader/keyboard/desktop.conf
|
||||
install -m644 -D "config/keyboard/laptop.conf" /etc/fenrirscreenreader/keyboard/laptop.conf
|
||||
for i in "config/keyboard/"*.conf ; do
|
||||
install -m644 -D "$i" "/etc/fenrirscreenreader/keyboard/${i##*/}"
|
||||
done
|
||||
|
||||
# punctuation
|
||||
install -m755 -d /etc/fenrirscreenreader/punctuation
|
||||
@ -51,9 +52,12 @@ Installation complete.
|
||||
install path:/opt/fenrirscreenreader
|
||||
settings path:/etc/fenrirscreenreader
|
||||
|
||||
To test Fenrir
|
||||
sudo systemctl start fenrir
|
||||
To have Fenrir start on system boot:
|
||||
To test Fenrir:
|
||||
sudo fenrir
|
||||
|
||||
To have Fenrir start on system boot using systemd:
|
||||
download service file: https://raw.githubusercontent.com/chrys87/fenrir/master/autostart/systemd/Arch/fenrir.service
|
||||
move the service file to: /etc/systemd/system/fenrir.service
|
||||
sudo systemctl enable fenrir
|
||||
|
||||
Pulseaudio users may want to run
|
||||
|
BIN
locale/pl/LC_MESSAGES/fenrir.mo
Normal file
BIN
locale/pl/LC_MESSAGES/fenrir.mo
Normal file
Binary file not shown.
997
locale/pl/LC_MESSAGES/fenrir.po
Normal file
997
locale/pl/LC_MESSAGES/fenrir.po
Normal file
@ -0,0 +1,997 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR ORGANIZATION
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2017-12-27 17:34+CET\n"
|
||||
"PO-Revision-Date: 2018-10-23 16:35+0200\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 2.2\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 "
|
||||
"|| n%100>14) ? 1 : 2);\n"
|
||||
"Last-Translator: \n"
|
||||
"Language: pl_PL\n"
|
||||
|
||||
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:27
|
||||
msgid "adds the current word to the exceptions dictionary"
|
||||
msgstr "Dodaje aktualne słowo do słownika wyjątków."
|
||||
|
||||
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:34
|
||||
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:34
|
||||
#: ../src/fenrir/commands/commands/spell_check.py:29
|
||||
#: ../src/fenrir/commands/commands/spell_check.py:36
|
||||
msgid "pyenchant is not installed"
|
||||
msgstr "Pyenchant nie jest zainstalowany."
|
||||
|
||||
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:49
|
||||
msgid "{0} is already in dict"
|
||||
msgstr "{0} już znajduje się w słowniku."
|
||||
|
||||
#: ../src/fenrir/commands/commands/add_word_to_spell_check.py:52
|
||||
msgid "{0} added"
|
||||
msgstr "Słowo {0} dodane do słownika."
|
||||
|
||||
#: ../src/fenrir/commands/commands/bookmark_1.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_10.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_2.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_3.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_4.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_5.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_6.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_7.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_8.py:19
|
||||
#: ../src/fenrir/commands/commands/bookmark_9.py:19
|
||||
msgid "read Bookmark {0}"
|
||||
msgstr "Przeczytaj Zakładkę {0}."
|
||||
|
||||
#: ../src/fenrir/commands/commands/bookmark_1.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_10.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_2.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_3.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_4.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_5.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_6.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_7.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_8.py:24
|
||||
#: ../src/fenrir/commands/commands/bookmark_9.py:24
|
||||
msgid "Bookmark {0} not set"
|
||||
msgstr "Zakładka {0} nie ustawiona."
|
||||
|
||||
#: ../src/fenrir/commands/commands/bookmark_1.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_1.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_10.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_10.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_2.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_2.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_3.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_3.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_4.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_4.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_5.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_5.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_6.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_6.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_7.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_7.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_8.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_8.py:30
|
||||
#: ../src/fenrir/commands/commands/bookmark_9.py:27
|
||||
#: ../src/fenrir/commands/commands/bookmark_9.py:30
|
||||
msgid "Bookmark for application {0} not set"
|
||||
msgstr "Zakładka dla aplikacji {0} nie ustawiona."
|
||||
|
||||
#: ../src/fenrir/commands/commands/bookmark_1.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_10.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_2.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_3.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_4.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_5.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_6.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_7.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_8.py:43
|
||||
#: ../src/fenrir/commands/commands/bookmark_9.py:43
|
||||
#: ../src/fenrir/commands/commands/curr_screen_after_cursor.py:27
|
||||
#: ../src/fenrir/commands/commands/curr_screen_before_cursor.py:30
|
||||
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:27
|
||||
#: ../src/fenrir/commands/commands/indent_curr_line.py:31
|
||||
#: ../src/fenrir/commands/commands/marked_text.py:33
|
||||
#: ../src/fenrir/commands/commands/present_first_line.py:25
|
||||
#: ../src/fenrir/commands/commands/present_last_line.py:25
|
||||
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:27
|
||||
#: ../src/fenrir/commands/commands/review_curr_line.py:27
|
||||
#: ../src/fenrir/commands/commands/review_curr_word.py:27
|
||||
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:27
|
||||
#: ../src/fenrir/commands/commands/review_line_begin.py:27
|
||||
#: ../src/fenrir/commands/commands/review_next_line.py:29
|
||||
#: ../src/fenrir/commands/commands/review_next_word.py:29
|
||||
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:27
|
||||
#: ../src/fenrir/commands/commands/review_prev_line.py:27
|
||||
#: ../src/fenrir/commands/commands/review_prev_word.py:27
|
||||
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:27
|
||||
#: ../src/fenrir/commands/onCursorChange/55000-present_line_if_cursor_change_vertical.py:37
|
||||
#: ../src/fenrir/commands/onScreenUpdate/60000-history.py:49
|
||||
msgid "blank"
|
||||
msgstr "Pusta"
|
||||
|
||||
#: ../src/fenrir/commands/commands/braille_flush.py:17
|
||||
msgid "flush the braille device if a message is written on"
|
||||
msgstr "Przeładowuje urządzenie brajla w przypadku nadpisywania tekstu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/braille_pan_left.py:17
|
||||
msgid "Move braille view to the left."
|
||||
msgstr "Przesuwa widok brajla w lewo."
|
||||
|
||||
#: ../src/fenrir/commands/commands/braille_pan_right.py:17
|
||||
msgid "Move braille view to the right."
|
||||
msgstr "Przesuwa widok brajla w prawo."
|
||||
|
||||
#: ../src/fenrir/commands/commands/braille_return_to_cursor.py:17
|
||||
msgid "Set the braille view back to cursor."
|
||||
msgstr "Przesuwa widok brajla do pozycji kursora."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_1.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_10.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_2.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_3.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_4.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_5.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_6.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_7.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_8.py:17
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_9.py:17
|
||||
msgid "remove Bookmark {0}"
|
||||
msgstr "Usuń zakładkę {0}."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_1.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_10.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_2.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_3.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_4.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_5.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_6.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_7.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_8.py:24
|
||||
#: ../src/fenrir/commands/commands/clear_bookmark_9.py:24
|
||||
msgid "Bookmark {0} removed for application {1}"
|
||||
msgstr "Zakładka {0} usunięta dla aplikacji {1}."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_clipboard.py:17
|
||||
msgid "clears the currently selected clipboard"
|
||||
msgstr "Czyści aktualnie zaznaczony showek."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_clipboard.py:22
|
||||
msgid "clipboard cleared"
|
||||
msgstr "Showek wyczyszczony"
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_window_application.py:17
|
||||
msgid "Turn off window mode for application"
|
||||
msgstr "Wyłącza tryb okna dla aplikacji."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_window_application.py:22
|
||||
msgid "Window Mode off for application {0}"
|
||||
msgstr "Tryb okna dla aplikacji {0} wyłączony."
|
||||
|
||||
#: ../src/fenrir/commands/commands/clear_window_application.py:24
|
||||
msgid "Not in window Mode"
|
||||
msgstr "Nie znajdujesz się w trybie okna."
|
||||
|
||||
#: ../src/fenrir/commands/commands/copy_marked_to_clipboard.py:18
|
||||
msgid "copies marked text to the currently selected clipboard"
|
||||
msgstr "Kopiuje zaznaczony tekst do aktualnie wybranego schowka."
|
||||
|
||||
#: ../src/fenrir/commands/commands/copy_marked_to_clipboard.py:22
|
||||
msgid "one or two marks needed"
|
||||
msgstr "Wymagane jeden lub dwa znaczniki"
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_clipboard.py:17
|
||||
msgid "speaks the contents of the currently selected clipboard"
|
||||
msgstr "Wypowiada treść aktualnie wybranego showka"
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_clipboard.py:21
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:29
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:32
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:35
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:38
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:30
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:33
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:36
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:39
|
||||
#: ../src/fenrir/commands/commands/first_clipboard.py:21
|
||||
#: ../src/fenrir/commands/commands/last_clipboard.py:21
|
||||
#: ../src/fenrir/commands/commands/next_clipboard.py:21
|
||||
#: ../src/fenrir/commands/commands/paste_clipboard.py:23
|
||||
#: ../src/fenrir/commands/commands/paste_clipboard.py:26
|
||||
#: ../src/fenrir/commands/commands/paste_clipboard.py:29
|
||||
#: ../src/fenrir/commands/commands/paste_clipboard.py:32
|
||||
#: ../src/fenrir/commands/commands/prev_clipboard.py:21
|
||||
msgid "clipboard empty"
|
||||
msgstr "Showek pusty"
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_screen.py:17
|
||||
msgid "reads the contents of the current screen"
|
||||
msgstr "Wypowiada treść aktualnego ekranu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_screen.py:21
|
||||
msgid "screen is empty"
|
||||
msgstr "Ekran jest pusty."
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_screen_after_cursor.py:18
|
||||
msgid "reads from the cursor to the bottom of the screen"
|
||||
msgstr "Czyta od pozycji kursora do końca ekranu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/curr_screen_before_cursor.py:18
|
||||
msgid "Reads from the top of the screen to the cursor position"
|
||||
msgstr "Czyta od góry ekranu do pozycji kursora."
|
||||
|
||||
#: ../src/fenrir/commands/commands/cursor_column.py:17
|
||||
msgid ""
|
||||
"presents the current column number for review cursor in review mode or the "
|
||||
"text cursor if not. Starts with 1"
|
||||
msgstr ""
|
||||
"Odczytuje numer aktualnej kolumny dla kursora przeglądu (jeśli w trybie "
|
||||
"przeglądu), lub dla kursora tekstu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/cursor_lineno.py:17
|
||||
msgid ""
|
||||
"presents the current line number for review cursor in review mode or the "
|
||||
"text cursor if not. Starts with 1"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fenrir/commands/commands/cursor_position.py:17
|
||||
msgid "displays the position of the review cursor"
|
||||
msgstr "Wyświetla pozycję kursora przeglądu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/cursor_position.py:23
|
||||
msgid "line {0}, column {1}"
|
||||
msgstr "Linia {0}, kolumna {1}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/cursor_read_to_end_of_line.py:18
|
||||
msgid ""
|
||||
"read to end of line, use review cursor if you are in review mode, otherwhise "
|
||||
"use text cursor"
|
||||
msgstr ""
|
||||
"Czyta tekst do końca linii. Używa kursora przeglądu (jeśli w trybie "
|
||||
"przeglądu), w przeciwnym razie używa kursora tekstu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/date.py:18
|
||||
msgid "presents the date"
|
||||
msgstr "Odczytuje aktualną datę."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_alsa_volume.py:24
|
||||
msgid "Decrease system volume"
|
||||
msgstr "Zmniejsza głośność systemu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_alsa_volume.py:28
|
||||
#: ../src/fenrir/commands/commands/inc_alsa_volume.py:28
|
||||
msgid "alsaaudio is not installed"
|
||||
msgstr "Alsaaudio nie jest zainstalowany."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_alsa_volume.py:36
|
||||
#: ../src/fenrir/commands/commands/inc_alsa_volume.py:36
|
||||
msgid "{0} percent system volume"
|
||||
msgstr "Głośność systemowa: {0} procent."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_sound_volume.py:18
|
||||
msgid "decrease sound volume"
|
||||
msgstr "Zmniejsza głośność dźwięku."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_sound_volume.py:29
|
||||
#: ../src/fenrir/commands/commands/inc_sound_volume.py:29
|
||||
msgid "{0} percent sound volume"
|
||||
msgstr "Głośność dźwięku: {0} procent."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:18
|
||||
msgid "decreases the pitch of the speech"
|
||||
msgstr "Zmniejsza wysokość mowy."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_pitch.py:26
|
||||
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:27
|
||||
msgid "{0} percent speech pitch"
|
||||
msgstr "Wysokość mowy: {0} procent."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_rate.py:18
|
||||
msgid "decreases the rate of the speech"
|
||||
msgstr "Zmniejsza prędkość mowy"
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_rate.py:27
|
||||
#: ../src/fenrir/commands/commands/inc_speech_rate.py:27
|
||||
msgid "{0} percent speech rate"
|
||||
msgstr "Prędkość mowy: {0} procent."
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_volume.py:18
|
||||
msgid "decreases the volume of the speech"
|
||||
msgstr "Zmniejsza głośność mowy"
|
||||
|
||||
#: ../src/fenrir/commands/commands/dec_speech_volume.py:27
|
||||
#: ../src/fenrir/commands/commands/inc_speech_volume.py:27
|
||||
msgid "{0} percent speech volume"
|
||||
msgstr "Głośność mowy: {0} procent."
|
||||
|
||||
#: ../src/fenrir/commands/commands/exit_review.py:17
|
||||
#: ../src/fenrir/commands/onCursorChange/66000-exit_review_mode.py:17
|
||||
msgid "exits review mode"
|
||||
msgstr "Wychodzi z trybu przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/exit_review.py:21
|
||||
msgid "Not in review mode"
|
||||
msgstr "Nie znajdujesz się w trybie przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/exit_review.py:25
|
||||
msgid "leave review mode"
|
||||
msgstr "Opuść tryb przeglądu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:19
|
||||
msgid "export the current fenrir clipboard to a file"
|
||||
msgstr "Wyeksportuj aktualny showek Fenrir do pliku."
|
||||
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_file.py:43
|
||||
msgid "clipboard exported to file"
|
||||
msgstr "Showek wyeksportowany do pliku."
|
||||
|
||||
#: ../src/fenrir/commands/commands/export_clipboard_to_x.py:21
|
||||
msgid "export the current fenrir clipboard to X clipboard"
|
||||
msgstr "Wyeksportuj aktualny showek Fenrir do schowka X."
|
||||
|
||||
#: ../src/fenrir/commands/commands/first_clipboard.py:17
|
||||
msgid "selects the first clipboard"
|
||||
msgstr "Wybiera pierwszy schowek."
|
||||
|
||||
#: ../src/fenrir/commands/commands/forward_keypress.py:17
|
||||
msgid "sends the following keypress to the terminal"
|
||||
msgstr "Wysyła następny klawisz do terminala."
|
||||
|
||||
#: ../src/fenrir/commands/commands/forward_keypress.py:21
|
||||
msgid "Forward next keypress"
|
||||
msgstr "Przepuść następny klawisz"
|
||||
|
||||
#: ../src/fenrir/commands/commands/import_clipboard_from_file.py:19
|
||||
msgid "imports text from clipboard file to the clipboard"
|
||||
msgstr "Importuje tekst z pliku do schowka."
|
||||
|
||||
#: ../src/fenrir/commands/commands/import_clipboard_from_file.py:27
|
||||
msgid "File does not exist"
|
||||
msgstr "Plik nie istnieje."
|
||||
|
||||
#: ../src/fenrir/commands/commands/inc_alsa_volume.py:24
|
||||
msgid "Increase system volume"
|
||||
msgstr "Zwiększa głośność systemu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/inc_sound_volume.py:18
|
||||
msgid "adjusts the volume for in coming sounds"
|
||||
msgstr "Dostosowuje głośność zdarzeń dźwiękowych."
|
||||
|
||||
#: ../src/fenrir/commands/commands/inc_speech_pitch.py:18
|
||||
msgid "increases the pitch of the speech"
|
||||
msgstr "Zwiększa wysokość mowy."
|
||||
|
||||
#: ../src/fenrir/commands/commands/inc_speech_rate.py:18
|
||||
msgid "increase the speech rate"
|
||||
msgstr "Zwiększa prędkość mowy."
|
||||
|
||||
#: ../src/fenrir/commands/commands/inc_speech_volume.py:18
|
||||
msgid "increase the speech volume"
|
||||
msgstr "Zwiększa głośność mowy."
|
||||
|
||||
#: ../src/fenrir/commands/commands/indent_curr_line.py:18
|
||||
msgid "shows the indention level for the current line"
|
||||
msgstr "Pokazuje poziom wcięcia dla aktualnej linii."
|
||||
|
||||
#: ../src/fenrir/commands/commands/indent_curr_line.py:33
|
||||
msgid "indent {0}"
|
||||
msgstr "Wcięcie {0}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/last_clipboard.py:17
|
||||
msgid "selects the last clipboard"
|
||||
msgstr "Wybiera ostatni showek."
|
||||
|
||||
#: ../src/fenrir/commands/commands/last_incoming.py:17
|
||||
msgid "displays the last received text"
|
||||
msgstr "Wyświetla ostatnio odebrany tekst."
|
||||
|
||||
#: ../src/fenrir/commands/commands/marked_text.py:18
|
||||
msgid "speaks the currently selected text that will be copied to the clipboard"
|
||||
msgstr "Wypowiada zaznaczony tekst który zostanie skopiowany do schowka."
|
||||
|
||||
#: ../src/fenrir/commands/commands/marked_text.py:23
|
||||
msgid "please set begin and endmark"
|
||||
msgstr "ustaw znacznik początku i końca."
|
||||
|
||||
#: ../src/fenrir/commands/commands/next_clipboard.py:17
|
||||
msgid "selects the next clipboard"
|
||||
msgstr "Wybiera następny showek."
|
||||
|
||||
#: ../src/fenrir/commands/commands/next_clipboard.py:26
|
||||
msgid "First clipboard "
|
||||
msgstr "Pierwszy showek"
|
||||
|
||||
#: ../src/fenrir/commands/commands/paste_clipboard.py:18
|
||||
msgid "pastes the text from the currently selected clipboard"
|
||||
msgstr "Wkleja tekst z aktualnie wybranego schowka."
|
||||
|
||||
#: ../src/fenrir/commands/commands/present_first_line.py:18
|
||||
msgid "present first line"
|
||||
msgstr "Odczytuje pierwszą linię."
|
||||
|
||||
#: ../src/fenrir/commands/commands/present_last_line.py:18
|
||||
#: ../src/fenrir/commands/commands/review_curr_line.py:18
|
||||
msgid "current line"
|
||||
msgstr "Aktualna linia"
|
||||
|
||||
#: ../src/fenrir/commands/commands/prev_clipboard.py:17
|
||||
msgid "selects the previous clipboard"
|
||||
msgstr "Wybiera poprzedni showek."
|
||||
|
||||
#: ../src/fenrir/commands/commands/prev_clipboard.py:26
|
||||
msgid "Last clipboard "
|
||||
msgstr "Ostatni showek"
|
||||
|
||||
#: ../src/fenrir/commands/commands/quit_fenrir.py:17
|
||||
msgid "exits Fenrir"
|
||||
msgstr "Zamyka Fenrir."
|
||||
|
||||
#: ../src/fenrir/commands/commands/remove_marks.py:17
|
||||
msgid "removes marks from selected text"
|
||||
msgstr "Usuwa znaczniki z zaznaczonego tekstu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/remove_marks.py:21
|
||||
msgid "Remove marks"
|
||||
msgstr "Usuń znaczniki"
|
||||
|
||||
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:27
|
||||
msgid "removes the current word from the exceptions dictionary"
|
||||
msgstr "Usuwa aktualne słowo ze słownika wyjątków."
|
||||
|
||||
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:50
|
||||
msgid "{0} is already removed from dict"
|
||||
msgstr "{0} już jest usunięte ze słownika."
|
||||
|
||||
#: ../src/fenrir/commands/commands/remove_word_from_spell_check.py:53
|
||||
msgid "{0} removed"
|
||||
msgstr "{0} usunięte."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_bottom.py:17
|
||||
msgid "move review to bottom of screen"
|
||||
msgstr "Przenieś kursor przeglądu na dół ekranu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_bottom.py:21
|
||||
msgid "Bottom"
|
||||
msgstr "Dół."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_char.py:18
|
||||
msgid "presents the current character."
|
||||
msgstr "Odczytuje aktualny znak."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_char_phonetic.py:18
|
||||
msgid "set review and phonetically presents the current character"
|
||||
msgstr "Ustawia kursor przeglądu i fonetycznie odczytuje zaznaczony znak."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_word.py:18
|
||||
msgid "current word."
|
||||
msgstr "Aktualne słowo"
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_word.py:32
|
||||
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:36
|
||||
#: ../src/fenrir/commands/commands/review_down.py:27
|
||||
#: ../src/fenrir/commands/commands/review_next_char.py:28
|
||||
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:30
|
||||
#: ../src/fenrir/commands/commands/review_next_line.py:34
|
||||
#: ../src/fenrir/commands/commands/review_next_word.py:34
|
||||
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:36
|
||||
#: ../src/fenrir/commands/commands/review_prev_char.py:31
|
||||
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:30
|
||||
#: ../src/fenrir/commands/commands/review_prev_line.py:32
|
||||
#: ../src/fenrir/commands/commands/review_prev_word.py:32
|
||||
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:36
|
||||
#: ../src/fenrir/commands/commands/review_up.py:27
|
||||
msgid "end of screen"
|
||||
msgstr "Koniec ekranu"
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_word.py:35
|
||||
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:39
|
||||
#: ../src/fenrir/commands/commands/review_next_char.py:31
|
||||
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:33
|
||||
#: ../src/fenrir/commands/commands/review_next_word.py:37
|
||||
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:39
|
||||
#: ../src/fenrir/commands/commands/review_prev_char.py:34
|
||||
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:33
|
||||
#: ../src/fenrir/commands/commands/review_prev_word.py:35
|
||||
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:39
|
||||
#: ../src/fenrir/commands/commands/review_up.py:30
|
||||
msgid "line break"
|
||||
msgstr "Znak końca wiersza."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_curr_word_phonetic.py:19
|
||||
#: ../src/fenrir/commands/commands/review_next_word_phonetic.py:19
|
||||
#: ../src/fenrir/commands/commands/review_prev_word_phonetic.py:19
|
||||
msgid "phonetically spells the current word and set review to it"
|
||||
msgstr ""
|
||||
"Fonetycznie odczytuje aktualne słowo i przenosi do niego kursor przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_down.py:18
|
||||
msgid "set review cursor to char below the current char and present it."
|
||||
msgstr ""
|
||||
"ustawia kursor przeglądu do znaku pod aktualnym znakiem i odczytuje go."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_begin.py:18
|
||||
msgid "set review cursor to begin of current line and display the content"
|
||||
msgstr "Ustawia kursor przeglądu na początku linii i odczytuje jej treść."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_begin.py:30
|
||||
msgid "beginning of line"
|
||||
msgstr "Początek linii."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_end.py:18
|
||||
#: ../src/fenrir/commands/commands/review_line_first_char.py:19
|
||||
#: ../src/fenrir/commands/commands/review_line_last_char.py:18
|
||||
msgid "set review cursor to end of current line and display the content"
|
||||
msgstr "Ustawia kursor przeglądu na końcu linii i odczytuje jej treść."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_end.py:27
|
||||
msgid "end of line"
|
||||
msgstr "Koniec linii."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_first_char.py:26
|
||||
msgid "line is empty"
|
||||
msgstr "Linia jest pusta."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_first_char.py:33
|
||||
msgid "first char in line indent {0}"
|
||||
msgstr "Pierwszy znak w linii o wcięciu {0}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_line_last_char.py:27
|
||||
msgid "last char in line"
|
||||
msgstr "Ostatni znak w linii."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_next_char.py:18
|
||||
msgid "moves review to the next character and presents it"
|
||||
msgstr "Przesuwa kursor przeglądu do następnego znaku i odczytuje go."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_next_char_phonetic.py:18
|
||||
msgid "phonetically presents the next character and set review to it"
|
||||
msgstr ""
|
||||
"Fonetycznie odczytuje następny znak i przenosi do niego kursor przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_next_line.py:18
|
||||
msgid "moves review to the next line and presents it"
|
||||
msgstr "Przesuwa kursor przeglądu do następnej linii i odczytuje ją."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_next_word.py:18
|
||||
msgid "moves review to the next word and presents it"
|
||||
msgstr "Przesuwa kursor przeglądu do następnego słowa i odczytuje je."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_prev_char.py:18
|
||||
msgid "moves review to the previous character and presents it"
|
||||
msgstr "Przesuwa kursor przeglądu do poprzedniego znaku i odczytuje go."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_prev_char_phonetic.py:18
|
||||
msgid "phonetically presents the previous character and set review to it"
|
||||
msgstr ""
|
||||
"Odczytuje fonetycznie poprzedni znak i przenosi do niego kursor przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_prev_line.py:18
|
||||
msgid "moves review to the previous line and presents it"
|
||||
msgstr "Przenosi kursor przeglądu do poprzedniej linii i odczytuje ją."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_prev_word.py:18
|
||||
msgid "moves review focus to the previous word and presents it"
|
||||
msgstr "Przesuwa kursor przeglądu do poprzedniego słowa i odczytuje je."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_top.py:18
|
||||
msgid "move review to top of screen"
|
||||
msgstr "Przenieś kursor przeglądu na górę ekranu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_top.py:22
|
||||
msgid "Top"
|
||||
msgstr "Góra."
|
||||
|
||||
#: ../src/fenrir/commands/commands/review_up.py:18
|
||||
msgid "set review cursor to the char in the line below and present it"
|
||||
msgstr "Przenieś kursor przeglądu do znaku w linii poniżej i odczytaj go."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_1.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_10.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_2.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_3.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_4.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_5.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_6.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_7.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_8.py:18
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_9.py:18
|
||||
msgid "set Bookmark {0}"
|
||||
msgstr "Ustaw zakładkę {0}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_1.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_10.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_2.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_3.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_4.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_5.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_6.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_7.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_8.py:22
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_9.py:22
|
||||
msgid "No Mark found"
|
||||
msgstr "Nie znaleziono znacznika."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_1.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_10.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_2.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_3.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_4.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_5.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_6.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_7.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_8.py:32
|
||||
#: ../src/fenrir/commands/commands/set_bookmark_9.py:32
|
||||
msgid "Bookmark {0} set for application {1}"
|
||||
msgstr "Zakładka {0} ustawiona dla aplikacji {1}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_mark.py:17
|
||||
msgid "places marks to select text to copy to the clipboard"
|
||||
msgstr "Ustawia znaczniki w tekście do skopiowania do schowka."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_mark.py:21
|
||||
msgid "no review cursor"
|
||||
msgstr "Brak kursora przeglądu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_mark.py:26
|
||||
#: ../src/fenrir/commands/commands/set_mark.py:28
|
||||
msgid "set mark"
|
||||
msgstr "ustaw znacznik."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_window_application.py:17
|
||||
msgid "set Window Mode, needs 2 marks "
|
||||
msgstr "ustaw tryb okna, wymagane dwa znaczniki."
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_window_application.py:22
|
||||
msgid "Window Mode on for application {0}"
|
||||
msgstr "Tryb okna włączony dla aplikacji {0}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/set_window_application.py:25
|
||||
msgid "Set window begin and end marks"
|
||||
msgstr "Ustaw początek i koniec okna."
|
||||
|
||||
#: ../src/fenrir/commands/commands/shut_up.py:17
|
||||
msgid "interrupts the current presentation"
|
||||
msgstr "Przerywa aktualną prezentację."
|
||||
|
||||
#: ../src/fenrir/commands/commands/spell_check.py:26
|
||||
msgid "checks the spelling of the current word"
|
||||
msgstr "Sprawdza pisownię aktualnego słowa."
|
||||
|
||||
#: ../src/fenrir/commands/commands/spell_check.py:52
|
||||
#: ../src/fenrir/commands/onCursorChange/62000-spell_check.py:130
|
||||
msgid "misspelled"
|
||||
msgstr "Błąd pisowni"
|
||||
|
||||
#: ../src/fenrir/commands/commands/spell_check.py:54
|
||||
msgid "correct"
|
||||
msgstr "Poprawny"
|
||||
|
||||
#: ../src/fenrir/commands/commands/subprocess.py:21
|
||||
msgid "script: {0} fullpath: {1}"
|
||||
msgstr "Skrypt: {0}, ścieżka dostępu: {1}"
|
||||
|
||||
#: ../src/fenrir/commands/commands/subprocess.py:24
|
||||
msgid "scriptfile does not exist"
|
||||
msgstr "Plik skryptu nie istnieje."
|
||||
|
||||
#: ../src/fenrir/commands/commands/subprocess.py:27
|
||||
msgid "scriptfile is not a file"
|
||||
msgstr "Plik skryptu nie jest plikiem."
|
||||
|
||||
#: ../src/fenrir/commands/commands/subprocess.py:30
|
||||
msgid "scriptfile is not executable"
|
||||
msgstr "Plik skryptu nie jest wykonywalny."
|
||||
|
||||
#: ../src/fenrir/commands/commands/temp_disable_speech.py:17
|
||||
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:17
|
||||
msgid "disables speech until next keypress"
|
||||
msgstr "Wyłącza mowę do następnego naciśnięcia klawisza."
|
||||
|
||||
#: ../src/fenrir/commands/commands/temp_disable_speech.py:21
|
||||
msgid "speech temporary disabled"
|
||||
msgstr "Mowa tymczasowo wyłączona."
|
||||
|
||||
#: ../src/fenrir/commands/commands/time.py:18
|
||||
msgid "presents the time"
|
||||
msgstr "Wyświetla i odczytuje aktualny czas."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_read.py:16
|
||||
msgid "enables or disables automatic reading of new text as it appears"
|
||||
msgstr "Włącza lub wyłącza informowanie o dynamicznych zmianach treści."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_read.py:21
|
||||
msgid "autoread enabled"
|
||||
msgstr "Włączono ogłaszanie dynamicznych zmian treści."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_read.py:23
|
||||
msgid "autoread disabled"
|
||||
msgstr "Wyłączono automatyczne ogłaszanie dynamicznych zmian treści."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:17
|
||||
msgid "enables or disables automatic spell checking"
|
||||
msgstr "Włącza lub wyłącza automatyczne sprawdzanie błędów pisowni."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:22
|
||||
msgid "auto spellcheck enabled"
|
||||
msgstr "Automatyczne sprawdzanie pisowni włączone."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_spell_check.py:24
|
||||
msgid "auto spellcheck disabled"
|
||||
msgstr "Automatyczne sprawdzanie pisowni wyłączone."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_time.py:16
|
||||
msgid "enables or disables automatic reading of time after an period"
|
||||
msgstr "Włącza lub wyłącza okresowe, automatyczne odczytywanie czasu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_time.py:21
|
||||
msgid "autotime enabled"
|
||||
msgstr "Włączono okresowe odczytywanie czasu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_auto_time.py:23
|
||||
msgid "autotime disabled"
|
||||
msgstr "Wyłączono okresowe odczytywanie czasu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_braille.py:17
|
||||
msgid "enables and disables output in braille"
|
||||
msgstr "Włącza lub wyłącza wyjście brajla."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_braille.py:21
|
||||
msgid "braille disabled"
|
||||
msgstr "Brajl wyłączony."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_braille.py:24
|
||||
msgid "braille enabled"
|
||||
msgstr "Brajl włączony."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_emoticons.py:16
|
||||
msgid "enables or disables announcement of emoticons instead of chars"
|
||||
msgstr "Włącza lub wyłącza odczytywanie emotikon."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_emoticons.py:21
|
||||
msgid "emoticons enabled"
|
||||
msgstr "Emotikony włączone."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_emoticons.py:23
|
||||
msgid "emoticons disabled"
|
||||
msgstr "Emotikony wyłączone."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_highlight_tracking.py:16
|
||||
msgid "enables or disables tracking of highlighted text"
|
||||
msgstr "Włącza lub wyłącza śledzenie podświetlonego tekstu."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_highlight_tracking.py:24
|
||||
msgid "highlight tracking"
|
||||
msgstr "Śledzenie podświetlenia."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_highlight_tracking.py:26
|
||||
msgid "cursor tracking"
|
||||
msgstr "Śledzenie kursora."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_output.py:17
|
||||
msgid "toggles all output settings"
|
||||
msgstr "Przełącza wszystkie ustawienia wyjścia."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_output.py:23
|
||||
msgid "Fenrir muted"
|
||||
msgstr "Fenrir wyciszony."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_output.py:31
|
||||
msgid "Fenrir unmuted"
|
||||
msgstr "Fenrir odciszony"
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_punctuation_level.py:23
|
||||
msgid "No punctuation found."
|
||||
msgstr "Nie znaleziono interpunkcji."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_sound.py:17
|
||||
msgid "enables or disables sound"
|
||||
msgstr "Włącza lub wyłącza dźwięk."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_sound.py:21
|
||||
msgid "sound disabled"
|
||||
msgstr "Dźwięk wyłączony"
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_sound.py:24
|
||||
msgid "sound enabled"
|
||||
msgstr "Dźwięk włączony"
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_speech.py:17
|
||||
msgid "enables or disables speech"
|
||||
msgstr "Włącza lub wyłącza mowę."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_speech.py:21
|
||||
msgid "speech disabled"
|
||||
msgstr "Mowa wyłączona."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_speech.py:24
|
||||
#: ../src/fenrir/commands/onInput/15000-enable_temp_speech.py:28
|
||||
msgid "speech enabled"
|
||||
msgstr "Mowa włączona."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_tutorial_mode.py:19
|
||||
msgid ""
|
||||
"You are leaving the tutorial mode. Press that shortcut again to enter the "
|
||||
"tutorial mode again."
|
||||
msgstr "Opuszczasz tryb pomocy."
|
||||
|
||||
#: ../src/fenrir/commands/commands/toggle_tutorial_mode.py:22
|
||||
msgid ""
|
||||
"you entered the tutorial mode. In that mode the commands are not executed. "
|
||||
"but you get a description of what the shortcut does. To leave the tutorial "
|
||||
"mode, press that shortcut again."
|
||||
msgstr ""
|
||||
"Wszedłeś w tryb pomocy. W tym trybie naciskane klawisze nie są wykonywane a "
|
||||
"jedynie odczytywane jest ich przeznaczenie. Aby opuścić tryb pomocy, "
|
||||
"naciśnij ten skrót ponownie."
|
||||
|
||||
#: ../src/fenrir/commands/help/curr_help.py:17
|
||||
msgid "get current help message"
|
||||
msgstr "Odczytaj aktualną wiadomość pomocy"
|
||||
|
||||
#: ../src/fenrir/commands/help/next_help.py:17
|
||||
msgid "get next help message"
|
||||
msgstr "Odczytaj następną wiadomość pomocy."
|
||||
|
||||
#: ../src/fenrir/commands/help/prev_help.py:17
|
||||
msgid "get prev help message"
|
||||
msgstr "Odczytaj poprzednią wiadomość pomocy."
|
||||
|
||||
#: ../src/fenrir/commands/onHeartBeat/76000-time.py:66
|
||||
msgid "Autotime: {0}"
|
||||
msgstr "Jest godzina: {0}"
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80000-capslock.py:22
|
||||
msgid "Capslock on"
|
||||
msgstr "Capslock włączony"
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80000-capslock.py:24
|
||||
msgid "Capslock off"
|
||||
msgstr "Capslock wyłączony."
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:22
|
||||
msgid "Scrolllock on"
|
||||
msgstr "Scrollock włączony."
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80300-scrolllock.py:24
|
||||
msgid "Scrolllock off"
|
||||
msgstr "Scrollock wyłączony."
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80500-numlock.py:22
|
||||
msgid "Numlock on"
|
||||
msgstr "Numlock włączony."
|
||||
|
||||
#: ../src/fenrir/commands/onInput/80500-numlock.py:24
|
||||
msgid "Numlock off"
|
||||
msgstr "Numlock wyłączony."
|
||||
|
||||
#: ../src/fenrir/commands/onScreenChanged/80000-screen_change_announcement.py:20
|
||||
msgid "screen {0}"
|
||||
msgstr "Ekran {0}"
|
||||
|
||||
#: ../src/fenrir/commands/onScreenUpdate/56000-highlight_tracking.py:16
|
||||
msgid "enables or disables tracking of highlighted"
|
||||
msgstr "Włącza lub wyłącza śledzenie podświetlenia."
|
||||
|
||||
#: ../src/fenrir/core/fenrirManager.py:27
|
||||
msgid "Start Fenrir"
|
||||
msgstr "Uruchom Fenrir"
|
||||
|
||||
#: ../src/fenrir/core/fenrirManager.py:170
|
||||
msgid "Quit Fenrir"
|
||||
msgstr "Zamknij Fenrir"
|
||||
|
||||
#: ../src/fenrir/core/helpManager.py:44
|
||||
msgid "toggles the tutorial mode"
|
||||
msgstr "Przełącza tryb pomocy."
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "black"
|
||||
msgstr "Czarny"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "blue"
|
||||
msgstr "niebieski"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "cyan"
|
||||
msgstr "Turkusowy"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "green"
|
||||
msgstr "Zielony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "red"
|
||||
msgstr "Czerwony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
msgid "white"
|
||||
msgstr "Biały"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Magenta"
|
||||
msgstr "Fuksja"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:38
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "brown/yellow"
|
||||
msgstr "Brązowo-żółty"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Black"
|
||||
msgstr "Czarny"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Blue"
|
||||
msgstr "Niebieski"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Cyan"
|
||||
msgstr "Turkusowy"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Dark gray"
|
||||
msgstr "Ciemno-szary"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Green"
|
||||
msgstr "Zielony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light blue"
|
||||
msgstr "Jasno-niebieski."
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light cyan"
|
||||
msgstr "Jasny turkus"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light gray"
|
||||
msgstr "Jasno-szary."
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light magenta"
|
||||
msgstr "Jasna fuksja"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light red"
|
||||
msgstr "Jasno-czerwony."
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Light yellow"
|
||||
msgstr "Jasno-żółty."
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "Red"
|
||||
msgstr "Czerwony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:39
|
||||
msgid "White"
|
||||
msgstr "Biały"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:262
|
||||
msgid "underlined"
|
||||
msgstr "Podkreślony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:266
|
||||
msgid "bold"
|
||||
msgstr "Pogrubiony"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:270
|
||||
msgid "blink"
|
||||
msgstr "Migający"
|
||||
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:273
|
||||
#: ../src/fenrir/screenDriver/vcsaDriver.py:275
|
||||
msgid "Default"
|
||||
msgstr "Domyślny"
|
BIN
locale/ru/LC_MESSAGES/fenrir.mo
Normal file
BIN
locale/ru/LC_MESSAGES/fenrir.mo
Normal file
Binary file not shown.
1219
locale/ru/LC_MESSAGES/fenrir.po
Normal file
1219
locale/ru/LC_MESSAGES/fenrir.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
||||
#!/bin/python3
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="Fenrir Help")
|
||||
|
||||
parser.add_argument('-s', '--setting', metavar='SETTING-FILE', default='/etc/fenrir/settings/settings.conf', help='Use a specified settingsfile')
|
||||
parser.add_argument('-o', '--options', metavar='SECTION:SETTING=VALUE,..', default='', help='Overwrite options in given settings file')
|
||||
|
||||
args = parser.parse_args()
|
||||
parser.print_help()
|
||||
|
||||
print(args.setting)
|
@ -1,88 +0,0 @@
|
||||
import time
|
||||
from fcntl import ioctl
|
||||
from array import array
|
||||
from struct import unpack_from
|
||||
from struct import unpack
|
||||
from struct import pack
|
||||
import errno
|
||||
import sys
|
||||
charmap = {}
|
||||
hichar = None
|
||||
def updateCharMap(screen):
|
||||
global hichar
|
||||
ttyno = '4'
|
||||
tty = open('/dev/tty' + screen, 'rb')
|
||||
GIO_UNIMAP = 0x4B66
|
||||
VT_GETHIFONTMASK = 0x560D
|
||||
himask = array("H", (0,))
|
||||
ioctl(tty, VT_GETHIFONTMASK, himask)
|
||||
hichar, = unpack_from("@H", himask)
|
||||
sz = 512
|
||||
line = ''
|
||||
while True:
|
||||
try:
|
||||
unipairs = array("H", [0]*(2*sz))
|
||||
unimapdesc = array("B", pack("@HP", sz, unipairs.buffer_info()[0]))
|
||||
ioctl(tty.fileno(), GIO_UNIMAP, unimapdesc)
|
||||
break
|
||||
except IOError as e:
|
||||
if e.errno != errno.ENOMEM:
|
||||
raise
|
||||
sz *= 2
|
||||
tty.close()
|
||||
ncodes, = unpack_from("@H", unimapdesc)
|
||||
utable = unpack_from("@%dH" % (2*ncodes), unipairs)
|
||||
for u, b in zip(utable[::2], utable[1::2]):
|
||||
if charmap.get(b) is None:
|
||||
charmap[b] = chr(u)
|
||||
|
||||
|
||||
def autoDecodeVCSA(allData, rows, cols):
|
||||
allText = []
|
||||
allAttrib = []
|
||||
for y in range(rows):
|
||||
lineText = ''
|
||||
lineAttrib = []
|
||||
i = 0
|
||||
for x in range(cols):
|
||||
data = allData[i: i + 2]
|
||||
i += 2
|
||||
if data == b' \x07':
|
||||
#attr = 7
|
||||
#ink = 7
|
||||
#paper = 0
|
||||
#ch = ' '
|
||||
lineAttrib.append(7)
|
||||
lineText += ' '
|
||||
continue
|
||||
(sh,) = unpack("=H", data)
|
||||
attr = (sh >> 8) & 0xFF
|
||||
ch = sh & 0xFF
|
||||
if hichar == 0x100:
|
||||
attr >>= 1
|
||||
lineAttrib.append(attr)
|
||||
ink = attr & 0x0F
|
||||
paper = (attr>>4) & 0x0F
|
||||
#if (ink != 7) or (paper != 0):
|
||||
# print(ink,paper)
|
||||
if sh & hichar:
|
||||
ch |= 0x100
|
||||
try:
|
||||
lineText += charmap[ch]
|
||||
except:
|
||||
lineText += chr('?')
|
||||
allText.append(lineText)
|
||||
allAttrib.append(lineAttrib)
|
||||
return allText, allAttrib
|
||||
|
||||
def m(screen):
|
||||
s = time.time()
|
||||
updateCharMap(str(screen))
|
||||
print(time.time() -s )
|
||||
vcsa = open('/dev/vcsa' + str(screen), 'rb')
|
||||
head = vcsa.read(4)
|
||||
rows = int(head[0])
|
||||
cols = int(head[1])
|
||||
text, attrib = autoDecodeVCSA(vcsa.read(), rows, cols)
|
||||
print(time.time() -s )
|
||||
|
@ -1,39 +0,0 @@
|
||||
#!/bin/bash
|
||||
echo "foreground colors"
|
||||
echo -e "\e[39mDefault"
|
||||
echo -e "\e[30mBlack"
|
||||
echo -e "\e[31mRed"
|
||||
echo -e "\e[32mGreen"
|
||||
echo -e "\e[33mYellow"
|
||||
echo -e "\e[34mBlue"
|
||||
echo -e "\e[35mMagenta"
|
||||
echo -e "\e[36mCyan"
|
||||
echo -e "\e[37mLight gray"
|
||||
echo -e "\e[90mDark gray"
|
||||
echo -e "\e[91mLight red"
|
||||
echo -e "\e[92mLight green"
|
||||
echo -e "\e[93mLight yellow"
|
||||
echo -e "\e[94mLight blue"
|
||||
echo -e "\e[95mLight magenta"
|
||||
echo -e "\e[96mLight cyan"
|
||||
echo -e "\e[97mWhite"
|
||||
|
||||
echo "background colors"
|
||||
echo -e "\e[49mDefault"
|
||||
echo -e "\e[40mBlack"
|
||||
echo -e "\e[41mRed"
|
||||
echo -e "\e[42mGreen"
|
||||
echo -e "\e[43mYellow"
|
||||
echo -e "\e[44mBlue"
|
||||
echo -e "\e[45mMagenta"
|
||||
echo -e "\e[46mCyan"
|
||||
echo -e "\e[47mLight gray"
|
||||
echo -e "\e[100mDark gray"
|
||||
echo -e "\e[101mLight red"
|
||||
echo -e "\e[102mLight green"
|
||||
echo -e "\e[103mLight yellow"
|
||||
echo -e "\e[104mLight blue"
|
||||
echo -e "\e[105mLight magenta"
|
||||
echo -e "\e[106mLight cyan"
|
||||
echo -e "\e[107mWhite"
|
||||
|
@ -1,52 +0,0 @@
|
||||
#!/bin/python
|
||||
import evdev
|
||||
from evdev import InputDevice, UInput
|
||||
from select import select
|
||||
import time
|
||||
|
||||
iDevices = map(evdev.InputDevice, (evdev.list_devices()))
|
||||
iDevices = {dev.fd: dev for dev in iDevices if evdev.events.EV_KEY in dev.capabilities()}
|
||||
|
||||
uDevices = {}
|
||||
for fd in iDevices:
|
||||
dev = iDevices[fd]
|
||||
cap = dev.capabilities()
|
||||
del cap[0]
|
||||
uDevices[fd] = UInput(
|
||||
cap,
|
||||
dev.name,
|
||||
dev.info.vendor,
|
||||
# dev.info.product,
|
||||
# dev.version,
|
||||
# dev.info.bustype,
|
||||
# '/dev/uinput'
|
||||
)
|
||||
dev.grab()
|
||||
|
||||
|
||||
i = 0
|
||||
while i < 100:
|
||||
r, w, x = select(iDevices, [], [])
|
||||
if r != []:
|
||||
i += 1
|
||||
for fd in r:
|
||||
for event in iDevices[fd].read():
|
||||
if event.code != 30: # a
|
||||
print(event)
|
||||
uDevices[fd].write_event(event)
|
||||
uDevices[fd].syn()
|
||||
#print('Devicename:'+ devices[fd].name + ' Devicepath:' + devices[fd].fn + ' Events:' + str(devices[fd].active_keys(verbose=True)) + ' Value:' + str(event.value))
|
||||
else:
|
||||
print('this key is consumed')
|
||||
|
||||
for fd in iDevices:
|
||||
iDevices[fd].ungrab()
|
||||
iDevices[fd].close()
|
||||
uDevices[fd].close()
|
||||
|
||||
|
||||
iDevices.clear()
|
||||
uDevices.clear()
|
||||
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
from time import sleep
|
||||
from daemonize import Daemonize
|
||||
|
||||
pid = "/tmp/test.pid"
|
||||
|
||||
|
||||
def main():
|
||||
while True:
|
||||
sleep(5)
|
||||
|
||||
daemon = Daemonize(app="test_app", pid=pid, action=main)
|
||||
daemon.start()
|
@ -1,50 +0,0 @@
|
||||
#!/bin/python
|
||||
import evdev
|
||||
iDevices = {}
|
||||
iDeviceNo = 0
|
||||
def updateInputDevices(force = False, init = False):
|
||||
global iDeviceNo
|
||||
if init:
|
||||
iDevices = {}
|
||||
iDeviceNo = 0
|
||||
deviceFileList = evdev.list_devices()
|
||||
if not force:
|
||||
if len(deviceFileList) == iDeviceNo:
|
||||
return
|
||||
iDeviceNo = len(deviceFileList)
|
||||
mode = 'ALL'
|
||||
iDevicesFiles = []
|
||||
for device in iDevices:
|
||||
iDevicesFiles.append(iDevices[device].fn)
|
||||
print(len(iDevicesFiles),len(deviceFileList))
|
||||
if len(iDevicesFiles) == len(deviceFileList):
|
||||
return
|
||||
for deviceFile in deviceFileList:
|
||||
try:
|
||||
if deviceFile in iDevicesFiles:
|
||||
print('skip')
|
||||
continue
|
||||
open(deviceFile)
|
||||
# 3 pos absolute
|
||||
# 2 pos relative
|
||||
# 1 Keys
|
||||
currDevice = evdev.InputDevice(deviceFile)
|
||||
cap = currDevice.capabilities()
|
||||
if mode in ['ALL','NOMICE']:
|
||||
if 1 in cap:
|
||||
if 116 in cap[1] and len(cap[1]) < 5:
|
||||
print('power')
|
||||
continue
|
||||
if mode == 'ALL':
|
||||
iDevices[currDevice.fd] = currDevice
|
||||
print('Device added:' + iDevices[currDevice.fd].name)
|
||||
elif mode == 'NOMICE':
|
||||
if not ((2 in cap) or (3 in cap)):
|
||||
iDevices[currDevice.fd] = currDevice
|
||||
print('Device added:' + iDevices[currDevice.fd].name)
|
||||
elif currDevice.name.upper() in mode.split(','):
|
||||
iDevices[currDevice.fd] = currDevice
|
||||
print('Device added:' + iDevices[currDevice.fd].name)
|
||||
except Exception as e:
|
||||
print("Skip Inputdevice : " + deviceFile +' ' + str(e))
|
||||
updateInputDevices()
|
@ -1,37 +0,0 @@
|
||||
#!/bin/python
|
||||
|
||||
import select
|
||||
import time
|
||||
|
||||
currScreen = '2'
|
||||
vcsa = {}
|
||||
for i in range(1,7):
|
||||
vcsa[str(i)] = open('/dev/vcs'+str(i),'rb')
|
||||
|
||||
tty = open('/sys/devices/virtual/tty/tty0/active','r')
|
||||
currScreen = str(tty.read()[3:-1])
|
||||
oldScreen = currScreen
|
||||
watchdog = select.epoll()
|
||||
watchdog.register(vcsa[currScreen], select.EPOLLPRI)
|
||||
watchdog.register(tty, select.EPOLLPRI)
|
||||
|
||||
while True:
|
||||
changes = watchdog.poll()
|
||||
print('-----------------------------')
|
||||
print(changes)
|
||||
for change in changes:
|
||||
fileno = change[0]
|
||||
event = change[1]
|
||||
print(change,fileno, tty.fileno())
|
||||
if fileno == tty.fileno():
|
||||
tty.seek(0)
|
||||
currScreen = str(tty.read()[3:-1])
|
||||
if currScreen != oldScreen:
|
||||
watchdog.unregister(vcsa[ oldScreen ])
|
||||
watchdog.register(vcsa[ currScreen ], select.EPOLLPRI)
|
||||
oldScreen = currScreen
|
||||
print('new screen '+ currScreen)
|
||||
else:
|
||||
vcsa[currScreen].seek(0)
|
||||
content = vcsa[currScreen].read()
|
||||
print('update '+ str(time.time()))
|
@ -1,5 +0,0 @@
|
||||
#!/bin/python
|
||||
|
||||
# in case that event13 is still the broken device
|
||||
f = open('/dev/input/event13')
|
||||
print('OK /dev/input/event13')
|
@ -1,48 +0,0 @@
|
||||
#!/bin/bash
|
||||
echo "foreground colors"
|
||||
echo -e "\e[39mDefault"
|
||||
echo -e "\e[30mBlack"
|
||||
echo -e "\e[31mRed"
|
||||
echo -e "\e[32mGreen"
|
||||
echo -e "\e[33mYellow"
|
||||
echo -e "\e[34mBlue"
|
||||
echo -e "\e[35mMagenta"
|
||||
echo -e "\e[36mCyan"
|
||||
echo -e "\e[37mLight gray"
|
||||
echo -e "\e[90mDark gray"
|
||||
echo -e "\e[91mLight red"
|
||||
echo -e "\e[92mLight green"
|
||||
echo -e "\e[93mLight yellow"
|
||||
echo -e "\e[94mLight blue"
|
||||
echo -e "\e[95mLight magenta"
|
||||
echo -e "\e[96mLight cyan"
|
||||
echo -e "\e[97mWhite"
|
||||
#7: _('Default'), 0: _('Black'), 4: _('Red'), 2: _('Green'), 6: _('Yellow'), 1: _('Blue'), 5: _('Magenta'), 3: _('Cyan'), 7: _('Light gray'), 8: _('Dark gray'), 12: _('Light red'), 10: , ('Light green'), 14: _('Light yellow'), 9: _('Light blue'), 13: _('Light magenta'), 11: _('Light cyan'), 15: _('White')
|
||||
|
||||
echo "background colors"
|
||||
echo -e "\e[49mDefault"
|
||||
echo -e "\e[40mBlack"
|
||||
echo -e "\e[41mRed"
|
||||
echo -e "\e[42mGreen"
|
||||
echo -e "\e[43mYellow"
|
||||
echo -e "\e[44mBlue"
|
||||
echo -e "\e[45mMagenta"
|
||||
echo -e "\e[46mCyan"
|
||||
echo -e "\e[47mLight gray"
|
||||
echo -e "\e[100mDark gray"
|
||||
echo -e "\e[101mLight red"
|
||||
echo -e "\e[102mLight green"
|
||||
echo -e "\e[103mLight yellow"
|
||||
echo -e "\e[104mLight blue"
|
||||
echo -e "\e[105mLight magenta"
|
||||
echo -e "\e[106mLight cyan"
|
||||
echo -e "\e[107mWhite"
|
||||
|
||||
echo "format"
|
||||
echo -e "\e[1mBold"
|
||||
echo -e "\e[2mDim"
|
||||
echo -e "\e[4mUnderlined"
|
||||
echo -e "\e[5mBlink"
|
||||
echo -e "\e[7minverted"
|
||||
echo -e "\e[8mHidden"
|
||||
|
@ -1,19 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
import gi
|
||||
from gi.repository import GLib
|
||||
gi.require_version('Gst', '1.0')
|
||||
from gi.repository import Gst
|
||||
import time, threading
|
||||
gi.require_version('Atspi', '2.0')
|
||||
import pyatspi
|
||||
|
||||
# Callback to print the active window on key press amd filter out the key release
|
||||
def on_key_input(event):
|
||||
print(event)
|
||||
|
||||
mainloop = GLib.MainLoop()
|
||||
thread = threading.Thread(target=mainloop.run)
|
||||
thread.start()
|
||||
#pyatspi.Registry.registerKeystrokeListener(on_key_input, kind=(pyatspi.KEY_PRESSED_EVENT, pyatspi.KEY_RELEASED_EVENT))
|
||||
pyatspi.Registry.registerKeystrokeListener(on_key_input,mask=pyatspi.allModifiers(), kind=(pyatspi.KEY_PRESS,pyatspi.KEY_RELEASE,pyatspi.KEY_PRESSRELEASE), synchronous=True, preemptive=True)
|
||||
pyatspi.Registry.start()
|
@ -1,23 +0,0 @@
|
||||
#!/bin/python
|
||||
import evdev
|
||||
from evdev import InputDevice, UInput
|
||||
from select import select
|
||||
import time
|
||||
|
||||
iDevices = map(evdev.InputDevice, (evdev.list_devices()))
|
||||
iDevices = {dev.fd: dev for dev in iDevices}
|
||||
print('----------------------')
|
||||
for fd in iDevices:
|
||||
dev = iDevices[fd]
|
||||
cap = dev.capabilities()
|
||||
print('Name: ' + str(dev.name))
|
||||
print('LEDs: ' + str(dev.leds()))
|
||||
print('Has Keys: '+ str(evdev.events.EV_KEY in cap))
|
||||
if evdev.events.EV_KEY in cap:
|
||||
print('No. of keys: ' + str(len(cap[evdev.events.EV_KEY])))
|
||||
print('has Key 116: ' + str(116 in cap[evdev.events.EV_KEY]))
|
||||
print('Is Mouse: ' + str(((evdev.events.EV_REL in cap) or (evdev.events.EV_ABS in cap))))
|
||||
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
|
||||
print(dev.capabilities(verbose=True))
|
||||
print('----------------------')
|
||||
|
@ -1,20 +0,0 @@
|
||||
#!/bin/python
|
||||
import dbus
|
||||
try:
|
||||
bus = dbus.SystemBus()
|
||||
obj = bus.get_object('org.freedesktop.login1', '/org/freedesktop/login1')
|
||||
inf = dbus.Interface(obj, 'org.freedesktop.login1.Manager')
|
||||
ListSessions = inf.get_dbus_method('ListSessions')
|
||||
sessions = ListSessions()
|
||||
for session in sessions:
|
||||
obj = bus.get_object('org.freedesktop.login1', session[4])
|
||||
inf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
|
||||
sessionType = inf.Get('org.freedesktop.login1.Session', 'Type')
|
||||
screen = str(inf.Get('org.freedesktop.login1.Session', 'VTNr'))
|
||||
if screen == '':
|
||||
screen = str(inf.Get('org.freedesktop.login1.Session', 'TTY'))
|
||||
print('Session:', screen, 'Type:', sessionType.upper(), 'Details:', session)
|
||||
else:
|
||||
print('Session:', screen, 'Type:', sessionType.upper(), 'Details:', session)
|
||||
except:
|
||||
print('no access')
|
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# HTTP + URL packages
|
||||
import httplib2
|
||||
from urllib.parse import urlencode, quote # For URL creation
|
||||
import time
|
||||
# To play wave files
|
||||
import pygame
|
||||
import math # For ceiling
|
||||
|
||||
|
||||
# Mary server informations
|
||||
mary_host = "127.0.0.1"
|
||||
mary_port = "59125"
|
||||
|
||||
# Input text
|
||||
input_text = "das ist ein test das ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testdas ist ein testd"
|
||||
# Build the query
|
||||
query_hash = {"INPUT_TEXT":input_text,
|
||||
"INPUT_TYPE":"TEXT", # Input text
|
||||
"LOCALE":"de",
|
||||
"VOICE":"bits3", # Voice informations (need to be compatible)
|
||||
"OUTPUT_TYPE":"AUDIO",
|
||||
"AUDIO":"WAVE", # Audio informations (need both)
|
||||
}
|
||||
starttime = time.time()
|
||||
query = urlencode(query_hash)
|
||||
#print("query = \"http://%s:%s/process?%s\"" % (mary_host, mary_port, query))
|
||||
|
||||
# Run the query to mary http server
|
||||
h_mary = httplib2.Http()
|
||||
#print("http://%s:%s/process?" % (mary_host, mary_port), "POST", query)
|
||||
resp, content = h_mary.request("http://%s:%s/process?" % (mary_host, mary_port), "POST", query)
|
||||
|
||||
# Decode the wav file or raise an exception if no wav files
|
||||
if (resp["content-type"] == "audio/x-wav"):
|
||||
# Write the wav file
|
||||
f = open("/tmp/output_wav.wav", "wb")
|
||||
f.write(content)
|
||||
f.close()
|
||||
# Play the wav file
|
||||
pygame.mixer.init(frequency=16000) # Initialise the mixer
|
||||
#s = pygame.mixer.Sound(content)
|
||||
s = pygame.mixer.Sound("/tmp/output_wav.wav")
|
||||
print(str(time.time() -starttime))
|
||||
s.play()
|
||||
print(str(time.time() -starttime))
|
||||
pygame.time.wait(int(math.ceil(s.get_length() * 1000)))
|
||||
|
||||
else:
|
||||
raise Exception(content)
|
@ -1,53 +0,0 @@
|
||||
#!/bin/python
|
||||
import os
|
||||
import time
|
||||
start = time.time()
|
||||
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
|
||||
#pids = ['5960']
|
||||
|
||||
tty = os.open('/dev/tty2', os.O_RDWR)
|
||||
fg = str(os.tcgetpgrp(tty))
|
||||
tty.close()
|
||||
print(fg)
|
||||
for pid in pids:
|
||||
try:
|
||||
currStat = str(open('/proc/' + pid + '/stat', 'rb').read())
|
||||
currStat = currStat.split(' ')
|
||||
if int(currStat[4]) == 0:
|
||||
continue
|
||||
#print(currStat)
|
||||
#print(fg,int(currStat[4]))
|
||||
if fg == currStat[4]:
|
||||
print(currStat[1])
|
||||
#print( currStat )
|
||||
#print(currStat[0])
|
||||
major = os.major(int(currStat[6]))
|
||||
minor = os.minor(int(currStat[6]))
|
||||
ueventContent = open('/sys/dev/char/' + str(major) + ':' + str(minor) + '/uevent','r').read().split()
|
||||
#print(ueventContent)
|
||||
#print(int(currStat[4]),currStat[1])
|
||||
except IOError: # proc has already terminated
|
||||
continue
|
||||
|
||||
print(time.time()-start)
|
||||
|
||||
|
||||
'''
|
||||
Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
|
||||
..............................................................................
|
||||
Field Content
|
||||
pid process id
|
||||
tcomm filename of the executable
|
||||
state state (R is running, S is sleeping, D is sleeping in an
|
||||
uninterruptible wait, Z is zombie, T is traced or stopped)
|
||||
ppid process id of the parent process
|
||||
pgrp pgrp of the process
|
||||
sid session id
|
||||
tty_nr tty the process uses
|
||||
tty_pgrp pgrp of the tty
|
||||
flags task flags
|
||||
min_flt number of minor faults
|
||||
cmin_flt number of minor faults with child's
|
||||
maj_flt number of major faults
|
||||
cmaj_flt number of major faults with child's
|
||||
'''
|
@ -1,28 +0,0 @@
|
||||
#!/bin/python
|
||||
import evdev
|
||||
from evdev import InputDevice
|
||||
from select import select
|
||||
import time
|
||||
|
||||
deviceList = evdev.list_devices()
|
||||
readableDevices = []
|
||||
for dev in deviceList:
|
||||
try:
|
||||
open(dev)
|
||||
readableDevices.append(dev)
|
||||
print('OK '+dev)
|
||||
except Exception as e:
|
||||
print('skip ' + dev + ' Error ' + str(e))
|
||||
|
||||
|
||||
devices = map(evdev.InputDevice, (readableDevices))
|
||||
devices = {dev.fd: dev for dev in devices}
|
||||
|
||||
while True:
|
||||
r, w, x = select(devices, [], [])
|
||||
if r != []:
|
||||
for fd in r:
|
||||
for event in devices[fd].read():
|
||||
print('Devicename:'+ devices[fd].name + ' Devicepath:' + devices[fd].fn + ' Events:' + str(devices[fd].active_keys(verbose=True)) + ' Value:' + str(event.value))
|
||||
|
||||
|
@ -1,154 +0,0 @@
|
||||
#!/usr/bin/pdmenu
|
||||
#
|
||||
# Note that the above bang-path isn't required, but it lets you run this
|
||||
# file directly as a sort of pdmenu script.
|
||||
|
||||
# F123 menu
|
||||
|
||||
title:Welcome to F123
|
||||
|
||||
# Define the main menu.
|
||||
menu:main:F123 Main Menu:Please make a selection
|
||||
show:_Games Menu..::games
|
||||
show:_Internet menu..::internet
|
||||
show:_Media menu..::media
|
||||
show:_Office menu..::office
|
||||
show:_System Configuration Menu..::configuration
|
||||
show:_Tools Menu..::tools
|
||||
nop
|
||||
show:_Power Options..::power
|
||||
nop
|
||||
exit:_Exit
|
||||
|
||||
|
||||
# Submenu for games.
|
||||
menu:games:Games:Command line games
|
||||
exec:_Adventure::clear;adventure
|
||||
exec:_Arithmetic::clear;arithmetic
|
||||
exec:_Air Traffic Controler (Not screen reader friendly)::clear;atc
|
||||
exec:_Backgammon (Not screen reader friendly)::clear;backgammon
|
||||
exec:_Battlestar::clear;battlestar
|
||||
exec:_Boggle (Not screen reader friendly)::clear;boggle
|
||||
exec:_Canfield (Not screen reader friendly)::clear;canfield
|
||||
exec:_Cribbage (Not screen reader friendly)::clear;cribbage
|
||||
exec:_Go Fish:pause:clear;go-fish
|
||||
exec:_Gomoku::clear;gomoku
|
||||
exec:_Hangman::clear;hangman
|
||||
exec:_Hunt (Not screen reader friendly)::clear;hunt
|
||||
exec:_Mille Bornes::clear;mille
|
||||
exec:_Number::clear;number
|
||||
exec:_Phantasia::clear;phantasia
|
||||
exec:_Phase of the Moon:pause:clear;pom
|
||||
exec:_Primes::clear;primes
|
||||
exec:_Robots (Not screen reader friendly)::clear;robots
|
||||
exec:_Sail::clear;sail
|
||||
exec:_Snake (Not screen reader friendly)::clear;snake
|
||||
exec:_Tetris (Not screen reader friendly)::clear;tetris-bsd
|
||||
exec:_Trek::clear;trek
|
||||
exec:_Worm (Not screen reader friendly)::clear;worm
|
||||
exec:_Wumpus::clear;wump
|
||||
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
# submenu for internet applications.
|
||||
menu:internet:Internet:Internet programs
|
||||
exec:_E-Mail::clear;mutt
|
||||
exec:_Basic Web Browser (W3M)::clear;w3m -v
|
||||
group:Full _Web browser (Firefox)
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher firefox
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:_Mumble Voice Chat
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher mumble
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
menu:media:Media:Multi-media applications
|
||||
exec:_CD Audio Ripper (ripit)::ripit
|
||||
exec:_Music Player (cmus)::cmus
|
||||
exec:_Youtube (audio only)::youtube-viewer -novideo
|
||||
group:Youtube (full _video)
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lxterminal -e youtube-viewer
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
menu:office:Office:Word processing, calendar, etc
|
||||
exec:_Month Calendar:pause:clear;ncal
|
||||
exec:_Year Calendar:pause:clear;ncal -y
|
||||
exec:Text Editor::clear;${EDITOR:-nano}
|
||||
nop:Office Suite
|
||||
group:Database
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lobase
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:Diagrams
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lodraw
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:Formula Editor
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lomath
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:Presentation
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher loimpress
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:Spreadsheet
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher localc
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
group:Word Processor
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher lowriter
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
# submenu for configuring the computer.
|
||||
menu:configuration:Configuration:System Configuration
|
||||
exec:_Change Passwords::clear;/usr/lib/F123-wrappers/configure-passwords
|
||||
exec:_Email Configuration::clear;fleacollar
|
||||
exec:_Security Configuration::clear;/usr/lib/F123-wrappers/configure-security
|
||||
exec:_Wireless Internet Connection::clear;sudo configure-wifi
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
menu:tools:Tools:System Tools
|
||||
group:Bluetooth manager
|
||||
exec:::clear
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen
|
||||
exec:::startx /usr/lib/F123-wrappers/xlauncher blueman-assistant
|
||||
exec:::python /usr/share/fenrirscreenreader/tools/fenrir-unignore-screen
|
||||
endgroup
|
||||
exec:_Search:edit,pause:recoll -t ~Search for what? :~
|
||||
nop
|
||||
exit:_Main menu..
|
||||
|
||||
menu:power:Shutdown or Restart Your Computer:Shutdown or restart your computer
|
||||
exec:_Power Off::poweroff
|
||||
exec:_Restart::reboot
|
||||
nop
|
||||
exit:_Main menu..
|
@ -1,41 +0,0 @@
|
||||
#!/bin/python3
|
||||
import sys, os
|
||||
import pty
|
||||
import pyte
|
||||
|
||||
class FenrirTermStream(pyte.Stream):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
def attach(self, screen):
|
||||
super().attach(screen)
|
||||
def feed(self, text):
|
||||
super().feed(text)
|
||||
|
||||
class FenrirTermEmu():
|
||||
def __init__(self):
|
||||
self.shell = '/bin/bash'
|
||||
if 'SHELL' in os.environ:
|
||||
self.shell = os.environ['SHELL']
|
||||
self.screen = pyte.Screen(80,24)
|
||||
self.stream = FenrirTermStream()
|
||||
self.stream.attach(self.screen)
|
||||
def outputCallback(self, fd):
|
||||
data = os.read(fd, 1024)
|
||||
self.stream.feed(data.decode('UTF8'))
|
||||
# alles
|
||||
#print(self.screen.display)
|
||||
# input
|
||||
#print(data.decode('UTF8'))
|
||||
return data
|
||||
def inputCallback(self, fd):
|
||||
data = os.read(fd, 1024)
|
||||
print('|'+str(data)+'|')
|
||||
if data == b'q':
|
||||
print('quit')
|
||||
return b'exit\r'
|
||||
return data
|
||||
def startEmulator(self):
|
||||
pty.spawn(self.shell, self.outputCallback, self.inputCallback)
|
||||
|
||||
t = FenrirTermEmu()
|
||||
t.startEmulator()
|
@ -1,34 +0,0 @@
|
||||
#!/bin/python3
|
||||
import sys, os
|
||||
import pty
|
||||
import pyte
|
||||
|
||||
class FenrirTermStream(pyte.Stream):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
def attach(self, screen):
|
||||
super().attach(screen)
|
||||
def feed(self, text):
|
||||
super().feed(text)
|
||||
|
||||
class FenrirTermEmu():
|
||||
def __init__(self):
|
||||
self.shell = '/bin/bash'
|
||||
if 'SHELL' in os.environ:
|
||||
self.shell = os.environ['SHELL']
|
||||
self.screen = pyte.Screen(80,24)
|
||||
self.stream = FenrirTermStream()
|
||||
self.stream.attach(self.screen)
|
||||
def outputCallback(self, fd):
|
||||
data = os.read(fd, 1024)
|
||||
self.stream.feed(data.decode('UTF8'))
|
||||
# alles
|
||||
print(self.screen.display)
|
||||
# input
|
||||
print(data.decode('UTF8'))
|
||||
return data
|
||||
def inputCallback(self, fd):
|
||||
data = os.read(fd, 1024)
|
||||
return data
|
||||
def startEmulator(self):
|
||||
pty.spawn(self.shell, self.outputCallback, self.inputCallback)
|
@ -1,34 +0,0 @@
|
||||
./play zone/wrapWord.py:21: wrappedLines = currText.split('\n')
|
||||
./play zone/wrapWord.py:50: wrappedLines = currText.split('\n')
|
||||
./play zone/wrapWord.py:93: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/screenDriver/vcsaDriver.py:281: apps = subprocess.Popen('ps -t tty' + currScreen + ' -o comm,tty,stat', shell=True, stdout=subprocess.PIPE).stdout.read().decode()[:-1].split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:14: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:30: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:41: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:14: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:35: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:43: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:58: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:73: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:85: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/mark_utils.py:13: inText = inText.split('\n')
|
||||
./src/fenrirscreenreader/utils/mark_utils.py:59: inText = inText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:20: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:62: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:91: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/core/outputManager.py:173: currline = text.split('\n')[offset['y']]
|
||||
./src/fenrirscreenreader/core/attributeManager.py:250: textLines = text.split('\n')
|
||||
./src/fenrirscreenreader/core/screenManager.py:166: diffList = ['+ ' + self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']] +'\n']
|
||||
./src/fenrirscreenreader/core/screenManager.py:169: diff = self.differ.compare(oldScreenText.split('\n'),\
|
||||
./src/fenrirscreenreader/core/screenManager.py:170: newScreenText.split('\n'))
|
||||
./src/fenrirscreenreader/core/screenManager.py:225: windowList = text.split('\n')
|
||||
./src/fenrirscreenreader/commands/onCursorChange/62000-spell_check.py:66: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/60000-word_echo_type.py:39: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/50000-present_char_if_cursor_change_horizontal.py:41: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/61000-word_echo_navigation.py:37: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/commands/spell_check.py:47: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/commands/remove_word_from_spell_check.py:45: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/commands/add_word_to_spell_check.py:43: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/onScreenUpdate/60000-history.py:38: prevLine = self.env['screen']['oldContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onScreenUpdate/60000-history.py:39: currLine = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./TODO v2.0:72: w.fill(i).split('\n')
|
@ -1,34 +0,0 @@
|
||||
./play zone/wrapWord.py:21: wrappedLines = currText.split('\n')
|
||||
./play zone/wrapWord.py:50: wrappedLines = currText.split('\n')
|
||||
./play zone/wrapWord.py:93: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/screenDriver/vcsaDriver.py:281: apps = subprocess.Popen('ps -t tty' + currScreen + ' -o comm,tty,stat', shell=True, stdout=subprocess.PIPE).stdout.read().decode()[:-1].split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:14: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:30: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/line_utils.py:41: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:14: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:35: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:43: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:58: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:73: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/char_utils.py:85: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/mark_utils.py:13: inText = inText.split('\n')
|
||||
./src/fenrirscreenreader/utils/mark_utils.py:59: inText = inText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:20: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:62: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/utils/word_utils.py:91: wrappedLines = currText.split('\n')
|
||||
./src/fenrirscreenreader/core/outputManager.py:173: currline = text.split('\n')[offset['y']]
|
||||
./src/fenrirscreenreader/core/attributeManager.py:250: textLines = text.split('\n')
|
||||
./src/fenrirscreenreader/core/screenManager.py:166: diffList = ['+ ' + self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']] +'\n']
|
||||
./src/fenrirscreenreader/core/screenManager.py:169: diff = self.differ.compare(oldScreenText.split('\n'),\
|
||||
./src/fenrirscreenreader/core/screenManager.py:170: newScreenText.split('\n'))
|
||||
./src/fenrirscreenreader/core/screenManager.py:225: windowList = text.split('\n')
|
||||
./src/fenrirscreenreader/commands/onCursorChange/62000-spell_check.py:66: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/60000-word_echo_type.py:39: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/50000-present_char_if_cursor_change_horizontal.py:41: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onCursorChange/61000-word_echo_navigation.py:37: newContent = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/commands/spell_check.py:47: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/commands/remove_word_from_spell_check.py:45: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/commands/add_word_to_spell_check.py:43: newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
./src/fenrirscreenreader/commands/onScreenUpdate/60000-history.py:38: prevLine = self.env['screen']['oldContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./src/fenrirscreenreader/commands/onScreenUpdate/60000-history.py:39: currLine = self.env['screen']['newContentText'].split('\n')[self.env['screen']['newCursor']['y']]
|
||||
./TODO v2.0:72: w.fill(i).split('\n')
|
@ -1,119 +0,0 @@
|
||||
import os
|
||||
import struct
|
||||
import sys
|
||||
import pty
|
||||
import tty
|
||||
import termios
|
||||
import shlex
|
||||
import signal
|
||||
import select
|
||||
import pyte
|
||||
import time
|
||||
|
||||
class Terminal:
|
||||
def __init__(self, columns, lines, p_in):
|
||||
self.screen = pyte.HistoryScreen(columns, lines)
|
||||
self.screen.set_mode(pyte.modes.LNM)
|
||||
self.screen.write_process_input = \
|
||||
lambda data: p_in.write(data.encode())
|
||||
self.stream = pyte.ByteStream()
|
||||
self.stream.attach(self.screen)
|
||||
def feed(self, data):
|
||||
self.stream.feed(data)
|
||||
def dump(self):
|
||||
cursor = self.screen.cursor
|
||||
lines = []
|
||||
for y in self.screen.dirty:
|
||||
line = self.screen.buffer[y]
|
||||
data = [(char.data, char.reverse, char.fg, char.bg)
|
||||
for char in (line[x] for x in range(self.screen.columns))]
|
||||
lines.append((y, data))
|
||||
self.screen.dirty.clear()
|
||||
return {"c": (cursor.x, cursor.y), "lines": lines}
|
||||
|
||||
|
||||
def open_terminal(command="bash", columns=80, lines=24):
|
||||
p_pid, master_fd = pty.fork()
|
||||
if p_pid == 0: # Child.
|
||||
argv = shlex.split(command)
|
||||
env = os.environ.copy()
|
||||
env["TERM"] = 'vt100'
|
||||
os.execvpe(argv[0], argv, env)
|
||||
# File-like object for I/O with the child process aka command.
|
||||
p_out = os.fdopen(master_fd, "w+b", 0)
|
||||
return Terminal(columns, lines, p_out), p_pid, p_out
|
||||
|
||||
def HandleTerminal():
|
||||
debug = False
|
||||
running = True
|
||||
try:
|
||||
old_attr = termios.tcgetattr(sys.stdin)
|
||||
tty.setraw(0)
|
||||
terminal, p_pid, p_out = open_terminal()
|
||||
std_out = os.fdopen(sys.stdout.fileno(), "w+b", 0)
|
||||
while running:
|
||||
r, w, x = select.select([sys.stdin, p_out],[],[])
|
||||
if r == []:
|
||||
continue
|
||||
if p_out in r:
|
||||
if debug:
|
||||
print('pre p_out')
|
||||
try:
|
||||
msgBytes = read_all(p_out.fileno())
|
||||
except (EOFError, OSError):
|
||||
running = False
|
||||
break
|
||||
terminal.feed(msgBytes)
|
||||
os.write(sys.stdout.fileno(), msgBytes)
|
||||
if debug:
|
||||
print('after p_out')
|
||||
if sys.stdin in r:
|
||||
if debug:
|
||||
print('pre stdin')
|
||||
try:
|
||||
msgBytes = read_all(sys.stdin.fileno())
|
||||
except (EOFError, OSError):
|
||||
running = False
|
||||
break
|
||||
terminal.feed(msgBytes)
|
||||
os.write(p_out.fileno(), msgBytes)
|
||||
if debug:
|
||||
print('after stdin')
|
||||
except Exception as e: # Process died?
|
||||
print(e)
|
||||
running = False
|
||||
finally:
|
||||
os.kill(p_pid, signal.SIGTERM)
|
||||
p_out.close()
|
||||
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_attr)
|
||||
sys.exit(0)
|
||||
|
||||
def get_terminal_size(fd):
|
||||
s = struct.pack('HHHH', 0, 0, 0, 0)
|
||||
rows, cols, _, _ = struct.unpack('HHHH', fcntl.ioctl(fd, termios.TIOCGWINSZ, s))
|
||||
return rows, cols
|
||||
|
||||
def resize_terminal(fd):
|
||||
s = struct.pack('HHHH', 0, 0, 0, 0)
|
||||
s = fcntl.ioctl(0, termios.TIOCGWINSZ, s)
|
||||
fcntl.ioctl(fd, termios.TIOCSWINSZ, s)
|
||||
rows, cols, _, _ = struct.unpack('hhhh', s)
|
||||
return rows, cols
|
||||
|
||||
def read_all(fd):
|
||||
bytes = os.read(fd, 65536)
|
||||
if bytes == b'':
|
||||
raise EOFError
|
||||
while has_more(fd):
|
||||
data = os.read(fd, 65536)
|
||||
if data == b'':
|
||||
raise EOFError
|
||||
bytes += data
|
||||
return bytes
|
||||
|
||||
def has_more(fd):
|
||||
r, w, e = select.select([fd], [], [], 0)
|
||||
return (fd in r)
|
||||
|
||||
if __name__ == "__main__":
|
||||
HandleTerminal()
|
@ -1,92 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
from cairo import *
|
||||
from fcntl import ioctl
|
||||
from array import array
|
||||
import struct
|
||||
import errno
|
||||
import sys
|
||||
|
||||
GIO_UNIMAP = 0x4B66
|
||||
VT_GETHIFONTMASK = 0x560D
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
print "Usage: %s <tty-number> <output-png>" % sys.argv[0]
|
||||
exit()
|
||||
|
||||
ttyno = int(sys.argv[1])
|
||||
png = sys.argv[2]
|
||||
|
||||
tty = open('/dev/tty%d' % ttyno, 'rb')
|
||||
himask = array("H", (0,))
|
||||
ioctl(tty, VT_GETHIFONTMASK, himask)
|
||||
hichar, = struct.unpack_from("@H", himask)
|
||||
|
||||
sz = 512
|
||||
while True:
|
||||
try:
|
||||
unipairs = array("H", [0]*(2*sz))
|
||||
unimapdesc = array("B", struct.pack("@HP", sz, unipairs.buffer_info()[0]))
|
||||
ioctl(tty.fileno(), GIO_UNIMAP, unimapdesc)
|
||||
break
|
||||
except IOError as e:
|
||||
if e.errno != errno.ENOMEM:
|
||||
raise
|
||||
sz *= 2
|
||||
tty.close()
|
||||
|
||||
ncodes, = struct.unpack_from("@H", unimapdesc)
|
||||
utable = struct.unpack_from("@%dH" % (2*ncodes), unipairs)
|
||||
|
||||
charmap = {}
|
||||
for u, b in zip(utable[::2], utable[1::2]):
|
||||
if charmap.get(b) is None:
|
||||
charmap[b] = unichr(u)
|
||||
|
||||
vcs = open('/dev/vcsa%d' % ttyno, 'rb')
|
||||
|
||||
head = vcs.read(4)
|
||||
rows = ord(head[0])
|
||||
cols = ord(head[1])
|
||||
caretX = ord(head[2])
|
||||
caretY = ord(head[3])
|
||||
|
||||
surf = ImageSurface(FORMAT_RGB24, cols * 8, rows * 16)
|
||||
|
||||
cr = Context(surf)
|
||||
cr.set_source_rgb(1,1,1)
|
||||
cr.set_font_face(ToyFontFace("Mono", FONT_SLANT_NORMAL, FONT_WEIGHT_NORMAL));
|
||||
m = Matrix()
|
||||
m.scale(10.0, 12.0)
|
||||
cr.set_font_matrix(m)
|
||||
|
||||
def CairoColor(b, a):
|
||||
return (b if a & 4 else 0, b if a & 2 else 0, b if a & 1 else 0)
|
||||
|
||||
for y in range(rows):
|
||||
for x in range(cols):
|
||||
data = vcs.read(2)
|
||||
(sh,) = struct.unpack("=H", data)
|
||||
attr = (sh >> 8) & 0xFF
|
||||
ch = sh & 0xFF
|
||||
if hichar == 0x100:
|
||||
attr >>= 1
|
||||
|
||||
ink = attr & 0x0F
|
||||
paper = (attr>>4) & 0x0F
|
||||
b = 1.0 if attr & 0x80 else 0.75
|
||||
if sh & hichar:
|
||||
ch |= 0x100
|
||||
|
||||
cr.set_source_rgb(*CairoColor(b, paper))
|
||||
cr.rectangle(x*8, y*16, 8, 16)
|
||||
cr.fill()
|
||||
|
||||
cr.set_source_rgb(*CairoColor(b, ink))
|
||||
cr.move_to(x*8, 12 + y*16)
|
||||
cr.show_text(charmap.get(ch, u'?'))
|
||||
cr.stroke()
|
||||
vcs.close()
|
||||
|
||||
surf.write_to_png(png)
|
||||
|
@ -1,142 +0,0 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
#from fenrirscreenreader.core import debug
|
||||
import string
|
||||
# X Y Word END BREAK
|
||||
# -1, -1, '', True False
|
||||
def getPrevWord(currX,currY, currText):
|
||||
lineBreak = False
|
||||
endOfScreen = False
|
||||
if currText == '':
|
||||
return -1, -1, '', endOfScreen, lineBreak
|
||||
if currText.strip( string.whitespace) == '':
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
x, y, currWord, endOfScreen, lineBreakCurrWord = getCurrentWord(currX,currY,currText)
|
||||
if endOfScreen:
|
||||
return x, y, currWord, endOfScreen, lineBreak
|
||||
wrappedLines = currText.split('\n')
|
||||
currLine = wrappedLines[y]
|
||||
if x - 1 < 0:
|
||||
if y - 1 < 0:
|
||||
lineBreak = False
|
||||
endOfScreen = True
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
else:
|
||||
y -= 1
|
||||
currLine = wrappedLines[y]
|
||||
x = len( wrappedLines[y]) - 1
|
||||
lineBreak = True
|
||||
else:
|
||||
x -= 1
|
||||
lineBreakCurrWord = lineBreak or lineBreakCurrWord
|
||||
x, y, currWord, endOfScreen, lineBreak = getCurrentWord(x,y,currText)
|
||||
lineBreak = lineBreak or lineBreakCurrWord
|
||||
return x, y, currWord, endOfScreen, lineBreak
|
||||
|
||||
def getCurrentWord(currX,currY, currText):
|
||||
lineBreak = False
|
||||
endOfScreen = False
|
||||
if currText == '':
|
||||
return -1, -1, '', endOfScreen, lineBreak
|
||||
if currText.strip( string.whitespace) == '':
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
x = currX
|
||||
y = currY
|
||||
currWord = ''
|
||||
wrappedLines = currText.split('\n')
|
||||
currLine = wrappedLines[y]
|
||||
Found = False
|
||||
while(not Found):
|
||||
if not currLine[x] in string.whitespace:
|
||||
if x == 0:
|
||||
Found = True
|
||||
else:
|
||||
if currLine[x - 1] in string.whitespace:
|
||||
Found = True
|
||||
if not Found:
|
||||
if x - 1 < 0:
|
||||
if y - 1 < 0:
|
||||
lineBreak = False
|
||||
endOfScreen = True
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
else:
|
||||
y -= 1
|
||||
currLine = wrappedLines[y]
|
||||
x = len( wrappedLines[y]) - 1
|
||||
lineBreak = True
|
||||
else:
|
||||
x -= 1
|
||||
if Found:
|
||||
currWord = currLine[x:]
|
||||
for d in string.whitespace:
|
||||
delimiterPos = currWord.find(d)
|
||||
if delimiterPos != -1:
|
||||
currWord = currWord[:delimiterPos]
|
||||
|
||||
return x, y, currWord, endOfScreen, lineBreak
|
||||
return currX, currY, '', False, False
|
||||
|
||||
def getNextWord(currX,currY, currText):
|
||||
lineBreak = False
|
||||
endOfScreen = False
|
||||
if currText == '':
|
||||
return -1, -1, '', endOfScreen, lineBreak
|
||||
if currText.strip( string.whitespace) == '':
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
x = currX
|
||||
y = currY
|
||||
currWord = ''
|
||||
wrappedLines = currText.split('\n')
|
||||
currLine = wrappedLines[y]
|
||||
Found = False
|
||||
while(not Found):
|
||||
if not Found:
|
||||
if x + 1 > len( currLine ) - 1:
|
||||
if y + 1 > len( wrappedLines ) - 1:
|
||||
lineBreak = False
|
||||
endOfScreen = True
|
||||
return currX, currY, '', endOfScreen, lineBreak
|
||||
else:
|
||||
y += 1
|
||||
currLine = wrappedLines[y]
|
||||
x = 0
|
||||
lineBreak = True
|
||||
else:
|
||||
x += 1
|
||||
if not currLine[x] in string.whitespace:
|
||||
if x == 0:
|
||||
Found = True
|
||||
else:
|
||||
if currLine[x - 1] in string.whitespace:
|
||||
Found = True
|
||||
if Found:
|
||||
currWord = currLine[x:]
|
||||
for d in string.whitespace:
|
||||
delimiterPos = currWord.find(d)
|
||||
if delimiterPos != -1:
|
||||
currWord = currWord[:delimiterPos]
|
||||
return x, y, currWord, endOfScreen, lineBreak
|
||||
return currX, currY, '', False, False
|
||||
|
||||
|
||||
|
||||
data = """das ist ein test lol
|
||||
das ist ein test l
|
||||
das ist ein test
|
||||
|
||||
asdf asdf a
|
||||
test test
|
||||
te test"""
|
||||
print('__DATA START__')
|
||||
print(data)
|
||||
print('__DATA END__\n\n')
|
||||
|
||||
x = 3
|
||||
y = 0
|
||||
x, y, currWord, endOfScreen, lineBreak = getCurrentWord(x,y,data)
|
||||
print(x,y,currWord)
|
||||
|
@ -1,19 +0,0 @@
|
||||
#!/bin/python
|
||||
|
||||
import brlapi
|
||||
import time
|
||||
|
||||
brl = brlapi.Connection()
|
||||
brl.enterTtyModeWithPath()
|
||||
print('display size' + str(brl.displaySize))
|
||||
print('driver name'+str(brl.driverName))
|
||||
|
||||
t = time.time()
|
||||
#while(time.time() - t <= 5):
|
||||
try:
|
||||
brl.writeText( 'this is a 5 second test')
|
||||
except Exception as e:
|
||||
print(e)
|
||||
time.sleep(5)
|
||||
brl.leaveTtyMode()
|
||||
|
@ -1,265 +0,0 @@
|
||||
# Version 1.5
|
||||
- Doku: Write a user wiki
|
||||
https://wiki.linux-a11y.org/doku.php?id=fenrir_user_manual&s[]=fenrir
|
||||
|
||||
- initial working setup.py
|
||||
|
||||
- available via pip (python packet manager)
|
||||
sudo pip3 install fenrir-screenreader
|
||||
https://pypi.python.org/pypi/fenrir-screenreader/1.5.post5
|
||||
|
||||
- leave review on typing
|
||||
|
||||
- add dependency check (check-dependencys.py)
|
||||
|
||||
- Add nice dummy drivers as template or for debugging
|
||||
|
||||
- reimplement detection code for X11
|
||||
|
||||
- initial translate structure (manuelcortez Thanks!)
|
||||
|
||||
- add a configurable place where you can place own commands or overwrite existing commands without need to change default code
|
||||
|
||||
- implement autodetection of plugged and unplugged input devices
|
||||
|
||||
- implement speechdriver generic
|
||||
|
||||
- try to autodetect encoding (Easy for contribution) (Prototype "charmapTTY" in play zone)
|
||||
|
||||
Braille Support (WIP):
|
||||
- initial BrlTTY driver
|
||||
- detect device size via driver
|
||||
- output to braille device
|
||||
- make flushMode configurable
|
||||
- make flushTimeout configurable
|
||||
- flush message after X seconds and show current line (review over text)
|
||||
- tweak current commands and output
|
||||
- command flush_braille
|
||||
- command for scroll left
|
||||
- command for scroll right
|
||||
- create offset for scrolling
|
||||
- respect scrolling
|
||||
make cursor following configurable (brailleCursorTrackingMode)
|
||||
- cell
|
||||
- page
|
||||
follow cursor while typing
|
||||
brailleFocusMode:
|
||||
- review = priority to review
|
||||
|
||||
- move to an event based system
|
||||
|
||||
- add initial multithreading/ multiprocessing support
|
||||
|
||||
- support cli parameters
|
||||
- add cli parameter for debugging "-d"
|
||||
- add cli parameter to overwrite options "-o"
|
||||
- add cli parameter to specify an settings.conf "-s"
|
||||
|
||||
- list of bound commands in Tutorial Mode. speak name, binding and description.
|
||||
|
||||
# Version: 1.00
|
||||
|
||||
- move from VCS to VCSA and parese the Attributes
|
||||
http://linux.die.net/man/4/vcsa
|
||||
http://man.cx/vcsa(4)/de
|
||||
http://manpages.org/display-vcsa/7
|
||||
https://en.wikipedia.org/wiki/Virtual_console
|
||||
every second byte is a attribute others are text. fast way: c[::2],c[1::2]
|
||||
http://manpages.ubuntu.com/manpages/precise/de/man4/vcs.4.html
|
||||
https://docs.python.org/3/library/fcntl.html
|
||||
http://rodrigorivas.serveblog.net/en/imagenes-desde-vt-con-vcsa/
|
||||
good doku:
|
||||
http://angband.oook.cz/d/eyangband-052/src/main-vcs.c
|
||||
http://manpages.ubuntu.com/manpages/trusty/man1/screader.1.html
|
||||
|
||||
- implement speechdriver espeak
|
||||
https://github.com/relsi/python-espeak
|
||||
|
||||
- detect collumns in TTYs automaticaly.
|
||||
it seems we have this info in vcsa
|
||||
|
||||
- get current cursor
|
||||
- shortcut handling
|
||||
https://docs.python.org/2/library/termios.html
|
||||
http://stackoverflow.com/questions/287757/pythons-configparser-unique-keys-per-section
|
||||
0=down, 1=press, 2=hold
|
||||
2KEY_SHIFT, 1KEY_A = say_current_line_cursor
|
||||
- implement command structure
|
||||
- implement speechdriver speechd
|
||||
https://git.gnome.org/browse/orca/tree/src/orca/speech.py
|
||||
https://git.gnome.org/browse/orca/tree/src/orca/speechdispatcherfactory.py
|
||||
http://devel.freebsoft.org/doc/speechd/speech-dispatcher.html#Client-Programming
|
||||
|
||||
- autodetect current TTY maybe with (PAM or a sys folder)
|
||||
cat /sys/devices/virtual/tty/tty0/active
|
||||
http://serverfault.com/questions/306854/how-to-find-out-the-currently-active-linux-virtual-terminal-while-connected-via
|
||||
|
||||
- Input
|
||||
http://python-evdev.readthedocs.io/en/latest/tutorial.html
|
||||
http://stackoverflow.com/questions/12384772/how-can-i-capture-mouseevents-and-keyevents-using-python-in-background-on-linux
|
||||
maybe TTY in RAW MODE
|
||||
|
||||
- Settings (make it configureable)
|
||||
- improve differ speed
|
||||
- lock mechanism for threads
|
||||
- restructure loops to listen for events
|
||||
inputloop -> does block with an select
|
||||
commands -> a new thread should spawned from inputloop
|
||||
updatescreen -> maybe we could watch it with inotify vsca should support polling COMMENT: sadly not possible, poll events not fired as expected
|
||||
https://github.com/seb-m/pyinotify/wiki/Tutorial
|
||||
<Example Code>
|
||||
import pyinotify
|
||||
import glob
|
||||
class Identity(pyinotify.ProcessEvent):
|
||||
def process_default(self, event):
|
||||
p = event.pathname
|
||||
print(p)
|
||||
|
||||
wm = pyinotify.WatchManager()
|
||||
|
||||
notifier = pyinotify.Notifier(wm, default_proc_fun=Identity(), timeout=5)
|
||||
wm.add_watch('/sys/devices/virtual/tty/tty0/active', pyinotify.IN_CLOSE_WRITE)
|
||||
for file in list(glob.glob('/dev/vcsa[0-64]')):
|
||||
wm.add_watch(file, pyinotify.IN_CLOSE_WRITE)
|
||||
print(file)
|
||||
|
||||
try:
|
||||
while 1:
|
||||
notifier.process_events()
|
||||
if notifier.check_events( timeout=1000):
|
||||
notifier.read_events()
|
||||
print('events')
|
||||
else:
|
||||
print('timeout')
|
||||
except KeyboardInterrupt:
|
||||
notifier.stop()
|
||||
print('fin')
|
||||
</Example Code>
|
||||
|
||||
https://www.infoq.com/articles/inotify-linux-file-system-event-monitoring
|
||||
https://github.com/seb-m/pyinotify/wiki/Tutorial
|
||||
http://www.saltycrane.com/blog/2010/04/monitoring-filesystem-python-and-pyinotify/
|
||||
|
||||
- add setting for ignore screens ( dont grab shortcuts from X or orca)
|
||||
- soundIcons
|
||||
- performance tuning
|
||||
- add sound volume
|
||||
- convert volume to percent in config
|
||||
- convert pitch to percent in config
|
||||
- convert rate to percent in config
|
||||
- make screenUpdate rate configurable
|
||||
- default soundIcon theme (soundfiles)
|
||||
- debugging
|
||||
- threading ReadContent, ReadShortcuts, executeCommands, listenNewTTYsForListen, controllThread (main)
|
||||
- autoload plugins while starting
|
||||
- implement sounddriver generic (use current sox and make it configurable)
|
||||
- add setting for autodetect X
|
||||
ps a -o tty,comm | grep -e Xorg | grep -v "grep -e Xorg"
|
||||
- respect window mode in differ (getwindow code is already in place)
|
||||
- parse punctuation setting file in conf/substitution
|
||||
|
||||
- implement commands
|
||||
curr_word
|
||||
curr_char
|
||||
next_word
|
||||
next_char
|
||||
prev_word
|
||||
prev_char
|
||||
enable_disable_speech #enable, disable speech
|
||||
enable_disable_braile #enable, disable braile
|
||||
enable_disable_sound #enable, disable sound
|
||||
enable_disable_output #enable, disable speech, braile and sound
|
||||
next_clipboard
|
||||
prev_clipboard
|
||||
first_clipboard
|
||||
last_clipboard
|
||||
curr_clipboard
|
||||
paste_clipboard
|
||||
define_window
|
||||
remove_window
|
||||
reset_review_on_screen_change
|
||||
remove_clipboard_marks
|
||||
copy_marked
|
||||
set_mark (this could also used for area?)
|
||||
read_clipboard_mark_text
|
||||
curr_screen
|
||||
curr_screen_before_cursor
|
||||
curr_screen_after_cursor
|
||||
cursor_position
|
||||
indention
|
||||
add_bookmark (per application)
|
||||
remove_bookmark
|
||||
present_bookmark
|
||||
say_char_phonetic
|
||||
spell_word_phonetic
|
||||
"alpha", "bravo", "charlie", "delta", "echo",
|
||||
"foxtrot", "golf", "hotel", "india", "juliet",
|
||||
"kilo", "lima", "mike", "november", "oscar",
|
||||
"papa", "quebec", "romeo", "sierra", "tango",
|
||||
"uniform", "victor", "whisky", "x ray",
|
||||
"yankee", "zulu"
|
||||
next_char_phonetic
|
||||
prev_char_phonetic
|
||||
next_word_phonetic
|
||||
prev_word_phonetic
|
||||
toggle_highlighted_mode
|
||||
|
||||
- implement onInput commands
|
||||
read_line_if_cursor_change_vertical (needed if you arrow up and down, we want to announce the line)
|
||||
read_char_if_cursur_change_horizontal (needed if you arrow left and right, we want to announce the char under the cursor)
|
||||
echo_char (echos the last char on pressing space or return)
|
||||
echo_word (echos the last word)
|
||||
echo_deleted_char (echos deleted char on screen
|
||||
read highlighted
|
||||
|
||||
- implement onScreenChange commands
|
||||
promoted text
|
||||
clear_marks_on_screen_change
|
||||
leve_review_mode_on_screen_change
|
||||
window mode (define a area and just read that changes)
|
||||
|
||||
- add screenManager
|
||||
abstract screen driver
|
||||
- pass environment instance in init and remove it from function calls
|
||||
|
||||
- New Triggers
|
||||
onAppChange
|
||||
onAppProfileChange
|
||||
onScreenChange
|
||||
rename current onScreenChange to onScreenUpdate
|
||||
|
||||
- rework inputManager
|
||||
try to consume shortcuts
|
||||
grab keyboard exclusive
|
||||
release keyboard on error or quit
|
||||
grab shortcuts with fenrir key
|
||||
grab "singel key shortcuts" like numpad navigation for review
|
||||
forwart nonshortcuts to system
|
||||
make grabbing configuarble
|
||||
possiblity to forewart shortcut [proxyshortcut]
|
||||
possiblity to forewart shortcut (or use them as shortcut) [pressing twice while timeout]
|
||||
cleanup inputManager
|
||||
split input driver out of the handler
|
||||
|
||||
- dictonary for special chars and string replacements
|
||||
- punctuation
|
||||
- beep on cursor to capital letters in cursor and review
|
||||
- add pause handling
|
||||
create pause
|
||||
make it configurable when the pause the pause happens
|
||||
- external scripting
|
||||
load scripts from a folder as subprocess
|
||||
create thread
|
||||
load key definition of keybindings like SOPS did
|
||||
|
||||
- add an daemonize mode
|
||||
https://github.com/thesharp/daemonize
|
||||
https://web.archive.org/web/20131017130434/http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
|
||||
|
||||
- announce capslock
|
||||
- anounce numlock
|
||||
- anounce scroll
|
||||
- add the debugging to core
|
||||
|
||||
- autostart systemd
|
||||
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
|
@ -1,71 +0,0 @@
|
||||
Cleanups:
|
||||
[X] re.sub(' +,' ',text) -> text.lstrip()? check this?
|
||||
- inheritation for drivers
|
||||
[X] Speech (All)
|
||||
[X] Braille (All)
|
||||
[X] Sound (All)
|
||||
[X] Input (All)
|
||||
[X] Screen (All)
|
||||
- generic list or see Tutorial mode list (convert clipboard management) (Easy for contribution) - core.memoryManager
|
||||
[X] next item
|
||||
[X] prev item
|
||||
[X] curr item
|
||||
[X] first item
|
||||
[X] last item
|
||||
General:
|
||||
[X] make it runable using pypy3
|
||||
[X] play sound on plugging device
|
||||
[X] interrupt speech while entering an ignored screen
|
||||
[X] read ignorescreens from an file to be able to halt fenrir from outside
|
||||
- commands
|
||||
[X] place last spoken to clipboard (Easy for contribution)
|
||||
- Improvend Headline Seperator and Multible Char Support
|
||||
[X]read "13 #" insteed of ###################
|
||||
- autospeak indentation changes (useful for python programming)
|
||||
Braille Support:
|
||||
Driver:
|
||||
[X] evdev InputDriver
|
||||
[X] grab/ ungrab devices on ignored screens
|
||||
Driver (screen, input):
|
||||
[X] PTY Screen driver (to use gnome-terminal and other terminal emulators)
|
||||
[X] emulation
|
||||
[X] basic reading
|
||||
[X] detect colum/ lines
|
||||
[X] resize on colum / line change
|
||||
[X] make shell command configurable (or detect it)
|
||||
[X] stop emulation properly
|
||||
[X] attributes
|
||||
[X] unify hilgight tracking
|
||||
[X] make pasteing text work again
|
||||
[X] make double tap work again
|
||||
[X] new event for byte shortcuts (escape sequences)
|
||||
[X] create driver
|
||||
[X] handle byte shortcuts
|
||||
[X] detect shortcuts
|
||||
[X] Load escape sequence shortcuts
|
||||
[X] controll modes (vim like mode to not collide with application shortcuts)
|
||||
[X] create keyboard layout
|
||||
[X]set flag that it is used in emulation
|
||||
[X] write/ consume them (controll it at all)
|
||||
https://docs.python.org/3.2/library/pty.html
|
||||
http://sqizit.bartletts.id.au/2011/02/14/pseudo-terminals-in-python/
|
||||
https://blog.konpat.me/pythons-pseudo-terminal-pty-examples/
|
||||
|
||||
[X] make generic speech driver default
|
||||
[X] pyttsx3 speech driver
|
||||
- get information already in watchdogs insteed of mainloop (use eventloop to transport)
|
||||
[X] InputDriver
|
||||
Settings:
|
||||
Application Profiles:
|
||||
Translation:
|
||||
- German (thanks to schulle4u and Jenny) https://robbinaer.info/index.php?article101/fenrir
|
||||
Fixes:
|
||||
- no shell in generic speech Driver
|
||||
- imporove validity checks for speech driver
|
||||
- handle thread and process shutdown more gracefully
|
||||
- cleanup
|
||||
- a lot more fixes
|
||||
- better device detection
|
||||
[X] (not conflict with other applications) find . -iname "*.py" -exec sed 's/from \(core.*\) import/from fenrir-screenreader.\1 import/g' {} \;
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
- import clipboard from x (xclip)
|
||||
- barrier mode (respect pseudo cli window borders like used in dialog or pdmenu)
|
||||
- toggle for barrier mode
|
||||
- soundicon for barrier mode when enter and leave the barrier detection
|
||||
- imporove accuracy of speak history (arrow up/ down in bash)
|
||||
- higher accuracy for hilight tracking
|
||||
- soundicon for attribute
|
||||
- overall improved attribute code
|
||||
- variouse speedups and bugfixes
|
@ -1,13 +0,0 @@
|
||||
- fix hight CPU load in VCSA pressing mute key
|
||||
- add remote manager
|
||||
- remote manager: TCP connection
|
||||
- remote manager: UNIX Socket connection(default)
|
||||
- remote manager: set settings set a setting (-o syntax) "setting set sound#enabled=False"
|
||||
- remote manager: reset settings "setting reset"
|
||||
- remote manager: save settings "setting save /path/settings.conf"
|
||||
- remote Manager: say command (say something) "command say this is a test"
|
||||
- remote manager: interrupt command (interrupt current speech) "command interrupt"
|
||||
- remote manager: window command (to define window) "command window startX startY endX endY"
|
||||
- remote manager: resetwindow command (to reset window) "command resetwindow"
|
||||
- settings: store settings more centralized
|
||||
- variouse speedups and bugfixes
|
@ -1,5 +0,0 @@
|
||||
- initial working emacspeak driver
|
||||
- fixes for fenrir-ignore-screen/ fenrir-unignore-screen management tools
|
||||
- settings and sections are now case sensitive (this makes it possible to make better validity checks.)
|
||||
- validate datatype for settings you set with "-o" parameter or remotemanager "setting set"
|
||||
- variouse speedups and bugfixes
|
8
requirements.txt
Normal file
8
requirements.txt
Normal file
@ -0,0 +1,8 @@
|
||||
evdev>=1.1.2
|
||||
daemonize>=2.5.0
|
||||
dbus-python>=1.2.8
|
||||
pyudev>=0.21.0
|
||||
pexpect
|
||||
ppyperclip
|
||||
pyte>=0.7.0
|
||||
rapidfuzz>=2.0.0
|
103
setup.py
103
setup.py
@ -1,24 +1,32 @@
|
||||
#!/bin/python
|
||||
#https://python-packaging.readthedocs.io/en/latest/minimal.html
|
||||
#!/usr/bin/env python3
|
||||
import os, glob, sys
|
||||
import os.path
|
||||
from shutil import copyfile
|
||||
from setuptools import find_packages
|
||||
from setuptools import find_namespace_packages
|
||||
from setuptools import setup
|
||||
|
||||
fenrirVersion = '1.9.3'
|
||||
packageVersion = 'post1'
|
||||
|
||||
# handle flags for package manager like yaourt and pacaur.
|
||||
forceSettings = False
|
||||
# handle flags for package manager like aurman and pacaur.
|
||||
# Allow both environment variable and command line flag
|
||||
forceSettingsFlag = (
|
||||
"--force-settings" in sys.argv or
|
||||
os.environ.get('FENRIR_FORCE_SETTINGS') == '1'
|
||||
)
|
||||
if "--force-settings" in sys.argv:
|
||||
forceSettings = True
|
||||
sys.argv.remove("--force-settings")
|
||||
|
||||
data_files = []
|
||||
dataFiles = []
|
||||
|
||||
# Handle locale files
|
||||
localeFiles = glob.glob('locale/*/LC_MESSAGES/*.mo')
|
||||
for localeFile in localeFiles:
|
||||
lang = localeFile.split(os.sep)[1]
|
||||
destDir = f'/usr/share/locale/{lang}/LC_MESSAGES'
|
||||
dataFiles.append((destDir, [localeFile]))
|
||||
|
||||
# Handle other configuration files
|
||||
directories = glob.glob('config/*')
|
||||
for directory in directories:
|
||||
files = glob.glob(directory+'/*')
|
||||
files = glob.glob(directory+'/*')
|
||||
destDir = ''
|
||||
if 'config/punctuation' in directory :
|
||||
destDir = '/etc/fenrirscreenreader/punctuation'
|
||||
@ -26,25 +34,25 @@ for directory in directories:
|
||||
destDir = '/etc/fenrirscreenreader/keyboard'
|
||||
elif 'config/settings' in directory:
|
||||
destDir = '/etc/fenrirscreenreader/settings'
|
||||
if not forceSettings:
|
||||
if not forceSettingsFlag:
|
||||
try:
|
||||
del(files[files.index('config/settings/settings.conf')])
|
||||
files = [f for f in files if not f.endswith('settings.conf')]
|
||||
except:
|
||||
pass
|
||||
elif 'config/scripts' in directory:
|
||||
destDir = '/usr/share/fenrirscreenreader/scripts'
|
||||
destDir = '/usr/share/fenrirscreenreader/scripts'
|
||||
if destDir != '':
|
||||
data_files.append((destDir, files))
|
||||
dataFiles.append((destDir, files))
|
||||
|
||||
files = glob.glob('config/sound/default/*')
|
||||
destDir = '/usr/share/sounds/fenrirscreenreader/default'
|
||||
data_files.append((destDir, files))
|
||||
files = glob.glob('config/sound//template/*')
|
||||
files = glob.glob('config/sound/default/*')
|
||||
destDir = '/usr/share/sounds/fenrirscreenreader/default'
|
||||
dataFiles.append((destDir, files))
|
||||
files = glob.glob('config/sound//template/*')
|
||||
destDir = '/usr/share/sounds/fenrirscreenreader/template'
|
||||
data_files.append((destDir, files))
|
||||
dataFiles.append((destDir, files))
|
||||
files = glob.glob('tools/*')
|
||||
data_files.append(('/usr/share/fenrirscreenreader/tools', files))
|
||||
data_files.append(('/usr/share/man/man1', ['docu/fenrir.1']))
|
||||
dataFiles.append(('/usr/share/fenrirscreenreader/tools', files))
|
||||
dataFiles.append(('/usr/share/man/man1', ['docs/fenrir.1']))
|
||||
|
||||
def read(fname):
|
||||
return open(os.path.join(os.path.dirname(__file__), fname)).read()
|
||||
@ -52,53 +60,55 @@ def read(fname):
|
||||
setup(
|
||||
# Application name:
|
||||
name="fenrir-screenreader",
|
||||
# Version number:
|
||||
version=fenrirVersion + '.' + packageVersion,
|
||||
# description
|
||||
description="A TTY Screen Reader for Linux.",
|
||||
long_description=read('README.md'),
|
||||
keywords=['screenreader', 'a11y', 'accessibility', 'terminal', 'TTY', 'console'],
|
||||
long_description_content_type="text/markdown",
|
||||
keywords=['screenreader', 'a11y', 'accessibility', 'terminal', 'TTY', 'console'],
|
||||
license="License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
||||
url="https://github.com/chrys87/fenrir/",
|
||||
download_url = 'https://github.com/chrys87/fenrir/archive/' + fenrirVersion + '.tar.gz',
|
||||
url="https://git.stormux.org/storm/fenrir/",
|
||||
classifiers=[
|
||||
"Programming Language :: Python",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
||||
"Environment :: Console",
|
||||
"Environment :: Console",
|
||||
],
|
||||
|
||||
|
||||
# Application author details:
|
||||
author="Chrys, Storm_dragon, Jeremiah and others",
|
||||
author_email="chrysg@linux-a11y.org",
|
||||
author="Storm Dragon, Jeremiah, Chrys and others",
|
||||
author_email="storm_dragon@stormux.org",
|
||||
|
||||
# Packages
|
||||
packages=find_packages('src/'),
|
||||
package_dir={'': 'src/'},
|
||||
scripts=['src/fenrir','src/fenrir-daemon'],
|
||||
package_dir={'': 'src'},
|
||||
packages=find_namespace_packages(
|
||||
where='src',
|
||||
include=['fenrirscreenreader*']
|
||||
),
|
||||
scripts=['src/fenrir'],
|
||||
|
||||
# Include additional files into the package
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
|
||||
data_files=data_files,
|
||||
|
||||
data_files=dataFiles,
|
||||
|
||||
# Dependent packages (distributions)
|
||||
python_requires='>=3.6',
|
||||
install_requires=[
|
||||
"evdev",
|
||||
"daemonize",
|
||||
"dbus-python",
|
||||
"pyudev",
|
||||
"evdev>=1.1.2",
|
||||
"daemonize>=2.5.0",
|
||||
"dbus-python>=1.2.8",
|
||||
"pyperclip",
|
||||
"pyudev>=0.21.0",
|
||||
"rapidfuzz>=2.0.0",
|
||||
"setuptools",
|
||||
"pexpect",
|
||||
"pyttsx3",
|
||||
"pyte",
|
||||
"pyte>=0.7.0",
|
||||
],
|
||||
|
||||
)
|
||||
|
||||
if not forceSettings:
|
||||
if not forceSettingsFlag:
|
||||
print('')
|
||||
# create settings file from example if not exist
|
||||
if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'):
|
||||
@ -119,5 +129,4 @@ print('once as their user account and once as root to configure Pulseaudio.')
|
||||
print('Please install the following packages manually:')
|
||||
print('- Speech-dispatcher: for the default speech driver')
|
||||
print('- Espeak: as basic TTS engine')
|
||||
print('- BrlTTY: for Braille')
|
||||
print('- sox: is a player for the generic sound driver')
|
||||
|
109
src/fenrir
109
src/fenrir
@ -2,20 +2,115 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
# By Chrys, Storm Dragon, and contributors.
|
||||
|
||||
import os, sys, inspect
|
||||
import os
|
||||
import sys
|
||||
import inspect
|
||||
import argparse
|
||||
from daemonize import Daemonize
|
||||
|
||||
# Get the fenrir installation path
|
||||
fenrirPath = os.path.dirname(os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||
|
||||
if not fenrirPath in sys.path:
|
||||
sys.path.append(fenrirPath)
|
||||
|
||||
from fenrirscreenreader.core import fenrirManager
|
||||
from fenrirscreenreader import fenrirVersion
|
||||
|
||||
def create_argument_parser():
|
||||
"""Create and return the argument parser for Fenrir"""
|
||||
argumentParser = argparse.ArgumentParser(
|
||||
description="Fenrir - A console screen reader for Linux",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-v', '--version',
|
||||
action='version',
|
||||
version=f'Fenrir screen reader version {fenrirVersion.version}-{fenrirVersion.codeName}',
|
||||
help='Show version information and exit'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-f', '--foreground',
|
||||
action='store_true',
|
||||
help='Run Fenrir in the foreground (default: run as daemon)'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-s', '--setting',
|
||||
metavar='SETTING-FILE',
|
||||
default='/etc/fenrir/settings/settings.conf',
|
||||
help='Path to custom settings file'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-o', '--options',
|
||||
metavar='SECTION#SETTING=VALUE;..',
|
||||
default='',
|
||||
help='Override settings file options. Format: SECTION#SETTING=VALUE;... (case sensitive)'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-d', '--debug',
|
||||
action='store_true',
|
||||
help='Enable debug mode'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-p', '--print',
|
||||
action='store_true',
|
||||
help='Print debug messages to screen'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-e', '--emulated-pty',
|
||||
action='store_true',
|
||||
help='Use PTY emulation with escape sequences for input (enables desktop/X/Wayland usage)'
|
||||
)
|
||||
argumentParser.add_argument(
|
||||
'-E', '--emulated-evdev',
|
||||
action='store_true',
|
||||
help='Use PTY emulation with evdev for input (single instance)'
|
||||
)
|
||||
return argumentParser
|
||||
|
||||
def validate_arguments(cliArgs):
|
||||
"""Validate command line arguments"""
|
||||
if cliArgs.options:
|
||||
for option in cliArgs.options.split(';'):
|
||||
if option and ('#' not in option or '=' not in option):
|
||||
return False, f"Invalid option format: {option}\nExpected format: SECTION#SETTING=VALUE"
|
||||
|
||||
if cliArgs.emulated_pty and cliArgs.emulated_evdev:
|
||||
return False, "Cannot use both --emulated-pty and --emulated-evdev simultaneously"
|
||||
|
||||
return True, None
|
||||
|
||||
def run_fenrir():
|
||||
"""Main function that runs Fenrir"""
|
||||
fenrirApp = fenrirManager.fenrirManager(cliArgs)
|
||||
fenrirApp.proceed()
|
||||
del fenrirApp
|
||||
|
||||
def main():
|
||||
app = fenrirManager.fenrirManager()
|
||||
app.proceed()
|
||||
del app
|
||||
global cliArgs
|
||||
argumentParser = create_argument_parser()
|
||||
cliArgs = argumentParser.parse_args()
|
||||
|
||||
# Validate arguments
|
||||
isValid, errorMsg = validate_arguments(cliArgs)
|
||||
if not isValid:
|
||||
argumentParser.error(errorMsg)
|
||||
sys.exit(1)
|
||||
|
||||
if cliArgs.foreground or cliArgs.emulated_pty:
|
||||
# Run directly in foreground
|
||||
run_fenrir()
|
||||
else:
|
||||
# Run as daemon
|
||||
pidFile = "/run/fenrir.pid"
|
||||
daemonProcess = Daemonize(
|
||||
app="fenrir",
|
||||
pid=pidFile,
|
||||
action=run_fenrir,
|
||||
chdir=fenrirPath
|
||||
)
|
||||
daemonProcess.start()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
import os, sys, inspect
|
||||
fenrirPath = os.path.dirname(os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||
|
||||
if not fenrirPath in sys.path:
|
||||
sys.path.append(fenrirPath)
|
||||
|
||||
from fenrirscreenreader.core import fenrirManager
|
||||
from daemonize import Daemonize
|
||||
|
||||
pidFile = "/run/fenrir.pid"
|
||||
|
||||
def main():
|
||||
app = fenrirManager.fenrirManager()
|
||||
app.proceed()
|
||||
del app
|
||||
|
||||
if __name__ == "__main__":
|
||||
# for debug in foreground
|
||||
#daemon = Daemonize(app="fenrir-daemon", pid=pidFile, action=main, foreground=True,chdir=fenrirPath)
|
||||
daemon = Daemonize(app="fenrir-daemon", pid=pidFile, action=main, chdir=fenrirPath)
|
||||
daemon.start()
|
||||
|
@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env pypy3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
import os, sys, inspect
|
||||
fenrirPath = os.path.dirname(os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||
|
||||
if not fenrirPath in sys.path:
|
||||
sys.path.append(fenrirPath)
|
||||
|
||||
from fenrirscreenreader.core import fenrirManager
|
||||
from daemonize import Daemonize
|
||||
|
||||
pidFile = "/run/fenrir.pid"
|
||||
|
||||
def main():
|
||||
app = fenrirManager.fenrirManager()
|
||||
app.proceed()
|
||||
del app
|
||||
|
||||
if __name__ == "__main__":
|
||||
# for debug in foreground
|
||||
#daemon = Daemonize(app="fenrir-daemon", pid=pidFile, action=main, foreground=True,chdir=os.path.dirname(os.path.realpath(fenrirVersion.__file__)))
|
||||
daemon = Daemonize(app="fenrir-daemon", pid=pidFile, action=main, chdir=fenrirPath)
|
||||
daemon.start()
|
||||
|
@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env pypy3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
import os, sys, inspect
|
||||
fenrirPath = os.path.dirname(os.path.realpath(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||
|
||||
if not fenrirPath in sys.path:
|
||||
sys.path.append(fenrirPath)
|
||||
|
||||
from fenrirscreenreader.core import fenrirManager
|
||||
|
||||
def main():
|
||||
app = fenrirManager.fenrirManager()
|
||||
app.proceed()
|
||||
del app
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -1,66 +0,0 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader.core.brailleDriver import brailleDriver
|
||||
|
||||
class driver(brailleDriver):
|
||||
def __init__(self):
|
||||
brailleDriver.__init__(self)
|
||||
self._brl = None
|
||||
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
try:
|
||||
import brlapi
|
||||
self._brl = brlapi.Connection()
|
||||
self._deviceSize = self._brl.displaySize
|
||||
except Exception as e:
|
||||
print(e)
|
||||
self.env['runtime']['debug'].writeDebugOut(str(e),debug.debugLevel.ERROR)
|
||||
return
|
||||
self._isInitialized = True
|
||||
|
||||
def getDeviceSize(self):
|
||||
if not self._isInitialized:
|
||||
return (0,0)
|
||||
if not self._deviceSize:
|
||||
return (0,0)
|
||||
return self._deviceSize
|
||||
|
||||
def flush(self):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
try:
|
||||
self._brl.writeText('',0)
|
||||
except Exception as e:
|
||||
self.env['runtime']['debug'].writeDebugOut('BRAILLE.flush '+str(e),debug.debugLevel.ERROR)
|
||||
|
||||
def writeText(self,text):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
try:
|
||||
self._brl.writeText(text)
|
||||
except Exception as e:
|
||||
self.env['runtime']['debug'].writeDebugOut('BRAILLE.writeText '+str(e),debug.debugLevel.ERROR)
|
||||
|
||||
def connectDevice(self):
|
||||
self._brl = brlapi.Connection()
|
||||
|
||||
def enterScreen(self, screen):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
self._brl.enterTtyMode(int(screen))
|
||||
|
||||
def leveScreen(self):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
self._brl.leaveTtyMode()
|
||||
|
||||
def shutdown(self):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
self.leveScreen()
|
@ -1,49 +0,0 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader.core.brailleDriver import brailleDriver
|
||||
|
||||
class driver(brailleDriver):
|
||||
def __init__(self):
|
||||
brailleDriver.__init__(self)
|
||||
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
self._isInitialized = True
|
||||
self.deviceSize = (40,0)
|
||||
print('Braille Debug Driver: Initialized')
|
||||
|
||||
def getDeviceSize(self):
|
||||
if not self._isInitialized:
|
||||
return (0,0)
|
||||
print('Braille Debug Driver: getDeviceSize ' + str(self.deviceSize))
|
||||
return self.deviceSize
|
||||
|
||||
def writeText(self,text):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
print('Braille Debug Driver: writeText:' + str(text))
|
||||
print('Braille Debug Driver: -----------------------------------')
|
||||
|
||||
def connectDevice(self):
|
||||
print('Braille Debug Driver: connectDevice')
|
||||
|
||||
def enterScreen(self, screen):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
print('Braille Debug Driver: enterScreen')
|
||||
|
||||
def leveScreen(self):
|
||||
if not self._isInitialized:
|
||||
return
|
||||
print('Braille Debug Driver: leveScreen')
|
||||
|
||||
def shutdown(self):
|
||||
if self._isInitialized:
|
||||
self.leveScreen()
|
||||
self._isInitialized = False
|
||||
print('Braille Debug Driver: Shutdown')
|
@ -1,12 +0,0 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader.core.brailleDriver import brailleDriver
|
||||
|
||||
class driver(brailleDriver):
|
||||
def __init__(self):
|
||||
brailleDriver.__init__(self)
|
@ -1,21 +1,21 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return 'No description found'
|
||||
def run(self):
|
||||
pass
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return 'No description found'
|
||||
def run(self):
|
||||
pass
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
|
@ -1,26 +1,26 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
|
||||
# this command is just to initialize stuff.
|
||||
# like init index lists in memoryManager
|
||||
# it is not useful to execute it
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
# clipboard
|
||||
self.env['runtime']['memoryManager'].addIndexList('clipboardHistory', self.env['runtime']['settingsManager'].getSettingAsInt('general', 'numberOfClipboards'))
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return 'No description found'
|
||||
def run(self):
|
||||
pass
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
|
||||
# this command is just to initialize stuff.
|
||||
# like init index lists in memoryManager
|
||||
# it is not useful to execute it
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
# clipboard
|
||||
self.env['runtime']['memoryManager'].addIndexList('clipboardHistory', self.env['runtime']['settingsManager'].getSettingAsInt('general', 'numberOfClipboards'))
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return 'No description found'
|
||||
def run(self):
|
||||
pass
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
@ -31,7 +31,6 @@ class command():
|
||||
|
||||
def run(self):
|
||||
if not initialized:
|
||||
self.env['runtime']['outputManager'].presentText(_('pyenchant is not installed'), interrupt=True)
|
||||
return
|
||||
if self.env['runtime']['settingsManager'].getSetting('general', 'spellCheckLanguage') != self.language:
|
||||
try:
|
||||
@ -42,7 +41,7 @@ class command():
|
||||
# get the word
|
||||
newContent = self.env['screen']['newContentText'].split('\n')[cursorPos['y']]
|
||||
x, y, currWord, endOfScreen, lineBreak = word_utils.getCurrentWord(cursorPos['x'], 0, newContent)
|
||||
currWord = currWord.strip(string.whitespace + '!"#$%&\()*+,-./:;<=§>?@[\\]^_{|}~')
|
||||
currWord = currWord.strip(string.whitespace + r'!"#$%&\()*+,-./:;<=Â?@[\\]^_{|}~')
|
||||
|
||||
if currWord != '':
|
||||
if self.spellChecker.is_added(currWord):
|
||||
|
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader import fenrirVersion
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return _('Present the version of Fenrir currrrently in use.')
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self.env['runtime']['outputManager'].presentText(f'Fenrir screen reader version {fenrirVersion.version}-{fenrirVersion.codeName}', interrupt=True)
|
||||
except exception as e:
|
||||
self.env['runtime']['outputManager'].presentText(_('Version information is unavailable.'), interrupt=True)
|
||||
|
||||
def setCallback(self, callback):
|
||||
pass
|
@ -1,30 +1,30 @@
|
||||
#!/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader.utils import screen_utils
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return _('Reads attributes of current cursor position')
|
||||
def run(self):
|
||||
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
|
||||
try:
|
||||
attributes = self.env['runtime']['attributeManager'].getAttributeByXY( cursorPos['x'], cursorPos['y'])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
attributeFormatString = self.env['runtime']['settingsManager'].getSetting('general', 'attributeFormatString')
|
||||
attributeFormatString = self.env['runtime']['attributeManager'].formatAttributes(attributes, attributeFormatString)
|
||||
|
||||
self.env['runtime']['outputManager'].presentText(attributeFormatString, soundIcon='', interrupt=True)
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
# By Chrys, Storm Dragon, and contributers.
|
||||
|
||||
from fenrirscreenreader.core import debug
|
||||
from fenrirscreenreader.utils import screen_utils
|
||||
|
||||
class command():
|
||||
def __init__(self):
|
||||
pass
|
||||
def initialize(self, environment):
|
||||
self.env = environment
|
||||
def shutdown(self):
|
||||
pass
|
||||
def getDescription(self):
|
||||
return _('Reads attributes of current cursor position')
|
||||
def run(self):
|
||||
cursorPos = self.env['runtime']['cursorManager'].getReviewOrTextCursor()
|
||||
try:
|
||||
attributes = self.env['runtime']['attributeManager'].getAttributeByXY( cursorPos['x'], cursorPos['y'])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
attributeFormatString = self.env['runtime']['settingsManager'].getSetting('general', 'attributeFormatString')
|
||||
attributeFormatString = self.env['runtime']['attributeManager'].formatAttributes(attributes, attributeFormatString)
|
||||
|
||||
self.env['runtime']['outputManager'].presentText(attributeFormatString, soundIcon='', interrupt=True)
|
||||
def setCallback(self, callback):
|
||||
pass
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Fenrir TTY screen reader
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user