ToDo list for Fenrir Version 2.0 Things with not so deep knowledge needed are marekd wiht "(Easy for contribution)". so just start with that :). General: - implement onScreenUpdate commands read highlighted text mode - try to make it more asynchronus with multpible threads - be more event based (vcsa sets POLLPRI) http://scotdoyle.com/python-epoll-howto.html Needed events: screen update (vcsa sets POLLPRI) plug input device (udev event) screen changed (logind event, collides with screen update) keyboard input (select, wait forever) braille input (brlapi_readKey) braille flush (timer, sleep) Each event is watched in an own thread. This improves performance and reduce the load. The event loop is to be done as "queue" since those are thread safe. The threads are reading incomming data and add the events and data to the queue the mainloop just reads the queue in an blocking way and executes the needed codepath with the data. clean up the code for the events so that just the correct codepath is used: - screen - input - new device - implement commands Tutorial Mode: navigate through a list of bound commands. speak binding and description. attributes_curr_char (Easy for contribution) https://github.com/jwilk/vcsapeek/blob/master/linuxvt.py - generic list (convert clipboard management) (Easy for contribution) next item pref item curr item first item last item 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) 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 Driver: - implement PTY Screen driver (to use gnome-terminal and other terminal emulators) 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/ - implement PTY Input driver - ATK input driver (don't grab on graphical interface) https://git.linux-a11y.org/AIT/pyatspi2/src/master/examples/keypress.py - try to autodetect encoding (Easy for contribution) (Prototype "charmapTTY" in play zone) https://stackoverflow.com/questions/6396659/how-do-you-get-the-encoding-of-the-terminal-from-within-a-python-script - Dectalk SpeechDriver https://github.com/tvraman/emacspeak/blob/master/servers/obsolete/python/dectalk.py Settings: - write settings (Easy for contribution) - menue for settings configuration (Easy for contribution) Application Profiles - reimplement process detection without subprocessing // this is started by chrys - 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---------------- - initial working setup.py - 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!) http://www.supernifty.org/blog/2011/09/16/python-localization-made-easy/ - 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 (python-pyudev) for evdev driver http://stackoverflow.com/questions/22678686/python-script-to-detect-hot-plug-event http://askubuntu.com/questions/508236/how-can-i-run-code-whenever-a-usb-device-is-unplugged-without-requiring-root https://www.mattfischer.com/blog/?p=182 - implement speechdriver generic (Easy for contribution) Braille Support: 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 Settings: - configuration should be overwritable with parameter and alternative paths (Easy for contribution)