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 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') 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 reset_review_on_screen_change - 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