Blame


1 b7d58e0b 2021-11-05 op /*
2 b7d58e0b 2021-11-05 op * Copyright (c) 2021 Omar Polo <op@omarpolo.com>
3 b7d58e0b 2021-11-05 op *
4 b7d58e0b 2021-11-05 op * Permission to use, copy, modify, and distribute this software for any
5 b7d58e0b 2021-11-05 op * purpose with or without fee is hereby granted, provided that the above
6 b7d58e0b 2021-11-05 op * copyright notice and this permission notice appear in all copies.
7 b7d58e0b 2021-11-05 op *
8 b7d58e0b 2021-11-05 op * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 b7d58e0b 2021-11-05 op * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 b7d58e0b 2021-11-05 op * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 b7d58e0b 2021-11-05 op * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 b7d58e0b 2021-11-05 op * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 b7d58e0b 2021-11-05 op * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 b7d58e0b 2021-11-05 op * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 b7d58e0b 2021-11-05 op */
16 b7d58e0b 2021-11-05 op
17 b7d58e0b 2021-11-05 op #ifndef KEYMAP_H
18 b7d58e0b 2021-11-05 op #define KEYMAP_H
19 b7d58e0b 2021-11-05 op
20 b7d58e0b 2021-11-05 op #include "compat.h"
21 b7d58e0b 2021-11-05 op
22 b7d58e0b 2021-11-05 op #include <stdint.h>
23 b7d58e0b 2021-11-05 op
24 b7d58e0b 2021-11-05 op struct buffer;
25 b7d58e0b 2021-11-05 op
26 b7d58e0b 2021-11-05 op struct kmap {
27 b7d58e0b 2021-11-05 op TAILQ_HEAD(map, keymap) m;
28 b7d58e0b 2021-11-05 op void (*unhandled_input)(void);
29 b7d58e0b 2021-11-05 op };
30 b7d58e0b 2021-11-05 op extern struct kmap global_map, minibuffer_map;
31 b7d58e0b 2021-11-05 op
32 b7d58e0b 2021-11-05 op typedef void(interactivefn)(struct buffer *);
33 b7d58e0b 2021-11-05 op
34 b7d58e0b 2021-11-05 op struct keymap {
35 b7d58e0b 2021-11-05 op int meta;
36 b7d58e0b 2021-11-05 op int key;
37 b7d58e0b 2021-11-05 op struct kmap map;
38 b7d58e0b 2021-11-05 op interactivefn *fn;
39 b7d58e0b 2021-11-05 op
40 b7d58e0b 2021-11-05 op TAILQ_ENTRY(keymap) keymaps;
41 b7d58e0b 2021-11-05 op };
42 b7d58e0b 2021-11-05 op
43 b7d58e0b 2021-11-05 op struct thiskey {
44 b7d58e0b 2021-11-05 op short meta;
45 b7d58e0b 2021-11-05 op int key;
46 b7d58e0b 2021-11-05 op uint32_t cp;
47 b7d58e0b 2021-11-05 op };
48 b7d58e0b 2021-11-05 op
49 b7d58e0b 2021-11-05 op enum {
50 b7d58e0b 2021-11-05 op LK_ADVANCED_MAP,
51 b7d58e0b 2021-11-05 op LK_MATCHED,
52 b7d58e0b 2021-11-05 op LK_UNBOUND,
53 b7d58e0b 2021-11-05 op };
54 b7d58e0b 2021-11-05 op
55 b7d58e0b 2021-11-05 op int kbd(const char *);
56 b7d58e0b 2021-11-05 op const char *unkbd(int);
57 b7d58e0b 2021-11-05 op int kmap_define_key(struct kmap *, const char *, interactivefn *);
58 b7d58e0b 2021-11-05 op int lookup_key(struct kmap **, struct thiskey *, struct buffer *);
59 b7d58e0b 2021-11-05 op
60 b7d58e0b 2021-11-05 op #endif