mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 18:44:01 +00:00
54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
|
|
# 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.h`
|
||
|
|
- `clks/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` + press `F1/F2/F3/F4` to switch TTY 0/1/2/3.
|
||
|
|
- On successful switch, kernel logs active TTY and switch counter.
|
||
|
|
- 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...`
|
||
|
|
|
||
|
|
## Build Targets
|
||
|
|
- `make setup`
|
||
|
|
- `make userapps`
|
||
|
|
- `make iso`
|
||
|
|
- `make run`
|
||
|
|
- `make 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.
|