mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-04 08:17:17 -05:00
terminal: New type term_event_modifier_T.
KBD_MOD_NONE and related constants are now also visible in GDB.
This commit is contained in:
parent
f290ff5608
commit
c8584a1c7e
@ -49,7 +49,7 @@ struct terminal_interlink {
|
||||
* ELinks sees e.g. ESC U+00F6 as 0x1B 0xC3 0xB6 and
|
||||
* converts it to Alt-0xC3 0xB6, attaching the
|
||||
* modifier to the first byte only. */
|
||||
int modifier;
|
||||
term_event_modifier_T modifier;
|
||||
} utf_8;
|
||||
|
||||
/* This is the queue of events as coming from the other ELinks instance
|
||||
@ -133,7 +133,8 @@ term_send_event(struct terminal *term, struct term_event *ev)
|
||||
}
|
||||
|
||||
static void
|
||||
term_send_ucs(struct terminal *term, unicode_val_T u, int modifier)
|
||||
term_send_ucs(struct terminal *term, unicode_val_T u,
|
||||
term_event_modifier_T modifier)
|
||||
{
|
||||
#ifdef CONFIG_UTF_8
|
||||
struct term_event ev;
|
||||
@ -277,7 +278,7 @@ handle_interlink_event(struct terminal *term, struct interlink_event *ilev)
|
||||
{
|
||||
int utf8_io = -1;
|
||||
int key = ilev->info.keyboard.key;
|
||||
int modifier = ilev->info.keyboard.modifier;
|
||||
term_event_modifier_T modifier = ilev->info.keyboard.modifier;
|
||||
|
||||
if (key >= 0x100)
|
||||
key = -key;
|
||||
|
@ -71,19 +71,21 @@ set_mouse_interlink_event(struct interlink_event *ev, int x, int y, unsigned int
|
||||
}
|
||||
|
||||
static inline void
|
||||
set_kbd_term_event(struct term_event *ev, int key, int modifier)
|
||||
set_kbd_term_event(struct term_event *ev, int key,
|
||||
term_event_modifier_T modifier)
|
||||
{
|
||||
memset(ev, 0, sizeof(*ev));
|
||||
ev->ev = EVENT_KBD;
|
||||
kbd_set(&ev->info.keyboard, key, modifier);
|
||||
}
|
||||
|
||||
/* @key can be either a 8-bit byte or a value from enum term_event_special_key.
|
||||
/* @key can be either an 8-bit byte or a value from enum term_event_special_key.
|
||||
* In the latter case, this function negates the value, unless it is KBD_UNDEF.
|
||||
* For example, key == KBD_ENTER results in ev->info.keyboard.key = -KBD_ENTER.
|
||||
* This mapping keeps the interlink protocol compatible with ELinks 0.11. */
|
||||
static inline void
|
||||
set_kbd_interlink_event(struct interlink_event *ev, int key, int modifier)
|
||||
set_kbd_interlink_event(struct interlink_event *ev, int key,
|
||||
term_event_modifier_T modifier)
|
||||
{
|
||||
memset(ev, 0, sizeof(*ev));
|
||||
ev->ev = EVENT_KBD;
|
||||
|
@ -841,8 +841,14 @@ decode_terminal_application_key(struct itrm *itrm, struct interlink_event *ev)
|
||||
}
|
||||
|
||||
|
||||
/* Initialize *@ev to match the byte @key received from the terminal.
|
||||
* Actually, @key could also be a value from enum term_event_special_key;
|
||||
* but callers that use those values generally don't need the mapping
|
||||
* provided by this function, so they call set_kbd_interlink_event()
|
||||
* directly. */
|
||||
static void
|
||||
set_kbd_event(struct interlink_event *ev, int key, int modifier)
|
||||
set_kbd_event(struct interlink_event *ev,
|
||||
int key, term_event_modifier_T modifier)
|
||||
{
|
||||
switch (key) {
|
||||
case ASCII_TAB:
|
||||
|
@ -14,9 +14,18 @@ struct itrm;
|
||||
* parts of ELinks already require the existence of uint32_t. */
|
||||
typedef int32_t term_event_key_T;
|
||||
|
||||
/* Values for term_event_keyboard.modifier and
|
||||
* interlink_event_keyboard.modifier */
|
||||
typedef enum {
|
||||
KBD_MOD_NONE = 0,
|
||||
KBD_MOD_SHIFT = 1,
|
||||
KBD_MOD_CTRL = 2,
|
||||
KBD_MOD_ALT = 4
|
||||
} term_event_modifier_T;
|
||||
|
||||
struct term_event_keyboard {
|
||||
term_event_key_T key;
|
||||
int modifier;
|
||||
term_event_modifier_T modifier;
|
||||
};
|
||||
|
||||
struct interlink_event_keyboard {
|
||||
@ -26,6 +35,9 @@ struct interlink_event_keyboard {
|
||||
* Values >= 0x100 are special; absolute values of constants
|
||||
* from enum term_event_special_key, e.g. -KBD_ENTER. */
|
||||
int key;
|
||||
/* The values are from term_event_modifier_T, but the type
|
||||
* must be int so that the representation remains compatible
|
||||
* with ELinks 0.11. */
|
||||
int modifier;
|
||||
};
|
||||
|
||||
@ -77,13 +89,6 @@ static inline int is_kbd_fkey(term_event_key_T key) { return key <= KBD_F1 && ke
|
||||
* which charset it is in, see the definition of term_event_key_T. */
|
||||
#define is_kbd_character(key) ((key) >= 0)
|
||||
|
||||
/* Values for term_event_keyboard.modifier and
|
||||
* interlink_event_keyboard.modifier */
|
||||
#define KBD_MOD_NONE 0
|
||||
#define KBD_MOD_SHIFT 1
|
||||
#define KBD_MOD_CTRL 2
|
||||
#define KBD_MOD_ALT 4
|
||||
|
||||
void
|
||||
handle_trm(int std_in, int std_out, int sock_in, int sock_out, int ctl_in,
|
||||
void *init_string, int init_len, int remote);
|
||||
|
Loading…
Reference in New Issue
Block a user