ToDos in Priority order:
  
- 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 [pressing twice while timeout]
  cleanup inputManager
  
- fix line wrapping bug (multible lines and make a linebreak in the middle of a line)
- handle ncurses "optimisations.."

- implement commands
  copy_marked
  set_clipboard_mark
  clear_clipboard_marks
  read_clipboard_mark_text  
  attributes_curr_char
  set_area_mark
  reset_area_marks
  toggle_highlighted_mode
 
- implement onScreenChange commands
  read highlighted text mode
  window mode (define a area and just read that changes)
  
- add the debugging to core  
- autostart systemd
- implement braille
httstormp://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

- configuration should be overwriteable with parameter and alternative paths
- write settings
- menue for settings configuration #storm
- translateable
- dictonary for special chars and string replacements
- 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

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

- 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
  
- implement onScreenChange commands
  promoted text
  clear_marks_on_screen_change