qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

json2c.py (1181B)


      1 """Generate a keymap.c from a configurator export.
      2 """
      3 from argcomplete.completers import FilesCompleter
      4 from milc import cli
      5 
      6 import qmk.keymap
      7 import qmk.path
      8 from 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.')
     15 def 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)