ToDos in Priority order:
- soundIcons
- implement commands
  curr_word
  curr_char
  next_word
  next_char
  prev_word
  prev_char
  set_copy_begin_mark
  set_copy_end_mark
  copy_marked
  paste
  attributes_curr_char
  enable_disable_output #enable, disable speech, braile and sound
  enable_disable_speech #enable, disable speech
  enable_disable_braile #enable, disable braile
  enable_disable_sound #enable, disable sound  
  set_area_mark
  reset_area_marks
  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 on pressing space or return)
  
- implement onScreenChange commands
  read highlighted text mode
  window mode (define a area and just read that changes)
  
- default soundIcon theme (soundfiles)  
- autostart systemd
- implement braille
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

- add the debugging to core
- performance tuning
- make screenUpdate rate configurable
- configuration should be overwriteable with parameter and alternative paths
- write settings
- menue for settings configuration 
- translateable
- implement speechdriver generic (say)
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

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

- debugging
- threading ReadContent, ReadShortcuts, executeCommands, listenNewTTYsForListen, controllThread (main)
- autoload plugins while starting
- 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/
