ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
keyboard.h
Go to the documentation of this file.
1#pragma once
2
24
26#include <stdbool.h>
27#include <stddef.h>
29
30/* ============================================================================
31 * Keyboard Key Enumeration
32 * ============================================================================ */
33
53typedef enum {
56 KEY_SPACE = 32,
57 KEY_UP = 0x110000,
58 KEY_DOWN = 0x110001,
59 KEY_LEFT = 0x110002,
60 KEY_RIGHT = 0x110003,
61 KEY_DELETE = 0x110004,
62 KEY_HOME = 0x110005,
63 KEY_END = 0x110006,
64 KEY_CTRL_DELETE = 0x110007,
65 KEY_PASTE_BEGIN = 0x110008,
66 KEY_PASTE_END = 0x110009,
67 KEY_PASTE = 0x11000a,
68 KEY_MEDIA_SUBMIT = 0x11000b,
69 KEY_F12 = 0x11000c,
70 KEY_PAGEUP = 0x11000d,
71 KEY_PAGEDOWN = 0x11000e,
72 KEY_SHIFT_ENTER = 0x11000f,
73 KEY_SHIFT_ESCAPE = 0x110010,
74 KEY_MINUS = '-',
75 KEY_0 = '0',
76 KEY_1 = '1',
77 KEY_2 = '2',
78 KEY_3 = '3',
79 KEY_C = 'c',
80 KEY_R = 'r',
81 KEY_M = 'm',
82 KEY_F = 'f',
86
87/* ============================================================================
88 * Keyboard Functions
89 * @{
90 */
91
122
140
178
189
190/* ============================================================================
191 * Interactive Line Editing
192 * @{
193 */
194
203typedef struct {
204 char *buffer;
205 size_t max_len;
206 size_t *len;
207 size_t *cursor;
208 bool echo;
210 const char *prefix;
211 bool (*validator)(const char *);
214
229
313
315
321
327
331
334
338
340keyboard_key_t keyboard_stream_read(int (*read_byte)(void));
343bool keyboard_stream_ready(int (*read_byte)(void));
344
347
349bool keyboard_stream_query_background(int (*read_byte)(void), bool (*send_query)(void), uint8_t *r, uint8_t *g,
350 uint8_t *b);
351
Common buffer size definitions.
Error and exit codes - unified status values (0-255).
#define UTF8_MAX_BYTES
#define UTF8_BUFFER_SIZE
unsigned short uint16_t
Definition common.h:61
unsigned int uint32_t
Definition common.h:62
unsigned long long uint64_t
Definition common.h:63
unsigned char uint8_t
Definition common.h:60
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
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
Options for interactive line editing.
Definition keyboard.h:53
bool keyboard_input_available(void)
keyboard_line_edit_result_t keyboard_apply_key(keyboard_line_edit_opts_t *opts)
keyboard_line_edit_result_t
Result codes for interactive line editing.
Definition keyboard.h:223
@ KEY_SPACE
Space bar.
Definition keyboard.h:56
@ KEY_UP
Up arrow key.
Definition keyboard.h:57
@ KEY_M
'm' key - toggle mute
Definition keyboard.h:81
@ KEY_SHIFT_ESCAPE
Shift+Escape (immediate exit).
Definition keyboard.h:73
@ KEY_2
'2' key - toggle audio waveform
Definition keyboard.h:77
@ KEY_BACKTICK
'`' key - print lock state (debug builds)
Definition keyboard.h:84
@ KEY_1
'1' key - toggle matrix rain effect
Definition keyboard.h:76
@ KEY_ESCAPE
Escape key (ESC).
Definition keyboard.h:55
@ KEY_F
'f' key - flip webcam
Definition keyboard.h:82
@ KEY_PAGEDOWN
Definition keyboard.h:71
@ KEY_PAGEUP
Definition keyboard.h:70
@ KEY_MINUS
'-' key - toggle FPS counter
Definition keyboard.h:74
@ KEY_LEFT
Left arrow key.
Definition keyboard.h:59
@ KEY_MEDIA_SUBMIT
Nonblocking media prompt submitted.
Definition keyboard.h:68
@ KEY_RIGHT
Right arrow key.
Definition keyboard.h:60
@ KEY_0
'0' key - toggle sync debug screen
Definition keyboard.h:75
@ KEY_PASTE_BEGIN
Definition keyboard.h:65
@ KEY_F12
Open the version update checker TUI.
Definition keyboard.h:69
@ KEY_NONE
No key pressed or no input available.
Definition keyboard.h:54
@ KEY_C
'c' key - cycle color modes
Definition keyboard.h:79
@ KEY_PASTE
Definition keyboard.h:67
@ KEY_R
'r' key - cycle render modes
Definition keyboard.h:80
@ KEY_END
End key (move to end of line).
Definition keyboard.h:63
@ KEY_DOWN
Down arrow key.
Definition keyboard.h:58
@ KEY_QUESTION
'?' key - show help screen
Definition keyboard.h:83
@ KEY_PASTE_END
Definition keyboard.h:66
@ KEY_HOME
Home key (move to start of line).
Definition keyboard.h:62
@ KEY_SHIFT_ENTER
Shift+Enter (insert a newline in multiline prompts).
Definition keyboard.h:72
@ KEY_DELETE
Delete key (forward delete).
Definition keyboard.h:61
@ KEY_3
'3' key - toggle audio frequency display
Definition keyboard.h:78
@ KEY_CTRL_DELETE
Ctrl+Delete (delete word forward).
Definition keyboard.h:64
@ LINE_EDIT_ACCEPTED
User pressed Enter (accept input).
Definition keyboard.h:225
@ LINE_EDIT_CANCELLED
User pressed Escape/Ctrl+C (cancel input).
Definition keyboard.h:226
@ LINE_EDIT_CONTINUE
Keep editing (more input needed).
Definition keyboard.h:224
@ LINE_EDIT_NO_INPUT
No key available (non-blocking mode).
Definition keyboard.h:227
bool keyboard_stream_background(uint8_t *r, uint8_t *g, uint8_t *b)
size_t keyboard_text_encode(keyboard_key_t key, char text[UTF8_BUFFER_SIZE])
keyboard_key_t keyboard_text_utf16(uint16_t *pending_high, uint16_t unit)
bool keyboard_is_initialized(void)
keyboard_key_t keyboard_stream_read(int(*read_byte)(void))
keyboard_key_t keyboard_text_decode(keyboard_text_decoder_t *state, int input)
bool keyboard_request_background(void)
bool keyboard_stream_query_background(int(*read_byte)(void), bool(*send_query)(void), uint8_t *r, uint8_t *g, uint8_t *b)
void keyboard_stream_reset(void)
uint64_t keyboard_stream_terminal_reply_ns(void)
bool keyboard_stream_ready(int(*read_byte)(void))
bool keyboard_query_background(uint8_t *r, uint8_t *g, uint8_t *b)
Options for interactive line editing.
Definition keyboard.h:203
const char * prefix
Prefix to display (e.g., "/" for grep), NULL for none.
Definition keyboard.h:210
size_t max_len
Maximum buffer size (including null terminator).
Definition keyboard.h:205
keyboard_key_t key
Required pre-read key; KEY_NONE means no input.
Definition keyboard.h:212
bool echo
Echo characters to terminal.
Definition keyboard.h:208
size_t * cursor
Cursor position in bytes (in/out parameter).
Definition keyboard.h:207
char * buffer
Input buffer (modified in-place).
Definition keyboard.h:204
char mask_char
Mask character (0 for no masking, '*' for passwords).
Definition keyboard.h:209
bool(* validator)(const char *)
Optional validator callback (for live feedback).
Definition keyboard.h:211
size_t * len
Current length in bytes (in/out parameter).
Definition keyboard.h:206
uint8_t bytes[UTF8_MAX_BYTES]
Definition keyboard.h:324