49.4.3 Terminal-specific Initialization
Each terminal type can have a Lisp library to be loaded into Emacs when it is run on that type of terminal. For a terminal type named termtype
, the library is called term/termtype
. (If there is an entry of the form (termtype . alias)
in the term-file-aliases
association list, Emacs uses alias
in place of termtype
.) The library is found by searching the directories load-path
as usual and trying the suffixes ‘.elc
’ and ‘.el
’. Normally it appears in the subdirectory term
of the directory where most Emacs libraries are kept.
The usual purpose of the terminal-specific library is to map the escape sequences used by the terminal’s function keys onto more meaningful names, using input-decode-map
. See the file term/lk201.el
for an example of how this is done. Many function keys are mapped automatically according to the information in the Termcap data base; the terminal-specific library needs to map only the function keys that Termcap does not specify.
When the terminal type contains a hyphen, only the part of the name before the first hyphen is significant in choosing the library name. Thus, terminal types ‘aaa-48
’ and ‘aaa-30-rv
’ both use the library term/aaa
. The code in the library can use (getenv "TERM")
to find the full terminal type name.
The library’s name is constructed by concatenating the value of the variable term-file-prefix
and the terminal type. Your .emacs
file can prevent the loading of the terminal-specific library by setting term-file-prefix
to nil
.
Emacs runs the hook tty-setup-hook
at the end of initialization, after both your .emacs
file and any terminal-specific library have been read in. Add hook functions to this hook if you wish to override part of any of the terminal-specific libraries and to define initializations for terminals that do not have a library. See Hooks.