mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 18:44:01 +00:00
1.8 KiB
1.8 KiB
CLeonOS Stage15
Stage Goal
- Keep ELF path unchanged and continue non-ELF stability work.
- Add PS/2 keyboard IRQ handling in kernel interrupt path.
- Support virtual terminal hotkey switching with
Alt+F1~Alt+F4. - Keep scheduler, syscall, and existing Stage14 behavior stable.
What Was Implemented
- New keyboard module:
clks/include/clks/keyboard.hclks/kernel/keyboard.c
- Interrupt integration:
- Enable IRQ1 (keyboard) alongside IRQ0 in PIC mask.
- Read scancode from PS/2 data port
0x60. - Dispatch scancode to keyboard hotkey handler.
- Hotkey behavior:
- Hold
Alt+ pressF1/F2/F3/F4to switch TTY 0/1/2/3. - On successful switch, kernel logs active TTY and switch counter.
- Hold
- Boot stage update:
CLEONOS STAGE15 START.
Acceptance Criteria
- Kernel boots and prints
CLEONOS STAGE15 START. - Boot logs include keyboard module online message:
[INFO][KBD] ALT+F1..F4 TTY HOTKEY ONLINE
- In QEMU runtime:
- Press
Alt+F2/Alt+F3/Alt+F4/Alt+F1. - Logs show:
[INFO][TTY] HOTKEY SWITCH[INFO][TTY] ACTIVE: 0X...[INFO][TTY] HOTKEY_SWITCHES: 0X...
- Press
Build Targets
make setupmake userappsmake isomake runmake debug
QEMU Command
qemu-system-x86_64 -M q35 -m 1024M -cdrom build/CLeonOS-x86_64.iso -serial stdio
Common Bugs and Debugging
- Hotkey has no effect:
- Verify QEMU window is focused and keyboard input is captured.
- Confirm logs show Stage15 keyboard online message.
- IRQ timer works but keyboard does not:
- Re-check PIC mask includes IRQ1 (master mask should allow IRQ0 and IRQ1).
- Wrong function key mapping:
- Current mapping is Set1 scancode: F1=0x3B, F2=0x3C, F3=0x3D, F4=0x3E.
- Excessive hotkey logs:
- Holding key may repeat make scancode by keyboard auto-repeat; this is expected in current stage.