# kll-core
[](https://github.com/kiibohd/kiibohd-core/actions/workflows/rust.yml)
[](https://docs.rs/kll-core)
[](https://crates.io/crates/kll-core)
[](https://crates.io/crates/kll-core)
[](https://crates.io/crates/kll-core)
kll-core is the KLL (Kiibohd Layout Language) funcitonal state machine implementation.
It is designed to be paired with the [kll-compiler](../kll-compiler) crate to process the generate state machine.
The main use-case for kll-core is embedded environments (no_std); however, it does work in standard environments.
kll-core uses externally defined datastructures to build the state-machine so the functionality can be manipulated without having to recompile kll-core.
This is especially important for embedded devices so firmware can be updated without having to change state configuration.
## Usage
See [kiibohd-firmware](https://github.com/kiibohd/kiibohd-firmware/) for the primary use-case.
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.