add a CVS snapshot, to thoroughly test on the Debian side
[alioth/jupp.git] / kbd.h
1 /* $MirOS: contrib/code/jupp/kbd.h,v 1.2 2008/05/13 13:08:23 tg Exp $ */
2 /*
3  *      Key-map handler
4  *      Copyright
5  *              (C) 1992 Joseph H. Allen
6  *
7  *      This file is part of JOE (Joe's Own Editor)
8  */
9 #ifndef _JOE_KBD_H
10 #define _JOE_KBD_H 1
11
12 #include "config.h"
13 #include "types.h"
14
15 /* KMAP *mkkmap(void);
16  * Create an empty keymap
17  */
18 KMAP *mkkmap PARAMS((void));
19
20 /* void rmkmap(KMAP *kmap);
21  * Free a key map
22  */
23 void rmkmap PARAMS((KMAP *kmap));
24
25 /* int kadd(KMAP *kmap,char *seq,void *bind);
26  * Add a key sequence binding to a key map
27  *
28  * Returns 0 for success
29  *        -1 for for invalid key sequence
30  *
31  * A valid key sequence is one or more keys seperated with spaces.  A key
32  * is a single character or one of the following strings:
33  *
34  *    ^?                           127 (DEL)
35  *
36  *    ^@   -   ^_                  Control characters
37  *
38  *    SP                           32 (space character)
39  *
40  *    UP, DOWN, LEFT, RIGHT,
41  *    F0 - F10, DEL, INS, HOME,
42  *    END, PGUP, PGDN              termcap special characters
43  *
44  * In addition, the last key of a key sequence may be replaced with
45  * a range-fill of the form: <KEY> TO <KEY>
46  *
47  * So for example, if the sequence: ^K A TO Z
48  * is speicified, then the key sequences
49  * ^K A, ^K B, ^K C, ... ^K Z are all bound.
50  */
51 int kadd PARAMS((CAP *cap, KMAP *kmap, unsigned char *seq, void *bind));
52
53 /* void kcpy(KMAP *dest,KMAP *src);
54  * Copy all of the entries in the 'src' keymap into the 'dest' keymap
55  */
56 void kcpy PARAMS((KMAP *dest, KMAP *src));
57
58 /* int kdel(KMAP *kmap,char *seq);
59  * Delete a binding from a keymap
60  *
61  * Returns 0 for success
62  *        -1 if the given key sequence was invalid
63  *         1 if the given key sequence did not exist
64  */
65 int kdel PARAMS((KMAP *kmap, unsigned char *seq));
66
67 /* KBD *mkkbd(KMAP *kmap);
68    Create a keyboard handler which uses the given keymap
69 */
70 KBD *mkkbd PARAMS((KMAP *kmap));
71
72 /* void rmkbd(KBD *);
73  *
74  * Eliminate a keyboard handler
75  */
76 void rmkbd PARAMS((KBD *k));
77
78 /* void *dokey(KBD *kbd,int k);
79    Handle a key for a KBD:
80
81      Returns 0 for invalid or prefix keys
82
83      Returns binding for a completed key sequence
84 */
85 void *dokey PARAMS((KBD *kbd, int n));
86
87 #endif