mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
* Adding keyboard layout (backend) * Update settings.c with new keyboard tab * Fixing keyboard icon && Fixing long loading time in settings.c * Refactor of key handling for a larger compatibility with the keyboard layout * Adding keyboard handler * Udating ps2.c with the new logic * Updating WM/kernel/userland with the new input system * Fixing keycode range && Updating dead keys handling * Add comments for explanation * Update notepad & vm.c to parse utf-8 * Adding utf-8 parsing utils in libc && Update notepad.c * Adding icon for icon settings * Fixing a warning with double definition * Adding new kb kayout: QWERTZ and DVORAK && Update new layout instrauction * Add documentation for keyboard input subsystem This document outlines the architecture and design of the input subsystem, focusing on keyboard input processing, driver responsibilities, keycode representation, and keymap functionality. --------- Co-authored-by: boreddevnl <chris@boreddev.nl> |
||
|---|---|---|
| .. | ||
| appdev | ||
| architecture | ||
| build | ||
| usage | ||
| README.md | ||
BoredOS Documentation
Internal guides, architecture, and application development.
Welcome to the documentation for BoredOS! This directory contains detailed guides on how the OS functions, how to build it, and how to develop applications for it.
Table of Contents
The documentation is organized into three main categories:
1. Architecture
Explains the logical layout of the kernel and internal components.
System
Core: Kernel source layout and the boot process (Limine, Multiboot2).Processes & Scheduling: Multitasking, context switching, and ELF loading.Interrupts & Exceptions: IDT, GDT, and exception handling.
Memory
Memory (PMM/VMM): Physical Memory Management and Virtual Memory Management.Memory Manager: Slab allocator and block allocator for kernel heap.
Storage & Filesystems
Filesystem: Virtual File System (VFS) and the RAM-based FAT32 simulation.AHCI Drivers: Hardware communication for block storage devices.
Network
Network Stack: TCP/IP implementation and socket APIs.Network Drivers: Hardware interaction for network cards (e.g. e1000).
Graphics
Window Manager: Compositor, events, and overlapping windows.Rendering: Framebuffer, font rendering, and image loading.
Hardware
Misc
Versioning: The OS date-based version scheme (YY.M[.x]) and kernel semantic versioning (MAJOR.MINOR.PATCH).
2. Building and Deployment
Instructions for compiling the OS from source.
Toolchain: Prerequisites and cross-compiler setup (x86_64-elf-gcc,nasm,xorriso).Usage: Understanding the Makefile targets, QEMU emulation, and flashing to bare metal hardware.
3. Application Development
The SDK and toolchain guides for creating your own .elf userland binaries.
SDK Reference: Overview hub for SDK layout, includes, and links to detailed libc/syscall docs.Syscalls: Current syscall numbers, FS/SYSTEM command IDs, and wrapper guidance.libc Reference: Current libc headers, implemented APIs, and behavior notes.UI API: Drawing on the screen, creating windows, and polling the event loop usinglibui.h.Widget API: High-level UI components like buttons, textboxes, and scrollbars usinglibwidget.h.Custom Apps: A step-by-step tutorial on writing a new graphical C application, editing the Makefile, and bundling it into the ISO.ELF App Metadata: How to declare app icons and descriptions using source annotations, how the build system embeds them into.note.boredos.appELF sections, and how the kernel reads them at runtime.Example Apps: A collection of sample C applications ranging from basic terminal output to advanced TCP networking.Grapher: Full reference for the built-in mathematical graphing application — equation syntax, keyboard controls, architecture, and configuration.
4. Usage
General guides on how to interact with the OS.
Booting: How to use the Limine bootloader and toggle kernel boot flags like-v.Desktop: Window management, shortcuts, and desktop interaction.Lumos: Using the system-wide search (Shift + Ctrl + Space).Terminal: Command line interface, redirection, and common commands.Launching Apps: Ways to launch files and applications, plus a software overview.