ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
keyboard.h
Go to the documentation of this file.
1#pragma once
2
25#pragma once
26
27#include <stdbool.h>
28#include <stddef.h>
29#include "../common/error_codes.h"
30
31/* ============================================================================
32 * Keyboard Key Enumeration
33 * ============================================================================ */
34
54typedef enum {
57 KEY_SPACE = 32,
58 KEY_UP = 256,
59 KEY_DOWN = 257,
60 KEY_LEFT = 258,
61 KEY_RIGHT = 259,
62 KEY_DELETE = 260,
63 KEY_HOME = 261,
64 KEY_END = 262,
66 KEY_MINUS = '-',
67 KEY_0 = '0',
68 KEY_C = 'c',
69 KEY_R = 'r',
70 KEY_M = 'm',
71 KEY_F = 'f',
75
76/* ============================================================================
77 * Keyboard Functions
78 * @{
79 */
80
111
128void keyboard_destroy(void);
129
167
178
179/* ============================================================================
180 * Interactive Line Editing
181 * @{
182 */
183
192typedef struct {
193 char *buffer;
194 size_t max_len;
195 size_t *len;
196 size_t *cursor;
197 bool echo;
199 const char *prefix;
200 bool (*validator)(const char *);
203
218
301
unsigned int uint32_t
Definition common.h:58
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
asciichat_error_t keyboard_init(void)
Initialize keyboard input system.
keyboard_line_edit_result_t keyboard_read_line_interactive(keyboard_line_edit_opts_t *opts)
Process one keystroke for interactive line editing.
keyboard_key_t keyboard_read_nonblocking(void)
Read next keyboard input without blocking.
keyboard_key_t keyboard_read_with_timeout(uint32_t timeout_ms)
Read keyboard input with timeout.
void keyboard_destroy(void)
Cleanup keyboard input system and restore terminal.
keyboard_key_t
Unified keyboard key code enumeration.
Definition keyboard.h:54
keyboard_line_edit_result_t
Result codes for interactive line editing.
Definition keyboard.h:212
@ KEY_SPACE
Space bar.
Definition keyboard.h:57
@ KEY_UP
Up arrow key.
Definition keyboard.h:58
@ KEY_M
'm' key - toggle mute
Definition keyboard.h:70
@ KEY_BACKTICK
'‘’ key - print lock state (debug builds)
Definition keyboard.h:73
@ KEY_ESCAPE
Escape key (ESC)
Definition keyboard.h:56
@ KEY_F
'f' key - flip webcam
Definition keyboard.h:71
@ KEY_MINUS
'-' key - toggle FPS counter
Definition keyboard.h:66
@ KEY_LEFT
Left arrow key.
Definition keyboard.h:60
@ KEY_RIGHT
Right arrow key.
Definition keyboard.h:61
@ KEY_0
'0' key - toggle matrix rain effect
Definition keyboard.h:67
@ KEY_NONE
No key pressed or no input available.
Definition keyboard.h:55
@ KEY_C
'c' key - cycle color modes
Definition keyboard.h:68
@ KEY_R
'r' key - cycle render modes
Definition keyboard.h:69
@ KEY_END
End key (move to end of line)
Definition keyboard.h:64
@ KEY_DOWN
Down arrow key.
Definition keyboard.h:59
@ KEY_QUESTION
'?' key - show help screen
Definition keyboard.h:72
@ KEY_HOME
Home key (move to start of line)
Definition keyboard.h:63
@ KEY_DELETE
Delete key (forward delete)
Definition keyboard.h:62
@ KEY_CTRL_DELETE
Ctrl+Delete (delete word forward)
Definition keyboard.h:65
@ LINE_EDIT_ACCEPTED
User pressed Enter (accept input)
Definition keyboard.h:214
@ LINE_EDIT_CANCELLED
User pressed Escape/Ctrl+C (cancel input)
Definition keyboard.h:215
@ LINE_EDIT_CONTINUE
Keep editing (more input needed)
Definition keyboard.h:213
@ LINE_EDIT_NO_INPUT
No key available (non-blocking mode)
Definition keyboard.h:216
ClangTool/LibTooling compatibility shim for stdbool.h.
#define bool
Definition stdbool.h:61
Options for interactive line editing.
Definition keyboard.h:192
const char * prefix
Prefix to display (e.g., "/" for grep), NULL for none.
Definition keyboard.h:199
size_t max_len
Maximum buffer size (including null terminator)
Definition keyboard.h:194
keyboard_key_t key
Pre-read key (use this instead of reading if not KEY_NONE)
Definition keyboard.h:201
bool echo
Echo characters to terminal.
Definition keyboard.h:197
size_t * cursor
Cursor position in bytes (in/out parameter)
Definition keyboard.h:196
char * buffer
Input buffer (modified in-place)
Definition keyboard.h:193
char mask_char
Mask character (0 for no masking, '*' for passwords)
Definition keyboard.h:198
size_t * len
Current length in bytes (in/out parameter)
Definition keyboard.h:195