constants.py (13687B)
- """Information that should be available to the python library.
- """
- from os import environ
- from datetime import date
- from pathlib import Path
- from qmk.userspace import detect_qmk_userspace
- # The root of the qmk_firmware tree.
- QMK_FIRMWARE = Path.cwd()
- # The detected userspace tree
- QMK_USERSPACE = detect_qmk_userspace()
- # Whether or not we have a separate userspace directory
- HAS_QMK_USERSPACE = True if QMK_USERSPACE is not None else False
- # Upstream repo url
- QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware'
- # This is the number of directories under `qmk_firmware/keyboards` that will be traversed. This is currently a limitation of our make system.
- MAX_KEYBOARD_SUBFOLDERS = 5
- # Supported processor types
- CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK64FX512', 'MK66FX1M0', 'RP2040', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G0B1', 'STM32G431', 'STM32G474', 'STM32H723', 'STM32H733', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95', 'AT32F415'
- LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
- VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
- # Bootloaders of the supported processors
- MCU2BOOTLOADER = {
- "RP2040": "rp2040",
- "MKL26Z64": "halfkay",
- "MK20DX128": "halfkay",
- "MK20DX256": "halfkay",
- "MK66FX1M0": "halfkay",
- "STM32F042": "stm32-dfu",
- "STM32F072": "stm32-dfu",
- "STM32F103": "stm32duino",
- "STM32F303": "stm32-dfu",
- "STM32F401": "stm32-dfu",
- "STM32F405": "stm32-dfu",
- "STM32F407": "stm32-dfu",
- "STM32F411": "stm32-dfu",
- "STM32F446": "stm32-dfu",
- "STM32G0B1": "stm32-dfu",
- "STM32G431": "stm32-dfu",
- "STM32G474": "stm32-dfu",
- "STM32H723": "stm32-dfu",
- "STM32H733": "stm32-dfu",
- "STM32L412": "stm32-dfu",
- "STM32L422": "stm32-dfu",
- "STM32L432": "stm32-dfu",
- "STM32L433": "stm32-dfu",
- "STM32L442": "stm32-dfu",
- "STM32L443": "stm32-dfu",
- "GD32VF103": "gd32v-dfu",
- "WB32F3G71": "wb32-dfu",
- "WB32FQ95": "wb32-dfu",
- "AT32F415": "at32-dfu",
- "atmega16u2": "atmel-dfu",
- "atmega32u2": "atmel-dfu",
- "atmega16u4": "atmel-dfu",
- "atmega32u4": "atmel-dfu",
- "at90usb162": "atmel-dfu",
- "at90usb646": "atmel-dfu",
- "at90usb647": "atmel-dfu",
- "at90usb1286": "atmel-dfu",
- "at90usb1287": "atmel-dfu",
- "atmega32a": "bootloadhid",
- "atmega328p": "usbasploader",
- "atmega328": "usbasploader",
- }
- # Map of legacy keycodes that can be automatically updated
- LEGACY_KEYCODES = { # Comment here is to force multiline formatting
- 'RESET': 'QK_BOOT'
- }
- # Map VID:PID values to bootloaders
- BOOTLOADER_VIDS_PIDS = {
- 'atmel-dfu': {
- ("03eb", "2fef"), # ATmega16U2
- ("03eb", "2ff0"), # ATmega32U2
- ("03eb", "2ff3"), # ATmega16U4
- ("03eb", "2ff4"), # ATmega32U4
- ("03eb", "2ff9"), # AT90USB64
- ("03eb", "2ffa"), # AT90USB162
- ("03eb", "2ffb") # AT90USB128
- },
- 'kiibohd': {("1c11", "b007")},
- 'stm32-dfu': {
- ("1eaf", "0003"), # STM32duino
- ("0483", "df11") # STM32 DFU
- },
- 'apm32-dfu': {("314b", "0106")},
- 'gd32v-dfu': {("28e9", "0189")},
- 'wb32-dfu': {("342d", "dfa0")},
- 'at32-dfu': {("2e3c", "df11")},
- 'bootloadhid': {("16c0", "05df")},
- 'usbasploader': {("16c0", "05dc")},
- 'usbtinyisp': {("1782", "0c9f")},
- 'md-boot': {("03eb", "6124")},
- 'caterina': {
- # pid.codes shared PID
- ("1209", "2302"), # Keyboardio Atreus 2 Bootloader
- # Spark Fun Electronics
- ("1b4f", "9203"), # Pro Micro 3V3/8MHz
- ("1b4f", "9205"), # Pro Micro 5V/16MHz
- ("1b4f", "9207"), # LilyPad 3V3/8MHz (and some Pro Micro clones)
- # Pololu Electronics
- ("1ffb", "0101"), # A-Star 32U4
- # Arduino SA
- ("2341", "0036"), # Leonardo
- ("2341", "0037"), # Micro
- # Adafruit Industries LLC
- ("239a", "000c"), # Feather 32U4
- ("239a", "000d"), # ItsyBitsy 32U4 3V3/8MHz
- ("239a", "000e"), # ItsyBitsy 32U4 5V/16MHz
- # dog hunter AG
- ("2a03", "0036"), # Leonardo
- ("2a03", "0037") # Micro
- },
- 'hid-bootloader': {
- ("03eb", "2067"), # QMK HID
- ("16c0", "0478") # PJRC halfkay
- }
- }
- # Common format strings
- DATE_FORMAT = '%Y-%m-%d'
- DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z'
- TIME_FORMAT = '%H:%M:%S'
- # Used when generating matrix locations
- COL_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijilmnopqrstuvwxyz'
- ROW_LETTERS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop'
- # Constants that should match their counterparts in make
- BUILD_DIR = environ.get('BUILD_DIR', '.build')
- INTERMEDIATE_OUTPUT_PREFIX = f'{BUILD_DIR}/obj_'
- # Headers for generated files
- GPL2_HEADER_C_LIKE = f'''\
- // Copyright {date.today().year} QMK
- // SPDX-License-Identifier: GPL-2.0-or-later
- '''
- GPL2_HEADER_SH_LIKE = f'''\
- # Copyright {date.today().year} QMK
- # SPDX-License-Identifier: GPL-2.0-or-later
- '''
- GENERATED_HEADER_C_LIKE = '''\
- /*******************************************************************************
- 88888888888 888 d8b .d888 d8b 888 d8b
- 888 888 Y8P d88P" Y8P 888 Y8P
- 888 888 888 888
- 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
- 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
- 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
- 888 888 888 888 X88 888 888 888 Y8b. 888 X88
- 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
- 888 888
- 888 888
- 888 888
- .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
- d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
- 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
- Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
- "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
- 888
- Y8b d88P
- "Y88P"
- *******************************************************************************/
- '''
- GENERATED_HEADER_SH_LIKE = '''\
- ################################################################################
- #
- # 88888888888 888 d8b .d888 d8b 888 d8b
- # 888 888 Y8P d88P" Y8P 888 Y8P
- # 888 888 888 888
- # 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
- # 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
- # 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
- # 888 888 888 888 X88 888 888 888 Y8b. 888 X88
- # 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
- #
- # 888 888
- # 888 888
- # 888 888
- # .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
- # d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
- # 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
- # Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
- # "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
- # 888
- # Y8b d88P
- # "Y88P"
- #
- ################################################################################
- '''
- LICENSE_TEXTS = [
- (
- 'GPL-2.0-or-later', [
- """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- """, """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or any later version.
- """
- ]
- ),
- ('GPL-2.0-only', ["""\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; version 2.
- """]),
- (
- 'GPL-3.0-or-later', [
- """\
- This program is free software: you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
- """, """\
- This program is free software: you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of
- the License, or any later version.
- """
- ]
- ),
- ('GPL-3.0-only', ["""\
- This program is free software: you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, version 3.
- """]),
- (
- 'LGPL-2.1-or-later', [
- """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 2.1
- of the License, or (at your option) any later version.
- """, """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 2.1
- of the License, or any later version.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 2.1
- of the License, or (at your option) any later version.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 2.1
- of the License, or any later version.
- """
- ]
- ),
- (
- 'LGPL-2.1-only', [
- """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; version 2.1.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; version 2.1.
- """
- ]
- ),
- (
- 'LGPL-3.0-or-later', [
- """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 3
- of the License, or (at your option) any later version.
- """, """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 3
- of the License, or any later version.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 3
- of the License, or (at your option) any later version.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 3
- of the License, or any later version.
- """
- ]
- ),
- (
- 'LGPL-3.0-only', [
- """\
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; version 3.
- """, """\
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; version 3.
- """
- ]
- ),
- ('Apache-2.0', ["""\
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- """]),
- ]
- JOYSTICK_AXES = ['x', 'y', 'z', 'rx', 'ry', 'rz']