ToDo list for Fenrir Version 1.5 
Things with not so deep knowledge needed are marekd wiht "(Easy for contribution)". so just start with that :).

Fix Bugs:
- device detection is broken
- arrow up/down announcement is broken
- let drivers choos between threads and process
  (split eventManager and processManager)
- HilightTracking is broken for autoencoding
- Wlan is disabled on Lenovo (LED is not synced?, needs debug bgid)

-----------DONE----------------
- Doku: Write a user wiki 
  https://wiki.linux-a11y.org/doku.php?id=fenrir_user_manual&s[]=fenrir
  
- 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)

- 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
    
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

- initial 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

Settings:
- configuration should be overwritable with parameter and alternative paths (Easy for contribution)
Tutorial Mode:
- navigate through a list of bound commands. speak binding and description.