dasher-project / dasher Goto Github PK
View Code? Open in Web Editor NEWThis project forked from gnome/dasher
Dasher
Home Page: http://www.inference.phy.cam.ac.uk/dasher/
License: GNU General Public License v2.0
This project forked from gnome/dasher
Dasher
Home Page: http://www.inference.phy.cam.ac.uk/dasher/
License: GNU General Public License v2.0
In the Oct10 version (and maybe before), there is still a problem with the speak new. It seems to work fine as long as the cursor does not change position but if the cursor is relocated to insert words within previously typed text, it messes up what it speaks so that instead of speaking the newly typed text, it speaks some of the previously typed text that happens to be at the end of the text string.
Most alphabets are already updated in 6b5101f, but more exotic are missing language code.
Look for alphabets updated earlier than October 2015.
It would make schemes with single color background much nicer and easier to use.
For example, https://github.com/ipomoena/dasher/blob/master/Data/colours/colour.ean.xml
with a red border for numerals and a green border for punctuation.
And control.all.xml file with all possible commands.
Dasher should speak in the language corresponding to the selected alphabet instead of speaking everything as if it were in the system locale's language. For instance, if you select the French alphabet and enter some French words, it should speak those words using French pronunciation regardless of whether the system locale is set to en
, es
, or any other language's locale.
This affects at least win32 and Linux versions.
Discovered while cleaning defunct encoding code for files.
4a1d29b
On behalf of @smoothsaling
control.xml file. The nodes for move forward, move backward, delete forward, delete backward, and new, all seem pretty obvious. But, I don't see the options for pause, speak, and copy. Is that in a separate file? Ultimately, it would be nice if you could edit which controls are displayed in the control box and in which order through the preferences.
The only change needed is to add EDIT_LINE case to GetRange in Edit.cpp
Similar to case CControlManager::EDIT_LINE:
In the Oct10 version, there is a problem with the control box delete options. All 4 of the delete back options only move the cursor to the beginning of the text but don't delete anything. The delete forward works but only after first returning to the beginning of the text so it deletes the wrong text.
Most programs accept a --version
argument to run them in a mode that prints the program version and exits, e.g.:
$ ls --version
ls (GNU coreutils) 8.21
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard M. Stallman and David MacKenzie.
Dasher completely ignores a --version
arg if I pass it and starts normally instead. It doesn't seem to have any way to query the version besides loading the GUI and checking Help>About
.
regression from 4.11
"Dasher for conversation" - dasher.exe /config speak
"Dasher for giving speeches" - dasher.exe /config prepared_speech
"Dasher for editing" - dasher.exe /config edit
'"Dasher direct entry" - dasher.exe /config direct
In the alphabet files in Data/alphabets/, it feels brittle duplicating the same langcode into multiple alphabets for the same language when it's generally the same for every alphabet in the same alphabet file. Any alphabet that doesn't have the same langcode as the others in the file is very likely to be a bug.
What would you think about making it an attribute or subelement at the "<alphabets>
" level?
A positive description like "Quit without saving" would be more self-explanatory than "Don't save" on the unsaved changes prompt. The "Don't save" and "Don't quit" options look too similar and I always have to stare at the options for a second to figure out which one I want.
The Speak-New command in the Control box sometimes (often) doesn't work or it says a bunch of numbers and nonsense. It works fine when you first start but the first time I use the delete in the control box, the Speak-New gets fried every time.
I'd like an option in Dasher Preferences to disable the "Are you sure you wish to quit?" prompts when I try to close Dasher.
When there's unsaved text there's a slightly different "Do you want to save your changes?" with a few additional options for saving to a file. I'd like to be able to turn that off, too, and only save explicitly, possibly as an additional option to not prompt for unsaved changes.
A not essential but really cool feature that might help in marketing would be if Dasher had a built in words per minute calculator. Besides the obvious features, I would recommend that there be an option for the training file to be disabled so that there is a base line for different people be able to compare scores. I think this would be a very useful and much used tool.
It is a minor issue but the red line that connects the crosshair to the cursor doesn't extend into the white space to the right of the letter horizon. I have an always on top icon on the right side of my screen that is in the middle of that white space and the lack of the red line makes it more difficult to select that button. Selecting show mouse location helps but is still difficult in bright light. Can the red line be set to extend to the right of the colored boxes and letters?
See Win32 implementation. Should be relatively easy to copy. 9edabd9
Dasher linux crashes with SIGSEGV in CDasherModel::ExpandNode in the pNode->SetFlag call.
This happens more often after pausing the application in a debugger.
Call stack:
timer_callback Timer.cpp:9
CDasherControl::TImerEvent DasherControl.cpp:492
Dasher::CDasherInterfaceBase::NewFrame DasherInterfaceBase.cpp:535
Dasher::CDasherInterfaceBase::Redraw DasherInterfaceBase.cpp:569
Dasher::AmortizedPolicy::apply ExpansionPolicy.cpp:130
Dasher::BudgettingPolicy::apply ExpansionPolicy.cpp:86
Dasher::CExpansionPolicy::ExpandNode ExpansionPolicy.cpp:18
Dasher::CDasherModel::ExpandNode DasherModel.cpp:497
Another minor issue but I wish the pause control could be a color other than yellow because it looks the same as the capital letters. I would avoid red because that is the color of numbers. Maybe orange or a dark blue. I use the default European/Asian color scheme.
It happen to me several times. I am riding along, tablet is displaying screen saver, and out of the sudden dasher is speaking complete garbage, or whatever was written before.
Now, I know why.
I use start in the centre circle, because moving head mouse is quicker than finding that click button.
Another case where is bugs me is when I have multiple dashers open. One for polish and another for English. They are both maximized. And when I start using one of them, the other one also starts and write funny text. To prevent it I need to minimize one before using the other. It slows me down.
I like being able to edit the content and order of the commands in the control box. Can the control.xml file contain all of the control box commands? Currently, the pause, speak, and copy commands are programmed elsewhere so they are uneditable.
In Dasher4.11, there is a control style called Eyetracker Mode that has been missing from subsequent versions. I don't use an eyetracker but I have friend who does who wants to try the latest version. Is there another control style that supports eyegaze or can Eyetracker Mode be returned?
It should include attributes like meximized or minimized. And splitter size.
With maximized remembered, I think maximized application style could be removed from Linux config.
This may lead to broken communication with eyetracker or other device connected by socket.
search code for recv and send. Possibly also windows specific flavors.
Per https://lists.debian.org/debian-accessibility/2011/07/msg00011.html, GnomeSpeech has been deprecated since 2011. The Dasher support for it doesn't seem to work properly anymore, so we should remove it.
Grep for EDIT_LINE in Gtk2 directory and add case for EDIT_PAGE.
Values of min max for long spin control are too big for up down win32 control. Even in 32 flavors of messages.
{LP_SOCKET_INPUT_X_MIN, T_LONGSPIN, -2147480000, 2147480000, 1000, 10000, _("X minimum:")},
{LP_SOCKET_INPUT_X_MAX, T_LONGSPIN, -2147480000, 2147480000, 1000, 10000, _("X maximum:")},
{LP_SOCKET_INPUT_Y_MIN, T_LONGSPIN, -2147480000, 2147480000, 1000, 10000, _("Y minimum:")},
{LP_SOCKET_INPUT_Y_MAX, T_LONGSPIN, -2147480000, 2147480000, 1000, 10000, _("Y maximum:")},
Speak commands are working as expected. It is not clear to me what should Copy repeat do. The fest of commands are missing. No way to stop, pause, move or delete. Regression since 4.11
Here is screenshot after typing "Hello ". In this context the most probable text is "my name" or "I am".
And now after typing "Hello " and going through control box [Move back to beginning of text]. As you see context didn't change. Still the most probable text is "my name" or "I am".This is wrong. I am at the beginning of text.
And I would expect that capital letters are the most probable. Like in screenshot below.
Unrecognized command-line args usually cause programs to fail with an exit code, e.g.
$ ls --walrus-face
ls: unrecognized option '--walrus-face'
Try 'ls --help' for more information.
But dasher will happily start the GUI no matter what options I pass it:
$ dasher --walrus-face
** Message: Opening GUI file: /usr/local/share/dasher/dasher.traditional.ui
Could we make it validate that it doesn't receive any unrecognized args?
After 67b6544 I get build failures like error: expected '(' before 'each'
on the "for each" syntax in ControlManager.cpp. Looks like that's C++/CLI syntax for foreach loops and only builds on Microsoft compilers.
Full error:
/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I. -g -O2 -MT ControlManager.lo -MD -MP -MF .deps/ControlManager.Tpo -c -o ControlManager.lo ControlManager.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I. -g -O2 -MT ControlManager.lo -MD -MP -MF .deps/ControlManager.Tpo -c ControlManager.cpp -fPIC -DPIC -o .libs/ControlManager.o
ControlManager.cpp: In member function 'virtual Dasher::CControlBase::Action* Dasher::CControlManager::parseAction(const XML_Char*, const XML_Char**)':
ControlManager.cpp:378:9: error: expected '(' before 'each'
for each (auto arg in arguments) {
^
ControlManager.cpp:378:14: warning: C++11 auto only available with -std=c++11 or -std=gnu++11 [enabled by default]
for each (auto arg in arguments) {
^
ControlManager.cpp:378:15: error: expected primary-expression before 'auto'
for each (auto arg in arguments) {
^
ControlManager.cpp:378:36: error: 'each' was not declared in this scope
for each (auto arg in arguments) {
^
ControlManager.cpp:378:38: error: expected ';' before '{' token
for each (auto arg in arguments) {
^
ControlManager.cpp:381:3: error: expected primary-expression before '}' token
}
^
ControlManager.cpp:381:3: error: expected ';' before '}' token
ControlManager.cpp:381:3: error: expected primary-expression before '}' token
ControlManager.cpp:381:3: error: expected ')' before '}' token
ControlManager.cpp:381:3: error: expected primary-expression before '}' token
ControlManager.cpp:381:3: error: expected ';' before '}' token
ControlManager.cpp:382:7: error: decl-specifier invalid in condition
if (auto action = m_actions[key.str()])
^
ControlManager.cpp:382:12: error: ISO C++ forbids declaration of 'action' with no type [-fpermissive]
if (auto action = m_actions[key.str()])
^
ControlManager.cpp:382:40: error: invalid conversion from 'std::map<std::basic_string<char>, Dasher::CControlBase::Action*>::mapped_type {aka Dasher::CControlBase::Action*}' to 'int' [-fpermissive]
if (auto action = m_actions[key.str()])
^
ControlManager.cpp:383:12: error: invalid conversion from 'int' to 'Dasher::CControlBase::Action*' [-fpermissive]
return action;
^
On behalf of @smoothsaling
When I am in a bar on other loud environment, my speakers are worthless and anyone I have a conversation with has to stand behind me where I can't see them. :(
I'm trying to build dasher from source on Ubuntu Linux 14.04, but running ./autogen.sh
I get a failure with this output:
…
checking for XML_Parse in -lexpat... yes
checking for ATSPI... no
checking for CSPI... no
checking for XTestFakeKeyEvent in -lXtst... no
configure: error: No method to send characters into another application found
Any idea what dependencies I need to install to satisfy that check?
Possible cause- taking address of vector element and than adding more elements to that vector. parent.push_back(NULL);
unresolvedRefs.push_back(pairCControlBase::NodeTemplate**,string(&(parent.back()),target));
While trying to build on Ubuntu Linux 14.04, make
failed with this output:
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I./../DasherCore -DPROGDATA=\"/usr/local/share/dasher\" -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -MT libdashergtk_la-dasher_editor_external_atspi.lo -MD -MP -MF .deps/libdashergtk_la-dasher_editor_external_atspi.Tpo -c dasher_editor_external_atspi.cpp -fPIC -DPIC -o .libs/libdashergtk_la-dasher_editor_external_atspi.o
dasher_editor_external_atspi.cpp: In function 'void dasher_editor_external_create_buffer(DasherEditor*)':
dasher_editor_external_atspi.cpp:69:75: error: invalid conversion from 'void (*)(AtspiEvent*, void*) {aka void (*)(_AtspiEvent*, void*)}' to 'AtspiEventListenerCB {aka void (*)(const _AtspiEvent*, void*)}' [-fpermissive]
p->pFocusListener = atspi_event_listener_new(focus_listener, pSelf, NULL);
^
In file included from /usr/include/at-spi-2.0/atspi/atspi.h:38:0,
from dasher_editor_external_atspi.cpp:4:
/usr/include/at-spi-2.0/atspi/atspi-event-listener.h:82:1: error: initializing argument 1 of 'AtspiEventListener* atspi_event_listener_new(AtspiEventListenerCB, gpointer, GDestroyNotify)' [-fpermissive]
atspi_event_listener_new (AtspiEventListenerCB callback,
^
dasher_editor_external_atspi.cpp:70:75: error: invalid conversion from 'void (*)(AtspiEvent*, void*) {aka void (*)(_AtspiEvent*, void*)}' to 'AtspiEventListenerCB {aka void (*)(const _AtspiEvent*, void*)}' [-fpermissive]
p->pCaretListener = atspi_event_listener_new(caret_listener, pSelf, NULL);
^
In file included from /usr/include/at-spi-2.0/atspi/atspi.h:38:0,
from dasher_editor_external_atspi.cpp:4:
/usr/include/at-spi-2.0/atspi/atspi-event-listener.h:82:1: error: initializing argument 1 of 'AtspiEventListener* atspi_event_listener_new(AtspiEventListenerCB, gpointer, GDestroyNotify)' [-fpermissive]
atspi_event_listener_new (AtspiEventListenerCB callback,
^
make[3]: *** [libdashergtk_la-dasher_editor_external_atspi.lo] Error 1
make[3]: Leaving directory `/home/dbarnett/projects/dasher/Src/Gtk2'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/dbarnett/projects/dasher/Src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dbarnett/projects/dasher'
make: *** [all] Error 2
It looks like the same issue as https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755343, which was supposedly fixed a year ago. Seeing if I can find a Debian patch that was never accepted upstream or something…
If I open Dasher, go to Preferences, and uncheck/recheck "Speak words as you write", then Dasher speaks each word as I pass through it. But if I close and reopen dasher, speech stops working until I repeat the uncheck/recheck step in Preferences.
I see this on Ubuntu Linux 14.04.
The "Speak words as you write" feature speaks all letters since the last speech in a way that's unintuitive if you ever back up and retype partial words. I would expect if you backed up and retyped, it would speak everything since the last whitespace even if that includes letters it already spoke.
For example, if you type just<Space><Back>ice
, it will type the word "justice" but it will speak just… ice
instead of just… justice
. It's easy to accidentally hit the corner of the Space box when you're typing some words like "justice" with a big Space box.
In several places the Gtk2/... code returns char* or const char* without specifying if the memory should be released and often without releasing it even though it should.
Example:
'dasher_editor_get_context' returns the value from gtk_text_buffer_get_text, then in CDasherControl::GetContext the value is converted to a std::string but never freed with g_free.
It would probably be easier to change the return values to be std::string so the caller doesn't have to read the documentation for proper handling.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.