INFOKEY(1)                 OpenBSD Reference Manual                 INFOKEY(1)

NAME
     infokey - compile custom key bindings file

SYNOPSIS
     infokey [--help] [--version] [--output file] [input file]

DESCRIPTION
     The infokey utility compiles a source file ($HOME/.infokey by default)
     containing info(1) customizations into a binary format ($HOME/.info by
     default).  info(1) reads the binary file at startup to override the de-
     fault key bindings and variable definitions.

     Besides the standard --help and --version options, the only option is
     --output file.  This tells infokey to write the binary data to file in-
     stead of $HOME/.info.

     The format of the source file read by infokey is most easily illustrated
     by example.  For instance, here is a sample .infokey source file suitable
     for aficionados of vi(1) or less(1):

           #info
           j       next-line
           k       prev-line
           l       forward-char
           h       backward-char
           \kd     next-line
           \ku     prev-line
           \kr     forward-char
           \kl     backward-char
           \       scroll-forward
           \kD     scroll-forward-page-only
           b       scroll-backward
           \kU     scroll-backward-page-only
           g       beginning-of-node
           \kh     beginning-of-node
           G       end-of-node
           \ke     end-of-node
           \t      select-reference-this-line
           -       history-node
           n       next-node
           p       prev-node
           u       up-node
           t       top-node
           d       dir-node
           #var
           scroll-step=1

     The source file consists of one or more "sections".  Each section starts
     with a line that identifies the type of section.  Possible sections are:

     #info   Key bindings for info(1) windows.  The start of this section is
             indicated by a line containing just `#info' by itself.  If this
             is the first section in the source file, the `#info' line can be
             omitted.  The rest of this section consists of lines of the form:

                STRING whitespace ACTION [ whitespace [ # comment ] ] newline

             Whitespace is any sequence of one or more spaces and/or tabs.
             Comment is any sequence of any characters, excluding newline.

             STRING is the key sequence which invokes the action.  ACTION is
             the name of an info(1) command.  The characters in STRING are in-
             terpreted literally or prefixed by a caret (`^') to indicate a
             control character.  A backslash followed by certain characters
             specifies input keystrokes as follows:

                   \b      Backspace
                   \e      Escape (ESC)
                   \n      Newline
                   \r      Return
                   \t      Tab
                   \ku     Up arrow
                   \kd     Down arrow
                   \kl     Left arrow
                   \kr     Right arrow
                   \kU     Page Up
                   \kD     Page Down
                   \kh     HOME
                   \ke     END
                   \kx     Delete (DEL)
                   \mX     Meta-X, where X is any character as described above

             Backslash followed by any other character indicates that charac-
             ter is to be taken literally.  Characters which must be preceded
             by a backslash include caret, space, tab, and backslash itself.

     #echo-area
             Key bindings for the echo area.  The start of this section is in-
             dicated by a line containing just `#echo-area' by itself.  The
             rest of this section has a syntax identical to that for the key
             definitions for the info(1) area, described above.

     #var    Variable initializations.  The start of this section is indicated
             by a line containing just `#var' by itself.  Following this line
             is a list of variable assignments, one per line.  Each line con-
             sists of a variable name followed by `=', followed by a value.
             There may be no whitespace between the variable name and the `=',
             and all characters following the `=', including whitespace, are
             included in the value.

     Blank lines and lines starting with `#' are ignored, except for the spe-
     cial section header lines.

     Key bindings defined in the .info file take precedence over info's de-
     fault key bindings, whether or not --vi-keys is used.  A default key
     binding may be disabled by overriding it in the .info file with the ac-
     tion `invalid'.  In addition, all default key bindings can be disabled by
     adding this line anywhere in the relevant section:

           #stop

     This will cause info(1) to ignore all the default key commands for that
     section.

     Beware: `#stop' can be dangerous.  Since it disables all default key
     bindings, you must supply enough new key bindings to enable all necessary
     actions.  Failure to bind any key to the `quit' command, for example, can
     lead to frustration.

     The order in which key bindings are defined in the .info file is not im-
     portant, except that the command summary produced by the `get-help-win-
     dow' command only displays the first key that is bound to each command.

FILES
     $HOME/.infokey    Default souce file for customizations.
     $HOME/.info       Default binary file for customizations.

SEE ALSO
     info(1)

BUGS
     bug-texinfo@gnu.org

OpenBSD 4.7                    February 15, 2003                             3
