Touche entrée

Résolu
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009 - 6 juin 2006 à 16:59
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 7 juin 2006 à 17:33
Bonjour,

Je voudrai connaitre le numéro du caractere qui correspond à la touche <Entrée> (sous la forme $xx) et si possible un moyen de connaitres les caracteres des autres touches spéciales...

Merci

15 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
6 juin 2006 à 18:03
Salut,

Enter = 13 
Pour connaître les autres caractères, tu mets sur une form un label, tu crées un évenement Form1.OnKeyDown  : Label1.Caption:= IntToStr(Key);
et tu frappes...
Pour avoir la valeur en hexa tu fais : Label1.Caption:= IntToHex(Key,8).

A +
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
6 juin 2006 à 18:46
ou sinon, plus simple, vas sur ce site (à mettre dans tes favoris, ça peut toujours être utile !) :
http://www.commentcamarche.net/base/ascii.php3

@+
Nico {www.ni69.info}


N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
3
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
7 juin 2006 à 12:17
Ctrl+H : dans un composant d'édition (TEdit...) : ça marche.
F1..F2, fin, tab, insert : pas de problèmes pour retrouver leur valeur.
Pour savoir si les touches Ctrl, Shift et Alt ont été enfoncées : dans un événement OnKeyDown c'est très facile : 
      if (ssCtrl in Shift) and (key = VK_F5)  then...  //tu récupères ainsi un Ctrl + F5
sinon, tu dois jongler avec la réception d'un message clavier et employer des fonctions Windows comme GetKeyState...
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 juin 2006 à 14:12
Salut,

Essaye ce bout de code:

type
  TForm1 = class (TForm)
    Label1: TLabel;
  private
    { Déclarations privées }
    Procedure WMKey(Var Msg : TWMKeyDown);Message  WM_KEYDown;
  public
    { Déclarations publiques }
  end;



var

  Form1: TForm1;



implementation




{$R *.dfm}





{ TForm1 }




procedure TForm1.WMKey(var Msg: TWMKeyDown);
Var   KeyName: Array[0..255] of char;
begin
   GetKeyNameText(Msg.KeyData , KeyName, SizeOf(KeyName));
   Label1.Caption : = Format('Touche : %s Code : %d', [KeyName, Msg.CharCode]);
end;



end.














@+
Cirec
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 juin 2006 à 14:45
Et pour plus d'informations sur les touches pressées il faut utiliser un KeyboardHook en local et la toutes les touches sont détectées avec en plus d'autres données comme :
Touche Standard où Étendue
Alt pressé où non
Touche pressée, relâchée, maintenue
















@+
Cirec
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
7 juin 2006 à 17:33
petite fonction magique sans hook ... avec detection Caps, Scroll, Pause, Num lock ect...
correction et distinction des rshift, lshift, rctrl, lctrl, ralt, alt-gr, touches de fonctions, bouttons de souris ect...

a utiliser comme suis par exemple  :

procedure TForm1.KeyPress(Sender : TObject; Key : char);
var BSKeys : TByteSet;
begin
  KeyboardState(BSKeys);
  if VK_???in BSKeys then windows.beep(440,5);
     // si BSKeys contient la touche
VK_??? on fait un beep







  if [VK_??,VK_??,VK_??]<= BSKeys then


windows.beep(880,5);





     // si BSKeys contient l'ensemble de touches


[VK_??,VK_??,VK_??] on fait un beep







  if


[VK_??,VK_??,VK_??]
= BSKeys then

windows.beep(1760,5);




     // si BSKeys ne contient que les touches

[VK_??,VK_??,VK_??] on fait un beep




end;

{ ----------------------- }

type
  TByteSet = Set of byte;

procedure KeyboardState(var KeysSet :  TByteSet);
var K : byte;
begin
  // reset Keys set
 
KeysSet
:= [];

  { Get persistent keys }
  // caps lock
  if GetKeyState(144) = 1 then
KeysSet
:=
KeysSet
+ [144];
  // scroll lock
  if GetKeyState(145) = 1 then
KeysSet
:=
KeysSet
+ [145];
  // Num lock
  if GetKeyState(20)  = 1 then
KeysSet
:=
KeysSet
+ [20];
  // pause
  if GetKeyState(19)  = 1 then
KeysSet
:=
KeysSet
+ [19];

  { Get pushed keys }
  for K := 0 to 255 do
      if windows.GetAsyncKeyState(K) < 0 then begin
        
KeysSet
:=
KeysSet
+ [K];
         case K of
           // correction of Ctrl, Alt, Shift
           17,16,18 :
KeysSet
:=
KeysSet
- [K];
           // correction of AltGr
           165      :
KeysSet
:=
KeysSet

- [162];
         end;
      end;
end;
3
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
6 juin 2006 à 19:04
Ok merci...

(13 = $D)
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
6 juin 2006 à 20:58
windows.VK_*

et tu les aurat toutes.
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
6 juin 2006 à 21:35
ma question va peut etre semblé bete, mai c'est quoi


windows.VK_*
??
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 juin 2006 à 23:49
Salut,
Windows.VK_*  veut dire

Dans l'unité Windows son déclarés sous formes de Constantes :

  {$EXTERNALSYM VK_RETURN}
  VK_RETURN = 13;
  {$EXTERNALSYM VK_SHIFT}
  VK_SHIFT = $10;
  {$EXTERNALSYM VK_CONTROL}
  VK_CONTROL = 17;

etc.

@+
Cirec
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 10:39
justement, coment on fait pour savoir si les touche ctrl,  shift,  alt,  alt gr,  suppr,  F1..F2,  fin,  tab,  insert,  ->,  <-,... ont été appuyés ? parcque j'ai pas réussi a récupéré de caractères pour elles...
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 10:50
et aussi, je voudrai savoir pourquoi quand je fait ctrl+h c'est le meme caractere que retours arrière, mais il n'efface rien,
et ctrl+p donne $10 alors que si 'appuye sur shift il se passe rien...

(désolé de poser autant de question ^^')
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 12:40
Je vien de comprendre d'ou venai mon problème de capture de touche...
Les touches comme F5, Ctrl, .... &co ne son pas capturer avec l'événement on keyPress mais que avec  KeyDown ou KeyUp...

Merci pour tout à tous
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 13:30
Encore une dernière question (et apres c'est fini promis)
j'arriva pas a capturer l'appuie sur la touche "Tabulation"
et je voudrai savoir comment on fait pour diférencier ctrl gauche/droit       alt gauche/droit        entrée pav.num et entrée normal...
0
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
7 juin 2006 à 13:30
et la touche 'imp écr syst"
merci
0
Rejoignez-nous