Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1038 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Saisie des touches F1 à F12

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Saisie des touches F1 à F12

n°1497258
Profil sup​primé
Posté le 30-12-2006 à 07:58:56  answer
 

Bonjour,
Je cherche à utiliser les touches telles que F1..F12
 
j'ai essayé avec la procedure Get_Immediate (Item      : out Character;  Available : out Boolean); et la procedure Look_Ahead (Item        : out Character;  End_Of_Line : out Boolean); mais je n'y parviend pas.
 
j'utilise Gnat et suis sur Linux.
 
mon code de test ::=
 

Code :
  1. with Ada.Text_Io;
  2. use Ada.Text_Io;
  3. with Ada.Integer_Text_Io; -- Pour afficher character'pos(Char);
  4. use Ada.Integer_Text_Io;
  5. procedure Main is
  6.   Char : Character;
  7.   Real_String : String(1..4) := (others => Ascii.Nul);
  8.   Last_char : Natural := 1;
  9.   Avaible : Boolean;
  10.  
  11. begin
  12.      Text_Io.Skip_Line;
  13.      Get_Immediate(Char,avaible);
  14.      Put(Integer'Image(Character'Pos(Char)));
  15.      if Avaible then
  16.         Real_String(Last_char) := Char;
  17.         loop
  18.            Last_Char := Last_Char + 1;
  19.            Get_Immediate(Char,avaible);
  20.            Put(Integer'Image(Character'Pos(Char)));
  21.            Real_String(Last_Char) := Char;
  22.            exit when not Avaible;
  23.         end loop;
  24.      end if;
  25. end Main;

mood
Publicité
Posté le 30-12-2006 à 07:58:56  profilanswer
 

n°1497279
Profil sup​primé
Posté le 30-12-2006 à 11:42:55  answer
 

J'aurais aimé utiliser Get_Immediate (Item      : out Character;  Available : out Boolean); dans un algo élégant mais bon, je m'en sort avec une serie de case en cascade et Get_Immediate (Item      : out Character); pour l'utilisation des touche F1 à F6
 

Code :
  1. when Character'Val(27) =>
  2.                     Get_Immediate(Char);
  3.                     case Char is
  4.                        when Character'Val(91) =>
  5.                           Get_Immediate(Char);
  6.                           case Char is
  7.                              when Character'Val(91) =>
  8.                                 Get_Immediate(Char);
  9.                                 case Char is
  10.                                    when Character'Val(65) =>
  11.                                       Mode := Gestion_De_Production;
  12.                                    when Character'Val(66) =>
  13.                                       Mode := Caisse;
  14.                                    when Character'Val(67) =>
  15.                                       Mode := Previsionnel;
  16.                                    when Character'Val(68) =>
  17.                                       Mode := Echeancier;
  18.                                    when Character'Val(69) =>
  19.                                       Mode := Reel;
  20.  
  21.                                    when others =>
  22.                                       Put(Ascii.Bel);
  23.                                 end case;
  24.                              when Character'Val(49) =>
  25.                                 Get_Immediate(Char);
  26.                                 case Char is
  27.                                    when Character'Val(55) =>
  28.                                       Mode := Connection_Reseau;
  29.                                    when others =>
  30.                                       Put(Ascii.Bel);
  31.                                 end case;
  32.                              when others => -- echeppement de 3 caracteres;
  33.                                 Put(Ascii.Bel);
  34.                           end case;
  35.                        when others =>
  36.                           Put(Ascii.Bel);
  37.                     end case;


Message édité par Profil supprimé le 30-12-2006 à 11:44:20
n°1497400
apprentitu​x
Posté le 30-12-2006 à 20:19:30  profilanswer
 

Pourquoi tu veux utiliser de telles procedures ?
Les touches F* ne renvoient pas de caractères en général...

n°1497408
Profil sup​primé
Posté le 30-12-2006 à 21:08:55  answer
 

le "scancode" si je peux m'exprimer ainsi, des touches F1 à F6 est sur plusieurs caracteres
 
Sur ma Gnu/Linux Debian les touches F1 à F5 sont sur 4 caracteres et F6 sur 5
Sur Windows XP les touche F1 à F6 sont sur 2 caracteres
 
 
 
Ce sont en fait, sur Gnu/Linux Debian, des sequences d'échappement

Message cité 1 fois
Message édité par Profil supprimé le 30-12-2006 à 21:27:26
n°1497748
apprentitu​x
Posté le 01-01-2007 à 21:31:26  profilanswer
 

Les scancodes ne sont pas des caractères mais les codes des touches.
Tu ne les récupères pas avec les sous-programmes d'entrées-sortie de Ada.Text_io !

n°1497775
Profil sup​primé
Posté le 02-01-2007 à 07:47:25  answer
 

Comment faire alors ?

n°1498607
Profil sup​primé
Posté le 04-01-2007 à 10:31:26  answer
 

donc "geter" des char ça marche.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Saisie des touches F1 à F12

 

Sujets relatifs
Flash : texte de saisie (urgent et facile)[c++] Hook "anti-rebond" et problème touches ALT
saisie de nombreFormulaire | champ en surbrillance si erreur de saisie
Calcule de somme saisie et moyenne.Saisie "cachée" en ksh
Touches mortes en CLIcherche un petit editeur de html dans une zone de saisie
Comment générer un lien créé selon la saisie d'un formulaireFormulaires de saisie avec beaucoup de champs?
Plus de sujets relatifs à : Saisie des touches F1 à F12


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR