1
0
Fork
You've already forked k3lp-testing
0
forked from k3lp/k3lp
Testing repository to test the new docs
  • Kotlin 75.5%
  • JavaScript 23.8%
  • CSS 0.6%
2026年07月10日 01:16:54 +02:00
.idea Add k3lp icon for android studios new ui 2025年09月13日 21:20:51 +02:00
build-logic Add docs for K3KeystrokeEngine 2026年06月17日 20:09:33 +02:00
core Add K3VariableResolver docs 2026年07月09日 23:53:34 +02:00
docs Migrate testing config to build-logic 2026年06月17日 14:24:29 +02:00
gradle Migrate testing config to build-logic 2026年06月17日 14:24:29 +02:00
kotlin-js-store Add link to codeberg repository 2026年06月08日 15:14:07 +02:00
lib Document K3StringBuilder & Migrate K3StringBuilderTest to new API 2026年07月10日 01:16:54 +02:00
meta Add draft impl of XML DTD parser and data class generator 2025年09月10日 03:19:48 +02:00
playground Impl descriptors in model and test layouts 2026年07月01日 15:51:27 +02:00
tools Migrate testing config to build-logic 2026年06月17日 14:24:29 +02:00
.editorconfig Use native HTMLView as editor on web targets. 2026年06月08日 15:14:07 +02:00
.gitattributes Initialize KMP structure from template 2025年04月10日 19:07:56 +02:00
.gitignore Impl base for descriptors 2026年07月01日 15:27:38 +02:00
build.gradle.kts Improve K3KeystrokeEngine emit data flow 2026年06月19日 01:24:30 +02:00
gradle.properties Implement basic uset expression parsing 2026年07月06日 17:01:47 +02:00
gradlew Update Gradle to 9.5.1 2026年06月07日 19:11:54 +02:00
gradlew.bat Update to Gradle 9.4.1 2026年03月30日 00:28:03 +02:00
LICENSE Initial commit 2025年04月10日 18:55:02 +02:00
README.md Update README.md 2026年06月12日 01:46:48 +02:00
settings.gradle.kts Rework buildSrc to build-logic 2026年06月17日 00:32:27 +02:00

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 ./gradlew with gradlew.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, RPM and AppImage

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.