Files
LithosAnanake/kernel/include/starkernel/kbd_input.h
T
rajamesandClaude Opus 5.5 83d3692976 refactor(kernel): the keyboard bridge, shared
The stick, increment 1, task 1 (plan 2026-10-26-stick-1-screen-and-keyboard).
repl.c's keyboard bridge -- the key tables, Shift/Alt/Caps Lock/Num Lock and
their lights, the keypad, Alt+TAB, and the per-tick USB keyboard servicing --
moves unchanged to kernel/src/hal/kbd_input.c as sk_input_getc() (and
sk_input_drop()), so that the v4 boot's console reads the same keyboards
(docs/v4.0.0/STICK.md 5.4). v3's behaviour is unchanged.

scripts/qemu_session.py: the typed-QEMU-session harness, kept in the repo
from here on (the identity gate's sessions, and v3_keys: system=v3 typed on
QEMU's keyboard with send-key).

Yardstick, system=v3 typed by keyboard: before, amd64 PS/2 134805 PASS,
aarch64 virtio keyboard 135549 PASS; after, 135746 and 135835 PASS.
(riscv64 134850: v3 never reached its prompt -- Artemis virtio_blk writes
time out; v3's block path, before this change; being investigated.)
Accepted: suite EXIT 0; three clean qemu boots to [zuse@Hera] ok>, POST
538/538, dict_hash 0xfec8c47cfc6f437f (145722, 145859, 150231); test-32,
39 modules, 0 failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 15:09:38 -04:00

19 lines
739 B
C

/* kbd_input.h -- one byte of console input, from the serial line or a
* keyboard (PS/2, USB boot keyboard, virtio keyboard). Both systems'
* consoles read through it: v3's (kernel/src/repl.c) and the v4 boot's
* (kernel/src/v4/sk_v4.c). docs/v4.0.0/STICK.md 5.4.
*/
#ifndef STARKERNEL_KBD_INPUT_H
#define STARKERNEL_KBD_INPUT_H
/* One raw byte from the serial line or a keyboard, non-blocking; -1 when
* neither has one. While a USB keyboard runs, its xHCI event ring is serviced
* once per timer tick here. Alt+TAB toggles the framebuffer's graphics/text
* view and types nothing. */
int sk_input_getc(void);
/* Read and drop every byte and key that is waiting. */
void sk_input_drop(void);
#endif /* STARKERNEL_KBD_INPUT_H */