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 (typeConsoleKey)
Exemple :A,Enter,Escape,F1….KeyChar→ renvoie le caractère correspondant (typechar)
Exemple :'a','b','1','+'….Modifiers→ renvoie les touches spéciales utilisées en même temps (typeConsoleModifiers)
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
- Documentation Microsoft sur la méthode ReadKey() en C#
Avec des exemples