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 :

désactivation touche clavier


Sujet :

Interfaces Graphiques Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut désactivation touche clavier
    Bonjour,

    J'essaie de créer les fonctionnalités telnet (afin d'automatiser certaines tâches sur des switchs) sous forme d'une interface graphique (Tk) à l'aide du module Net::Telnet.
    La saisie des commandes Telnet ainsi que le résultat des commandes se fait dans le même widget texte.
    Mon problème se situe après l'affichage d'un résultat, en effet j'ai le curseur qui se retrouve sur la ligne en dessous du prompt du switch alors que je souhaiterai avoir le curseur juste derrière le prompt.

    exemple :

    <prompt switch>dis clock (commande)
    14:00:00 UTC Sat 05/04/2011
    <prompt switch>
    curseur

    et je souhaiterai :

    <prompt switch>dis clock (commande)
    14:00:00 UTC Sat 05/04/2011
    <prompt switch>curseur

    Pour exécuter la commande, j'utilise la fonction bind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte->bind("<Return>",[\&cmde]);

    En fait, si j'ai bien compris c'est la touche <Return> qui provoque le retour chariot.Ma question est donc la suivante: est-il possible de désactiver ce retour chariot et n'exécuter que la commande?

    Pour généraliser ma question, en telnet sous dos, l'appui de touches tels que "?", "Tab","Move up" provoque des actions spécifiques, est-il possible de désactiver leur fonctions premières et de n'éxécuter que la commande voulue ?

    Exemple : l'appui sur la touche <Move up> ne remonte pas le curseur mais affiche la dernière commande exécutée.

    J'espère avoir été assez clair.

    Merci pour votre aide.

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Il faudrait jouer avec les indexes. Sinon, il nous faudrait d'un peu plus de code pour tester.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre aide.

    J'ai essayé en jouant avec les index mais rien de concluant.
    J'ai trouvé une solution (peut être pas la meilleure!) en utilisant Tk->break

    Par contre, il me reste un petit pb, dans la fonction tab, je voudrais afficher seulement les 2 premières lignes de ma chaine result


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk; # Appel du module Tk
    use Net::Telnet;
    my $cmd="";
    my $prompt="";
    my $long_prompt="";
    my @result="";
    my $telnet = new Net::Telnet ( Timeout=>10,Errmode=>'die');
    my $fenetre = new MainWindow(-title => 'Telnet',-background => 'white',);
    $fenetre->geometry("1000x700");
    my $bouton = $fenetre->Button(-text => 'Connexion',-command => [\&connexion,],,)->pack();
    $bouton->place(-x => 250, -y => 50 );
    my $texte = $fenetre->Text( )->pack( );
    $texte->place(-x => 100, -y => 200 );
    $texte->bindtags([reverse $texte->bindtags]);
    $texte->bind("<Return>",[\&commande]);
    $texte->bind("<Tab>",[\&tab]);
     
    sub connexion
    	{
    	$telnet->open('10.57.72.12');
    	@result =$telnet->waitfor('/authentication\b/');
    	$texte->insert('end',(@result));
    	$texte->insert('end',($result[1]));
    	$telnet->print('');
    	$telnet->waitfor('/Username:$/i');
    	$telnet->print('admin');
    	$telnet->waitfor('/Password:$/i');
    	$telnet->print('motdepasse');
    	@result=$telnet->waitfor('/login/');
    	$texte->insert('end',(@result));
    	$texte->insert('end',($result[1]));
    	$telnet->print('');
    	@result=$telnet->waitfor('/.*[\$>\]\%] *$/'); # détection prompt
    	$texte->insert('end',@result);
    	$texte->insert('end',$result[1]);
    	$texte->see('end');
    	$prompt =$texte->get("end -1 lines" ,"end");
    	$long_prompt=length($prompt) -1;
    	$texte->focus;
    	}
    sub tab
    	{
    	$cmd =$texte->get("end -1 lines + $long_prompt chars","end - 1 chars"); #détermination commande
    	$telnet->print($cmd."\t");
    	sleep(1);
    	@result = $telnet->waitfor('/More ----|.*[\$>\]\%] *$/'); # détection prompt
    	my$result=$result[-2];
    	chop $result;
    	$texte->insert('end',"\n".$result);
    	$texte->focus;
    	$texte->see('end');
    	Tk->break;
    	}
    sub commande
    	{
    	$cmd =$texte->get("end -1 lines + $long_prompt chars","end"); #détermination commande
    	$telnet->print(($cmd));
    	sleep(1);
    	@result = $telnet->waitfor('/More ----|.*[\$>\]\%] *$/'); # détection prompt
    	my$result=$result[-2];
    	chop $result;
    	$texte->insert('end',"\n".$result);
    	$texte->see('end');
    	$prompt =$texte->get("end -1 lines","end" );
    	$long_prompt=length($prompt)-1;
    	Tk->break;
    	}
     
    MainLoop; #

Discussions similaires

  1. Désactiver touche clavier
    Par c+cool dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2010, 13h01
  2. Désactiver une touche clavier !
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/05/2008, 22h51
  3. [JEditorPane]Captures des touches claviers
    Par splend_f dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 17/05/2004, 14h57
  4. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23
  5. envoie de touche clavier
    Par psfox2001 dans le forum DirectX
    Réponses: 1
    Dernier message: 13/03/2003, 21h56

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