[Home](./index.md) > [@keymanapp/kmc-keyboard-info](./kmc-keyboard-info.md) > [KeyboardInfoCompiler](./kmc-keyboard-info.keyboardinfocompiler.md)
## KeyboardInfoCompiler class
Compiles source data from a keyboard project to a .keyboard\_info. 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 KeyboardInfoCompiler implements KeymanCompiler
```
**Implements:** KeymanCompiler
## Constructors
| Constructor | Modifiers | Description |
| --- | --- | --- |
| [(constructor)()](./kmc-keyboard-info.keyboardinfocompiler._constructor_.md) | | Constructs a new instance of the KeyboardInfoCompiler class |
## Methods
| Method | Modifiers | Description |
| --- | --- | --- |
| [init(callbacks, options)](./kmc-keyboard-info.keyboardinfocompiler.init.md) | | Initialize the compiler. Copies options. |
| [run(inputFilename, outputFilename)](./kmc-keyboard-info.keyboardinfocompiler.run.md) | |
Builds a .keyboard\_info file with metadata from the keyboard and package source file. 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 [KeyboardInfoCompiler.init()](./kmc-keyboard-info.keyboardinfocompiler.init.md) function to read any input files by disk.
This function is intended for use within the keyboards repository. While many of the parameters could be deduced from each other, they are specified here to reduce the number of places the filenames are constructed. For full documentation, see: https://help.keyman.com/developer/cloud/keyboard\_info/
| | [write(artifacts)](./kmc-keyboard-info.keyboardinfocompiler.write.md) | |Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .keyboard\_info file - metadata file used by keyman.com
|