Sometimes, when writing vi keymaps (31.2, 31.13), you need to find out what characters are generated by labeled keys like arrows, HOME, and Function Keys.
If you have a terminal manual handy, the information should be listed somewhere in there. If not, you can read the termcap or terminfo entry (41.11). Unfortunately, not every entry is complete - a terminal may have capabilities that aren't described in its entry. In any event, if you don't know the syntax well, finding the right information can be difficult.
However, there are several online techniques for finding out what character is sent by a special key. Each has drawbacks, but between them, you can almost always find out what character a key generates.
Enter insert mode in vi and
use the
^V
control sequence (31.6)
to quote each special key.
That is, type
CTRL-v
followed by the key whose identity you are
trying to discover. A printable representation of the key should
appear on the screen.
This will not work if the key generates a sequence containing more than one non-printing character, since ^V will only quote the first one. It also will not work for keys that generate a newline (such as the down-arrow key on the Wyse-50 keyboard)-but in such a case, the action of the key should be obvious.
At the command line, print:
stty | % |
---|
and then type the special keys, each followed by a carriage return. cat -v (25.7) will echo the translated version on the screen. When you are finished, type CTRL-d.
Simply type the special key at the shell prompt.
As long as the key does not have a special meaning (for example,
^C
to interrupt jobs or ^D
for end of input),
the command generated by the key will be executed
on the terminal. Depending on the version of UNIX you use,
a printable equivalent to the command generated by the key you
pressed may also be printed as the command is executed.
(Keep in mind that with full-duplex communications,
characters are not sent from your keyboard directly to your
terminal but are sent to the system and echoed back to the terminal.)
On some systems, the control character is recognized on
input and is echoed in two separate ways: as
a printable representation of the control character (e.g.,
^Z
-literally, caret-Z) and as the actual control
character. Other systems echo only the actual control
character, which means that you see the effect but not the
character that caused it.
In either case, the shell will give an error message containing the character(s) typed as soon as you press RETURN. The message should read something like this:
^[[U : Command not found.
If, on the other hand, the key generates a sequence that is meaningful to the device, some standard function, such as interrupt, end-of-file, or suspend, will be executed. You can find out what command invokes each of these functions using stty (41.3).
-
,