#26 Le 12/08/2010, à 22:59
- eleg
Re : Déficience visuelle et ubuntu
ma représentation des chose (mais je peux me tromper), c’est que le script ne peut pas connaître tata.txt : il a été lancé dans le contexte où toto.txt était sélectionné et a été passé en paramètre, et rien d'autre. Dans ce cas la comparaison ne peut jamais réussir.
Hors ligne
#27 Le 13/08/2010, à 21:52
- draco31.fr
Re : Déficience visuelle et ubuntu
Bonjour,
Je ne rencontre pas ton problème, et n'utilise pas mbrola, mais la problématique m'intéresse.
La seule chose "plus simple" à mon sens aurait été d'associer tout les fichiers avec le script.
Le problème, c'est qu'il ne sera plus possible d'exécuter ou d'ouvrir un fichier !!!
Les solutions exposées suppose que tu clique ou tape une touche donnée pour renvoyer la donnée.
Comme indiqué par AnsuzPeorth, il faut pouvoir obtenir dans le script ou dans une variable, le nom du fichier, au fur et à mesure que tu changes la sélection dans Nautilus.
Ensuite le comment on exploite ce nom (mbrola, script bash/python, ...) c'est secondaire.
A tout hasard, est-ce que l'on ne pourrait pas utiliser DBus pour communiquer avec Nautilus ?
Hors ligne
#28 Le 14/08/2010, à 21:31
- Compte supprimé
Re : Déficience visuelle et ubuntu
Vu que je n'ai pas les compétences pour réaliser une telle chose, je vais laissé tomber ce script...
Par contre, je recherche des idées de scripts shell plus simples qui pourraient être intéressante.
Pour l'instant, je regarde si il y a des possibilité pour régler le volume en ligne de commande (?)
Il y'a peut être des trucs à faire du coté du wifi et de la récupération des mails (genre un script qui récupère vos mails et vous les lits)
Dernière modification par benoitfra (Le 15/08/2010, à 17:41)
#29 Le 14/08/2010, à 21:37
- mixout
Re : Déficience visuelle et ubuntu
je regarde si il y a des possibilité pour régler le volume en ligne de commande (?)
aumix
A+
#30 Le 15/08/2010, à 09:51
- draco31.fr
Re : Déficience visuelle et ubuntu
Bien sur après, il faut suivre toute la procédure expliquée dans la doc.
Reste à savoir quel "programme" utilisé pour savoir quel fenêtre est au premier plan.
Le code de la doc est pour lancer un service au démarrage du PC.
Je ne suis pas sûr qu'il faille aller dans cette voie, du moins au début.
Dans un premier temps, il faut trouver le programme qui te dit si la fenêtre est au premier plan, et l'appeler dans un script.
C'est ce script qui sera le programme.xx du code ci-dessus.
Pour les infos sur une fenêtre ce sont souvent des programmes commençant par "x" qui sont utiles.
Tu as par exemple xwininfo.
J'ai pu voir que les events suivants était retourné par Nautilus (ou le gestionnaire de fenêt) :
Someone wants these events:
KeyPress
KeyRelease
ButtonPress
ButtonRelease
EnterWindow
LeaveWindow
PointerMotion
Exposure
VisibilityChange
StructureNotify
FocusChange
PropertyChange
Le "FocusChange" ou "LeaveWindow" ou "VisibilityChange" doivent t'être utiles.
Mais je ne sais pas comment on les exploite.
Pour ce qui est du son, il y a pactl pour contrôler le volume depuis PulseAudio, et amixer pour ALSA.
Hors ligne
#31 Le 15/08/2010, à 12:10
- kinouchou
Re : Déficience visuelle et ubuntu
@benoitfra, tu pourras mettre tout ça en condensé dans la doc? je suis sure que ça sera très utile pour plein de personnes. En plus si tu mets le lien de la page de la doc ici dans le premier post ça permettra aux gens de la trouver plus facilement.
#32 Le 15/08/2010, à 12:27
- Compte supprimé
Re : Déficience visuelle et ubuntu
J'y avais déjà réfléchis, mais je n'ai jamais encore contribuer, j'ai pas envie de polluer.
Quelle rubrique choisir? synthèse vocale?
De plus, y'a t-il des règles à suivre concernant la syntaxe?
Dernière modification par benoitfra (Le 15/08/2010, à 12:34)
#33 Le 15/08/2010, à 13:03
- kinouchou
Re : Déficience visuelle et ubuntu
J'y avais déjà réfléchis, mais je n'ai jamais encore contribuer, j'ai pas envie de polluer.
la doc pour la partie accessibilité est assez restreinte donc toutes les contributions sont de mon point de vue importantes.
Je ne vois pas pourquoi tu polluerais. Le forum est là pour répondre à des questions que l'on ne trouve pas dans la doc. Une fois que la solution a été trouvée et surtout quand un long travail comme ici a été nécessaire autant en faire un récapitulatif pour tous ceux qui en auront besoin.
Quelle rubrique choisir? synthèse vocale?
oui je pense que ça peut être pas mal comme rubrique
De plus, y'a t-il des règles à suivre concernant la syntaxe?
tu trouveras des infos sur la doc dans cette page.
si tu as des questions je peux essayer de t'aider, je ne suis pas une contributrice de la doc ni spécialiste de l'accessibilité mais c'est un sujet qui m'intéresse et si je peux t'aider ça sera avec plaisir
edit: YoBoy admin de la doc m'a dit que la doc était en lecture seule pendant quelques jours (ils travaillent sur une optimisation de la doc et sur les serveurs) mais que tu pouvais parler de ta page avec yannubuntu sur la ML de la doc
Dernière modification par kinouchou (Le 15/08/2010, à 13:13)
#34 Le 15/08/2010, à 16:16
- Compte supprimé
Re : Déficience visuelle et ubuntu
Bon pour le volume j'ai trouvé avec amixer c'est finallement plus facile
# Auteur : benoitfra
# Contact :
# Version : 1.0
# Licence : GPL v3
# Fonction : Réglage du volume avec assistance vocale
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, amixer, zenity
#!/bin/bash
###### définition de la voix à utiliser ######
VOIX=/opt/mbrola/fr4/fr4 #pour une voix féminine
#VOIX=/opt/mbrola/fr1/fr1 (décommenter pour une voix masculine)
TYPE=mb/mb-fr4
#TYPE=mb/mb-fr (décommenter également)
###### phase de configuration ######
espeak -v $TYPE -s 130 -p 30 "utiliser les touches gauche et droite pour régler le volume" | mbrola $VOIX - -.au | aplay &
choix=`zenity --scale --title="Réglage du volume" --min-value="0" --max-value="100" --step="10"`
amixer -c 0 set PCM $choix%
###### signal l'opération effectuée par l'utilisateur######
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
espeak -v $TYPE -s 130 -p 30 "volume/réglé/à/$choix/%" | mbrola $VOIX - -.au | aplay &
echo message:volume réglé à "$choix" % | zenity --notification --listen --window-icon="notification" | zenity --notification --window-icon="notification" --text="volume réglé à "$choix" %"
exit
En ce qui concèrne, la lecture des mails, j'ai été voir du coté de fetchmail mais je vais continuer à chercher.
Dernière modification par benoitfra (Le 20/08/2010, à 12:09)
#35 Le 15/08/2010, à 18:17
- Compte supprimé
Re : Déficience visuelle et ubuntu
Bon voilà, j'ai trouvé un truc sympa, ce n'est peut être pas très sécuritaire donc faut faire attention
#!/bin/bash
VOIX=/opt/mbrola/fr4/fr4
TYPE=mb/mb-fr4
espeak -v $TYPE -s 130 -p 30 "rentrez votre identifiant" | mbrola $VOIX - -.au | aplay &&
IDENTIFIANT=`zenity --entry --title "Demande d'identifiant" --text "entrez votre identifiant de connexion"` &&
espeak -v $TYPE -s 130 -p 30 "rentrez votre code" | mbrola $VOIX - -.au | aplay &&
CODE=`zenity --entry --title "code de connexion" --text "entrez votre code de connexion"`
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
espeak -v $TYPE -s 130 -p 30 "consultation de la boite de récèption" | mbrola $VOIX - -.au | aplay ;
MAIL="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - \
https://$IDENTIFIANT:$CODE@mail.google.com/mail/feed/atom \
--no-check-certificate | grep 'fullcount' \
| sed -e 's/.*<fullcount>//;s/<\/fullcount>.*//' 2>/dev/null)"
if [ "$MAIL" -gt "0" ];
then
espeak -v $TYPE -s 130 -p 30 "$MAIL/nouveaux messages dans/la boite de récèption" | mbrola $VOIX - -.au | aplay;
fi
sleep 4;
Après faudrait pouvoir les récupérer ces nouveaux messages
Dernière modification par benoitfra (Le 15/08/2010, à 18:34)
#36 Le 19/08/2010, à 20:59
- Compte supprimé
Re : Déficience visuelle et ubuntu
Bon voilà, j'arrive à quelque chose de correcte à mon goût.
#!/bin/bash
VOIX=/opt/mbrola/fr4/fr4
TYPE=mb/mb-fr4
MOVE="1"
espeak -v $TYPE -s 130 -p 30 "Début de la navigation sonore" | mbrola $VOIX - -.au | aplay ;
espeak -v $TYPE -s 130 -p 30 "Voulez-vous connaître les instructions de navigation?" | mbrola $VOIX - -.au | aplay &
zenity --question --title "Voulez vous savoir comment naviguer?" --text "dicter les instructions ?"
INFO=$?
case $INFO in
0 ) espeak -v $TYPE -s 130 -p 30 "z haut" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "s bas" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "q gauche" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "d droite" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "a relire" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "e stop" | mbrola $VOIX - -.au | aplay ;;
1 );;
esac;
for ((nr=1 ; nr<=$MOVE; nr++))
do
choix=`zenity --entry --title "Navigation" --text ""`
case $choix in
z ) xdotool key "Up" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
s ) xdotool key "Down" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
q ) xdotool key "Left" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
d ) xdotool key "Right" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
a ) xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
e ) exit ;;
esac;
done
exit
Je ne sais pas si quelqu'un passe encore par là, j'ai une petite question est-il possible de capter un évènement clavier.
Par exemple, est-il possible grâce à un script de savoir que j'ai appuyé sur la flèche gauche?
je connais la commande suivante:
xev | grep key
Dernière modification par benoitfra (Le 19/08/2010, à 22:12)
#37 Le 20/08/2010, à 00:28
- draco31.fr
Re : Déficience visuelle et ubuntu
edit: YoBoy admin de la doc m'a dit que la doc était en lecture seule pendant quelques jours (ils travaillent sur une optimisation de la doc et sur les serveurs) mais que tu pouvais parler de ta page avec yannubuntu sur la ML de la doc
La doc est à nouveau accessible.
@ benoitfra
On ne mort pas sur la doc Il ne faut pas hésiter à apporter ta contribution, au pire on peut toujours revenir à une version précédente.
Pour commencer, tu pourrais te créer une page utilisateur, pour te présenter, ici : http://doc.ubuntu-fr.org/utilisateurs/benoitfra
Ensuite, pour la ou les pages que tu souhaites créer, tu peux les commencer dans une page brouillon, ici : http://doc.ubuntu-fr.org/utilisateurs/benoitfra/brouillon
Lorsqu'elle est prête, tu nous en informe sur la liste de discussion : http://doc.ubuntu-fr.org/wiki/liste_discussion#coordination_de_la_documentation
Il y a déjà une page synthèse vocale ( http://doc.ubuntu-fr.org/synthese_vocale ) qui référence quelques scripts.
Vu que cela risque de faire grossir la page en ajoutant les tiens, on sera surement amener à scinder la page pour garder un portail synthétique d'un côté, et une liste de scripts de l'autre. Mais ne t'en préoccupe pas pour le moment, nous aurons l'occasion d'en reparler.
Au sujet de tes derniers scripts, j'ai quelque suggestions :
Pour le contrôle du volume :
choix=`zenity --scale --title="Réglage du volume"`
amixer -c 0 set Master $choix
Vu que l'échelle est bornée entre 0 et 100, il faudrait passer la valeur sous forme de pourcentage.
Sinon, c'est une valeur abstraite qui change selon les carte son (chez moi le max est à 255, donc à 100 j'entends rien )
De plus, le contrôle "Master" n'existe pas toujours. Chez moi, j'ai PCM et Front. Je ne sais pas comment connaître le bon canal à modifier, mais je crois que PCM est toujours présent.
amixer -c 0 set PCM ${choix}%
Tu pourrais aussi envisager 1 script qui fait varier de +/-10% en indiquant la valeur finale vocalement et visuellement par OSD.
Pour la lecture de la navigation, je pense que tu en aura marre à force de toujours valider la première question par non.
Une solution est de sauvegarder un fichier de config dans le dossier de l'utilisateur.
Par exemple :
#!/bin/bash
VOIX=/opt/mbrola/fr4/fr4
TYPE=mb/mb-fr4
MOVE="1"
# Variable pour la lecture des instructions (donne la valeur par défaut si pas de fichier de conf)
INSTRUCTION_NAVIGATION=oui
# Si fichier de conf existe, on le lit pour charger les paramètres (remplace la valeur de INSTRUCTION_NAVIGATION)
[ -r $HOME/.config_synthese_vocale ] && source $HOME/.config_synthese_vocale
espeak -v $TYPE -s 130 -p 30 "Début de la navigation sonore" | mbrola $VOIX - -.au | aplay ;
# Si l'utilisateur n'avait pas choisit "non" précédemment ...
if [ "$INSTRUCTION_NAVIGATION" != "non" ] ; then
espeak -v $TYPE -s 130 -p 30 "Voulez-vous connaître les instructions de navigation?" | mbrola $VOIX - -.au | aplay &
zenity --question --title "Voulez vous savoir comment naviguer?" --text "dicter les instructions ?"
INFO=$?
case $INFO in
0 ) espeak -v $TYPE -s 130 -p 30 "z haut" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "s bas" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "q gauche" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "d droite" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "a relire" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "e stop" | mbrola $VOIX - -.au | aplay ;;
# Sauvegarder le choix de ne plus lire les instrcutions
1 ) echo "INSTRUCTION_NAVIGATION=non" >> $HOME/.config_synthese_vocale ;;
esac;
fi
for ((nr=1 ; nr<=$MOVE; nr++))
do
choix=`zenity --entry --title "Navigation" --text ""`
case $choix in
z ) xdotool key "Up" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
s ) xdotool key "Down" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
q ) xdotool key "Left" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
d ) xdotool key "Right" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
a ) xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;;
e ) exit ;;
esac;
done
exit
Tu peux aussi remplacer la question zenity par 3 choix, avec "oui", "non" et "ne plus demander". Seul le dernier nécessitera la sauvegarde de l'option dans le fichier.
A noter que le même fichier de config peut servir pour tout les scripts, du moment que les variables utilisées sont différentes.
Pour l'étude des évènements du clavier, je ne sais pas, mais cela m'intéresse beaucoup. Je souhaiterai également pouvoir connaître les coordonnées du curseur de la souris sur l'écran.
Enfin, penses à commenter tes scripts de quelques lignes en entête.
Par exemple :
# Auteur : benoitfra
# Contact : benoitfra@xxx.fr
# Version : 1.0
# Licence : GPL v3
# Fonction : Réglage du volume avec assistance vocale
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, amixer, zenity
Bonne continuation.
Hors ligne
#38 Le 20/08/2010, à 10:43
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Bjr,
Dsl, je n'étais pas là ces jours-ci.
J'ai fait des essais, et je n'arrive pas à récupérer la selection de nautilus selon event (python-nautilus), j'ai l'impression que rien n'est prévu ...
J'ai fait un truc avec xdotool qui vérifie si nautilus au premier plan et lance régulierement le Menu+n et Return, mais c'est pas bon, le menu qui apparait toutes le x secondes, ca ne le fait pas !
Sinon, une solution qui serait assez simple, il suffirait de faire un navigateur spécialisé. CAD un navigateur basique en pygtk où on pourrait récupérer tous les evenements (selection via souris, appuis d'une touche, premier plan, etc, etc), donc y associer ce qu'on veut.
Par contre, ca sera en affichage liste (ca serait possible en icone, mais un plus gros taf !), comme c'est pour les mal-voyants, le texte de la liste pourrait être plus gros, les icones également.
Ce navigateur serait en python (bien qu'il pourrait être fait en bash/glade2script).
Il faudrait établir un cahier des charges pour savoir quelle sont les fonctionnalités minimales nécessaires pour ce navigateur ? Mais surtout quelles sont celles facilement implantable
Dernière modification par AnsuzPeorth (Le 20/08/2010, à 11:06)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#39 Le 20/08/2010, à 11:43
- Compte supprimé
Re : Déficience visuelle et ubuntu
Tout d'abord, merci pour ses réponses ....
Concernant ma contribution à la doc, je crains que cela ne soit corrompu.
Je vais reprendre la prépa dans pas très longtemps, je ne sais pas si je vais avoir le temps de le faire.
Je vais essayer de modifier la page synthèse vocale et de modifier mes scripts afin de les commenter un peu.
Ensuite concernant le script de réglage du volume
Effectivement, PCM marche nikel et en plus on peut le régler en pourcentage (chez moi aussi il va jusqu'à 255).
Concernant le pas de réglage, je crois que l'on peut choisir avec zenity et pour la notification OSD, j'ai trouvé ceci:
echo message:volume réglé à $choix % | zenity --notification --listen --window-icon="question" | zenity --notification --window-icon="question" --text="volume réglé à $choix %"
Y'a t-il plus simple?
Voilà pour toi draco31, pour connaitre la position de la souris, tu peux installer xdotool, puis
xdotool getmouselocation
Voici un exemple de ce que la commande me retourne:
x:278 y:190 screen:0
Concernant ton idée AnsuzPeorth, je trouve formidable que des gens investissent de leur temps pour aider les autres.
Je t'informe que je suis novice et que je ne sais pas programmer (je mets les mains dedans le cambouis et je découvre petit à petit) et avec les études qui vont reprendre je ne serai pas beaucoup disponible.
Mais je serai ravi de participer dans le temps qu'il me reste.
ps: j'avais testé le lancement du script en automatique avec Menu+n et Return via xdotool résultat gros bug, je ne pouvais plus utilisé mon clavier et le script me lisait en boucle l'élément séléctionné
Le script que j'ai donné plus haut et qui a été modifié par draco31 s'avère efficace.
Il ne nécéssite que six touches pour naviguer
z=haut
s=bas
q=gauche
d=droite
a=relire
e=exit
Il peut être lancé au démarrage.
Pour l'automatiser un petit plus, je cherche en ce moment à récupérer les événements claviers.
Ici pour naviguer, l'utilisateur doit presser par exemple q puis Entrée.
Les idées que j'ai eu:
###### obtenir les keycodes pour les touches pressées ######
TOUCHE=`xev | grep key | awk '{ print $4}'`
###### comparer les keycodes à une liste de keycodes préalablement entrée dans le script ######
????
###### Lancer une boucle if ######
sinon:
###### on capte ce que l'utilisateur a écrit ######
xdotool key "ctrl+a" | xdotool key "ctrl+c"
###### on renvoit le contenu du presse papier dans le script ######
????
###### structure case/esac ######
Voila, encore merci à tous...j'ai fait une update du script pour réglé le volume.
Dernière modification par benoitfra (Le 20/08/2010, à 12:45)
#40 Le 20/08/2010, à 13:40
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Pour voir le principe (j'ai pas tout installé, mbrola & co, donc pas pu essayer).
C'est juste la copie d'un exemple de la doc pygtk qui est une sorte de mini navigateur, j'y ai juste ajouter un event et une fonction (c'est entouré de #######Debut ajout et #########Fin ajout)
#!/usr/bin/env python
import os, stat, time
import pygtk
pygtk.require('2.0')
import gtk
dossierxpm = [
"17 16 7 1",
" c #000000",
". c #808000",
"X c yellow",
"o c #808080",
"O c #c0c0c0",
"+ c white",
"@ c None",
"@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@",
"@@+XXXX.@@@@@@@@@",
"@+OOOOOO.@@@@@@@@",
"@+OXOXOXOXOXOXO. ",
"@+XOXOXOXOXOXOX. ",
"@+OXOXOXOXOXOXO. ",
"@+XOXOXOXOXOXOX. ",
"@+OXOXOXOXOXOXO. ",
"@+XOXOXOXOXOXOX. ",
"@+OXOXOXOXOXOXO. ",
"@+XOXOXOXOXOXOX. ",
"@+OOOOOOOOOOOOO. ",
"@ ",
"@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@"
]
dossierpb = gtk.gdk.pixbuf_new_from_xpm_data(dossierxpm)
fichierxpm = [
"12 12 3 1",
" c #000000",
". c #ffff04",
"X c #b2c0dc",
"X XXX",
"X ...... XXX",
"X ...... X",
"X . ... X",
"X ........ X",
"X . .... X",
"X ........ X",
"X . .. X",
"X ........ X",
"X . .. X",
"X ........ X",
"X X"
]
fichierpb = gtk.gdk.pixbuf_new_from_xpm_data(fichierxpm)
class ExplListeFichiersFoncDonnees:
noms_colonnes = ['Nom', 'Taille', 'Mode', 'Derniere modification']
def evnmt_delete(self, widget, evnmt, donnees=None):
gtk.main_quit()
return False
def __init__(self, dossier = None):
fonct_donnees_cell = (None, self.taille_fichier, self.mode_fichier,
self.modif_fichier)
# Creation d'une nouvelle fenetre
self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.fenetre.set_size_request(400, 300)
self.fenetre.connect("delete_event", self.evnmt_delete)
###### Debut ajout
self.fenetre.connect("key_release_event", self.evnmt_key)
###### Fin ajout
modeleliste = self.creer_liste(dossier)
# Creation du TreeView
self.treeview = gtk.TreeView()
# Creation des TreeViewColumn pour afficher les donnees
self.tvcolumn = [None] * len(self.noms_colonnes)
cellpb = gtk.CellRendererPixbuf()
self.tvcolumn[0] = gtk.TreeViewColumn(self.noms_colonnes[0], cellpb)
self.tvcolumn[0].set_cell_data_func(cellpb, self.fichier_pixbuf)
cell = gtk.CellRendererText()
self.tvcolumn[0].pack_start(cell, False)
self.tvcolumn[0].set_cell_data_func(cell, self.nom_fichier)
self.treeview.append_column(self.tvcolumn[0])
for n in range(1, len(self.noms_colonnes)):
cell = gtk.CellRendererText()
self.tvcolumn[n] = gtk.TreeViewColumn(self.noms_colonnes[n], cell)
if n == 1:
cell.set_property('xalign', 1.0)
self.tvcolumn[n].set_cell_data_func(cell, fonct_donnees_cell[n])
self.treeview.append_column(self.tvcolumn[n])
self.treeview.connect('row-activated', self.ouvrir_fichier)
self.fenetredefilmt = gtk.ScrolledWindow()
self.fenetredefilmt.add(self.treeview)
self.fenetre.add(self.fenetredefilmt)
self.treeview.set_model(modeleliste)
self.fenetre.show_all()
return
###### Debut ajout
def evnmt_key(self,widget, event):
key=gtk.gdk.keyval_name(event.keyval)
if key == 'Down' or key == 'Up':
modele = self.treeview.get_model()
sel=self.treeview.get_selection()
(model,iter)=sel.get_selected()
print list(model[iter])
chaine=list(model[iter])[0]
arg='espeak -v mb/mb-fr4 -s 130 -p 30 "%s" | mbrola /opt/mbrola/fr4/fr4 - -.au | aplay' % chaine
os.system(arg)
###### Fin ajout
def creer_liste(self, dossier=None):
if not dossier:
self.nomrep = os.path.expanduser('~')
else:
self.nomrep = os.path.abspath(dossier)
self.fenetre.set_title(self.nomrep)
fichiers = [f for f in os.listdir(self.nomrep) if f[0] <> '.']
fichiers.sort()
fichiers = ['..'] + fichiers
modeleliste = gtk.ListStore(object)
for f in fichiers:
modeleliste.append([f])
return modeleliste
def ouvrir_fichier(self, treeview, chemin, colonne):
modele = treeview.get_model()
iter = modele.get_iter(chemin)
nomfichier = os.path.join(self.nomrep, modele.get_value(iter, 0))
statsfichier = os.stat(nomfichier)
if stat.S_ISDIR(statsfichier.st_mode):
nouvmodele = self.creer_liste(nomfichier)
treeview.set_model(nouvmodele)
return
def fichier_pixbuf(self, colonne, cell, modele, iter):
nomfichier = os.path.join(self.nomrep, modele.get_value(iter, 0))
statsfichier = os.stat(nomfichier)
if stat.S_ISDIR(statsfichier.st_mode):
pb = dossierpb
else:
pb = fichierpb
cell.set_property('pixbuf', pb)
return
def nom_fichier(self, colonne, cell, modele, iter):
cell.set_property('text', modele.get_value(iter, 0))
return
def taille_fichier(self, colonne, cell, modele, iter):
nomfichier = os.path.join(self.nomrep, modele.get_value(iter, 0))
statsfichier = os.stat(nomfichier)
cell.set_property('text', statsfichier.st_size)
return
def mode_fichier(self, colonne, cell, modele, iter):
nomfichier = os.path.join(self.nomrep, modele.get_value(iter, 0))
statsfichier = os.stat(nomfichier)
cell.set_property('text', oct(stat.S_IMODE(statsfichier.st_mode)))
return
def modif_fichier(self, colonne, cell, modele, iter):
nomfichier = os.path.join(self.nomrep, modele.get_value(iter, 0))
statsfichier = os.stat(nomfichier)
cell.set_property('text', time.ctime(statsfichier.st_mtime))
return
def main():
gtk.main()
if __name__ == "__main__":
exemple = ExplListeFichiersFoncDonnees()
main()
Tu le copie dans un fichier, le rendre executable puis le lancer dans la console pour avoir le retour d'éventuels bug !
A voir si la commande espeak fonctionne ???
Si le principe te conviens, il sera très facile d'améliorer (options en +, key surveiller, etc,etc... enfin pour en faire un navigateur nautilus like koi !). Si tu pars sur cette base, beaucoup de choses te seront permises
EDIT: Je ne sais pas quelles sont les manques niveau accessibilté, mais je suppose que le problème peut aussi se présenter avec l'accès au clic droit (menu petit), pour renommer ?
En tout cas, en passant par un navigateur personnlisé, tous (presque) est possible (mais cela m'étonne que ca n'existe pas encore !).
Je suppose qu'il doit exister un systeme de loupe, mais il serait aussi possible de faire des appli maxi-taille (enfin maxi caractères plutot ) ou/et vocal.
Dernière modification par AnsuzPeorth (Le 20/08/2010, à 15:01)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#41 Le 20/08/2010, à 15:49
- Compte supprimé
Re : Déficience visuelle et ubuntu
Merci AnsuzPeorth pour le script ça marche pas mal.
La commande espeak marche parfaitement.
Le seul petit problème que j'ai constaté est que quand on passe trop vite d'un élément à un autre l'affichage se bloque et on ne peut plus rien faire avec la fenêtre.
Concernant, le menu clic droit effectivement, il peut y avoir des petits problèmes.
Pour le système de Loupe, il y'a bien Orca qui connaît quelques lenteurs et surtout, il y'a le plugin zoom de bureau de compiz qui marche bien.
EDIT: voilà un morceau de code pour capter les évènements claviers, je vais essayé de l'intégrer au script afin de supprimer l'interface zenity
#!/bin/bash
KEY=`xev | grep "key" | awk '{ print $7}'`
key="Down),"
for touche in $KEY
do
if [ "$touche" = "$key" ]
then
echo "ok"
sleep 3
fi
done
exit
Dernière modification par benoitfra (Le 20/08/2010, à 16:50)
#42 Le 20/08/2010, à 18:17
- Compte supprimé
Re : Déficience visuelle et ubuntu
J'ai un petit problème avec ce morceau de script.
#!/bin/bash
KEY=`xev | grep "key" | awk '{ print $7}'`
bas="Down"
haut="Up"
key1="$bas),"
key2="$haut),"
for touche in $KEY
do
if [ "$touche" = "$key1" ]
then
{
echo "$bas"
sleep 3
}
elif [ "$touche" = "$key2" ]
then
{
echo "$haut"
sleep 3
}
fi
done
exit
Problème, si j'appuis sur une seule touche (disons flèche bas), il détecte deux appuis.
Ainsi, au moment où je commence ma boucle "for" il crée deux variables qui aboutissent au meme résultats "flèche bas"
Peut-on faire en sorte de ne faire qu'un seule passage avec la boucle for même si le script détecte deux appuis.
ps: c'est pas très clair ce que je raconte, je conseil de testé pour ce rendre compte du petit soucis
Dernière modification par benoitfra (Le 20/08/2010, à 18:33)
#43 Le 20/08/2010, à 19:06
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Le seul petit problème que j'ai constaté est que quand on passe trop vite d'un élément à un autre l'affichage se bloque et on ne peut plus rien faire avec la fenêtre.
C'était juste pour te faire voir le principe, si tu penses que ca vaut le cout de développer un truc pareil, on s'intéressera au détails après
Peut-on faire en sorte de ne faire qu'un seule passage avec la boucle for même si le script détecte deux appuis.
Je ne vois pas trop comment tu gère ce script...Chez moi, rien ne se passe tant que la fenetre xev n'est pas fermé ..!
Sinon, en mettant exit dans chaque condition, tu ne passera qu'une seule fois !
Mais je suis pas sur d'avoir compris ta requête
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#44 Le 20/08/2010, à 19:13
- Compte supprimé
Re : Déficience visuelle et ubuntu
le script pytho est une bonne idée ansuzpeoth et il marche déjà presque bien
concernant le morceau de script que j'ai donné on peut je pense l'intégrer au script ainsi
#!/bin/bash
ID=`xdotool getwindowfocus`
KEY=`xev -id "$ID" | grep "key" | awk '{ print $7}'`
bas="Down"
haut="Up"
key1="$bas),"
key2="$haut),"
for touche in $KEY
do
if [ "$touche" = "$key1" ]
then
{
echo "$bas"
sleep 3
break
}
elif [ "$touche" = "$key2" ]
then
{
echo "$haut"
sleep 3
break
}
fi
done
exit
normallement la petit fenetre ne s'affiche plus avec ça j'ai pas essayé encore (je verrai ce soir)
#45 Le 20/08/2010, à 21:08
- Compte supprimé
Re : Déficience visuelle et ubuntu
J'arrive à un truc du genre (ça marche pas ) mais bon, j'essaye
#!/bin/bash
# Auteur : benoitfra
# Contact : benoitfra@xxx.fr
# Version : 1.0
# Licence : GPL v3
# Fonction : Réglage du volume avec assistance vocale
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, amixer, zenity
VOIX=/opt/mbrola/fr4/fr4
TYPE=mb/mb-fr4
MOVE="1"
KEY=`xev | grep "key" | awk '{ print $7}'`
touche1="Down"
touche2="Up"
touche3="Left"
touche4="Right"
#touche5="space"
#touche6="Super_L"
key1="$touche1),"
key2="$touche2),"
key3="$touche3),"
key4="$touche4),"
#key5="$lire),"
#key6="$sortir),"
# Variable pour la lecture des instructions (donne la valeur par défaut si pas de fichier de conf)
INSTRUCTION_NAVIGATION=oui
# Si fichier de conf existe, on le lit pour charger les paramètres (remplace la valeur de INSTRUCTION_NAVIGATION)
[ -r $HOME/.config_synthese_vocale ] && source $HOME/.config_synthese_vocale
espeak -v $TYPE -s 130 -p 30 "Démarrage de l'assistance vocale" | mbrola $VOIX - -.au | aplay ;
# Si l'utilisateur n'avait pas choisit "non" précédemment ...
if [ "$INSTRUCTION_NAVIGATION" != "non" ] ; then
espeak -v $TYPE -s 130 -p 30 "Voulez-vous connaître les instructions de navigation?" | mbrola $VOIX - -.au | aplay &
zenity --question --title "Voulez vous savoir comment naviguer?" --text "dicter les instructions ?"
INFO=$?
case $INFO in
0 ) espeak -v $TYPE -s 130 -p 30 "z haut" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "s bas" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "q gauche" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "d droite" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "a relire" | mbrola $VOIX - -.au | aplay ; espeak -v $TYPE -s 130 -p 30 "e stop" | mbrola $VOIX - -.au | aplay ;;
# Sauvegarder le choix de ne plus lire les instrcutions
1 ) echo "INSTRUCTION_NAVIGATION=non" >> $HOME/.config_synthese_vocale ;;
esac;
fi
for ((nr=1 ; nr<=$MOVE; nr++))
do
{
for touche in $KEY
do
{
for NB in 1 2 3 4 ;
do
{
if [ "$touche" = "$key$NB" ]
then
xdotool key "$touche$NB" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1));
fi
}
done
}
done
}
done
exit
#46 Le 20/08/2010, à 21:09
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Je pense pas que ca fonctionnera ...!
Il faudrait un truc du genre (tu veux espionner si une touche est enfoncé, et ça en continu ???)
#!/bin/bash
ID=$(xdotool getwindowfocus)
flag=false
while read ligne
do
if [[ "$ligne" =~ "key" ]]; then
if [[ "$flag" == true ]]; then
flag=false
continue
elif [[ "$ligne" =~ "q" ]]; then
break
elif [[ "$ligne" =~ "Up" ]]; then
echo "Up enfoncé"
flag=true
continue
elif [[ "$ligne" =~ "Down" ]]; then
echo "Down enfoncé"
flag=true
continue
fi
fi
done< <(xev -id $ID)
exit
le flag sert pour éviter le double envois d'une touche de xev. q pour arrêter.
Pour ce qui est du navigateur, j'aurais pas trop le temps, et surtout, je ne sais pas du tout les attentes des malvoyants, il faudrait que ce soit toi qui le développe .
Je te propose de faire une base de travail, je coderais ça en bash / glade2script, comme ça tu pourras y gratter sans trop de mal, une fois que tu as terminé l'ébauche, il suffira de traduire en python pour faciliter l'évolution future et meilleure réactivité ...(glade2script tourne aussi en python).
Si ca t'intéresse, il me faudrait qqles détails pour lancer le truc:
-la taille des caractères
-menu contextuel ou pas nécessaire ?
-quel icone, celle du thème ou des spécial (genre rond rouge, bleu, vert selon fichier.)
-lecture espeak en continue, ou juste à la demande ?
- et j'oublie surement des trucs indispensable .....
Dernière modification par AnsuzPeorth (Le 20/08/2010, à 21:12)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#47 Le 20/08/2010, à 21:40
- Compte supprimé
Re : Déficience visuelle et ubuntu
Merci, pour cette attention AnsuzPeorth
Comme je l'ai dit plus haut moi aussi je ne vais être dispo pendant les 10 prochains mois (la prépa ingé)
donc si je dois touché à cela ça sera à mes heures perdus
Toutefois, je veux bien essayé de répondre aux question concernant les besoins des malvoyants en essayant de ne pas faire l'égoïste et ne penser qu'à mon cas.
Je diviserai la description du navigateur en trois:
-aspect visuel
-aspect audio
-prise en main
1 aspect visuel
Ne t-inquiète pas on ne parlera pas ici de la beauté du navigateur.
Tout d'abord beaucoup de malvoyant travaillent avec un fond noir (moins d'éblouissement ect)
Je pense qu'il faudra intégrer la possibilité de basculer le fond de la fenêtre en noir rapidement.
Certains d'entre nous ont des problèmes pour différencier les couleurs quand les teintes sont assez proches et dans le cas où ils n'utiliseraient pas la synthèse vocale il faut que la couleur de police par défaut tranche assez bien avec le fond.
Concernant la taille de police à utiliser, tout dépend si le malvoyant est famillié ou non au système de synthèse vocale.
Pour l'instant, c'est tout ce que je vois pour cette partie.
2.aspect audio
L'intégration d'un système vocale est à mon avis une bonne idée. ( à ce que j'ai entendu Orca rebute certains malvoyant et ceux malgré la présence des voix Mbrola qui d'après la légende peuvent lu être couplé)
Je pense que selon l'utilisateur et selon sa déficience il serait préférable de demander au premier lancement si il veut que la synthèse vocale soit active lors de toute les prochaines réouvertures.
On doit prévoir dans le cas contraire pour les malvoyants moins atteints mais qui ont envie de se reposer les yeux un raccourci pour l'activer et la désactiver facilement.
Un raccourci pour répéter le dernier élément lu.
Il faut si cela est possible favorisé la navigation au clavier.
Concernant, le moteur de synthèse vocale à utiliser et le synthétiseur ( moi j'utilise espeak et Mbrola assez agréable mais comme j'ai dit je suis pas égoïste et une autre solution peut être adoptée).
Pour l'instant, je ne vois pas trop quoi dire de plus.
3.prise en main
C'est une partie qui aurait pu ne pas exister, elle va consister à dire que les raccourcis si il y'en à de base doivent être accessibles.
#48 Le 20/08/2010, à 22:08
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Faut pas grand chose alors ....
Les icones alors ? besoin ou pas ? (on ne pourra pas modifier à convenance, en tout cas en bash)
J'ai penser à un truc, plutot que d'avoir le contenue du navigateur en maxi taille, ca serait pas mieux une taille raisonable et un maxi popup qui affiche le nom et d'autres infos (taille, date & co) ?
Tu n'aurais pas une idée des tailles, à la louche, ca m'aiderais bien, parceque là ...
Les raccourci claviers seront une combinaison de touches, sinon l'édition de noms de fichiers sera impossible. (l'édition ca sera pas de suite )
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#49 Le 21/08/2010, à 09:57
- Compte supprimé
Re : Déficience visuelle et ubuntu
Pour les icônes, j'en sais rien.
Je pense toujours que les icônes systèmes pourraient convenir.
J'avoue que l'idée de la popup est une bonne idée.
J'avis pensé à un truc du genre, une visionneuse qui présenterai les éléments les uns après les autres.
#50 Le 21/08/2010, à 13:53
- AnsuzPeorth
Re : Déficience visuelle et ubuntu
Bjr,
Bon, un premier jet ... Juste pour savoir si le principe de navigation convient ?
Si le principe est ok, je mets au propre et j'ajoute le reste (copie, suppression. lecture auto, etc, etc ...selon tes besoins)
Seul espeak est utilisé pour les essais, il suffira d'adapter la commande par la suite.
Décompresser l'archive et lancer go_test.py en console (pour retour si bug)
http://gwebradio.googlecode.com/files/G … 0.1.tar.gz
↑↓ navigation
← aller au dossier parent
ENTER ouvrir dossier ou fichier avec application par défaut (via gnome-open)
CTRL_L+← lecture selection
CTRL_L+CTRL_R lecture dossier
CTRL_L+Q fermer
(j'ai rassemblé les raccourci de navigation assez proche, ca evitera la gymnastique des doigts, il serait même possible de tout rassembler sur la droite, navigation avec une seule main ? A toi de me dire !)
Infos:
Le nom du dossier actuelle est affiché en haut, séparé par un barre noir de 20 px (2 derniers dossiers, pas le path en entier, trop long )
Le navigateur est mis en plein ecran (sans barre de titre)
La taille des caractère 100 pxl, taille icons 128px
questions:
-- Pour le maxi popup, j'ai pensé à le mettre en plein écran, dessus le navigateur avec comme info 5 lignes, nom, chemin, taille, date modification, date création, tout ça en caractère 200 px. Je présume que les malvoyant ont au moins du 17 pouces en ecran, voir plus, donc on part sur un ecran de 1024 px de haut (19, 20 pouces), pour les 17 pouces, il faudra juste descendre avec les fleche pour afficher la derniere ligne.
On peut aussi avoir un affichage plus gros, 500 px, qui prendrait la moitie de l'ecran.. Je sais pas, à toi de me dire.
-- Pour la lecture automatique, juste qd on selectionne, pas qd on ouvre un dossier ou lance un fichier ?
-- pour les raccourci (copie, coller & co), j'utilise les même que nautilus, ou tu as une idée plus ergonomique ?
-- Pour les icons, obligé d'en créer des spécifiques (impossible d'afficher de tres grosse icon system, pygtk en cause). Il faudra donc prévoir quelle type d'icons installer. Si tu as une idée !
Pour les couleurs, je récupérerais les infos du theme installé pour accorder le tout. (et on pourra switcher en inversant les couleurs du fond et du texte)
Voilà, n'hésite pas à critiquer/demander, il faut battre le fer temps qu'il est chaud, je me connais, si tu demandes pas de suite, comme je ne sais pas rester longtemps sur une appli (une fois qu'elle est en place), je passe à autre chose ... Je sais , c'est pas bien, mais je suis comme ça
EDIT:
J'avis pensé à un truc du genre, une visionneuse qui présenterai les éléments les uns après les autres.
C'est aussi possible, même plus simple , pas de popup, mais comment afficher les infos et quelle infos ?
Je ne sais pas, mais je trouve que d'avoir plusieurs fichiers (dans une liste) est peut être plus simple pour naviguer, un popup pour les détails si besoin ???
Dernière modification par AnsuzPeorth (Le 21/08/2010, à 14:00)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne