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 [X] improve attributes_curr_char (Easy for contribution) [X] add an attribute sound (Easy for contribution) [X] beep on cursor/ review by char (capital wins) (Easy for contribution) [] beep on review by word (once for multiple, capital wins) (Easy for contribution) [] configurable (by char, by word, none) (Easy for contribution) [W] make heiglight tracking more accurate 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) [S] emacspeak driver (breaks for a whole screen) https://pypi.python.org/pypi/ptyprocess#downloads [] Dectalk SpeechDriver (Easy for contribution, device needed - i dont own one) https://github.com/tvraman/emacspeak/blob/master/servers/obsolete/python/dectalk.py [] MacOS speech Driver Settings: [] write settings (Easy for contribution) [] menue for settings configuration (Easy for contribution) -----------DONE---------------- 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' {} \;