/*
 * _kbdraw.h — внутренности raw-канала клавиатуры (НЕ публичный
 * заголовок; публичный интерфейс — <kbd_raw.h>).
 *
 * Всё состояние — плоские глобалы (живут в W2/_DATA во ВСЕХ memory-
 * режимах, см. sprinter_memory_modes) — трамплин прерывания
 * (libc/irq/_irq_tramp.c) обращается к ним БЕЗ W1-remap и без call,
 * поэтому раскладка памяти приложения тут ни при чём.
 */
#ifndef _KBDRAW_INTERNAL_H
#define _KBDRAW_INTERNAL_H

#include <stdint.h>

/* Биты _kbdraw_pending — накопленные префиксы PS/2 Scan Code Set 2,
 * ждущие завершающего байта кода (см. _irq_tramp.c). */
#define _KBDRAW_PEND_BREAK  0x01
#define _KBDRAW_PEND_EXT    0x02

extern uint8_t _kbdraw_active;      /* 0 = raw выключен (дефолт, трамплин
                                      * ведёт себя как раньше — прямо к DSS) */
extern uint8_t _kbdraw_pending;     /* FSM декодера make/break, см. выше */
extern uint8_t _kbdraw_overrun;     /* 1 = ISR поймал Rx-overrun SIO (потерян
                                      * байт → возможно потерян break); снимает
                                      * kbd_raw_sync (чистит _kbdraw_down) */
extern uint8_t _kbdraw_down[512];   /* 0/1 по коду; +256 для расширенных
                                      * (префикс 0xE0) — см. kbd_raw_down */

#endif
