kurdish keyboard
Type Kurdish anywhere on the web - Sorani and Kurmanji, one widget, unified Unicode that is correct by construction.
00 · Live demo
No screenshots - this is the widget
The frames below are not images. Both scripts are the real keyboard, themed to this page with CSS custom properties. Switch with the tabs, click the keys; ⇧ reveals the second layer, and Kurmanji adds ⇪ Caps Lock.
01 · Features
Everything a Kurdish input needs
-
Unified UnicodeCorrect by construction.
The widget can only emit the KRG- and UCD-verified codepoint inventory: ک never ك, ی never ي, and ە as the vowel it is. Fragmented text stays in the past.
-
Two scripts, three layoutsRTL and LTR, one engine.
A Sorani layout generated from Unicode CLDR data plus two community Kurmanji variants. Toggle live with setLayout() - direction, layers, and caps handling follow.
-
Made for mobileThe widget is the keyboard.
Per-field inputmode="none" keeps the native keyboard hidden while a docked or floating panel does the typing, with 44px touch targets from a capability query - never user-agent sniffing.
-
Accessible by defaultRoving tabindex, spoken names.
WAI-ARIA APG keyboard navigation, visible focus, and assistive-tech labels in English or Kurdish - switchable at runtime.
-
Legacy text normalizerClean decades of ك and ي.
normalizeLegacy() converts old fragmented Sorani to the unified codepoints, driven by the same data file the keyboard uses. DOM-free, so it runs in Node and CLIs too.
02 · Principles
How it is built
- 1 Standards over inventionCodepoints come from the KRG unified keyboard standard, the Sorani layout from Unicode CLDR. Nothing is hand-rolled where a standard already exists.
- 2 Data over codeLayouts are JSON files validated against a schema. The engine never branches on a layout's name - adding a variant means adding data, not code.
- 3 The platform is enoughsetRangeText for insertion, inputmode for mobile, custom properties for theming. Zero runtime dependencies, ESM and CJS, tree-shakable layouts.
- 4 Verified, not assumedEvery codepoint reviewed character by character against primary sources; the published package proven by an executable verification spec before release.
03 · Get it
Free, as a keyboard should be
Free
MIT licensed · no tiers, no telemetry, no lock-in
View on GitHubnpm install kurdish-keyboard
Version 0.1.1 on npm - or install from the GitHub repository.
04 · Questions
Answered before you ask
- Which browsers are supported?
- Evergreen browsers from the last three years plus Safari 15+. Every platform API the widget relies on is Baseline widely available, so no polyfills ship.
- Does it work with React, Vue, or Svelte?
- Yes. The widget dispatches a bubbling input event after every insertion, so framework bindings observe changes without wrappers or adapters.
- Can it type into any field?
- Any input or textarea on the same page. Cross-origin iframes are off-limits by browser security design, and rich-text editors are on the roadmap.
- Why will it not type Arabic kaf?
- In Kurdish text, ك is a lookalike that silently breaks search and sorting - the widget emits ک instead, always. Real Arabic letters stay reachable on the Sorani shift layer for typing Arabic names.
- Can I make my own layout?
- Layouts are plain JSON validated against a published schema. The engine renders any conforming layout unchanged - community variants are additions, not forks.
More questions? The integration guide covers the full API, theming, and platform limits.