NeoMutt  2025-09-05-43-g177ed6
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
extended.c
Go to the documentation of this file.
1
22
28
29#include "config.h"
30#include <stdbool.h>
31#include <strings.h>
32#include "mutt/lib.h"
33#include "gui/lib.h"
34#include "lib.h"
35
39struct Extkey
40{
41 const char *name;
42 const char *sym;
43};
44
48static const struct Extkey ExtKeys[] = {
49 { "<c-up>", "kUP5" },
50 { "<s-up>", "kUP" },
51 { "<a-up>", "kUP3" },
52
53 { "<s-down>", "kDN" },
54 { "<a-down>", "kDN3" },
55 { "<c-down>", "kDN5" },
56
57 { "<c-right>", "kRIT5" },
58 { "<s-right>", "kRIT" },
59 { "<a-right>", "kRIT3" },
60
61 { "<s-left>", "kLFT" },
62 { "<a-left>", "kLFT3" },
63 { "<c-left>", "kLFT5" },
64
65 { "<s-home>", "kHOM" },
66 { "<a-home>", "kHOM3" },
67 { "<c-home>", "kHOM5" },
68
69 { "<s-end>", "kEND" },
70 { "<a-end>", "kEND3" },
71 { "<c-end>", "kEND5" },
72
73 { "<s-next>", "kNXT" },
74 { "<a-next>", "kNXT3" },
75 { "<c-next>", "kNXT5" },
76
77 { "<s-prev>", "kPRV" },
78 { "<a-prev>", "kPRV3" },
79 { "<c-prev>", "kPRV5" },
80
81 { 0, 0 },
82};
83
93static const char *find_ext_name(const char *key)
94{
95 for (int j = 0; ExtKeys[j].name; j++)
96 {
97 if (strcasecmp(key, ExtKeys[j].name) == 0)
98 return ExtKeys[j].sym;
99 }
100 return 0;
101}
102
114{
115 use_extended_names(true);
116
117 for (int j = 0; KeyNames[j].name; j++)
118 {
119 if (KeyNames[j].value == -1)
120 {
121 const char *keyname = find_ext_name(KeyNames[j].name);
122
123 if (keyname)
124 {
125 const char *s = mutt_tigetstr((char *) keyname);
126 if (s && ((long) (s) != -1))
127 {
128 int code = key_defined(s);
129 if (code > 0)
130 KeyNames[j].value = code;
131 }
132 }
133 }
134 }
135}
static const struct Extkey ExtKeys[]
Mapping between NeoMutt and Curses key names.
Definition extended.c:48
static const char * find_ext_name(const char *key)
Find the curses name for a key.
Definition extended.c:93
void init_extended_keys(void)
Initialise map of ncurses extended keys.
Definition extended.c:113
Convenience wrapper for the gui headers.
struct Mapping KeyNames[]
Key name lookup table.
Definition lib.c:59
Manage keymappings.
Convenience wrapper for the library headers.
Map key names from NeoMutt's style to Curses style.
Definition extended.c:40
const char * sym
Curses key name.
Definition extended.c:42
const char * name
NeoMutt key name.
Definition extended.c:41
const char * mutt_tigetstr(const char *name)
Get terminal capabilities.
Definition terminal.c:68