ELinks 0.18.0
event.h File Reference
#include "terminal/kbd.h"
#include "terminal/mouse.h"
Include dependency graph for event.h:
This graph shows which files directly or indirectly include this file:

Data Structures

struct  term_event_size
 
struct  term_event
 An event received from a terminal. More...
 
struct  interlink_event
 An event transferred via the interlink socket. More...
 
struct  terminal_info
 This holds the information used when handling the initial connection between a dumb and master terminal. More...
 

Macros

#define interlink_event_size   term_event_size
 
#define set_init_term_event(ev, w, h, cw, ch)   set_wh_term_event(ev, EVENT_INIT, w, h, cw, ch)
 
#define set_resize_term_event(ev, w, h, cw, ch)   set_wh_term_event(ev, EVENT_RESIZE, w, h, cw, ch)
 
#define set_redraw_term_event(ev, w, h, cw, ch)   set_wh_term_event(ev, EVENT_REDRAW, w, h, cw, ch)
 
#define set_resize_interlink_event(ev, w, h, cw, ch)   set_wh_interlink_event(ev, EVENT_RESIZE, w, h, cw, ch)
 
#define TERMINAL_INFO_SIZE   offsetof(struct terminal_info, data)
 The terminal_info.data member has to have size of one for portability but it can be empty/zero so when reading and writing it we need to ignore the byte.
 
#define INTERLINK_MAGIC(major, minor)   -(((major) << 8) + (minor))
 We use magic numbers to signal the identity of the dump client terminal.
 
#define INTERLINK_NORMAL_MAGIC   INTERLINK_MAGIC(1, 0)
 
#define INTERLINK_REMOTE_MAGIC   INTERLINK_MAGIC(1, 1)
 
For keyboard events handling
#define get_kbd_key(event)   (kbd_get_key(&(event)->info.keyboard))
 
#define check_kbd_key(event, key)   (kbd_key_is(&(event)->info.keyboard, (key)))
 
#define get_kbd_modifier(event)   (kbd_get_modifier(&(event)->info.keyboard))
 
#define check_kbd_modifier(event, mod)   (kbd_modifier_is(&(event)->info.keyboard, (mod)))
 
#define check_kbd_textinput_key(event)   (get_kbd_key(event) >= ' ' && (check_kbd_modifier(event, KBD_MOD_NONE) || check_kbd_modifier(event, KBD_MOD_PASTE)))
 
#define check_kbd_label_key(event)   (get_kbd_key(event) > ' ' && (check_kbd_modifier(event, KBD_MOD_NONE) || check_kbd_modifier(event, KBD_MOD_ALT)))
 
For mouse events handling
#define get_mouse_action(event)   (mouse_get_action(&(event)->info.mouse))
 
#define check_mouse_action(event, value)   (mouse_action_is(&(event)->info.mouse, (value)))
 
#define get_mouse_button(event)   (mouse_get_button(&(event)->info.mouse))
 
#define check_mouse_button(event, value)   (mouse_button_is(&(event)->info.mouse, (value)))
 
#define check_mouse_wheel(event)   (mouse_wheeling(&(event)->info.mouse))
 
#define check_mouse_position(event, box)    mouse_is_in_box(&(event)->info.mouse, box)
 

Enumerations

enum  term_event_type {
  EVENT_INIT , EVENT_KBD , EVENT_MOUSE , EVENT_REDRAW ,
  EVENT_RESIZE , EVENT_ABORT
}
 Type of an event received from a terminal. More...
 

Functions

static void set_mouse_term_event (struct term_event *ev, int x, int y, unsigned int button)
 
static void set_mouse_interlink_event (struct interlink_event *ev, int x, int y, unsigned int button)
 
static void set_kbd_term_event (struct term_event *ev, int key, term_event_modifier_T modifier)
 
static void set_kbd_interlink_event (struct interlink_event *ev, int key, term_event_modifier_T modifier)
 Initialize ev as an interlink keyboard event.
 
static void set_abort_term_event (struct term_event *ev)
 
static void set_wh_term_event (struct term_event *ev, enum term_event_type type, int width, int height, int cell_width, int cell_height)
 
static void set_wh_interlink_event (struct interlink_event *ev, enum term_event_type type, int width, int height, int cell_width, int cell_height)
 
void term_send_event (struct terminal *, struct term_event *)
 
void in_term (struct terminal *)
 

Macro Definition Documentation

◆ check_kbd_key

#define check_kbd_key ( event,
key )   (kbd_key_is(&(event)->info.keyboard, (key)))

◆ check_kbd_label_key

#define check_kbd_label_key ( event)    (get_kbd_key(event) > ' ' && (check_kbd_modifier(event, KBD_MOD_NONE) || check_kbd_modifier(event, KBD_MOD_ALT)))

◆ check_kbd_modifier

#define check_kbd_modifier ( event,
mod )   (kbd_modifier_is(&(event)->info.keyboard, (mod)))

◆ check_kbd_textinput_key

#define check_kbd_textinput_key ( event)    (get_kbd_key(event) >= ' ' && (check_kbd_modifier(event, KBD_MOD_NONE) || check_kbd_modifier(event, KBD_MOD_PASTE)))

◆ check_mouse_action

#define check_mouse_action ( event,
value )   (mouse_action_is(&(event)->info.mouse, (value)))

◆ check_mouse_button

#define check_mouse_button ( event,
value )   (mouse_button_is(&(event)->info.mouse, (value)))

◆ check_mouse_position

#define check_mouse_position ( event,
box )    mouse_is_in_box(&(event)->info.mouse, box)

◆ check_mouse_wheel

#define check_mouse_wheel ( event)    (mouse_wheeling(&(event)->info.mouse))

◆ get_kbd_key

#define get_kbd_key ( event)    (kbd_get_key(&(event)->info.keyboard))

◆ get_kbd_modifier

#define get_kbd_modifier ( event)    (kbd_get_modifier(&(event)->info.keyboard))

◆ get_mouse_action

#define get_mouse_action ( event)    (mouse_get_action(&(event)->info.mouse))

◆ get_mouse_button

#define get_mouse_button ( event)    (mouse_get_button(&(event)->info.mouse))

◆ interlink_event_size

#define interlink_event_size   term_event_size

◆ INTERLINK_MAGIC

#define INTERLINK_MAGIC ( major,
minor )   -(((major) << 8) + (minor))

We use magic numbers to signal the identity of the dump client terminal.

Magic numbers are composed by the INTERLINK_MAGIC() macro. It is a negative magic to be able to distinguish the oldest format from the newer ones.

◆ INTERLINK_NORMAL_MAGIC

#define INTERLINK_NORMAL_MAGIC   INTERLINK_MAGIC(1, 0)

◆ INTERLINK_REMOTE_MAGIC

#define INTERLINK_REMOTE_MAGIC   INTERLINK_MAGIC(1, 1)

◆ set_init_term_event

#define set_init_term_event ( ev,
w,
h,
cw,
ch )   set_wh_term_event(ev, EVENT_INIT, w, h, cw, ch)

◆ set_redraw_term_event

#define set_redraw_term_event ( ev,
w,
h,
cw,
ch )   set_wh_term_event(ev, EVENT_REDRAW, w, h, cw, ch)

◆ set_resize_interlink_event

#define set_resize_interlink_event ( ev,
w,
h,
cw,
ch )   set_wh_interlink_event(ev, EVENT_RESIZE, w, h, cw, ch)

◆ set_resize_term_event

#define set_resize_term_event ( ev,
w,
h,
cw,
ch )   set_wh_term_event(ev, EVENT_RESIZE, w, h, cw, ch)

◆ TERMINAL_INFO_SIZE

#define TERMINAL_INFO_SIZE   offsetof(struct terminal_info, data)

The terminal_info.data member has to have size of one for portability but it can be empty/zero so when reading and writing it we need to ignore the byte.

Enumeration Type Documentation

◆ term_event_type

Type of an event received from a terminal.


Enumerator
EVENT_INIT 
EVENT_KBD 
EVENT_MOUSE 
EVENT_REDRAW 
EVENT_RESIZE 
EVENT_ABORT 

Function Documentation

◆ in_term()

void in_term ( struct terminal * term)

◆ set_abort_term_event()

static void set_abort_term_event ( struct term_event * ev)
inlinestatic

◆ set_kbd_interlink_event()

static void set_kbd_interlink_event ( struct interlink_event * ev,
int key,
term_event_modifier_T modifier )
inlinestatic

Initialize ev as an interlink keyboard event.

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.

◆ set_kbd_term_event()

static void set_kbd_term_event ( struct term_event * ev,
int key,
term_event_modifier_T modifier )
inlinestatic

◆ set_mouse_interlink_event()

static void set_mouse_interlink_event ( struct interlink_event * ev,
int x,
int y,
unsigned int button )
inlinestatic

◆ set_mouse_term_event()

static void set_mouse_term_event ( struct term_event * ev,
int x,
int y,
unsigned int button )
inlinestatic

◆ set_wh_interlink_event()

static void set_wh_interlink_event ( struct interlink_event * ev,
enum term_event_type type,
int width,
int height,
int cell_width,
int cell_height )
inlinestatic

◆ set_wh_term_event()

static void set_wh_term_event ( struct term_event * ev,
enum term_event_type type,
int width,
int height,
int cell_width,
int cell_height )
inlinestatic

◆ term_send_event()

void term_send_event ( struct terminal * term,
struct term_event * ev )