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 File Reference

Go to the source code of this file.

Data Structures

struct  keyboard_line_edit_opts_t
 Options for interactive line editing. More...
struct  keyboard_text_decoder_t

Enumerations

enum  keyboard_key_t {
  KEY_NONE = 0 , KEY_ESCAPE = 27 , KEY_SPACE = 32 , KEY_UP = 0x110000 ,
  KEY_DOWN = 0x110001 , KEY_LEFT = 0x110002 , KEY_RIGHT = 0x110003 , KEY_DELETE = 0x110004 ,
  KEY_HOME = 0x110005 , KEY_END = 0x110006 , KEY_CTRL_DELETE = 0x110007 , KEY_PASTE_BEGIN = 0x110008 ,
  KEY_PASTE_END = 0x110009 , KEY_PASTE = 0x11000a , KEY_MEDIA_SUBMIT = 0x11000b , KEY_F12 = 0x11000c ,
  KEY_PAGEUP = 0x11000d , KEY_PAGEDOWN = 0x11000e , KEY_SHIFT_ENTER = 0x11000f , KEY_SHIFT_ESCAPE = 0x110010 ,
  KEY_MINUS = '-' , KEY_0 = '0' , KEY_1 = '1' , KEY_2 = '2' ,
  KEY_3 = '3' , KEY_C = 'c' , KEY_R = 'r' , KEY_M = 'm' ,
  KEY_F = 'f' , KEY_QUESTION = '?' , KEY_BACKTICK = '`'
}
 Options for interactive line editing. More...
enum  keyboard_line_edit_result_t { LINE_EDIT_CONTINUE , LINE_EDIT_ACCEPTED , LINE_EDIT_CANCELLED , LINE_EDIT_NO_INPUT }
 Result codes for interactive line editing. More...

Functions

asciichat_error_t keyboard_init (void)
 Initialize keyboard input system.
void keyboard_destroy (void)
 Cleanup keyboard input system and restore terminal.
keyboard_key_t keyboard_read_nonblocking (void)
 Read next keyboard input without blocking.
bool keyboard_input_available (void)
keyboard_key_t keyboard_read_with_timeout (uint32_t timeout_ms)
 Read keyboard input with timeout.
keyboard_line_edit_result_t keyboard_read_line_interactive (keyboard_line_edit_opts_t *opts)
 Process one keystroke for interactive line editing.
keyboard_line_edit_result_t keyboard_apply_key (keyboard_line_edit_opts_t *opts)
bool keyboard_is_initialized (void)
bool keyboard_request_background (void)
bool keyboard_query_background (uint8_t *r, uint8_t *g, uint8_t *b)
keyboard_key_t keyboard_text_decode (keyboard_text_decoder_t *state, int input)
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)
keyboard_key_t keyboard_stream_read (int(*read_byte)(void))
void keyboard_stream_reset (void)
bool keyboard_stream_ready (int(*read_byte)(void))
uint64_t keyboard_stream_terminal_reply_ns (void)
bool keyboard_stream_query_background (int(*read_byte)(void), bool(*send_query)(void), uint8_t *r, uint8_t *g, uint8_t *b)
bool keyboard_stream_background (uint8_t *r, uint8_t *g, uint8_t *b)

Function Documentation

◆ keyboard_is_initialized()

bool keyboard_is_initialized ( void )

Background queries share the keyboard decoder when it owns terminal input.

Referenced by colorscheme_highlight_background().

◆ keyboard_query_background()

bool keyboard_query_background ( uint8_t * r,
uint8_t * g,
uint8_t * b )

◆ keyboard_request_background()

bool keyboard_request_background ( void )

Send an asynchronous background query if keyboard input is available and foreground-owned.

◆ keyboard_stream_background()

bool keyboard_stream_background ( uint8_t * r,
uint8_t * g,
uint8_t * b )

Most recently decoded OSC 11 reply, without reading or waiting for input.

Referenced by colorscheme_highlight_background().

◆ keyboard_stream_query_background()

bool keyboard_stream_query_background ( int(* read_byte )(void),
bool(* send_query )(void),
uint8_t * r,
uint8_t * g,
uint8_t * b )

Query through the normal input decoder, preserving unrelated keyboard input.

◆ keyboard_stream_read()

keyboard_key_t keyboard_stream_read ( int(* read_byte )(void))

Decode a nonblocking UTF-8 byte stream and terminal escape sequences.

◆ keyboard_stream_ready()

bool keyboard_stream_ready ( int(* read_byte )(void))

Decode available bytes and retain the next event without consuming it.

◆ keyboard_stream_reset()

void keyboard_stream_reset ( void )

◆ keyboard_stream_terminal_reply_ns()

uint64_t keyboard_stream_terminal_reply_ns ( void )

Last complete OSC 11 reply received from the terminal frontend.

◆ keyboard_text_decode()

keyboard_key_t keyboard_text_decode ( keyboard_text_decoder_t * state,
int input )

Feed a byte or native special key. Invalid sequences are discarded; a new starter or special key interrupts incomplete text and is processed normally.

◆ keyboard_text_encode()

size_t keyboard_text_encode ( keyboard_key_t key,
char text[UTF8_BUFFER_SIZE] )

Encode a text key to NUL-terminated UTF-8. Returns 0 for non-text keys.

References UTF8_BUFFER_SIZE.

Referenced by tui_input_events_read(), and ui_input_edit_key().

◆ keyboard_text_utf16()

keyboard_key_t keyboard_text_utf16 ( uint16_t * pending_high,
uint16_t unit )

Decode native UTF-16 console text. An unmatched surrogate is discarded; a following ordinary character is preserved. Zero-initialize pending_high.