Terminfo - Terminfo

Termapi.svg

Terminfo , programların ekran terminallerini cihazdan bağımsız bir şekilde kullanmasını sağlayan bir kütüphane ve veritabanıdır . Mary Ann Horton (Mark Horton olarak anılır) ilk terminfo kütüphanesini 1981–1982'de termcap üzerinde bir iyileştirme olarak hayata geçirdi . İyileştirmeler şunları içerir:

  • saklanan terminal açıklamalarına daha hızlı erişim,
  • terminal yetenekleri için daha uzun, daha anlaşılır isimler ve
  • terminale gönderilen dizeler için genel ifade değerlendirmesi.

Terminfo, UNIX System V Release 2'ye dahil edildi ve kısa süre sonra System V'de termcap ( BSD'nin kullanmaya devam ettiği) yerine tercih edilen terminal açıklamaları biçimi haline geldi . Bu, 1982–1984'te Pavel Curtis tarafından pcurses'te taklit edildi ve Mark Horton'dan gelen düzeltmeleri uyarlayarak veya dahil ederek diğer UNIX uygulamalarında mevcuttu . Daha fazla bilgi için, comp.sources.unix haber grubundaki Aralık 1986 tarihli gönderiye bakın .

Bir terminfo veritabanı, yüzlerce farklı ekran terminalinin yeteneklerini tanımlayabilir. Bu, harici programların , terminal türünden bağımsız olarak karakter tabanlı görüntü çıktısına sahip olmasına izin verir .

Bazı konfigürasyonlar şunlardır:

  • Ekrandaki satır sayısı
  • Mono modu; rengi bastırmak
  • Bip sesi yerine görünür zili kullanın

Veri örneği

Terminfo veritabanları, bir veya daha fazla terminal tanımından oluşur.

Endeksler

Her açıklama , terminalin kurallı adını içermelidir . Ayrıca terminalin adı için bir veya daha fazla takma ad içerebilir. Kurallı ad veya takma adlar, kitaplığın terminfo veritabanını aradığı anahtarlardır.

Veri değerleri

Açıklama, geleneksel adlara sahip bir veya daha fazla yetenek içerir. Yetenekler yazılır: boolean , numeric ve string . terminfo kitaplığı, her yetenek adı için önceden belirlenmiş türlere sahiptir. Her yeteneğin türlerini sözdizimine göre kontrol eder:

  • dize yetenekleri, yetenek adı ile değeri arasında bir "=" işaretine sahiptir,
  • sayısal yetenekler, yetenek adı ile değeri arasında bir "#" işaretine sahiptir ve
  • boole yeteneklerinin ilişkili bir değeri yoktur ( belirtilmişse her zaman doğrudurlar ).

terminfo kullanan uygulamalar, ilgili yeteneklerin türlerini bilir ve yalnızca yetenek adı önceden tanımlanmış türdeki yeteneklerden birine karşılık geldiğinde başarıyla dönen kitaplık çağrılarını kullanarak terminfo veritabanından yeteneklerin değerlerini alır.

Gibi termcap , bazı dize yetenekleri temsil çıkış sıralarını klavyede özel tuşlarına basarak ana bilgisayara gönderilebilir. Diğer yetenekler, bir uygulama tarafından uçbirime gönderilebilecek dizeleri temsil eder. İkinci durumda, terminfo kitaplığı (bir termcap kitaplığında olduğu gibi) gönderilen dizgede uygulama parametrelerini ikame etmek için işlev görür . Bu işlevler , öncelikle SGR (Select Graphic Rendition) gibi isteğe bağlı parametrelere sahip kontrol dizileri için gönderilen karakter sayısını en aza indirmeye yardımcı olmak için kullanılan yığın tabanlı bir ifade ayrıştırıcısı sağlar . Tersine, termcap kitaplıkları, çoğu terminal için yararlı olan sınırlı bir dizi işlem sağlar.

hiyerarşi

Terminfo açıklamaları, bir tanımın içeriğini diğerine dahil ederek, dahil edilen açıklamadan yetenekleri bastırarak veya yetenekleri geçersiz kılarak veya ekleyerek oluşturulabilir. Hangi depolama modeli kullanılırsa kullanılsın terminfo kitaplığı, bağımsız bir araç (örneğin, tic ) kullanılarak derlenen verileri kullanarak, istenen açıklamadan uçbirim açıklamasını döndürür .

Depolama modeli

Terminfo verileri bir ikili dosya olarak depolanır , bu da değiştirmeyi termcap'e göre daha kolay hale getirir . Veriler, depolandığı dosyalardan terminfo kitaplığı tarafından alınabilir. Verilerin kendisi sırasıyla boole, sayısal ve dize yetenekleri için tablolar olarak düzenlenir. Bu, Mark Horton tarafından geliştirilen şemadır ve mevcut isimlerle ilgili bazı farklılıklar dışında çoğu terminfo uygulamasında kullanılır. X/Open , derlenmiş uçbirim açıklamasının biçimini belirtmez. Aslında, ortak tic veya infocmp yardımcı programlarından bahsetmiyor bile . Derlenmiş terminfo girdileri , her bir yeteneğin atandığı tablolardaki dizinleri tanımlayan meta veriler içermediğinden , uygulamalar arasında uyumlu olmaları gerekmez. Ancak, çoğu uygulama aynı genel tablo yapısını kullandığından ( başlık ve veri öğelerinin boyutları dahil ), belirli bir uygulama için verileri okuyabilen özelleştirilmiş terminfo kitaplıkları otomatik olarak oluşturmak mümkündür. Örneğin, ncurses , diğer birçok uygulama için terminfo verileriyle eşleşecek şekilde oluşturulabilir.

dizin ağacı

terminfo kitaplığının orijinal (ve en yaygın) uygulaması, bir dizin hiyerarşisinden veri alır . Yol adının bir bileşeni olarak uçbirim tanımının adının ilk karakterini ve alınacak dosyanın adı olarak uçbirim tanımının adını kullanarak, terminfo kitaplığı genellikle büyük bir termcap dosyasını aramaktan daha iyi performans gösterir.

karma veritabanı

terminfo'nun bazı uygulamaları, terminal açıklamasını karma bir veritabanında saklar (örneğin, Berkeley DB sürüm 1.85 gibi bir şey ). Bunlar iki tür kaydı saklar: kurallı girdiye işaret eden takma adlar ve uçbirim yetenekleri için verileri içeren kurallı girdinin kendisi.

Sınırlamalar ve uzantılar

Açık Grup , yalnızca kaynak dosya için geçerli olan terminfo (garanti edilen minimum değerler) sınırlarını belgeler. Bunlardan ikisi özellikle ilgi çekicidir:

  • Terminal takma adları için maksimum 14 karakter
  • Sayısal miktarlar için maksimum 32.767

14 karakterlik sınır, bundan daha uzun olmayan dosya adlarını temsil edebilecek çok eski dosya sistemlerine yöneliktir. Bu dosya sistemleri genellikle modası geçmiş olsa da, bu sınırlar 1980'lerin sonundan itibaren belgelendiği gibi idi ve o zamandan beri gözden geçirilmedi.

32.767 sınırı, işaretli ikinin tamamlayıcısı 16 bit değerindeki pozitif değerler içindir . Bir terminfo girişi, iptal edilen veya olmayan değerleri temsil etmek için negatif sayılar kullanabilir.

termcap'tan farklı olarak terminfo, hem kaynağa hem de derlenmiş bir gösterime sahiptir. Derlenmiş gösterimin sınırları belirtilmemiştir. Ancak, çoğu uygulama tic (terminal bilgi derleyicisi) belgelerinde derlenmiş girişlerin 4.096 baytı aşamayacağını not eder.

Ayrıca bakınız

Referanslar

Dış bağlantılar