- Kotlin 75.5%
- JavaScript 23.8%
- CSS 0.6%
k3lp - Keyboard3 Layout Parsing
Open-source implementation to parse and work with Unicode Keyboard3 (UTS #35 part 7) files in Kotlin Multiplatform.
Pre-alpha stage, first test integration into FlorisBoard to-be-announced.
Also see the initial announcement, the playground alpha release announcement and https://nlnet.nl/project/k3lp/.
Library structure
core/ Published module, Keyboard3 model, runtime (public API)
docs/ Docs page (TODO)
lib/
arbitraries/ Test-only shared arbitraries for property testing
meta/ Source file and report classes (public API)
parser/ Kudzu parser helpers
text/ Marker-aware string and normalization (public API)
xml/ Multiplatform XML Parser
xmlconf/ Conformance tests for Multiplatform XML Parser
playground/ Compose multiplatform demo app (web & desktop)
tools/ Helper tools (for development, JVM-only)
Testing
Note
For all shell examples below, they assume you are on a Linux machine. If you are on Windows, replace
./gradlewwithgradlew.bat.
Visual Playground
A very early-stage visual playground can be launched by executing
./gradlew :playground:jvmRun -DmainClass="org.k3lp.playground.MainKt"
This is a multiplatform UI, which is also available in the web browser at https://play.k3lp.org/.
How to package application for desktop
We have set up different Gradle packaging tasks to bundle the application into a native installable package for the currently used operating system.
Note
This currently only supports
MSI,DEB,RPMandAppImage
To build for your current operating system run
./gradlew :playground:packageReleaseDistributionForCurrentOS
How to package and deploy application for wasmWeb
To build the application for wasmWeb run
./gradlew :playground:wasmJsBrowserDistribution
The outputs of this command are located in playground/build/dist/wasmJs/productionExecutable.
It is the user's responsibility to make these files available using a suitable web server.
Unit tests
Keyboard3 parsing and model compilation can be tested via:
./gradlew :core:jvmTest --rerun-tasks
./gradlew :lib:text:jvmTest --rerun-tasks
Funding
This project is funded through the NGI0 Core Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990.
NLnet foundation logo NGI0 Core Fund logo
License
Copyright 2025-2026 Patrick Goldinger and Lars Mühlbauer
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.