2016-12-23 10:36:16 -05:00
|
|
|
ToDo list for Fenrir Version 2.0
|
2017-02-23 08:57:48 -05:00
|
|
|
Things with not so deep knowledge needed are marekd wiht "(Easy for contribution)". so just start with that :).
|
|
|
|
|
2016-12-23 10:36:16 -05:00
|
|
|
General:
|
|
|
|
- implement onScreenUpdate commands
|
|
|
|
read highlighted text mode
|
2017-07-23 14:32:21 -04:00
|
|
|
|
|
|
|
- Migrate *Data.py to classes and use getter/setter (Easy for contribution)
|
|
|
|
commandsData.py
|
|
|
|
eventData.py
|
|
|
|
generalData.py
|
|
|
|
inputData.py
|
|
|
|
outputData.py
|
|
|
|
punctuationData.py
|
|
|
|
runtimeData.py
|
|
|
|
screenData.py
|
|
|
|
settingsData -> defaultSettings.py
|
|
|
|
|
2017-07-09 12:27:31 -04:00
|
|
|
- try to make it more asynchronus with multpible threads
|
2017-01-25 16:41:59 -05:00
|
|
|
- be more event based (vcsa sets POLLPRI)
|
2017-01-26 05:26:14 -05:00
|
|
|
http://scotdoyle.com/python-epoll-howto.html
|
2017-03-24 21:54:42 -04:00
|
|
|
Needed events:
|
2017-07-09 12:27:31 -04:00
|
|
|
screen update (vcsa sets POLLPRI)
|
2017-03-24 21:54:42 -04:00
|
|
|
plug input device (udev event)
|
2017-07-09 12:27:31 -04:00
|
|
|
screen changed (logind event, collides with screen update)
|
|
|
|
keyboard input (select, wait forever)
|
2017-03-24 21:54:42 -04:00
|
|
|
braille input (brlapi_readKey)
|
2017-07-09 12:27:31 -04:00
|
|
|
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.
|
2017-06-23 18:45:10 -04:00
|
|
|
clean up the code for the events so that just the correct codepath is used:
|
|
|
|
- screen
|
|
|
|
- input
|
|
|
|
- new device
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2016-12-23 10:36:16 -05:00
|
|
|
- implement commands
|
2017-02-23 08:57:48 -05:00
|
|
|
attributes_curr_char (Easy for contribution)
|
2017-03-02 16:57:59 -05:00
|
|
|
https://github.com/jwilk/vcsapeek/blob/master/linuxvt.py
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2017-07-21 03:40:20 -04:00
|
|
|
- generic list or see Tutorial mode list (convert clipboard management) (Easy for contribution)
|
2016-12-23 10:36:16 -05:00
|
|
|
next item
|
|
|
|
pref item
|
|
|
|
curr item
|
|
|
|
first item
|
|
|
|
last item
|
|
|
|
|
|
|
|
Braille Support:
|
2017-01-30 17:38:16 -05:00
|
|
|
brailleFocusMode:
|
|
|
|
- manual = no automatic toggle command used
|
|
|
|
- last = follow last used cursor
|
2016-12-23 10:36:16 -05:00
|
|
|
print cursor in review
|
2017-01-30 11:18:46 -05:00
|
|
|
print cursor in textmode
|
2017-03-24 22:00:59 -04:00
|
|
|
word wrapping (if word does not fit print it at next page)
|
2017-02-02 04:24:52 -05:00
|
|
|
command toggle used cursor (in manual brailleFocusMode)
|
2016-12-23 10:36:16 -05:00
|
|
|
capture input from braile
|
2017-02-19 20:17:23 -05:00
|
|
|
make routing keys assignable by keyboard
|
2017-01-30 10:59:17 -05:00
|
|
|
make brailleTable configurable
|
2017-02-02 11:33:28 -05:00
|
|
|
pkg-config --variable=tablesdir liblouis
|
2017-03-24 21:54:42 -04:00
|
|
|
returns on Arch:/usr/share/liblouis/tables
|
2016-12-23 10:36:16 -05:00
|
|
|
http://mielke.cc/brltty/doc/Manual-BrlAPI/English/BrlAPI.html
|
|
|
|
https://git.gnome.org/browse/orca/tree/src/orca/braille.py
|
2017-01-30 10:59:17 -05:00
|
|
|
https://wiki.gnome.org/Attic/LSR/ScratchPad/Braille/BrlAPI
|
|
|
|
https://github.com/google/brailleback/blob/master/third_party/brltty/Bindings/Python/brlapi.pyx
|
2016-12-23 10:36:16 -05:00
|
|
|
|
|
|
|
Driver:
|
|
|
|
- implement PTY Screen driver (to use gnome-terminal and other terminal emulators)
|
2017-01-26 06:12:02 -05:00
|
|
|
https://docs.python.org/3.2/library/pty.html
|
2017-05-11 11:09:39 -04:00
|
|
|
http://sqizit.bartletts.id.au/2011/02/14/pseudo-terminals-in-python/
|
|
|
|
https://blog.konpat.me/pythons-pseudo-terminal-pty-examples/
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2017-01-30 11:18:46 -05:00
|
|
|
- implement PTY Input driver
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2017-02-19 20:17:23 -05:00
|
|
|
- ATK input driver (don't grab on graphical interface)
|
2017-04-24 07:58:49 -04:00
|
|
|
https://git.linux-a11y.org/AIT/pyatspi2/src/master/examples/keypress.py
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2017-04-24 08:11:18 -04:00
|
|
|
- Dectalk SpeechDriver
|
|
|
|
https://github.com/tvraman/emacspeak/blob/master/servers/obsolete/python/dectalk.py
|
2016-12-23 10:36:16 -05:00
|
|
|
|
|
|
|
Settings:
|
2017-02-27 08:45:34 -05:00
|
|
|
- write settings (Easy for contribution)
|
2017-07-23 14:32:21 -04:00
|
|
|
|
2017-02-27 08:45:34 -05:00
|
|
|
- menue for settings configuration (Easy for contribution)
|
2016-12-23 10:36:16 -05:00
|
|
|
|
|
|
|
Application Profiles
|
2017-02-27 08:45:34 -05:00
|
|
|
- reimplement process detection without subprocessing // this is started by chrys
|
2016-12-23 10:36:16 -05:00
|
|
|
- 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
|
2017-01-30 10:25:19 -05:00
|
|
|
- per application shortcuts
|
|
|
|
|
|
|
|
-----------DONE----------------
|
2017-05-25 08:32:53 -04:00
|
|
|
- initial working setup.py
|
2017-07-09 12:27:31 -04:00
|
|
|
- leave review on typing
|
2017-05-25 08:32:53 -04:00
|
|
|
- add dependency check (check-dependencys.py)
|
2017-01-30 17:38:16 -05:00
|
|
|
- Add nice dummy drivers as template or for debugging
|
2017-02-23 08:51:31 -05:00
|
|
|
- reimplement detection code for X11
|
2017-02-23 08:53:24 -05:00
|
|
|
- initial translate structure (manuelcortez Thanks!)
|
|
|
|
http://www.supernifty.org/blog/2011/09/16/python-localization-made-easy/
|
2017-02-23 09:33:47 -05:00
|
|
|
- add a configurable place where you can place own commands or overwrite existing commands without need to change default code
|
2017-02-28 10:55:47 -05:00
|
|
|
- implement autodetection of plugged and unplugged input devices (python-pyudev) for evdev driver
|
2017-03-02 16:57:59 -05:00
|
|
|
http://stackoverflow.com/questions/22678686/python-script-to-detect-hot-plug-event
|
2017-02-28 10:55:47 -05:00
|
|
|
http://askubuntu.com/questions/508236/how-can-i-run-code-whenever-a-usb-device-is-unplugged-without-requiring-root
|
2017-03-02 16:57:59 -05:00
|
|
|
https://www.mattfischer.com/blog/?p=182
|
2017-03-02 16:43:24 -05:00
|
|
|
- implement speechdriver generic (Easy for contribution)
|
2017-07-17 19:06:55 -04:00
|
|
|
- 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
|
|
|
|
|
2017-01-30 17:38:16 -05:00
|
|
|
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
|
2017-02-02 18:38:38 -05:00
|
|
|
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
|
2017-02-02 04:21:50 -05:00
|
|
|
brailleFocusMode:
|
|
|
|
- review = priority to review
|
2017-05-08 11:44:18 -04:00
|
|
|
|
|
|
|
Settings:
|
2017-07-21 03:38:10 -04:00
|
|
|
- [X] configuration should be overwritable with parameter and alternative paths (Easy for contribution)
|
|
|
|
Tutorial Mode:
|
|
|
|
- [X] navigate through a list of bound commands. speak binding and description.
|