Klavyeden basılan tuşu bulma (ConsoleKeyInfo)

Console.Application‚da bir uygulama oluşturuyor ve kullanıcınızın klavyeden hangi tuşa bastığını öğrenmek istiyorsanız System sınıfındaki ConsoleKeyInfo yapısını kullanabilirsiniz. Kodlarımız şu şekilde:

static void Main(string[] args)
{
     Console.WriteLine("Bir tuşa basınız...");
     System.ConsoleKeyInfo KeyInfo = Console.ReadKey(true);
     Console.WriteLine("\n" + KeyInfo.Key.ToString() + " tuşuna bastınız!..");
     Console.ReadLine();
}
C#

Yazdığımız programın çıktısı ise şöyle olacaktır.

Eğer basılan tuşa göre bir işlem gerçekleştirmek isterseniz, (örn. ESC tuşuna basıldığında uygulamanın kapanması gibi..) basit bir if yapısı ile bunu sağlayabilirsiniz.

if (KeyInfo.Key == ConsoleKey.Escape)
{
     System.Environment.Exit(0);
}
C#

Şimdi buraya kadar bir sorun yok, ancak programımız henüz CTRL, ALT ve SHIFT gibi tuşlara basıldığında bunu gösteremiyor. Bu tuşlara basıldığında da ekranda bir çıktı istiyorsak, aynı yapının Modifiers özelliğinden faydalanabiliriz.

static void Main(string[] args)
{
    // CTRL + C basıldığında geçerli işlemin kesilmemesi için
    Console.TreatControlCAsInput = true;

    Console.WriteLine("Bir tuşa basınız...");
    System.ConsoleKeyInfo KeyInfo = Console.ReadKey(true);

    if ((KeyInfo.Modifiers & ConsoleModifiers.Alt) != 0)
    {
        Console.Write("ALT+");
    }
    if ((KeyInfo.Modifiers & ConsoleModifiers.Control) != 0)
    {
        Console.Write("CTRL+");
    }
    if ((KeyInfo.Modifiers & ConsoleModifiers.Shift) != 0)
    {
        Console.Write("SHIFT+");
    }

    Console.WriteLine(KeyInfo.Key.ToString() + " tuşuna bastınız!..");
    Console.ReadLine();
}
C#

Umarım faydalı olmuştur arkadaşlar, iyi çalışmalar..

administrator

One Reply to “Klavyeden basılan tuşu bulma (ConsoleKeyInfo)”

Leave A Comment