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