Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!doc.ic.ac.uk!uknet!mcsun!sun4nl!tuegate.tue.nl!rw7.urc.tue.nl!wmbfmk From: wmbfmk@rw7.urc.tue.nl (Marc van Kempen) Newsgroups: comp.os.386bsd.questions Subject: Termcapdefinitions and fcntl() Date: 3 Oct 1993 20:51:53 +0100 Organization: Eindhoven University of Technology, The Netherlands Lines: 59 Distribution: world Message-ID: <wmbfmk.749677476@rw7.urc.tue.nl> NNTP-Posting-Host: rw7.urc.tue.nl Hi, I have been working on a list-a-like program for unix. I have recently been trying to use the termcapdefinition to recognize some special keys. Which are: - left arrow - right arrow - up arrow - down arrow - Page down - Page up - Home - End Before I just hardcoded the vt100 keys into the program, which obviously is not the portable thing to do. However now I run into two problems: 1. The method I use right now is a form of busy waiting. I use fcntl(0, F_SETFL, O_NDELAY); to determine from standard input if there's a key available. If any of you knows a better way of doing it please let me know, I'll include the code fragment here: arg = fcntl(0, F_GETFL, arg); /* save original filedescriptor settings */ escseqp = escseq; /* remember to set fcntl(0, F_SETFL, O_NDELAY) */ ch = 0; fcntl(0, F_SETFL, O_NDELAY); ch = ReadCh(); /* get the first character */ while (ch == -1) ch = ReadCh(); while (ch != -1) { if (ch != -1) *escseqp++ = ch; ch = ReadCh(); /* read characters while they are available */ } escseqp = '\0'; /* terminate the esc-sequence string */ fcntl(0, F_SETFL, arg); /* restore original filedescriptor settings */ Obviously this hoses the processor. 2. What termcap entries should I use for the keys mentioned above? Actually the arrowkeys don't seem to be that big a problem, but the kN and kP fields don't seem to be filled in for all the definitions, specifically my xterm definition. What fields should I use for the HOME and END keys? I use a NetBSD 0.9 system. It does seem to work with the console, except for the HOME and END, for which I don't know the fields. BTW If there's any interest I could make it publicly available. You can use it to look at several types of files, including the contents of zipfiles. I plan on adding tar files and gzipped tarfiles. This is all possible by selecting the filenames from a list of names, using the cursor (This is why I want those definitions). Thanks for any answers, Marc van Kempen (wmbfmk@urc.tue.nl)