ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_keyboard.h
Go to the documentation of this file.
1
33
34#pragma once
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40#include <stdint.h>
41
42#include "ra8_err.h"
43#include "ra8_ui.h"
44
55
65
78
91
103
110typedef struct {
112 uint8_t len;
115
135[[nodiscard]] ra8_err_t ra8_kbd_layout_init(ra8_kbd_layout_t* kb, const ra8_ui_rect_t* frame);
136
155[[nodiscard]] uint8_t ra8_kbd_hit(const ra8_kbd_layout_t* kb, int32_t px, int32_t py);
156
173[[nodiscard]] char ra8_kbd_key_glyph(const ra8_kbd_layout_t* kb, uint8_t key_idx);
174
193
219[[nodiscard]] ra8_err_t ra8_kbd_apply(ra8_kbd_text_t* t, ra8_kbd_layout_t* kb, uint8_t key_idx);
220
221#ifdef __cplusplus
222}
223#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
uint8_t ra8_kbd_hit(const ra8_kbd_layout_t *kb, int32_t px, int32_t py)
Map a tap to a key index.
ra8_err_t ra8_kbd_text_init(ra8_kbd_text_t *t)
Reset a text buffer to empty / uncommitted.
ra8_err_t ra8_kbd_apply(ra8_kbd_text_t *t, ra8_kbd_layout_t *kb, uint8_t key_idx)
Apply key key_idx to the text buffer, SHIFT, and active layer.
ra8_kbd_key_kind_t
What a key does when tapped.
@ k_ra8_kbd_key_space
Append a space.
@ k_ra8_kbd_key_layer
Switch to the layer in aux.
@ k_ra8_kbd_key_enter
Commit the query (RETURN).
@ k_ra8_kbd_key_char
Append the shift-correct char.
@ k_ra8_kbd_key_shift
Toggle the one-shot SHIFT.
@ k_ra8_kbd_key_backspace
Delete the last char.
ra8_err_t ra8_kbd_layout_init(ra8_kbd_layout_t *kb, const ra8_ui_rect_t *frame)
Lay the letters layer into frame; clear SHIFT.
char ra8_kbd_key_glyph(const ra8_kbd_layout_t *kb, uint8_t key_idx)
Effective character a char key emits given the live SHIFT state.
ra8_kbd_layer_t
Which key set is shown.
@ k_ra8_kbd_layer_symbols
Brackets / math symbols (#+=).
@ k_ra8_kbd_layer_letters
QWERTY letters (with one-shot SHIFT).
@ k_ra8_kbd_layer_numbers
Digits + common symbols (123).
ra8_kbd_limits_t
Static capacities for the keyboard widget.
@ k_ra8_kbd_rows
Key rows per layer.
@ k_ra8_kbd_max_keys
Key-rect slots (<= 31 used per layer).
@ k_ra8_kbd_no_hit
ra8_kbd_hit "no key" sentinel.
@ k_ra8_kbd_text_max
Text buffer capacity incl.
Bounded UI interaction core: hit-testing, screen stack, paging.
One key: a hit rectangle, its unshifted + shifted chars, a kind, and (for layer keys) the target laye...
uint8_t aux
Target ra8_kbd_layer_t for a layer key.
char ch_lower
Unshifted char (char keys); 0 else.
ra8_kbd_key_kind_t kind
Key behaviour.
ra8_ui_rect_t rect
Hit / draw rectangle.
char ch_upper
Shifted char (char keys); 0 else.
The key grid for the active layer, plus SHIFT / layer / frame state.
ra8_kbd_key_t keys[k_ra8_kbd_max_keys]
Keys for the active layer.
uint8_t count
Keys in use.
uint8_t layer
Active ra8_kbd_layer_t.
bool shift
One-shot SHIFT armed.
ra8_ui_rect_t frame
Saved frame (re-lay on swap).
The typed query buffer + commit state.
char buf[k_ra8_kbd_text_max]
NUL-terminated query.
uint8_t len
Chars before the NUL.
bool committed
RETURN was applied.
Axis-aligned rectangle in framebuffer pixel coordinates.
Definition ra8_ui.h:72