On Screen Keyboard is an easy-to-use system to create and display keyboards within games.On-Screen Keyboard is a flexible, fully data-driven virtual keyboard system for Unity - built for touch UIs, kiosks, VR/AR overlays, accessibility flows, and any game or app that needs in-app text input without depending on the OS soft keyboard.Drop a prefab in your scene, point it at a TextMesh Pro input field, and you have a finger-friendly keyboard with multi-language support, long-press accents, audio + haptic feedback, dynamic shift / caps / language switching, and RTL handling out of the box. Every keyboard is a ScriptableObject - author your own layouts in a tiny text DSL, no prefab editing required.Why developers pick itZero-code setup. `GameObject → UI → On-Screen Keyboard` scaffolds a fully wired keyboard + TMP input field in one click.Production-ready. Object pooling, allocation-free hot path, deterministic timer for tests, custom Inspectors with live previews.Pluggable everywhere. Swap the layout, the theme, the composition pipeline, the suggestion source, or the accent popup UI - without forking the package.Fully documented C# source code. Read it, extend it, override anything.FeaturesLayouts & languagesData-driven layouts - describe keyboards as multi-line strings, no prefab edits.Bundled layouts: English, Hebrew, Korean, French, Spanish, German, Russian, Arabic - lower- and upper-case variants where applicable.Dynamic layout switching: Shift, Caps Lock, language toggles, custom modifiers via `LayoutChanger`.Right-to-Left (RTL) auto-detection per layout - perfect for Hebrew, Arabic, Persian, Urdu.Row-weight & column-group DSL for compact symbol rows, side-by-side numpads, and split layouts.Text compositionKorean Hangul syllable composition - assembles Jamo into complete syllable blocks, including all 11 compound finals (겹받침) and 7 compound medials (이중모음).Latin dead-key composition - circumflex (`^`), diaeresis (`¨`), grave (`` ` ``), acute (`´` / `'`), tilde (`~`) compose with vowels into precomposed accented characters (e.g. `^` + `e` → `ê`). Drives the bundled French and Spanish layouts.Pluggable composition pipeline via `ITextCombiner` - add your own ligatures, locale orthography, or IME rules.Composition undo - Backspace after a composition restores the pre-composed buffer instead of breaking the glyph.Pre-edit highlighting - visualize in-progress composition (lone dead key, partial Hangul) with TMP underline tags.Long-press & accents (zero wiring)Hold-to-repeat for backspace, word-backspace, and the four arrow keys.Accent popup - long-press `a` → `à á â ä ã å æ ā` strip pops up above the key, clamped inside the keyboard's bounds. Selecting a variant inserts it like any other key.Drop in `AccentPopupView` and it just works; or hook the manager event for a fully custom UI.Built-in accent table for common Latin diacritics; extend it in one line of code.FeedbackAudio click on every key press, with per-key sound overrides via `KeyDisplay.feedbackClip`.Haptic vibration on Android / iOS via `Handheld.Vibrate()`.Throttling, master mute, and a settings-UI hookup snippet - all built in.ThemingPer-key visual overrides via `KeyboardButtonsDisplay` - text, icon, colors, tooltip, accessibility label, audio.Three built-in palettes (Light / Dark / High Contrast - WCAG AA / AAA compliant).Theme generator menu - `Tools → On-Screen Keyboard → Create Theme Presets` scans your layouts and produces themed displayer assets.TMP integrationCompanion adapter (`TextboxLeyboardAdapterScript`) translates key events into `TMP_InputField` edits - insert, backspace, word-backspace, enter, arrows, function keys, numpad, escape, etc.Tracks the caret across overflowing text.Honors the layout's RTL flag automatically.AccessibilitySticky modifier helper (`Off → Armed → Locked → Off`) for one-handed shift / ctrl / alt input.Accessibility label field per key, surfaced for screen readers and switch control.Min touch target size enforcement on every key (Apple HIG / Material defaults).Editor toolingCustom inspectors with live grid previews of every layout / theme / mapping.Layout linter with per-line validity badges and asset-import warnings.GameObject menu to scaffold a wired keyboard in one click.PerformanceObject pooling for keys, rows, and column-group containers across layout switches.Allocation-free pointer hot path - plain keys skip the long-press timer entirely.Pure helpers for layout, accent layout, sticky modifier, Korean / dead-key composition - fully testable without a Unity scene.Use casesTouch / mobile games with in-app text entry (chat, name entry, search)Kiosks, point-of-sale, self-service terminalsVR / AR overlays where the OS keyboard is unavailableAccessibility-first UIs with sticky modifiers and large touch targetsMulti-language apps (Hebrew, Arabic, Korean, European Latin scripts)Educational / language-learning appsCustom IME-style input flows (autocomplete suggestions, accent variants, dead keys)What's includedFull C# source (no DLLs)8 ready-to-use language layouts (lower + upper case)9 demo scenes - full keyboard, keypad, two keyboards, Mac theme, colorful, Korean, column groups, accents, audio + haptic feedback3 built-in theme presets (Light / Dark / High Contrast)TMP-ready prefabs and integration adapterCustom Inspectors, GameObject menu, welcome window, layout linterComprehensive documentation and inline XML docs


