[pkg-kde-commits] rev 2789 -
trunk/packages/kdeaccessibility/debian/patches
Christopher Martin
chrsmrtn at costa.debian.org
Sun Jan 8 02:57:01 UTC 2006
Author: chrsmrtn
Date: 2006-01-08 02:57:00 +0000 (Sun, 08 Jan 2006)
New Revision: 2789
Added:
trunk/packages/kdeaccessibility/debian/patches/01_kdeaccessibility_branch_r495385.diff
Log:
kdeaccessibility branch pull.
Added: trunk/packages/kdeaccessibility/debian/patches/01_kdeaccessibility_branch_r495385.diff
===================================================================
--- trunk/packages/kdeaccessibility/debian/patches/01_kdeaccessibility_branch_r495385.diff 2006-01-08 02:56:30 UTC (rev 2788)
+++ trunk/packages/kdeaccessibility/debian/patches/01_kdeaccessibility_branch_r495385.diff 2006-01-08 02:57:00 UTC (rev 2789)
@@ -0,0 +1,481 @@
+#DPATCHLEVEL=0
+--- kttsd/libkttsd/player.h (revision 492083)
++++ kttsd/libkttsd/player.h (revision 495385)
+@@ -55,7 +55,7 @@
+
+ protected:
+ Player(QObject* parent = 0, const char* name = 0, const QStringList& args=QStringList() ) :
+- QObject(parent, name) { if (args.isEmpty()); } // TODO: Avoid compiler WARNING. Better way?
++ QObject(parent, name) { (void)args; }
+
+ };
+
+--- kttsd/libkttsd/talkercode.cpp (revision 492083)
++++ kttsd/libkttsd/talkercode.cpp (revision 495385)
+@@ -492,13 +492,10 @@
+ /*static*/ QString TalkerCode::TalkerNameToDesktopEntryName(const QString& name)
+ {
+ if (name.isEmpty()) return QString::null;
+- KTrader::OfferList offers = KTrader::self()->query("KTTSD/SynthPlugin",
+- QString("Name == '%1'").arg(name));
+-
+- if (offers.count() == 1)
+- return offers[0]->desktopEntryName();
+- else
+- return QString::null;
++ KTrader::OfferList offers = KTrader::self()->query("KTTSD/SynthPlugin");
++ for (uint ndx = 0; ndx < offers.count(); ++ndx)
++ if (offers[ndx]->name() == name) return offers[ndx]->desktopEntryName();
++ return QString::null;
+ }
+
+ /**
+--- kttsd/plugins/hadifix/hadifixconf.cpp (revision 492083)
++++ kttsd/plugins/hadifix/hadifixconf.cpp (revision 495385)
+@@ -352,7 +352,7 @@
+ // italian, and a few others, written in perl, but they have many issues.
+ // Go to the mbrola website and click on "TTS" to learn more.
+
+- // QString testMsg = "K D E ist eine moderne grafische Arbeitsumgebung für UNIX-Computer.";
++ // QString testMsg = "K D E ist eine moderne grafische Arbeitsumgebung für UNIX-Computer.";
+ QString testMsg = testMessage(d->languageCode);
+ connect (d->hadifixProc, SIGNAL(synthFinished()), this, SLOT(slotSynthFinished()));
+ d->hadifixProc->synth (testMsg,
+--- kttsd/kcmkttsmgr/kcmkttsmgr.cpp (revision 492083)
++++ kttsd/kcmkttsmgr/kcmkttsmgr.cpp (revision 495385)
+@@ -628,7 +628,7 @@
+ {
+ // Must load plugin to determine if it supports multiple instances
+ // and to see if it can autoconfigure itself.
+- KttsFilterConf* filterPlugIn = loadFilterPlugin(filterPlugInName);
++ KttsFilterConf* filterPlugIn = loadFilterPlugin(desktopEntryName);
+ if (filterPlugIn)
+ {
+ ++m_lastFilterID;
+@@ -1085,6 +1085,8 @@
+
+ /**
+ * Loads the configuration plug in for a named talker plug in and type.
++* @param name DesktopEntryName of the Synthesizer.
++* @return Pointer to the configuration plugin for the Talker.
+ */
+ PlugInConf* KCMKttsMgr::loadTalkerPlugin(const QString& name)
+ {
+@@ -1092,7 +1094,7 @@
+
+ // Find the plugin.
+ KTrader::OfferList offers = KTrader::self()->query("KTTSD/SynthPlugin",
+- QString("Name == '%1'").arg(name));
++ QString("DesktopEntryName == '%1'").arg(name));
+
+ if (offers.count() == 1)
+ {
+@@ -1127,6 +1129,8 @@
+
+ /**
+ * Loads the configuration plug in for a named filter plug in.
++ * @param plugInName DesktopEntryName of the plugin.
++ * @return Pointer to the configuration plugin for the Filter.
+ */
+ KttsFilterConf* KCMKttsMgr::loadFilterPlugin(const QString& plugInName)
+ {
+@@ -1134,7 +1138,7 @@
+
+ // Find the plugin.
+ KTrader::OfferList offers = KTrader::self()->query("KTTSD/FilterPlugin",
+- QString("Name == '%1'").arg(plugInName));
++ QString("DesktopEntryName == '%1'").arg(plugInName));
+
+ if (offers.count() == 1)
+ {
+@@ -1144,7 +1148,7 @@
+ if(factory){
+ // If the factory is created successfully, instantiate the KttsFilterConf class for the
+ // specific plug in to get the plug in configuration object.
+- int errorNo;
++ int errorNo = 0;
+ KttsFilterConf *plugIn =
+ KParts::ComponentFactory::createInstanceFromLibrary<KttsFilterConf>(
+ offers[0]->library().latin1(), NULL, offers[0]->library().latin1(),
+@@ -1287,7 +1291,7 @@
+ if (desktopEntryName.isEmpty()) return;
+
+ // Load the plugin.
+- m_loadedTalkerPlugIn = loadTalkerPlugin(synthName);
++ m_loadedTalkerPlugIn = loadTalkerPlugin(desktopEntryName);
+ if (!m_loadedTalkerPlugIn) return;
+
+ // Give plugin the user's language code and permit plugin to autoconfigure itself.
+@@ -1402,7 +1406,8 @@
+ QString filterPlugInName = offers[i]->name();
+ if (countFilterPlugins(filterPlugInName) == 0)
+ {
+- KttsFilterConf* filterConf = loadFilterPlugin( filterPlugInName );
++ QString desktopEntryName = FilterNameToDesktopEntryName(filterPlugInName);
++ KttsFilterConf* filterConf = loadFilterPlugin(desktopEntryName);
+ if (filterConf)
+ {
+ if (filterConf->isSBD() == sbd)
+@@ -1447,7 +1452,7 @@
+ if (desktopEntryName.isEmpty()) return;
+
+ // Load the plugin.
+- m_loadedFilterPlugIn = loadFilterPlugin(filterPlugInName);
++ m_loadedFilterPlugIn = loadFilterPlugin(desktopEntryName);
+ if (!m_loadedFilterPlugIn) return;
+
+ // Permit plugin to autoconfigure itself.
+@@ -1868,7 +1873,8 @@
+ QString synthName = talkerItem->text(tlvcSynthName);
+ QString language = talkerItem->text(tlvcLanguage);
+ QString languageCode = m_languagesToCodes[language];
+- m_loadedTalkerPlugIn = loadTalkerPlugin(synthName);
++ QString desktopEntryName = TalkerCode::TalkerNameToDesktopEntryName(synthName);
++ m_loadedTalkerPlugIn = loadTalkerPlugin(desktopEntryName);
+ if (!m_loadedTalkerPlugIn) return;
+ // kdDebug() << "KCMKttsMgr::slot_configureTalker: plugin for " << synthName << " loaded successfully." << endl;
+
+@@ -1941,7 +1947,7 @@
+ QString filterPlugInName = filterItem->text(flvcPlugInName);
+ QString desktopEntryName = FilterNameToDesktopEntryName(filterPlugInName);
+ if (desktopEntryName.isEmpty()) return;
+- m_loadedFilterPlugIn = loadFilterPlugin(filterPlugInName);
++ m_loadedFilterPlugIn = loadFilterPlugin(desktopEntryName);
+ if (!m_loadedFilterPlugIn) return;
+ // kdDebug() << "KCMKttsMgr::slot_configureFilter: plugin for " << filterPlugInName << " loaded successfully." << endl;
+
+@@ -2182,13 +2188,10 @@
+ QString KCMKttsMgr::FilterNameToDesktopEntryName(const QString& name)
+ {
+ if (name.isEmpty()) return QString::null;
+- KTrader::OfferList offers = KTrader::self()->query("KTTSD/FilterPlugin",
+- QString("Name == '%1'").arg(name));
+-
+- if (offers.count() == 1)
+- return offers[0]->desktopEntryName();
+- else
+- return QString::null;
++ KTrader::OfferList offers = KTrader::self()->query("KTTSD/FilterPlugin");
++ for (uint ndx = 0; ndx < offers.count(); ++ndx)
++ if (offers[ndx]->name() == name) return offers[ndx]->desktopEntryName();
++ return QString::null;
+ }
+
+ /**
+@@ -2575,7 +2578,7 @@
+ if ( eventSrc.isEmpty() || event.isEmpty() ) return;
+ // Use Default action, message, and talker.
+ QString actionName;
+- int action;
++ int action = NotifyAction::DoNotSpeak;
+ QString msg;
+ TalkerCode talkerCode;
+ item = lv->findItem( "default", nlvcEventSrc );
+--- kttsd/kcmkttsmgr/kcmkttsmgr.h (revision 492083)
++++ kttsd/kcmkttsmgr/kcmkttsmgr.h (revision 495385)
+@@ -237,15 +237,15 @@
+
+ /**
+ * Loads the configuration plugin for a named Talker plugin.
+- * @param name Name of the Synthesizer. This is a translated name, and not
+- * necessarily the same as the plugIn name.
+- * Example, "Festival Interactivo".
++ * @param name DesktopEntryName of the Synthesizer.
++ * @return Pointer to the configuration plugin for the Talker.
+ */
+ PlugInConf* loadTalkerPlugin(const QString& name);
+
+ /**
+ * Loads the configuration plugin for a named Filter plugin.
+- * @param plugInName Name of the plugin.
++ * @param plugInName DesktopEntryName of the plugin.
++ * @return Pointer to the configuration plugin for the Filter.
+ */
+ KttsFilterConf* loadFilterPlugin(const QString& plugInName);
+
+--- kttsd/ChangeLog (revision 492083)
++++ kttsd/ChangeLog (revision 495385)
+@@ -1,3 +1,15 @@
++2006-01-06 Gary Cramblitt (PhantomsDad)
++ * Fix BUG:118016 Not loading plugins when desktop language is not ISO-8859-1.
++
++2005-12-03 Jürgen Zdero
++ * Add German chat filter by Jürgen Zdero.
++
++2005-11-13 Gary Cramblitt (PhantomsDad)
++ * BUG:116031 Fix appendText method. Add version method to dcop interface.
++
++2005-10-16 J. Riddell
++ * Make install error. Install the Hadifix icons.
++
+ 2005-07-19 Gary Cramblitt (PhantomsDad)
+ * Name kept .wav files in format kttsd-jjjjjjjj-ssssssss.wav where jjjjjjjj is the job
+ number zero-filled to the left and ssssssss is the sentence sequence number zero-filled
+@@ -366,35 +378,35 @@
+ on or about 19 Oct 2004:
+ In $KDEDIR/share/services/:
+ festival.desktop -> kttsd_festivalplugin.desktop
+- festivalint.desktop -> kttsd_festivalintplugin.desktop
+- command.desktop -> kttsd_commandplugin.desktop
+- hadifix.desktop -> kttsd_hadifixplugin.desktop
+- flite.desktop -> kttsd_fliteplugin.desktop
++ festivalint.desktop -> kttsd_festivalintplugin.desktop
++ command.desktop -> kttsd_commandplugin.desktop
++ hadifix.desktop -> kttsd_hadifixplugin.desktop
++ flite.desktop -> kttsd_fliteplugin.desktop
+ epos-kttsdplugin.desktop -> kttsd_eposplugin.desktop
+- freetts.desktop -> kttsd_freettsplugin.desktop
+- In $KDEDIR/lib/kde3/:
++ freetts.desktop -> kttsd_freettsplugin.desktop
++ In $KDEDIR/lib/kde3/:
+ libfestivalplugin -> libkttsd_festivalplugin
+- libfestivalintplugin -> libkttsd_festivalintplugin
+- libcommandplugin -> libkttsd_commandplugin
+- libhadifixplugin -> libkttsd_hadifixplugin
+- libfliteplugin -> libkttsd_fliteplugin
+- libeposkttsdplugin -> libkttsd_eposplugin
+- libfreettsplugin -> libkttsd_freettsplugin
+-
++ libfestivalintplugin -> libkttsd_festivalintplugin
++ libcommandplugin -> libkttsd_commandplugin
++ libhadifixplugin -> libkttsd_hadifixplugin
++ libfliteplugin -> libkttsd_fliteplugin
++ libeposkttsdplugin -> libkttsd_eposplugin
++ libfreettsplugin -> libkttsd_freettsplugin
++
+ Rename libkttsjobmgr to libkttsjobmgrpart per kdelibs/NAMING convention.
+-
++
+ There is a new shell script, clean_obsolete.sh that will remove these
+ obsolete files from your system.
+-
++
+ 2004-10-14 Gary Cramblitt (PhantomsDad)
+ * Fix crash when clicking Cancel to prompt for Other language code, or user
+ enters an invalid language code.
+-
++
+ 2004-10-13 Gary Cramblitt (PhantomsDad)
+ * libktts is now a versioned shared library. You may need to remove the
+ unversioned library, ie.
+ rm $KDEDIR/lib/libktts.*
+-
++
+ 2004-10-13 Gary Cramblitt (PhantomsDad)
+ * Revert previous change. Sorry.
+
+@@ -407,12 +419,12 @@
+ 2004-10-12 Gary Cramblitt (PhantomsDad)
+ * Added Handbook.
+ * Help button and system tray content menu display Handbook.
+-
++
+ 2004-09-07 Gary Cramblitt (PhantomsDad)
+ * Added 6 new HTS voices for Festival and FestivalInt plugins.
+ Courtesy of "N.Cat" Triskelios.
+ Download the voices from http://hts.ics.nitech.ac.jp/
+-
++
+ 2004-09-04 Gary Cramblitt (PhantomsDad)
+ * Rename Hadifax to Hadifix.
+ NOTE: After rebuilding and installing, you will want to delete the
+@@ -423,7 +435,7 @@
+
+ 2004-09-02 Paul Giannaros
+ * FreeTTS plugin.
+-
++
+ 2004-08-28 Gary Cramblitt (PhantomsDad)
+ * GStreamer player added. Doesn't work right now because gstreamer 0.6
+ has issues with wav files. Try again when KDE bindings (gst) have been
+@@ -437,7 +449,7 @@
+ by writing to Stdin before Stdin buffer is empty.
+ * Better sentence parsing.
+ * Minor fixes to kttsjobmgrpart.
+-
++
+ 2004-08-09 Gary Cramblitt (PhantomsDad)
+ * Remove requirement to copy pluginconf.h to $KDEDIR/include when running designer
+ against plugin configuration widgets.
+@@ -445,10 +457,10 @@
+ * Some plugins listing codecs multiple times.
+ * Select and ensure default language visible when first displaying kttsmgr.
+ * Auto select and prepare Properties tab when adding a new language in kttsmgr.
+-
++
+ 2004-08-08 Gary Cramblitt (PhantomsDad)
+ * Add plugin for Epos TTS Synthesis System (czech and slovak).
+-
++
+ 2004-08-07 Gary Cramblitt (PhantomsDad)
+ * Existing release marked with tag ktts-0-1.
+ * New version of KTTS is 0.2.
+@@ -477,7 +489,7 @@
+ * Each plugin (except festival and freetts) now has a "Test" button on the
+ configuration dialog.
+ * The option to play a sound on text interruption now works.
+-
++
+ 2004-07-10 Gary Cramblitt (PhantomsDad)
+ * Warn user if festival not installed.
+ * Install voices data file for festival interactive plugin even if
+@@ -491,14 +503,14 @@
+ * Replaced nextSenText, prevSenText, nextParText, prevParText with moveRelTextSentence.
+ * Added jumpToTextPart.
+ * Removed paragraph settings from configuration dialog.
+-
++
+ 2004-05-31 Gary Cramblitt (PhantomsDad)
+ * Move speaking of notifications to KTTSD and persist notify settings.
+ * Clean up kcmkttsmgr.desktop and install to correct place.
+-
++
+ 2004-05-23 Gary Cramblitt (PhantomsDad)
+ * Add option to speak KNotify notifications.
+-
++
+ 2004-05-22 Gary Cramblitt (PhantomsDad)
+ * Change menu item to "Speak Text" on the Tools menu in app-plugins. Also start KTTSD if it is
+ not running.
+@@ -506,19 +518,19 @@
+ 2004-05-21 Gary Cramblitt (PhantomsDad)
+ * Bug fix. Upon startup of kttsmgr, Remove button and Properties tab not enabled despite
+ default language selected.
+-
++
+ 2004-05-19 Gary Cramblitt (PhantomsDad)
+ * Allow kttsmgr screen to be resized as narrow as possible.
+ * Correct some mispellings.
+ * When calling reinit() pauseText only if isSpeakingText().
+-
++
+ 2004-05-18 Gary Cramblitt (PhantomsDad)
+ * Reinit() without losing existing queued text jobs, messages, or warnings.
+ * When kttsd restarts because of reinit(), job manager part refreshes list.
+
+ 2004-05-17 Gary Cramblitt (PhantomsDad)
+ * Fix hang when calling reinit() while speaking.
+-
++
+ 2004-05-15 Gary Cramblitt (PhantomsDad)
+ * Lots of changes:
+ * Defined the KDE Text-to-speech API. See /libktts/kspeech.h.
+@@ -532,15 +544,13 @@
+ * IMPORTANT note to developers using KTTSD: The startText, stopText, resumeText DCOP
+ * methods now take a jobNum argument, which you can code as 0 to operate against the last text
+ * job your app queued. See /plugins/kate-plugin/katekttsd.cpp for example, or /libktts/kspeech.h.
+-
++
+ 2002-11-21 Pupeno <pupeno at pupeno.com>
++ * Full port to the new architecture finished. Some fine tunning still needed.
+
+- * Full port to the new architecture finished. Some fine tunning still needed.
+-
+ 2002-09-25 Pupeno <pupeno at pupeno.com>
++ * Festival Cliente/Server plug in added. Festival plug in was added initially in the
++ project. FreeTTS never was meant to work yet.
+
+- * Festival Cliente/Server plug in added. Festival plug in was added initially in the project. FreeTTS never was meant to work yet.
+-
+ 2002-07-28 Pupeno <pupeno at pupeno.com>
+-
+- * ChangeLog created.
++ * ChangeLog created.
+--- kttsd/kttsd/main.cpp (revision 492083)
++++ kttsd/kttsd/main.cpp (revision 495385)
+@@ -28,7 +28,7 @@
+ int main (int argc, char *argv[]){
+ KLocale::setMainCatalogue("kttsd");
+ KAboutData aboutdata("kttsd", I18N_NOOP("kttsd"),
+- "0.3.5", I18N_NOOP("Text-to-speech synthesis deamon"),
++ "0.3.5.1", I18N_NOOP("Text-to-speech synthesis deamon"),
+ KAboutData::License_GPL, "(C) 2002, José Pablo Ezequiel Fernández");
+ aboutdata.addAuthor("José Pablo Ezequiel Fernández",I18N_NOOP("Original Author"),"pupeno at pupeno.com");
+ aboutdata.addAuthor("Gary Cramblitt", I18N_NOOP("Maintainer"),"garycramblitt at comcast.net");
+--- kttsd/kttsd/filtermgr.cpp (revision 492083)
++++ kttsd/kttsd/filtermgr.cpp (revision 495385)
+@@ -397,12 +397,9 @@
+ QString FilterMgr::FilterNameToDesktopEntryName(const QString& name)
+ {
+ if (name.isEmpty()) return QString::null;
+- KTrader::OfferList offers = KTrader::self()->query("KTTSD/FilterPlugin",
+- QString("Name == '%1'").arg(name));
+-
+- if (offers.count() == 1)
+- return offers[0]->desktopEntryName();
+- else
+- return QString::null;
++ KTrader::OfferList offers = KTrader::self()->query("KTTSD/FilterPlugin");
++ for (uint ndx = 0; ndx < offers.count(); ++ndx)
++ if (offers[ndx]->name() == name) return offers[ndx]->desktopEntryName();
++ return QString::null;
+ }
+
+--- kttsd/kttsmgr/kttsmgr.cpp (revision 492083)
++++ kttsd/kttsmgr/kttsmgr.cpp (revision 495385)
+@@ -51,7 +51,7 @@
+ KGlobal::locale()->setMainCatalogue("kttsd");
+
+ KAboutData aboutdata("kttsmgr", I18N_NOOP("KTTSMgr"),
+- "0.3.5", I18N_NOOP("Text-to-Speech Manager"),
++ "0.3.5.1", I18N_NOOP("Text-to-Speech Manager"),
+ KAboutData::License_GPL, "(C) 2002, José Pablo Ezequiel Fernández");
+ aboutdata.addAuthor("José Pablo Ezequiel Fernández",I18N_NOOP("Original Author"),"pupeno at pupeno.com");
+ aboutdata.addAuthor("Gary Cramblitt", I18N_NOOP("Maintainer"),"garycramblitt at comcast.net");
+--- kttsd/TODO (revision 492083)
++++ kttsd/TODO (revision 495385)
+@@ -15,6 +15,7 @@
+ the same as "HTML". It should stay this way, BTW. Proper xhtml requires lowercase
+ tags.
+ _ Audio Plugins:
++ _ BUG:116542. Apply patch and resolve compile issue.
+ _ At least one user experiences a freeze-up using ALSA plugin. Speak a web page,
+ pause the page, cause a knotify to speak, kttsd freezes. This appears to be an
+ ALSA device contention problem? In this situation, there are two alsaplayer objects;
+@@ -27,6 +28,19 @@
+ _ Festival Interactive plugin:
+ _ Need someone who can read czech to try integrating this into KTTS:
+ http://www.freebsoft.org/festival-czech
++ _ New Italian voice for Festival. http://www.pd.istc.cnr.it/FESTIVAL/home/default.htm
++_ EPOS plugin:
++ _ Epos server command changed from epos to eposd. Epos client command changed from
++ say to say-epos. These changes appeared around Epos v2.5.35. Enhance to try for these
++ automatically.
++ _ BUG:115795 Don't try to start the Epos server for every utterance.
++ _ A user claims that with Epos 2.5.36 under SuSE9.3, the generated spoken sentences
++ contain in some cases additional random letters and/or numbers. User claims
++ changing in eposproc.cpp
++ if (!m_eposProc->writeStdin(m_encText, m_encText.length()))
++ to
++ if (!m_eposProc->writeStdin(m_encText, text.length()))
++ fixes the problem. This doesn't make sense, so something else is probably going on.
+ _ Command plugin:
+ _ Command plugin encodes text on command line using %t in user's chosen encoding, but
+ if this differs from user's desktop default encoding, doesn't work. KProcess always
+@@ -35,6 +49,7 @@
+ KProcess, I see no way around this. But perhaps a warning to user advising to use %f instead?
+ _ Command plugin crashes when using command 'flite -t "%t"' and flite can't get write access to /dev/dsp*.
+ _ Hadifix plugin:
++ _ BUG:116151 Add options for using the new prepoc capability in Hadifix.
+ _ When stopText() is called, and Hadifix process is killed, the temporary wav file is not deleted,
+ despite QFile::remove call. Possibly still locked by exiting mbrola process? This only seems
+ to happen in the configuration dialog when canceling Tests.
+@@ -70,6 +85,11 @@
+ _ Add method for apps to play a sound file, including in the middle of a job.
+ Could be done with SSML or with special Talker Code = "sound".
+ _ Other/General:
++ _ kttsd/kttsmgr hang when Removing a text job while it is speaking.
++ _ As pointed out by NOKUBI Takatsugu on Planet Debian, there exists an
++ open-source synthesis + recognition engine for Japanese.
++ http://aniki.daionet.gr.jp/~knok/blog/blosxom.cgi/2005/11/24
++ http://hil.t.u-tokyo.ac.jp/~galatea/index.html
+ _ Save buttons should confirm if user chooses an existing file. KFileDialog doesn't seem to
+ offer this option, but shouldn't it?
+ _ .desktop files must have a Type keyword, but what to use for kcmkttsd_testmessage.desktop?
+@@ -82,6 +102,5 @@
+ Currently written in c, but it looks like future versions will require Java VM.
+ Main problem at the moment is that dhvani sends audio directly to /dev/dsp with no option
+ to send to a wav file.
+- _ Investigate what is involved in getting Gnopernicus screen reader to use KTTSD.
+ _ IBM ViaVoice plugin?
+ _ Add KTTS plugin to aKregator.
More information about the pkg-kde-commits
mailing list