[Home](./index.md) > [@keymanapp/kmc-ldml](./kmc-ldml.md) > [LdmlKeyboardCompiler](./kmc-ldml.ldmlkeyboardcompiler.md) ## LdmlKeyboardCompiler class Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk, and/or .js. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. **Signature:** ```typescript export declare class LdmlKeyboardCompiler implements KeymanCompiler ``` **Implements:** KeymanCompiler ## Methods | Method | Modifiers | Description | | --- | --- | --- | | [init(callbacks, options)](./kmc-ldml.ldmlkeyboardcompiler.init.md) | | Initialize the compiler, including loading the WASM host for uset parsing. Copies options. | | [run(inputFilename, outputFilename)](./kmc-ldml.ldmlkeyboardcompiler.run.md) | | Compiles a LDML keyboard .xml file to .kmx, .kvk, and/or .js files. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [LdmlKeyboardCompiler.init()](./kmc-ldml.ldmlkeyboardcompiler.init.md) function to read any input files by disk. | | [write(artifacts)](./kmc-ldml.ldmlkeyboardcompiler.write.md) | |

Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:

- .kmx file - binary keyboard used by Keyman on desktop platforms - .kvk file - binary on screen keyboard used by Keyman on desktop platforms - .js file - Javascript keyboard for web and touch platforms

|