IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

Captures d'événements clavier avec Tk


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2021
    Messages : 27
    Points : 11
    Points
    11
    Par défaut Captures d'événements clavier avec Tk
    Bonjour à tous.

    Je suis non-voyant, et débutant en langage perl.

    J'utilise un logiciel de revu d'écran appelé JAWS.

    J'ai un petit Script perl Tk, qui renvoi dans un print dans la consol la touche qui a été pressée.

    J'ai un soucis avec la touche f10.
    Mon script renvoi bien la touche, mais la bar de menu de windows s'ouvre sur ma fenêtre Tk.

    J'aurai besoin d'une âme charitable pour régler ce problème!!
    merci par avance!

    Voici mon script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use Tk; 
    $mw = MainWindow->new;
     
    $mw->bind("<Key>", [ sub {
    print "Touche : $_[1]\n";
     }, 
                         Ev('K')] ); 
    MainLoop;

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Bonsoir,
    J'ai fait le même test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
     
    use Tk;
    my $mw = MainWindow->new;
     
    $mw->bind(
    	"<Key>",
    	[
    		sub {
    			print "Touche : $_[1]\n";
    		},
    		Ev('K')
    	]
    );
     
    MainLoop;
    et j'ai le résultat suivant :
    Touche : 0
    Touche : 1
    Touche : 2
    Touche : 3
    Touche : 4
    Touche : 5
    Touche : 6
    Touche : 7
    Touche : 8
    Touche : 9
    Touche : F1
    Touche : F2
    Touche : F3
    Touche : F4
    Touche : F5
    Touche : F6
    Touche : F7
    Touche : F8
    Touche : F9
    Touche : F10
    Touche : L1
    Touche : L2
    L1 et L2 pour F11 et F12. Il faut bien positionner la souris à l'intérieur de la fenêtre Tk. Sinon, est-ce un clavier particulier ? Il est peut-être paramétré différemment non ?

    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2021
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bonjour, merci de la réponce.

    J'utilise un clavier azerty standar.
    Il y aurai un moyen avec Tk de placer le curseur de la souris sur la fenêtre Tk?
    Je peux manipuler le focus avec mon logiciel revu d'écran, mais pour la souris, c'est plus compliqué de savoir où on se trouve.

    cordialement

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    Bonsoir,

    en fait, je me suis mal exprimé. Ce n'est pas un souci de placement de souris mais de focus. Il faut bien que la fenêtre Tk ait bien le focus, ce qui est le cas par défaut au lancement.
    On peut le forcer avec le code $mw->focus;Néanmoins, cela ne résoud pas le souci car j'ai un comportement bizarre chez moi.

    Si je lance le programme en ligne de commande et je tape les touche F1 à F10, ça fonctionne par contre, F11 et F12 ne répondent pas. Je bouge la souris, sur la fenêtre voir clic dessus et là F11 et F12 fonctionnent.
    Mais ça ne répond pas toujours correctement, je n'ai pas de solutions pour le moment, j'essayerai de chercher quand j'aurais un peu plus de temps.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2021
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bonjour, de mon coté j'ai ajouté $mw->focus; mais quand je fait F10, la touche F10 est bien affiché, mais la bar de menu s'ouvre. et F11 et F12 ne fonctionne pas.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2021
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Il y a vraiment un soucis qui est même aléatoire. j'ai retirer la ligne qui force le focus, et la même F11 et f12 ne sont retourné, alors qu'ils l'étaient avant. Il y a effectivement quelque-chose d'étrange

  7. #7
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    J'ai regardé cette curiosité...
    Je n'ai pas de solution, mais parfois les réflexions bêtes font avancer les choses...

    Il n'y a rien d'aléatoire, il y a comme un basculement dans un état différent du clavier lorsqu'on tape F10
    Certains Bios permettent de reparamétrer les touches de fonctions... le mien est très limité.

    Je lance le programme de djibril :
    - De F1 à F10 OK mais pas de F11 & F12
    - Si maintenant je tape une seule fois sur n'importe quelle touche 'u' par exemple il n'apparaît pas, mais F11 & F12 deviennent actives.
    - Si j'avais tapé deux fois sur 'u' il serait apparût à la deuxième frappe, et F11 & F12 et également actives.

    Lorsque le clavier est dans cet état (F11 et F12 actives), il faut maintenant taper deux fois sur F10 pour avoir le résultat escompté.

    En attendant une meilleure trouvaille... si ça peut t'aider djblind, il faut simplement savoir que :
    - Dès le démarrage du programme tk, que le pointeur de la souris soit ou non dans la fenêtre tk, avant toute chose il faut taper une lettre du clavier ('u') par exemple,
    - à partir de cet instant toutes les touches de fonctions sont actives de F1 à F12
    - mais qu'il faut maintenant taper deux fois sur F10 pour que la frappe soit effective.

    Par contre si on va travailler sur une toute autre fenêtre, il faut revenir cliquer dans la fenêtre tk pour que ça refonctionne

    Il semble que Microsoft ait développé un programme de réaffectation des touches de fonction,
    mais sur mes win7 il ne fonctionne pas, donc pas testé.

    Il est précisé :
    Remarque : Les options répertoriées dans cet Assistant varient en fonction de la touche sélectionnée. Par exemple, étant donné qu’il est impossible de réaffecter la touche Windows, la seule option consiste à la désactiver,
    Bon, seulement pour la touche fenêtre Windows, mais pour les autres on ne sait pas ce qui est possible...

  8. #8
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 035
    Points : 2 062
    Points
    2 062
    Par défaut
    Bonjour,

    J'ai observé quelque chose sur un sujet proche, alors je me dis que ça peut alimenter la réflexion.

    Quand on affiche une image avec Irfanview, la touche Fin (si proche de <PageSuivante> ...) affiche la dernière image du répertoire. Ça fait que si on était à la 1022ème image sur 2648, une fois sur la 2648ème, pour retourner à la 1022ème ... ça prend du temps.

    J'ai voulu changer l'affectation de la touche <Fin>, mais alors, si je voulais utiliser <Fn Fin>, ou <Ctrl Fin>, pour aller à la fin du répertoire, ce n'était pas possible.

    Depuis je m'aperçois que dans ce cas précis le problème est un petit poil plus simple que ce que j'avais envisagé, puisque Irfanview accepte aussi bien <Fin> que <Ctrl Fin> pour le même résultat, il suffit donc de désactiver <Fin>. Mais si ça simplifie cette manœuvre précise, en revanche ça complique le débat puisque ce n'est pas forcément une généralité.

    Je ne me rappelle pas si il était prévu de rendre l'affectation de la touche dépendante du programme actif.

Discussions similaires

  1. capture d'événement clavier
    Par roland34 dans le forum Débuter
    Réponses: 4
    Dernier message: 11/03/2013, 23h43
  2. Capture d'évênement clavier par un composant non visible
    Par _Ulysse_ dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2012, 17h14
  3. Capturer frappe au clavier avec un hook
    Par Baud10 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/09/2009, 20h56
  4. Capturer les événement claviers sous Webdev
    Par Dedalerun dans le forum WebDev
    Réponses: 0
    Dernier message: 19/01/2009, 09h26
  5. [JTabbedPane] capture des événements clavier
    Par sepas dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 14/06/2008, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo