/*
 * pop_ctrl.h — управление Kid (Фаза K2b): порт диспетчера control()
 * (SDLPoP seg005.c) + модель ввода read_user_control/user_control
 * (seg006.c) поверх held-state клавиатуры <kbd_raw.h>.
 *
 * Kid-only подмножество: без меча и стражи.  Map-запросы (стена/край/
 * захват) ЗАСТАБЛЕНЫ «открытый пол» — реальная коллизия (стоп у стены,
 * падение в ямы, повисание) приходит в K3/K4.  Даёт отклик на клавиши:
 * бег влево/вправо, разворот, стоп, присед, прыжок с места, прыжок в
 * беге, присед-прыжок.
 *
 * Раскладка (kbd_raw, PS/2 Set 2): ←/→ = движение, ↓ = присед, ↑ =
 * прыжок вверх (с →), Shift = осторожный шаг (K3).  ESC — выход (проверяет
 * приложение сам, канал raw забирает весь ввод у DSS).
 */
#ifndef POP_CTRL_H
#define POP_CTRL_H

#include <stdint.h>

/* Открыть raw-канал клавиатуры и обнулить память авто-повтора.
 * 0 — OK, -1 — ошибка (EBUSY и пр., см. kbd_raw_open). */
int  pop_ctrl_init(void);
void pop_ctrl_close(void);

/* Один кадр ввода: прочитать клавиши -> обновить control_* -> прогнать
 * диспетчер control() (может сменить Kid.curr_seq).  Звать ПЕРЕД
 * kid_tick() (play_seq продолжит с новой последовательности). */
void pop_ctrl_tick(void);

/* control_shift зажат ПРЯМО СЕЙЧАС? — для check_grab в физике (pop_map):
 * зацеп за уступ в падении по Shift.  Валидно после pop_ctrl_tick. */
int8_t pop_ctrl_shift_held(void);

#endif
