NeoMutt
2025-12-11-980-ge38c27
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 "
extended.h
"
35
39
struct
Extkey
40
{
41
const
char
*
name
;
42
const
char
*
sym
;
43
};
44
48
static
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
93
const
char
*
ext_key_find
(
const
char
*key)
94
{
95
for
(
int
i = 0;
ExtKeys
[i].name; i++)
96
{
97
if
(strcasecmp(key,
ExtKeys
[i].
name
) == 0)
98
return
ExtKeys
[i].sym;
99
}
100
return
0;
101
}
102
114
void
ext_keys_init
(
struct
Mapping
*key_names)
115
{
116
use_extended_names(
true
);
117
118
for
(
int
i = 0; key_names[i].
name
; i++)
119
{
120
if
(key_names[i].value == -1)
121
{
122
const
char
*keyname =
ext_key_find
(key_names[i].
name
);
123
124
if
(keyname)
125
{
126
const
char
*s =
mutt_tigetstr
((
char
*) keyname);
127
if
(s && ((
long
) (s) != -1))
128
{
129
int
code = key_defined(s);
130
if
(code > 0)
131
key_names[i].
value
= code;
132
}
133
}
134
}
135
}
136
}
ext_key_find
const char * ext_key_find(const char *key)
Find the curses name for a key.
Definition
extended.c:93
ExtKeys
static const struct Extkey ExtKeys[]
Mapping between NeoMutt and Curses key names.
Definition
extended.c:48
ext_keys_init
void ext_keys_init(struct Mapping *key_names)
Initialise map of ncurses extended keys.
Definition
extended.c:114
extended.h
Set up the extended keys.
lib.h
Convenience wrapper for the gui headers.
lib.h
Convenience wrapper for the library headers.
Extkey
Map key names from NeoMutt's style to Curses style.
Definition
extended.c:40
Extkey::sym
const char * sym
Curses key name.
Definition
extended.c:42
Extkey::name
const char * name
NeoMutt key name.
Definition
extended.c:41
Mapping
Mapping between user-readable string and a constant.
Definition
mapping.h:33
Mapping::value
int value
Integer value.
Definition
mapping.h:35
Mapping::name
const char * name
String value.
Definition
mapping.h:34
mutt_tigetstr
const char * mutt_tigetstr(const char *name)
Get terminal capabilities.
Definition
terminal.c:66