[Home](./index.md) > [@keymanapp/kmc-ldml](./kmc-ldml.md) > [LdmlKeyboardCompiler](./kmc-ldml.ldmlkeyboardcompiler.md) > [run](./kmc-ldml.ldmlkeyboardcompiler.run.md) ## LdmlKeyboardCompiler.run() method 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. **Signature:** ```typescript run(inputFilename: string, outputFilename?: string): Promise; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | | inputFilename | string | | | outputFilename | string | _(Optional)_ | **Returns:** Promise<LdmlKeyboardCompilerResult> Binary artifacts on success, null on failure.