Aller au contenu

Fiche : Console.ReadKey() et ConsoleKeyInfo


Qu'est-ce que Console.ReadKey() ?

La méthode Console.ReadKey() permet de lire une touche pressée par l'utilisateur au clavier.
Elle est souvent utilisée pour : - mettre une pause dans le programme, - détecter quelle touche a été pressée, - attendre une action de l’utilisateur avant de continuer.


Syntaxe de base

Console.ReadKey();

👉 Le programme attend que l’utilisateur appuie sur n’importe quelle touche avant de continuer.


Le type ConsoleKeyInfo

Quand on utilise Console.ReadKey() avec une variable, la méthode retourne un objet de type ConsoleKeyInfo.

Définition :

ConsoleKeyInfo est une structure qui contient les informations sur la touche pressée.

Principales propriétés :

  • .Key → renvoie la touche du clavier (type ConsoleKey)
    Exemple : A, Enter, Escape, F1
  • .KeyChar → renvoie le caractère correspondant (type char)
    Exemple : 'a', 'b', '1', '+'
  • .Modifiers → renvoie les touches spéciales utilisées en même temps (type ConsoleModifiers)
    Exemple : Shift, Alt, Control.

Exemple avec ConsoleKeyInfo

Console.WriteLine("Appuyez sur une touche :");
ConsoleKeyInfo touche = Console.ReadKey();

Console.WriteLine("\n--- Informations sur la touche ---");
Console.WriteLine("Touche : " + touche.Key);
Console.WriteLine("Caractère : " + touche.KeyChar);
Console.WriteLine("Modificateurs : " + touche.Modifiers);

Exemple d’exécution :

Appuyez sur une touche :
A
--- Informations sur la touche ---
Touche : A
Caractère : a
Modificateurs : 0

Si l’utilisateur appuie sur Ctrl + A :

Touche : A
Caractère : a
Modificateurs : Control


🔹 Exemple avec condition

Console.WriteLine("Appuyez sur Echap pour quitter.");
ConsoleKeyInfo touche = Console.ReadKey(true); // true = n'affiche pas la touche

if (touche.Key == ConsoleKey.Escape)
{
    Console.WriteLine("Programme arrêté par l'utilisateur.");
}
else
{
    Console.WriteLine("Vous avez appuyé sur : " + touche.Key);
}

🔹 Astuces

  • Console.ReadKey() sans paramètre → affiche la touche dans la console.
  • Console.ReadKey(true)masque la touche (utile pour menus, jeux, mot de passe…).
  • .Key = idéal pour tester des touches spéciales (Echap, Entrée, F1…).
  • .KeyChar = idéal pour récupérer un caractère saisi.

En résumé :
- Console.ReadKey() → attend une touche de l’utilisateur.
- ConsoleKeyInfo → objet qui contient toutes les infos sur cette touche.


Pour aller plus loin