# MudKeyboard — full documentation for LLMs > MudKeyboard is a free, open-source on-screen virtual keyboard library for Blazor and MudBlazor apps. > The keyboard core is 100% C#/Blazor (no JavaScript); a single optional JS shim powers one feature — a > global docked keyboard that pops up when any input is focused. It is themed automatically by MudBlazor > (dark/light follows your theme) and is AOT- and trim-friendly. Targets .NET 8, 9 and 10. This file is the complete documentation in plain Markdown, provided because the documentation site () is a Blazor WebAssembly single-page app and therefore returns an empty shell to a plain HTTP fetch. Everything an LLM or coding agent needs is below. A task-focused, condensed "how to integrate" guide for agents lives at . - Package: `MudKeyboard` on NuGet — - Source (MIT): - Current version documented here: **1.1.0** (.NET 8/9/10, MudBlazor 9.x) - MudBlazor (required peer dependency): --- ## Overview MudKeyboard is built for touchscreens, kiosks, point-of-sale terminals, and any interface where a hardware keyboard is unavailable or impractical. It provides: - **Inline keyboards** rendered in the page and two-way bound to a string: - `MudKeyboard` — a full QWERTY keyboard with shift/caps and a `123`/`ABC` toggle to a numbers/symbols face. - `MudNumpad` — a calculator-style numeric pad, with an optional decimal point. - `MudPricepad` — pence-first money entry (typing `5`, `2`, `3` yields `£5.23`). - A **global docked keyboard** (`MudKeyboardHost`) that slides up from the bottom when any input is focused and types at that field's caret. This is the only feature that uses JavaScript. - A **custom-layout engine** — a layout is just rows of key tokens (data, no code). Key properties: - **JavaScript-free core.** Rendering, the text engine, shift/caps and the symbol toggle are pure C#/Blazor. - **Themed by MudBlazor.** Every colour comes from MudBlazor CSS variables, so dark/light mode and your theme cascade automatically. - **AOT and trim friendly.** No reflection, no dynamic code. The library sets `true`. - **Accessible by default.** Labelled `role="group"`, real `