ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
shortcuts.c File Reference

Go to the source code of this file.

Data Structures

struct  binding_t

Macros

#define SHORTCUT_MAX_KEYS   3

Functions

tui_shortcut_t tui_shortcut_action (keyboard_key_t key)
size_t tui_shortcut_help (ui_help_entry_t *entries, size_t capacity, bool server, bool browser)

Macro Definition Documentation

◆ SHORTCUT_MAX_KEYS

#define SHORTCUT_MAX_KEYS   3

Definition at line 3 of file shortcuts.c.

Function Documentation

◆ tui_shortcut_action()

tui_shortcut_t tui_shortcut_action ( keyboard_key_t key)

Definition at line 30 of file shortcuts.c.

30 {
31 if (key == KEY_NONE)
32 return TUI_SHORTCUT_NONE;
33 for (size_t i = 0; i < sizeof(bindings) / sizeof(*bindings); ++i)
34 for (size_t alias = 0; alias < 3; ++alias)
35 if (bindings[i].keys[alias] == key)
36 return bindings[i].action;
37 return TUI_SHORTCUT_NONE;
38}
@ KEY_NONE
No key pressed or no input available.
Definition keyboard.h:54
@ TUI_SHORTCUT_NONE
Definition shortcuts.h:5

References KEY_NONE, and TUI_SHORTCUT_NONE.

Referenced by session_handle_keyboard_input().

◆ tui_shortcut_help()

size_t tui_shortcut_help ( ui_help_entry_t * entries,
size_t capacity,
bool server,
bool browser )

Shared definitions used by both dispatch and mode help.

Definition at line 39 of file shortcuts.c.

39 {
40 if (!entries || !capacity) {
41 SET_ERRNO(ERROR_INVALID_PARAM, "Help binding output is required");
42 return 0;
43 }
44 size_t count = 0;
45 for (size_t i = 0; i < sizeof(bindings) / sizeof(*bindings); ++i) {
46 const binding_t *b = &bindings[i];
47 if ((server && b->media) || (browser && b->native))
48 continue;
49 if (count >= capacity) {
50 SET_ERRNO(ERROR_BUFFER_OVERFLOW, "Help binding output is too small");
51 return 0;
52 }
53 entries[count++] = (ui_help_entry_t){.keys = b->label, .description = b->description};
54 }
55 return count;
56}
#define SET_ERRNO(code,...)
@ ERROR_INVALID_PARAM
@ ERROR_BUFFER_OVERFLOW
const char * label
Definition shortcuts.c:10
bool native
Definition shortcuts.c:11
bool media
Definition shortcuts.c:11
const char * description
Definition shortcuts.c:10
Definition help_menu.h:3

References binding_t::description, ERROR_BUFFER_OVERFLOW, ERROR_INVALID_PARAM, binding_t::label, binding_t::media, binding_t::native, and SET_ERRNO.

Referenced by ui_session_help_render().