Temel bilgiler

Hiçbir grafik kullanıcı arabirimi güçlü bir arayüze sahip olmadan tamamlanmış sayılmaz ve kullanıcı ile etkileşimde olabilmek için bir curses programı tuş basımına veya fare hareketlerine duyarlı olmalıdır. Önce tuşlarla ilgilenelim.

Önceki hemen her örnekte gördüğünüz gibi kullanıcıdan klavye girdisi almak çok kolaydır. Tuş basımlarını almanın en basit yolu getch() işlevidir. Satır karakterlerinin tamamı yerine (genelde satır sonu karakteri ile biter) tek bir karakter okunmasıyla ilgilenirseniz cbreak kipi etkin hale getirilmelidir. İşlev, ok v.b. tuşlarını kullanabilmek için tuş takımı etkin hale getirilmelidir. Ayrıntılar için İlklendirme bölümüne bakınız.

getch() komutu basılan tuşa uygun olarak bir tam sayı döndürür. Eğer normal bir karakterse tam sayı değeri karaktere eşit olacaktır. Aksi halde curses.h başlık dosyasında sabit olarak tanımlanmış bir sayı ile döner. Örneğin kullanıcı F1'e basarsa geri dönen tam sayı değeri 265'tir. Bu, curses.h içerisinde tanımlanmış olan KEY_F() makrosu kullanılarak kontrol edilebilir. Bu tuşları okumayı ve taşınabilmelerini kolay ve üzerinde işlem yapılabilir hale getirmektedir.

Örneğin getch()'ı şu şekilde çağırırsanız,

  int ch;

  ch = getch();

getch() kullanıcıdan bir tuşa basmasını bekleyecek (eğer belli bir zaman aşımı tanımlamadıysanız) ve kullanıcı tuşa bastığı anda karşılık gelen tamsayıyı döndürülecektir. Daha sonra dönen değeri curses.h içerisinde tanımlanmış sabitlerle kıyaslayarak istediğiniz tuşlarla eşleşmeyi sağlayabilirsiniz.

Aşağıdaki kod parçası bu işi yapacaktır.

  if(ch == KEY_LEFT)
    printw("Sola ok tusuna basıldı\n");

Yukarı ve aşağı ok tuşlarıyla hareket edilebilen bir menü yazalım.