อ่าน 3 นาที
เทอร์มแคป
Termcap ( terminal capability ) เป็น ไลบรารี ซอฟต์แวร์ และ ฐานข้อมูล รุ่นเก่า ที่ใช้ใน คอมพิวเตอร์ แบบ Unix ซึ่งช่วยให้โปรแกรมสามารถใช้เท อร์ มินัลแสดงผลของคอมพิวเตอร์...
เทอร์มแคป

Termcap ( terminal capability ) เป็นไลบรารี ซอฟต์แวร์ และฐานข้อมูล รุ่นเก่า ที่ใช้ใน คอมพิวเตอร์ แบบ Unixซึ่งช่วยให้โปรแกรมสามารถใช้เท อร์ มินัลแสดงผลของคอมพิวเตอร์ในลักษณะที่ไม่ขึ้นกับเทอร์มินัล ซึ่งช่วยลดความซับซ้อนของกระบวนการเขียนแอปพลิเคชันโหมดข้อความแบบ พกพาได้อย่างมาก [ 1 ]ถูกแทนที่ด้วย ฐานข้อมูล terminfoที่ใช้โดยncurses , tputและโปรแกรมอื่นๆ
ฐานข้อมูล termcap สามารถอธิบายความสามารถของเทอร์มินัลแสดงผลหลายร้อยแบบ ซึ่งช่วยให้โปรแกรมสามารถแสดงผลแบบอักขระได้โดยไม่ขึ้นอยู่กับประเภทของเทอร์มินัล โปรแกรมแก้ไขข้อความบนหน้าจอ เช่นviและEmacsเป็นตัวอย่างของโปรแกรมที่อาจใช้ termcap โปรแกรมอื่นๆ จะถูกระบุไว้ใน หมวดหมู่ Termcapการเข้าถึงฐานข้อมูล termcap มักจะได้รับจากไลบรารีแยกต่างหาก เช่น GNU Termcap [ 1 ]
ตัวอย่างข้อมูลที่ฐานข้อมูลอธิบายไว้:
- หน้าจอแสดงผลมีความกว้างกี่คอลัมน์
- ต้องส่งข้อความอะไรเพื่อย้ายเคอร์เซอร์ไปยังตำแหน่งใดๆ (รวมถึงวิธีการเข้ารหัสหมายเลขแถวและคอลัมน์)
- วิธีเลื่อนหน้าจอขึ้นหนึ่งหรือหลายบรรทัด
- ต้องเว้นระยะห่างเท่าใดสำหรับการเลื่อนหน้าจอแบบนี้
ประวัติศาสตร์
Bill Joyเขียนไลบรารี termcap ตัวแรกในปี 1978 [ 2 ] [ 3 ]สำหรับระบบปฏิบัติการBerkeley Unix ; ตั้งแต่นั้นมาก็ได้รับการพอร์ตไปยังสภาพแวดล้อม Unix และ Unix-like ส่วนใหญ่ แม้กระทั่งOS-9 [ 4 ] มีรายงานว่าการออกแบบของ Joy ได้รับอิทธิพลจากการออกแบบที่เก็บข้อมูลเทอร์มินัลในระบบ Incompatible Timesharing System รุ่นก่อน หน้า [ 5 ]
แบบจำลองข้อมูล
ฐานข้อมูล Termcap ประกอบด้วยคำอธิบายเทอร์มินัลอย่างน้อยหนึ่งรายการ
ดัชนี
คำอธิบายแต่ละรายการต้องประกอบด้วย ชื่อ มาตรฐานของเทอร์มินัล นอกจากนี้ อาจมีชื่อเรียกแทน (alias) หนึ่งชื่อหรือมากกว่านั้นสำหรับชื่อของเทอร์มินัล ชื่อมาตรฐานหรือชื่อเรียกแทนเหล่านี้เป็นคีย์ที่ไลบรารีใช้ในการค้นหาฐานข้อมูล termcap
ค่าข้อมูล
คำอธิบายประกอบด้วยความสามารถอย่างน้อยหนึ่งอย่าง ซึ่งมีชื่อเรียกตามปกติ ความสามารถเหล่านี้มีประเภทเป็นบูลีนตัวเลขและสตริงไลบรารี termcap ไม่มีประเภทที่กำหนดไว้ล่วงหน้าสำหรับชื่อความสามารถแต่ละชื่อ แต่จะกำหนดประเภทของแต่ละความสามารถโดยใช้ไวยากรณ์:
- คุณสมบัติ ของสตริงจะมีเครื่องหมาย "=" คั่นระหว่างชื่อคุณสมบัติและค่าของมัน
- ความสามารถ เชิงตัวเลขจะมีเครื่องหมาย "#" คั่นระหว่างชื่อความสามารถและค่าของมัน และ
- ความสามารถ แบบบูลีนไม่มีค่าที่เกี่ยวข้อง (จะเป็นจริง เสมอ หากมีการระบุไว้)
แอปพลิเคชันที่ใช้ termcap คาดหวังประเภทข้อมูลเฉพาะสำหรับความสามารถที่ใช้กันทั่วไป และดึงค่าความสามารถจากฐานข้อมูล termcap โดยใช้การเรียกไลบรารี ซึ่งจะส่งคืนค่าสำเร็จก็ต่อเมื่อเนื้อหาในฐานข้อมูลตรงกับประเภทข้อมูลที่คาดไว้เท่านั้น
ลำดับชั้น
คำอธิบาย Termcap สามารถสร้างขึ้นได้โดยการรวมเนื้อหาของคำอธิบายหนึ่งเข้ากับคำอธิบายอื่น การระงับความสามารถจากคำอธิบายที่รวมอยู่ หรือการเขียนทับหรือเพิ่มความสามารถ ไม่ว่ารูปแบบการจัดเก็บที่ใช้จะเป็นแบบใด ไลบรารี Termcap จะสร้างคำอธิบายเทอร์มินัลจากคำอธิบายที่ร้องขอ รวมถึงการรวม การระงับ หรือการเขียนทับ ณ เวลาที่ร้องขอ
แบบจำลองการจัดเก็บ
ข้อมูลของ Termcap ถูกจัดเก็บในรูปแบบข้อความ ทำให้แก้ไขได้ง่าย สามารถดึงข้อความจากไฟล์หรือตัวแปรสภาพแวดล้อมได้โดยใช้ไลบรารี Termcap
ตัวแปรสิ่งแวดล้อม
ตัวแปรสภาพแวดล้อมTERM ประกอบด้วยชื่อประเภทของเทอร์มินัล
ตัวแปร สภาพแวดล้อม TERMCAPอาจมีฐานข้อมูล termcap อยู่ โดยส่วนใหญ่จะใช้เพื่อจัดเก็บคำอธิบาย termcap เพียงรายการเดียว ซึ่งถูกกำหนดโดยโปรแกรมจำลองเทอร์มินัลเพื่อให้คุณลักษณะของเทอร์มินัลแก่เชลล์และโปรแกรมที่เกี่ยวข้อง
ตัวแปร สภาพแวดล้อม TERMPATHได้รับการสนับสนุนโดยการใช้งาน termcap เวอร์ชันใหม่กว่า และกำหนดเส้นทางการค้นหาสำหรับไฟล์ termcap
ไฟล์แบบเรียบ
การใช้งานไลบรารี termcap แบบดั้งเดิม (และพบได้บ่อยที่สุด) จะดึงข้อมูลจากไฟล์ข้อความธรรมดา การค้นหาในไฟล์ termcap ขนาดใหญ่ เช่น 500 กิโลไบต์ อาจใช้เวลานาน เพื่อช่วยเพิ่มประสิทธิภาพ จึงมีการใช้ยูทิลิตี้ เช่นreorderเพื่อจัดเรียงรายการที่ใช้บ่อยที่สุดไว้ใกล้กับส่วนต้นของไฟล์
ฐานข้อมูลแฮช
4.4 การใช้งาน termcap บนระบบ BSD จะจัดเก็บคำอธิบายเทอร์มินัลไว้ในฐานข้อมูลแบบแฮช (เช่นBerkeley DBเวอร์ชัน 1.85) ซึ่งจัดเก็บข้อมูลสองประเภท ได้แก่ ชื่อแทน (alias) ที่ชี้ไปยังรายการหลัก และรายการหลักนั้นเอง ส่วนข้อความของรายการ termcap จะถูกจัดเก็บตามตัวอักษร
ข้อจำกัดและส่วนขยาย
การใช้งาน termcap ในเวอร์ชันดั้งเดิมได้รับการออกแบบให้ใช้หน่วยความจำน้อย:
- ชื่อแรกมีตัวอักษรสองตัว เพื่อให้พอดีกับหน่วยความจำ 16 บิต
- ชื่อความสามารถประกอบด้วยอักขระสองตัว
- คำอธิบายจำกัดอยู่ที่ 1023 ตัวอักษร
- สามารถใส่คำอธิบายศัพท์ได้เพียงรายการเดียวเท่านั้น และต้องอยู่ท้ายสุด
โดยทั่วไปแล้ว การใช้งานอินเทอร์เฟซ termcap เวอร์ชันใหม่ๆ ไม่จำเป็นต้องมีชื่อสองตัวอักษรอยู่ตอนต้นของรายการอีกต่อไป
ชื่อความสามารถยังคงมีสองตัวอักษรในทุกการใช้งาน
ฟังก์ชันtgetentที่ใช้ในการอ่านคำอธิบายเทอร์มินัลจะใช้บัฟเฟอร์ที่มีขนาดเพียงพอสำหรับข้อมูล และถือว่ามีขนาด 1024 อักขระ การใช้งานอินเทอร์เฟซ termcap เวอร์ชันใหม่กว่าอาจผ่อนปรนข้อจำกัดนี้โดยอนุญาตให้ใช้พอยเตอร์ว่างแทนบัฟเฟอร์คงที่[ 1 ]หรือโดยการซ่อนข้อมูลที่ไม่พอดี เช่น ผ่าน ความสามารถ ZZในnetBSD termcap [ 6 ] อินเทอร์เฟซไลบรารี terminfo ยังจำลองอินเทอร์เฟซ termcap และไม่ได้ใช้บัฟเฟอร์ขนาดคงที่จริง ๆ
การจำลอง termcap ของไลบรารี terminfo ช่วยให้สามารถรวมรายการอื่นๆ ได้หลายรายการโดยไม่จำกัดตำแหน่ง การใช้งานไลบรารี termcap เวอร์ชันใหม่กว่าบางรายการอาจมีคุณสมบัตินี้เช่นกัน แม้ว่าจะไม่มีเอกสารอธิบายอย่างละเอียดก็ตาม[ 7 ]
คุณสมบัติที่ล้าสมัย
ความสามารถพิเศษ "hz" ถูกกำหนดขึ้นโดยเฉพาะเพื่อรองรับ เทอร์มินัล Hazeltine 1500ซึ่งมีลักษณะที่ไม่พึงประสงค์คือการใช้ ตัวอักขระ ASCII tilde ('~') เป็นตัวแนะนำลำดับควบคุม[ 8 ] เพื่อรองรับเทอร์มินัลนั้น ไม่เพียงแต่โค้ดที่ใช้ฐานข้อมูลจะต้องรู้เกี่ยวกับการใช้ tilde เพื่อแนะนำลำดับควบคุมบางอย่างเท่านั้น แต่ยังต้องรู้วิธีแทนที่ tilde ในข้อความที่แสดงด้วยอักขระที่พิมพ์ได้อื่น เนื่องจากเทอร์มินัลจะตีความ tilde ในข้อความว่าเป็นจุดเริ่มต้นของลำดับควบคุม ส่งผลให้ข้อความหายไปและหน้าจอผิดเพี้ยน[ 9 ] นอกจากนี้ เครื่องหมายคุณลักษณะ (เช่น จุดเริ่มต้นและจุดสิ้นสุดของการขีดเส้นใต้) ยังใช้พื้นที่บนหน้าจอ ความคิดเห็นในซอร์สโค้ดของฐานข้อมูลมักอ้างถึงสิ่งนี้ว่าเป็น "ความเสียหายของสมอง Hazeltine" [ 10 ] เนื่องจาก Hazeltine 1500 เป็นเทอร์มินัลที่ใช้กันอย่างแพร่หลายในช่วงปลายทศวรรษ 1970 จึงเป็นสิ่งสำคัญที่แอปพลิเคชันจะต้องสามารถจัดการกับข้อจำกัดของมันได้
ดูเพิ่มเติม
- ลำดับการหลีกเลี่ยงตามมาตรฐาน ANSIคือความพยายามที่จะรวมลำดับต่างๆ เข้าด้วยกัน
- เครื่องคอมพิวเตอร์เทอร์มินัล
- Curses (ไลบรารีการเขียนโปรแกรม)
- เทอร์มอินโฟ
- โปรแกรมจำลองเทอร์มินัล
ลิงก์ภายนอก
- ข้อมูล termcap ปัจจุบัน
- หน้าแหล่งข้อมูล Termcap/Terminfoบนเว็บไซต์ของEric S. Raymond
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เทอร์มแคป
Termcap ( terminal capability ) เป็น ไลบรารี ซอฟต์แวร์ และ ฐานข้อมูล รุ่นเก่า ที่ใช้ใน คอมพิวเตอร์ แบบ Unix ซึ่งช่วยให้โปรแกรมสามารถใช้เท อร์ มินัลแสดงผลของคอมพิวเตอร์...
ประวัติศาสตร์
Bill Joy เขียนไลบรารี termcap ตัวแรกในปี 1978 [ 2 ] [ 3 ] สำหรับ ระบบปฏิบัติการ Berkeley Unix ; ตั้งแต่นั้นมาก็ได้รับการพอร์ตไปยังสภาพแวดล้อม Unix และ Unix-like ส่วนใหญ่ แม้กระทั่ง OS-9 [ 4 ] มี รายงานว่าการออกแบบของ Joy...
แบบจำลองข้อมูล
ฐานข้อมูล Termcap ประกอบด้วยคำอธิบายเทอร์มินัลอย่างน้อยหนึ่งรายการ
ดัชนี
คำอธิบายแต่ละรายการต้องประกอบด้วย ชื่อ มาตรฐาน ของเทอร์มินัล นอกจากนี้ อาจมีชื่อเรียกแทน (alias) หนึ่งชื่อหรือมากกว่านั้นสำหรับชื่อของเทอร์มินัล ชื่อมาตรฐานหรือชื่อเรียกแทนเหล่านี้เป็นคีย์ที่ไลบรารีใช้ในการค้นหาฐานข้อมูล termcap