(http://www.faximum.com/technotes/095)
TITLE: #095 - Problems with Terminal Function & Cursor Keys KEYWORDS: terminal cursor function keys terminfo VT-100 VT-220 telnet xterm RELEASE: Faximum ELS/PLUS CLASSIFICATION: ELS-PLUS PROBLEM: A user reports that some or all of the function and/or cursor keys on his terminal are not recognised by the Faximum user interface. CAUSE: Faximum relies on the operating system terminfo libraries to determine what escape sequences are generated by the different cursor/function keys on the terminal. If Faximum does not recognise a certain key it is because the sequence being generated by the terminal is different from that described in the operating system's terminfo database. SOLUTION: This TechNote describes how to determine what escape sequences are being generated by a given key and how to determine what escape sequence are expected. Section I - Determining the Escape Sequence Generated by a Key -------------------------------------------------------------- To determine the escape sequence generated by a function key, run the cat program with the -v flag (i.e. type 'cat -v') and then press each of the function keys in turn (F1 through F8). This will cause the escape sequence generated by the function keys to appear on the screen. It might look like: ^[p Note that ^[ is shorthand for the ESC character. When you are finished you can exit cat by pressing: 1. the "Enter" or "Carriage Return" key 2. the CTRL-D key Section II - Determining the Escape Sequence Expected from a Key ---------------------------------------------------------------- In order to determine what escape sequence your operating system is expecting from the various function keys you can either examine the source files for the terminfo database or (on SCO and some other Intel versions of UNIX) request the terminfo description for a particular terminal. The source files that are used to create the terminfo database are usually found in /usr/lib/terminfo or /usr/share/lib/terminfo in files with a .src or .ti suffix. If you examine the file(s) which contain the descriptions for the terminals you are interested in, you will see a list of parameters for each terminal. The kf1 through kf8 parameters define the escape sequence expected from the terminal for function keys 1 through 8. Parameters kcub1 (left cursor), kcud1 (down cursor), kcuf1 (right cursor), and kcuu1 (up cursor) describe the cursor keys. Note that in the terminfo source file \E represents the ESC character (which appears as ^[ in vi). Note also that if the sequence ends with a carriage return (i.e. \r), you will not be able to see the carriage return when you press the function key in vi. With SCO and Linux you can also obtain a list of terminfo parameters for your terminals by running the infocmp or untic programs. Make sure that your TERM environment variable is set and type: infocmp or untic This ought to produce a list of parameters for your terminal. Again, examine the values for the kf1 through kf8 parameters (or, if the problem is with the cursor keys, the various kcu paramaters) to see what escape sequences the terminal ought to be generating and compare this with what you observed using vi (as described above). Section III - Some Common Cases ---------------------------------------------------------------- III(a) - SCO There are a number of special cases related to DEC terminals (or software which emulate DEC terminals). On some DEC terminals (vt2x0 and vt3x0), the F5 key does not, in fact, send an escape sequence. To obtain the F5 escape sequence you may have to press the F6 key (similarly, press the F7 key in place of F6, etc.) On some SCO operating systems, the standard vt220 terminal type "maps F5--F9 to the second block of function keys at the top of the keyboard". The alternate vt220d terminal type uses a different mapping: "This vt220 description regards F6--F10 as the second block of function keys # at the top of the keyboard.... and agrees with the labeling on some terminals that emulate the vt220. There is no support for an F5." On DEC VT-100 terminals the problem is that there are no function keys above PF4. On these terminals it has been the practice to switch the numeric keypad into an extended function key mode and consider key pad 4 to be function key 5, key pad 5 to be F6, key pad 6 to be F7, and the key pad , (comma) to be F8. We agree that these are not intuitive and might suggest that if this causes problems then you might consider rewriting the terminfo description for your terminal. III(b) - AIX Note that on some versions of AIX it is not possible to use DEC terminals without additional custom terminfo descriptions (the ones provided with AIX do not provide a complete set of function keys from F1 through F8). Users who wish to develop special terminfo descriptions or who need to support DEC terminals with the AIX version of Faximum ought to contact Faximum Technical Support for assistance. III(c) - Windows telnet Programs Customer who wish to use telnet programs under Windows to connect to UNIX or Linux servers to run the full-screen Faximum ELS & PLUS user interface ought to realise that the standard Windows telnet program does NOT support function keys above F4. Faximum recommends the use of the "PuTTY" telnet program available from: http://www.chiark.greenend.org.uk/~sgtatham/putty/ We have tested PuTTY with Linux using both the TERM=xterm and the TERM=linux settings. Section IV - What to Do if All Else Fails ---------------------------------------------------------------- If you are unable, after examining the terminfo description for your terminal, to determine the cause of your problem, then please e-mail or fax the following information to Faximum Technical Support: a) a list of the function or cursor keys are causing the problem; b) an indication of the terminals are experiencing the problem (all terminals, or only certain terminals); c) a list of the exact steps to take to reproduce the problem on your system; d) the make and model of the terminals causing the problems and an indication of whether you are actually using a terminal or a PC emulating a terminal, and if the latter, the details of how the terminal is connected to the computer (i.e. by a serial cable or by TCP/IP); e) the output of the following command: echo $TERM f) the output of the untic or infocmp command as described above. g) the escape sequence being sent by the terminal when you please the function or cursor key(s) that are causing the problem (using the method described in Section I above). With this information Technical Support will try to determine what is causing your problem. TechNote: 095 - Copyright 1995-2001 Faximum Software Inc., All Rights Reserved. Last Updated: Sun Apr 29 00:31:50 PDT 2001 Find all Faximum TechNotes at http://www.faximum.com/support© Copyright 2001 Faximum Software Inc. All Rights Reserved.