ELinks 0.18.0
kbdbind.c File Reference
#include <ctype.h>
#include <string.h>
#include "elinks.h"
#include "bfu/dialog.h"
#include "config/conf.h"
#include "config/dialogs.h"
#include "config/kbdbind.h"
#include "config/options.h"
#include "intl/libintl.h"
#include "main/event.h"
#include "main/module.h"
#include "terminal/kbd.h"
#include "util/conv.h"
#include "util/memory.h"
#include "util/string.h"
#include "config/actions-main.inc"
#include "config/actions-edit.inc"
#include "config/actions-menu.inc"
Include dependency graph for kbdbind.c:

Data Structures

struct  named_key
 
struct  default_kb
 
struct  action_alias
 

Macros

#define table   table_elinks
 
#define ACTION_(map, name, action, caption, flags)    { {name}, ACT_##map##_##action, KEYMAP_ID, {caption}, flags }
 
#define KEYMAP_ID   KEYMAP_MAIN
 
#define KEYMAP_ID   KEYMAP_EDIT
 
#define KEYMAP_ID   KEYMAP_MENU
 

Functions

static void add_default_keybindings (void)
 
static int delete_keybinding (keymap_id_T keymap_id, struct term_event_keyboard *kbd)
 
static int keybinding_is_default (struct keybinding *keybinding)
 
struct keybindingadd_keybinding (keymap_id_T keymap_id, action_id_T action_id, struct term_event_keyboard *kbd, int event)
 
void free_keybinding (struct keybinding *keybinding)
 
int keybinding_exists (keymap_id_T keymap_id, struct term_event_keyboard *kbd, action_id_T *action_id)
 
action_id_T kbd_action (keymap_id_T keymap_id, struct term_event *ev, int *event)
 
struct keybindingkbd_ev_lookup (keymap_id_T keymap_id, struct term_event_keyboard *kbd, int *event)
 
static struct keybindingkbd_act_lookup (keymap_id_T keymap_id, action_id_T action_id)
 
struct keybindingkbd_nm_lookup (keymap_id_T keymap_id, const char *name)
 
static struct keybindingkbd_stroke_lookup (keymap_id_T keymap_id, const char *keystroke_str)
 
static const struct actionget_action_from_keystroke (keymap_id_T keymap_id, const char *keystroke_str)
 
char * get_action_name_from_keystroke (keymap_id_T keymap_id, const char *keystroke_str)
 
action_id_T get_action_from_string (keymap_id_T keymap_id, const char *str)
 
const struct actionget_action (keymap_id_T keymap_id, action_id_T action_id)
 
char * get_action_name (keymap_id_T keymap_id, action_id_T action_id)
 
static char * get_action_desc (keymap_id_T keymap_id, action_id_T action_id)
 
static struct keymapget_keymap (keymap_id_T keymap_id)
 
static keymap_id_T get_keymap_id (const char *keymap_str)
 
const char * get_keymap_name (keymap_id_T keymap_id)
 
term_event_key_T read_key (const char *key_str)
 
int parse_keystroke (const char *s, struct term_event_keyboard *kbd)
 Parse the string s as the name of a keystroke.
 
void add_keystroke_to_string (struct string *str, struct term_event_keyboard *kbd, int escape)
 
void add_keystroke_action_to_string (struct string *string, action_id_T action_id, keymap_id_T keymap_id)
 
char * get_keystroke (action_id_T action_id, keymap_id_T keymap_id)
 
void add_actions_to_string (struct string *string, action_id_T action_ids[], keymap_id_T keymap_id, struct terminal *term)
 
static void init_keymaps (struct module *xxx)
 
static void free_keymaps (struct module *xxx)
 
static action_id_T get_aliased_action (keymap_id_T keymap_id, char *action_str)
 
int bind_do (const char *keymap_str, const char *keystroke_str, char *action_str, int is_system_conf)
 
char * bind_act (char *keymap_str, const char *keystroke_str)
 
static void single_bind_config_string (struct string *file, keymap_id_T keymap_id, struct keybinding *keybinding)
 
void bind_config_string (struct string *file)
 

Variables

static const struct action main_action_table [MAIN_ACTIONS+1]
 
static const struct action edit_action_table [EDIT_ACTIONS+1]
 
static const struct action menu_action_table [MENU_ACTIONS+1]
 
static const struct action_list action_table [KEYMAP_MAX]
 
static struct keymap keymap_table []
 
static struct keybinding list keymaps [KEYMAP_MAX]
 
static const struct named_key key_table []
 
static struct default_kb default_main_keymap []
 
static struct default_kb default_edit_keymap []
 
static struct default_kb default_menu_keymap []
 
static struct default_kbdefault_keybindings []
 
static const struct action_alias main_action_aliases []
 
static const struct action_alias edit_action_aliases []
 
static const struct action_aliasaction_aliases [KEYMAP_MAX]
 
struct module kbdbind_module
 

Macro Definition Documentation

◆ ACTION_

#define ACTION_ ( map,
name,
action,
caption,
flags )    { {name}, ACT_##map##_##action, KEYMAP_ID, {caption}, flags }

◆ KEYMAP_ID [1/3]

#define KEYMAP_ID   KEYMAP_MAIN

◆ KEYMAP_ID [2/3]

#define KEYMAP_ID   KEYMAP_EDIT

◆ KEYMAP_ID [3/3]

#define KEYMAP_ID   KEYMAP_MENU

◆ table

#define table   table_elinks

Function Documentation

◆ add_actions_to_string()

void add_actions_to_string ( struct string * string,
action_id_T action_ids[],
keymap_id_T keymap_id,
struct terminal * term )

◆ add_default_keybindings()

static void add_default_keybindings ( void )
static

◆ add_keybinding()

struct keybinding * add_keybinding ( keymap_id_T keymap_id,
action_id_T action_id,
struct term_event_keyboard * kbd,
int event )

◆ add_keystroke_action_to_string()

void add_keystroke_action_to_string ( struct string * string,
action_id_T action_id,
keymap_id_T keymap_id )

◆ add_keystroke_to_string()

void add_keystroke_to_string ( struct string * str,
struct term_event_keyboard * kbd,
int escape )

◆ bind_act()

char * bind_act ( char * keymap_str,
const char * keystroke_str )

◆ bind_config_string()

void bind_config_string ( struct string * file)

◆ bind_do()

int bind_do ( const char * keymap_str,
const char * keystroke_str,
char * action_str,
int is_system_conf )

◆ delete_keybinding()

static int delete_keybinding ( keymap_id_T keymap_id,
struct term_event_keyboard * kbd )
static

◆ free_keybinding()

void free_keybinding ( struct keybinding * keybinding)

◆ free_keymaps()

static void free_keymaps ( struct module * xxx)
static

◆ get_action()

const struct action * get_action ( keymap_id_T keymap_id,
action_id_T action_id )

◆ get_action_desc()

static char * get_action_desc ( keymap_id_T keymap_id,
action_id_T action_id )
static

◆ get_action_from_keystroke()

static const struct action * get_action_from_keystroke ( keymap_id_T keymap_id,
const char * keystroke_str )
static

◆ get_action_from_string()

action_id_T get_action_from_string ( keymap_id_T keymap_id,
const char * str )

◆ get_action_name()

char * get_action_name ( keymap_id_T keymap_id,
action_id_T action_id )

◆ get_action_name_from_keystroke()

char * get_action_name_from_keystroke ( keymap_id_T keymap_id,
const char * keystroke_str )

◆ get_aliased_action()

static action_id_T get_aliased_action ( keymap_id_T keymap_id,
char * action_str )
static

◆ get_keymap()

static struct keymap * get_keymap ( keymap_id_T keymap_id)
static

◆ get_keymap_id()

static keymap_id_T get_keymap_id ( const char * keymap_str)
static

◆ get_keymap_name()

const char * get_keymap_name ( keymap_id_T keymap_id)

◆ get_keystroke()

char * get_keystroke ( action_id_T action_id,
keymap_id_T keymap_id )

◆ init_keymaps()

static void init_keymaps ( struct module * xxx)
static

◆ kbd_act_lookup()

static struct keybinding * kbd_act_lookup ( keymap_id_T keymap_id,
action_id_T action_id )
static

◆ kbd_action()

action_id_T kbd_action ( keymap_id_T keymap_id,
struct term_event * ev,
int * event )

◆ kbd_ev_lookup()

struct keybinding * kbd_ev_lookup ( keymap_id_T keymap_id,
struct term_event_keyboard * kbd,
int * event )

◆ kbd_nm_lookup()

struct keybinding * kbd_nm_lookup ( keymap_id_T keymap_id,
const char * name )

◆ kbd_stroke_lookup()

static struct keybinding * kbd_stroke_lookup ( keymap_id_T keymap_id,
const char * keystroke_str )
static

◆ keybinding_exists()

int keybinding_exists ( keymap_id_T keymap_id,
struct term_event_keyboard * kbd,
action_id_T * action_id )

◆ keybinding_is_default()

static int keybinding_is_default ( struct keybinding * keybinding)
static

◆ parse_keystroke()

int parse_keystroke ( const char * s,
struct term_event_keyboard * kbd )

Parse the string s as the name of a keystroke.

Write the parsed key and modifiers to *kbd.

Returns
>=0 on success, <0 on error.

This function does not support KBD_MOD_PASTE, because keystrokes that include it should never be bound to actions.

◆ read_key()

term_event_key_T read_key ( const char * key_str)

◆ single_bind_config_string()

static void single_bind_config_string ( struct string * file,
keymap_id_T keymap_id,
struct keybinding * keybinding )
static

Variable Documentation

◆ action_aliases

const struct action_alias* action_aliases[KEYMAP_MAX]
static
Initial value:
= {
}
#define NULL
Definition explodename.c:35
static const struct action_alias main_action_aliases[]
Definition kbdbind.c:854
static const struct action_alias edit_action_aliases[]
Definition kbdbind.c:875

◆ action_table

const struct action_list action_table[KEYMAP_MAX]
static
Initial value:
= {
}
#define sizeof_array(array)
Definition generic.h:120
static const struct action edit_action_table[EDIT_ACTIONS+1]
Definition kbdbind.c:40
static const struct action main_action_table[MAIN_ACTIONS+1]
Definition kbdbind.c:34
static const struct action menu_action_table[MENU_ACTIONS+1]
Definition kbdbind.c:46

◆ default_edit_keymap

struct default_kb default_edit_keymap[]
static

◆ default_keybindings

struct default_kb* default_keybindings[]
static
Initial value:
= {
}
static struct default_kb default_edit_keymap[]
Definition kbdbind.c:726
static struct default_kb default_menu_keymap[]
Definition kbdbind.c:764
static struct default_kb default_main_keymap[]
Definition kbdbind.c:636

◆ default_main_keymap

struct default_kb default_main_keymap[]
static

◆ default_menu_keymap

struct default_kb default_menu_keymap[]
static

◆ edit_action_aliases

const struct action_alias edit_action_aliases[]
static
Initial value:
= {
{ "edit", ACT_EDIT_OPEN_EXTERNAL },
{ NULL, 0 }
}

◆ edit_action_table

const struct action edit_action_table[EDIT_ACTIONS+1]
static
Initial value:
= {
}

◆ kbdbind_module

struct module kbdbind_module
Initial value:
"Keyboard Bindings",
)
static void free_keymaps(struct module *xxx)
Definition kbdbind.c:569
static void init_keymaps(struct module *xxx)
Definition kbdbind.c:557
#define struct_module(name, options, hooks, submods, data, init, done, getname)
Definition module.h:47

◆ key_table

const struct named_key key_table[]
static
Initial value:
= {
{ "Enter", KBD_ENTER },
{ "Space", ' ' },
{ "Backspace", KBD_BS },
{ "Tab", KBD_TAB },
{ "Escape", KBD_ESC },
{ "Left", KBD_LEFT },
{ "Right", KBD_RIGHT },
{ "Up", KBD_UP },
{ "Down", KBD_DOWN },
{ "Insert", KBD_INS },
{ "Delete", KBD_DEL },
{ "Home", KBD_HOME },
{ "End", KBD_END },
{ "PageUp", KBD_PAGE_UP },
{ "PageDown", KBD_PAGE_DOWN },
{ "F1", KBD_F1 },
{ "F2", KBD_F2 },
{ "F3", KBD_F3 },
{ "F4", KBD_F4 },
{ "F5", KBD_F5 },
{ "F6", KBD_F6 },
{ "F7", KBD_F7 },
{ "F8", KBD_F8 },
{ "F9", KBD_F9 },
{ "F10", KBD_F10 },
{ "F11", KBD_F11 },
{ "F12", KBD_F12 },
}
@ KBD_F11
Definition kbd.h:116
@ KBD_F5
Definition kbd.h:110
@ KBD_DEL
Definition kbd.h:100
@ KBD_F2
Definition kbd.h:107
@ KBD_F9
Definition kbd.h:114
@ KBD_F6
Definition kbd.h:111
@ KBD_LEFT
Definition kbd.h:95
@ KBD_F7
Definition kbd.h:112
@ KBD_BS
Definition kbd.h:92
@ KBD_DOWN
Definition kbd.h:98
@ KBD_F4
Definition kbd.h:109
@ KBD_F8
Definition kbd.h:113
@ KBD_HOME
Definition kbd.h:101
@ KBD_TAB
Definition kbd.h:93
@ KBD_RIGHT
Definition kbd.h:96
@ KBD_ENTER
Definition kbd.h:91
@ KBD_UNDEF
Definition kbd.h:89
@ KBD_UP
Definition kbd.h:97
@ KBD_F12
Definition kbd.h:117
@ KBD_INS
Definition kbd.h:99
@ KBD_END
Definition kbd.h:102
@ KBD_ESC
Definition kbd.h:94
@ KBD_PAGE_DOWN
Definition kbd.h:104
@ KBD_F1
Definition kbd.h:106
@ KBD_F3
Definition kbd.h:108
@ KBD_F10
Definition kbd.h:115
@ KBD_PAGE_UP
Definition kbd.h:103

◆ keymap_table

struct keymap keymap_table[]
static
Initial value:
= {
{ "main", KEYMAP_MAIN, N_("Main mapping") },
{ "edit", KEYMAP_EDIT, N_("Edit mapping") },
{ "menu", KEYMAP_MENU, N_("Menu mapping") },
}
#define N_(msg)
Definition libintl.h:25
@ KEYMAP_MAIN
Definition kbdbind.h:24
@ KEYMAP_EDIT
Definition kbdbind.h:25
@ KEYMAP_MENU
Definition kbdbind.h:26

◆ keymaps

struct keybinding list keymaps[KEYMAP_MAX]
static

◆ main_action_aliases

const struct action_alias main_action_aliases[]
static
Initial value:
= {
{ "back", ACT_MAIN_HISTORY_MOVE_BACK },
{ "down", ACT_MAIN_MOVE_LINK_NEXT },
{ "download", ACT_MAIN_LINK_DOWNLOAD },
{ "download-image", ACT_MAIN_LINK_DOWNLOAD_IMAGE },
{ "end", ACT_MAIN_MOVE_DOCUMENT_END },
{ "enter", ACT_MAIN_LINK_FOLLOW },
{ "enter-reload", ACT_MAIN_LINK_FOLLOW_RELOAD },
{ "home", ACT_MAIN_MOVE_DOCUMENT_START },
{ "next-frame", ACT_MAIN_FRAME_NEXT },
{ "page-down", ACT_MAIN_MOVE_PAGE_DOWN },
{ "page-up", ACT_MAIN_MOVE_PAGE_UP },
{ "previous-frame", ACT_MAIN_FRAME_PREV },
{ "resume-download", ACT_MAIN_LINK_DOWNLOAD_RESUME },
{ "unback", ACT_MAIN_HISTORY_MOVE_FORWARD },
{ "up", ACT_MAIN_MOVE_LINK_PREV },
{ "zoom-frame", ACT_MAIN_FRAME_MAXIMIZE },
{ NULL, 0 }
}

◆ main_action_table

const struct action main_action_table[MAIN_ACTIONS+1]
static
Initial value:
= {
}

◆ menu_action_table

const struct action menu_action_table[MENU_ACTIONS+1]
static
Initial value:
= {
}