You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1. Giri¸s<br />
<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />
Aptal uçbirimlerin oldu˘gu eski zamanlarda, uçbirimler bilgisayarlardan uzakta ve onlara ba˘glantıları seri kablolar<br />
<strong>ile</strong> idi. Uçbirimler seri ¸sekilde bayt ver<strong>ile</strong>ri göndermek için ayarlanabiliyordu. Uçbirimlerin tüm bu yetenekleri<br />
(imleci yeni bir noktaya ta¸sımak, ekranın belli bir kısmını silmek, ekranda gezinmek, durumlar arası geçi¸sler, v.b.<br />
gibi) seri ¸sekilde gönder<strong>ile</strong>n bu baytlar <strong>ile</strong> sa˘glanmaktaydı. Bu denetim ardı¸sılları genelde kaçı¸s tu¸su dizisi olarak<br />
adlandırılırdı, çünkü kaçı¸s karakteri olan (0x1B) <strong>ile</strong> ba¸slamaktaydı. ¸Simdi b<strong>ile</strong> uygun bir benzetim <strong>ile</strong> benzeticiye<br />
kaçı¸s karakterlerini göndererek uçbirim penceresinde aynı etkiyi olu¸sturabiliriz.<br />
Bir satırı renkli olarak yazmak istedi˘ginizi dü¸sünelim. Konsolda ¸sunu yazmayı deneyin.<br />
echo –e "\033[1;37;44mRenkli"<br />
Ba¸staki "\033[" dizgesi kaçı¸s karakteridir. Di˘ger karakterler ekrana yazılabilir karakterlerdir. Sonucu mavi zemin<br />
üzerine beyaz "Renkli" olarak görüyor olmalısınız. Bu renklendirme, bu ¸sekilde kalır, eski haline dönmek için<br />
¸sunu yazın:<br />
echo –e "\033[0;39;49mRenkli"<br />
¸Simdi, bu sihirli karakterler de ne anlama geliyor? Anlaması zor mu? Bunlar farklı uçbirimler için farklı b<strong>ile</strong> olabilir.<br />
Bunun için UNIX’ı tasarlayanlar termcap isimli bir mekanizma bulmu¸slardır. Belli bir uçbirimin tüm yetenekleri<br />
<strong>ile</strong> belli bir etkiyi elde etmek için gerekli kaçı¸s karakterlerini listeleyen bir dosyadır. Sonraki yıllarda bu terminfo<br />
<strong>ile</strong> yer de˘gi¸stirmi¸stir. Çok fazla ayrıntıya inmeden, bu mekanizma uygulama programlarının terminfo veritabanını<br />
sorgulamasını ve uçbirime veya uçbirim benzeticisine gönder<strong>ile</strong>cek denetim karakterlerini edinmelerini sa˘glar,<br />
demekle yetinece˘giz.<br />
1.1. <strong>NCURSES</strong> nedir?<br />
Tüm bu teknik saçmalıkların ifade edilmesinin nedenini merak ediyor olabilirsiniz. Yukarıdaki senaryoda her uygulama<br />
programının terminfo’yu sorgulaması ve gerekli i¸slemleri yapması gerekmektedir (denetim karakterlerinin<br />
gönderilmesi v.s.). Bu karma¸sıklıkla u˘gra¸smak bir süre sonra zorla¸stı ve bu da ’CURSES”ın do˘gmasına sebep<br />
oldu. Curses "imleç eniy<strong>ile</strong>me" ("cursor optimization") anlamına gelen bir kelime oyunudur. Curses kütüphanesi<br />
ham uçbirim kodları <strong>ile</strong> çalı¸sırken onları sarmalayıcı bir yapı ve verimli bir API (Uygulama Programlama Arayüzü)<br />
olu¸sturmaktadır. ˙Imleci hareket ettirmek, pencereler olu¸sturmak, renkler üretmek, fare <strong>ile</strong> oynamak v.b. için<br />
i¸slevler sa˘glamaktadır. Uygulama programları alt kısımdaki uçbirim yeteneklerini dü¸sünmek zorunda kalmazlar.<br />
Yani <strong>NCURSES</strong> ne demektir? Asıl System V gözden geçirme 4.0 (SVr4) curses’ın bir kopyasıdır. Özgür olarak<br />
da˘gıtılan ve eski curses sürümleriyle tamamen uyumlu olan bir kütüphanedir. Kısacası, bir uygulamanın karakter<br />
tabanlı uçbirimlerde görüntüleri üzerinde çalı¸sabilmeyi sa˘glayan i¸slevler kütüphanesidir. Belgenin geri kalanında,<br />
curses ve ncurses birbirleri yerine kullanılmı¸stır.<br />
<strong>NCURSES</strong> hakkındaki ayrıntılı bilgi kaynak da˘gıtımındaki NEWS dosyasından bulunabilir. ¸Su anki paket Thomas<br />
Dickey tarafından geli¸stirilmektedir. Paketi hazırlayanlarla <br />
adresinden <strong>ile</strong>ti¸sime geçebilirsiniz.<br />
1.2. <strong>NCURSES</strong> <strong>ile</strong> Ne Yapabiliriz?<br />
<strong>NCURSES</strong> sadece uçbirim yetenekleri sarmalayan bir yapı olu¸sturmaz aynı zamanda metin kipinde ho¸s<br />
görü¸sünü¸slü arayüzler olu¸sturmak için sa˘glam bir çalı¸sma tasla˘gı da olu¸sturur. Pencereler v.b. görünümleri<br />
olu¸sturmak için i¸slevler sa˘glar. Karde¸s kütüphaneleri olan panel, menu ve form, temel curses kütüphanesine<br />
bir geni¸sleme sa˘glar. Bu kütüphaneler genelde curses kütüphanesiyle beraber gelmektedir. Pekçok pencere,<br />
menu, panel ve formlar içeren bir uygulama olu¸sturulabilir. Pencereler üzerinde ba˘gımsız olarak çalı¸sılabilir,<br />
gezin<strong>ile</strong>bilir ve hatta pencereler gizlenebilir.<br />
http://belgeler.org Linux Kitaplı˘gı 7 / 90