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)
#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 )
Value:
{ {name}, ACT_##map##_##action, KEYMAP_ID, {caption}, flags }
static char * _(const char *msg, struct terminal *term)
Definition libintl.h:42
#define KEYMAP_ID
Definition kbdbind.c:33
static struct alias_map * map
Definition localealias.c:58
Definition kbdbind.h:30

◆ 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()

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()

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

◆ free_keybinding()

void free_keybinding ( struct keybinding * keybinding)

◆ free_keymaps()

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()

char * get_action_desc ( keymap_id_T keymap_id,
action_id_T action_id )
static

◆ get_action_from_keystroke()

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()

action_id_T get_aliased_action ( keymap_id_T keymap_id,
char * action_str )
static

◆ get_keymap()

struct keymap * get_keymap ( keymap_id_T keymap_id)
static

◆ get_keymap_id()

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()

void init_keymaps ( struct module * xxx)
static

◆ kbd_act_lookup()

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()

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()

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()

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:
= {
{ NULL, 0 }
}
@ ACT_EDIT_OPEN_EXTERNAL
Definition kbdbind.h:107

◆ edit_action_table

const struct action edit_action_table[EDIT_ACTIONS+1]
static

◆ 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:
= {
{ "download", ACT_MAIN_LINK_DOWNLOAD },
{ "download-image", ACT_MAIN_LINK_DOWNLOAD_IMAGE },
{ "enter", ACT_MAIN_LINK_FOLLOW },
{ "enter-reload", ACT_MAIN_LINK_FOLLOW_RELOAD },
{ "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 },
{ "zoom-frame", ACT_MAIN_FRAME_MAXIMIZE },
{ NULL, 0 }
}
@ ACT_MAIN_FRAME_PREV
Definition kbdbind.h:103
@ ACT_MAIN_MOVE_PAGE_DOWN
Definition kbdbind.h:160
@ ACT_MAIN_LINK_DOWNLOAD_IMAGE
Definition kbdbind.h:117
@ ACT_MAIN_FRAME_MAXIMIZE
Definition kbdbind.h:101
@ ACT_MAIN_LINK_DOWNLOAD_RESUME
Definition kbdbind.h:118
@ ACT_MAIN_MOVE_DOCUMENT_END
Definition kbdbind.h:146
@ ACT_MAIN_MOVE_DOCUMENT_START
Definition kbdbind.h:147
@ ACT_MAIN_FRAME_NEXT
Definition kbdbind.h:102
@ ACT_MAIN_MOVE_PAGE_UP
Definition kbdbind.h:161
@ ACT_MAIN_HISTORY_MOVE_FORWARD
Definition kbdbind.h:111
@ ACT_MAIN_MOVE_LINK_NEXT
Definition kbdbind.h:154
@ ACT_MAIN_LINK_FOLLOW
Definition kbdbind.h:120
@ ACT_MAIN_HISTORY_MOVE_BACK
Definition kbdbind.h:110
@ ACT_MAIN_MOVE_LINK_PREV
Definition kbdbind.h:155
@ ACT_MAIN_LINK_FOLLOW_RELOAD
Definition kbdbind.h:121
@ ACT_MAIN_LINK_DOWNLOAD
Definition kbdbind.h:116

◆ main_action_table

const struct action main_action_table[MAIN_ACTIONS+1]
static

◆ menu_action_table

const struct action menu_action_table[MENU_ACTIONS+1]
static
Initial value:
= {
}
@ ACT_MENU_UNEXPAND
Definition kbdbind.h:112
@ ACT_MENU_DELETE
Definition kbdbind.h:96
@ ACT_MENU_MARK_ITEM
Definition kbdbind.h:103
@ ACT_MENU_SCRIPTING_FUNCTION
Definition kbdbind.h:93
@ ACT_MENU_HOME
Definition kbdbind.h:101
@ ACT_MENU_CANCEL
Definition kbdbind.h:95
@ ACT_MENU_LEFT
Definition kbdbind.h:102
@ ACT_MENU_PREVIOUS_ITEM
Definition kbdbind.h:107
@ ACT_MENU_SELECT
Definition kbdbind.h:111
@ ACT_MENU_ENTER
Definition kbdbind.h:99
@ ACT_MENU_PAGE_UP
Definition kbdbind.h:106
@ ACT_MENU_REDRAW
Definition kbdbind.h:108
@ ACT_MENU_PAGE_DOWN
Definition kbdbind.h:105
@ ACT_MENU_DOWN
Definition kbdbind.h:97
@ ACT_MENU_END
Definition kbdbind.h:98
@ ACT_MENU_NEXT_ITEM
Definition kbdbind.h:104
@ ACT_MENU_SEARCH
Definition kbdbind.h:110
@ ACT_MENU_UP
Definition kbdbind.h:113
@ ACT_MENU_NONE
Definition kbdbind.h:92
@ ACT_MENU_RIGHT
Definition kbdbind.h:109
@ ACT_MENU_EXPAND
Definition kbdbind.h:100