Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#26 Le 12/08/2010, à 23: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. neutral

Hors ligne

#27 Le 13/08/2010, à 22: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, à 22:31

benoitfra

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, à 18:41)

Hors ligne

#29 Le 14/08/2010, à 22: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+


http://mixout.fr
Une question bien posée est une question presque résolue
http://www.linux-france.org/article/the … ns-fr.html

Hors ligne

#30 Le 15/08/2010, à 10:51

draco31.fr

Re : Déficience visuelle et ubuntu

benoitfra a écrit :

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, à 13: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.


Développeur, simple utilisateur, professionnel ou juste intéressé venez découvrir le groupe April Accessibilité et Logiciels Libres http://libre-et-accessible.org

Hors ligne

#32 Le 15/08/2010, à 13:27

benoitfra

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, à 13:34)

Hors ligne

#33 Le 15/08/2010, à 14:03

kinouchou

Re : Déficience visuelle et ubuntu

benoitfra a écrit :

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, à 14:13)


Développeur, simple utilisateur, professionnel ou juste intéressé venez découvrir le groupe April Accessibilité et Logiciels Libres http://libre-et-accessible.org

Hors ligne

#34 Le 15/08/2010, à 17:16

benoitfra

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, à 13:09)

Hors ligne

#35 Le 15/08/2010, à 19:17

benoitfra

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, à 19:34)

Hors ligne

#36 Le 19/08/2010, à 21:59

benoitfra

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, à 23:12)

Hors ligne

#37 Le 20/08/2010, à 01:28

draco31.fr

Re : Déficience visuelle et ubuntu

kinouchou a écrit :

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 wink 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 smile )
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, à 11: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 wink

Dernière modification par AnsuzPeorth (Le 20/08/2010, à 12: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, à 12:43

benoitfra

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, à 13:45)

Hors ligne

#40 Le 20/08/2010, à 14: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 wink

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, à 16: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, à 16:49

benoitfra

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, à 17:50)

Hors ligne

#42 Le 20/08/2010, à 19:17

benoitfra

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, à 19:33)

Hors ligne

#43 Le 20/08/2010, à 20: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 wink

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 smile


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, à 20:13

benoitfra

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)

Hors ligne

#45 Le 20/08/2010, à 22:08

benoitfra

Re : Déficience visuelle et ubuntu

J'arrive à un truc du genre (ça marche pas big_smile) 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

Hors ligne

#46 Le 20/08/2010, à 22: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, à 22: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, à 22:40

benoitfra

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 yikes
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.

Hors ligne

#48 Le 20/08/2010, à 23: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à ... wink

Les raccourci claviers seront une combinaison de touches, sinon l'édition de noms de fichiers sera impossible. (l'édition ca sera pas de suite wink)


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, à 10:57

benoitfra

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.

Hors ligne

#50 Le 21/08/2010, à 14: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 wink)
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 smile

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, à 15:00)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

Haut de page ↑