tputs ile Geciktirme
Önceki Geciktirme Sonraki
tputs ile Geciktirme
Önceki bölümlerde açıklanan geciktirme işlemini gerçekleştirmek için bir termcap işlevi olan tputs kullanılır. tputs işlevi komutun tanımından geciktirme belirtimini ayırdıktan sonra komutu çıktıya gönderir; bu dizgenin hemen ardından geciktirme belirtimine uygun sayıda boş karakteri gönderir.
int tputs
(char  *dizge,
 int    satır_sayısı,
 int  (*çıktı_işlevi) ());
işlev
Burada dizge çıktılanacak dizge (geciktirme belirtimini de içerir); satır_sayısı işlemden etkilenen satır sayısı (eğer komutun tanımı * ile biten bir geciktirme belirtimi içeriyorsa, bu değer geciktirme süresi ile çarpılır). Son argüman olan çıktı_işlevi ise argüman olarak tek karakter alacak (fputchar gibi) ve geciktirme için gönderilecek karakterleri çıktılayacak işlevin ismi olmalıdır.
tputs ile ilgili işlemlerin denetimi ospeed ve PC isimli iki değişkenle yapılır. ospeed değeri uçbirimin çıktılama hızı kabul edilir, ioctl sistem çağrısı onunla kodlandığında hız bilgisi ile döner. Bu değer geciktirme amacıyle yollanacak karakterlerin sayısını hesaplamakta kullanılır. PC değişkeni ise geciktirme amacıyla kullanılacak karakteri içerir.
tputs işlevini kullanmadan önce bu değişkenleri uygun değerlerle ilklendirmiş olmalısınız. PC değişkeninin değeri uçbirim tanımındaki pc yeteneğinden elde edilmelidir (bkz. Geciktirme Yetenekleri). Tanım bir pc yeteneği içermiyorsa bu değişkeni 0 ile ilklendirin.
satır_sayısı argümanı biraz daha fazla ilgi gerektirir. Normalde, komut tarafından yeri değiştirilen ve boşaltılan satır sayısıdır. İmleç hareket komutlarında ya da tek satırlık düzenleme komutlarında 1 değeri kullanılır. al (bir satır gir) ve cd (imleçten ekranın sonuna kadar sil) gibi birden fazla satırı etkileyen komutlarda ise bu değer ekran yüksekliği eksi o anki düşey konum olmalıdır (başlangıç 0'dır). AL (çok sayıda satır ekle) gibi çok sayıda satır ekleme ve ekran kaydırma komutlarında da değer bu şekile saptanır; girilen satırların sayısı olarak "değil".
Bir komut tarafından etkilenen satırların sayısını azaltmak için pencere kaydırma özelliği kullanılıyorsa, satır_sayısı değeri bunu hesaba katmalıdır. Bu, geciktirme süresinin uçbirimin ne kadar süreyle meşgul olacağına bağlı olmasından dolayıdır ve pencere kaydırma özelliği bu süreyi kısaltır. Bkz. Kaydırma.
ic ve dc komutları da (karakter ekleme ve silme komutları) imleç konumundan satır sonuna kadar sütun sayısı olarak bu komuttan etkilenen karakter sayısına bağlı olarak geciktirme gerektirmeleriyle biraz sorunludurlar. Bu bağımlılığın belirtilmesini mümkün kılacak bir yol olsaydı iyi olurdu, böylece bu komutlar için satır_sayısı değerinin aslında etkilenen sütun sayısı olduğunu söylemek zorunda kalmazdık. Ancak, termcap tanımına göre satır_sayısı daima etkilenen satırların sayısıdır, bu durumda bile bu böyledir ve bu durum için bu değer 1'dir. Bu kuralı artık değiştirmek kolay değildir, çünkü artık yazılmış çok fazla uygulama ve uçbirim tanımı var.
ic ve dc dizgeleri için satır_sayısı daima 1 olduğundan, bunlar için * kullanmak anlamlı değildir ama yine de bazıları bunu yapıyor. Bunlar * imi silinerek düzeltilmelidir. Eğer bir gün böyle girdiler kullanılmamaya başlarsa, herhangi bir yazılımı etkilemeksizin bu işlemler için satır_sayısı argümanı yerine daha elverişli bir uzlaşım kullanmak mümkün olabilir.
Önceki Üst Ana Başlık Sonraki
Uçbirim Tanımında Geciktirmenin Belirtilmesi Başlangıç Parametreler
Bir Linux Kitaplığı Sayfası