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>
19 lines
739 B
C
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 */
|