keyboard stuff
1"""Generate a keymap.c from a configurator export.
2"""
3from argcomplete.completers import FilesCompleter
4from milc import cli
5
6import qmk.keymap
7import qmk.path
8from qmk.commands import dump_lines, parse_configurator_json
9
10
11@cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to')
12@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
13@cli.argument('filename', type=qmk.path.FileType('r'), arg_only=True, completer=FilesCompleter('.json'), help='Configurator JSON file')
14@cli.subcommand('Creates a keymap.c from a QMK Configurator export.')
15def json2c(cli):
16 """Generate a keymap.c from a configurator export.
17
18 This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided.
19 """
20
21 # Parse the configurator from json file (or stdin)
22 user_keymap = parse_configurator_json(cli.args.filename)
23
24 # Generate the keymap
25 keymap_c = qmk.keymap.generate_c(user_keymap)
26
27 # Show the results
28 dump_lines(cli.args.output, keymap_c.split('\n'), cli.args.quiet)