source: trunk/essentials/sys-apps/texinfo/info/infokey.h

Last change on this file was 2617, checked in by bird, 19 years ago

GNU Texinfo 4.8

File size: 3.3 KB
Line 
1/* infokey.h -- Custom keystroke definition support.
2 $Id: infokey.h,v 1.2 2004/04/11 17:56:45 karl Exp $
3
4 Copyright (C) 1999, 2002 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20 Written by Andrew Bettison <andrewb@zip.com.au>.
21
22 This design was derived from the "lesskey" system in less 3.4.0. by
23 Mark Nudelman.
24
25 The following terminology is confusing:
26 source file = $HOME/.infokey
27 infokey file = $HOME/.info
28 Oh, well.
29 */
30
31
32/* Default source file, where user writes text definitions to be
33 compiled to the infokey file. MS-DOS doesn't allow leading
34 dots in file names. */
35#ifdef __MSDOS__
36#define INFOKEY_SRCFILE "_infokey"
37#else
38#define INFOKEY_SRCFILE ".infokey"
39#endif
40
41/* Default "infokey file", where compiled user defs are kept and
42 read by Info. MS-DOS doesn't allow leading dots in file names. */
43#ifdef __MSDOS__
44#define INFOKEY_FILE "_info"
45#else
46#define INFOKEY_FILE ".info"
47#endif
48
49/*
50Format of entire infokey file:
51
52 4 bytes magic number S
53 X bytes version string
54 1 byte '\0' terminator
55
56 any number of sections:
57 1 byte section id
58 2 bytes section length (N)
59 N bytes section definitions: format depends on section
60
61 4 bytes magic number E
62
63Format of INFO and EA sections:
64
65 1 byte flag: 1 == suppress default key bindings
66 Repeat:
67 X bytes key sequence
68 1 byte '\0' terminator
69 1 byte action code (A_xxx)
70
71Format of VAR section:
72
73 Repeat:
74 X bytes variable name
75 1 byte '\0' terminator
76 Y bytes value
77 1 byte '\0' terminator
78
79*/
80
81#define INFOKEY_NMAGIC 8
82
83#define INFOKEY_MAGIC_S0 '\001'
84#define INFOKEY_MAGIC_S1 'I'
85#define INFOKEY_MAGIC_S2 'n'
86#define INFOKEY_MAGIC_S3 'f'
87
88#define INFOKEY_SECTION_INFO 'i'
89#define INFOKEY_SECTION_EA 'e'
90#define INFOKEY_SECTION_VAR 'v'
91
92#define INFOKEY_MAGIC_E0 'A'
93#define INFOKEY_MAGIC_E1 'l'
94#define INFOKEY_MAGIC_E2 'f'
95#define INFOKEY_MAGIC_E3 'n'
96
97#define INFOKEY_RADIX 64
98#define INFOKEY_MAX_SECTIONLEN 500
99#define INFOKEY_MAX_DEFLEN 16
100
101#define A_MAX_COMMAND 120
102#define A_INVALID 121
103
104/* Character transformations (independent of info's own) */
105
106#define CONTROL(c) ((c) & 0x1f)
107#define ISCONTROL(c) (((c) & ~0x1f) == 0)
108#define META(c) ((c) | 0x80)
109#define UNMETA(c) ((c) & ~0x80)
110#define ISMETA(c) (((c) & 0x80) != 0)
111
112/* Special keys (keys which output different strings on different terminals) */
113
114#define SK_ESCAPE CONTROL('k')
115#define SK_RIGHT_ARROW 1
116#define SK_LEFT_ARROW 2
117#define SK_UP_ARROW 3
118#define SK_DOWN_ARROW 4
119#define SK_PAGE_UP 5
120#define SK_PAGE_DOWN 6
121#define SK_HOME 7
122#define SK_END 8
123#define SK_DELETE 9
124#define SK_INSERT 10
125#define SK_CTL_LEFT_ARROW 11
126#define SK_CTL_RIGHT_ARROW 12
127#define SK_CTL_DELETE 13
128#define SK_LITERAL 40
Note: See TracBrowser for help on using the repository browser.