From 7c1bb9decf00a19cdf85ab33830dcc9002bfc671 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 16 Sep 2019 08:20:44 -0700 Subject: [PATCH 01/72] Percent Studio Booster: Configurator fix (#6743) --- keyboards/percent/booster/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/percent/booster/info.json b/keyboards/percent/booster/info.json index c5d230deb48..08d573d76d0 100644 --- a/keyboards/percent/booster/info.json +++ b/keyboards/percent/booster/info.json @@ -5,7 +5,7 @@ "width": 4, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_numpad_5x4": { "key_count": 17, "layout": [ {"label":"K00 (D1,C7)", "x":0, "y":0}, From 59af2cbe640191345175bf34fd65f78ab1036647 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Mon, 16 Sep 2019 22:37:51 -0400 Subject: [PATCH 02/72] Add Chimera65 Keyboard (#6670) * Add chimera board * info json start * Update keyboards/cannonkeys/chimera65/config.h Co-Authored-By: Drashna Jaelre * Apply suggestions from code review Co-Authored-By: Drashna Jaelre Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/cannonkeys/chimera65/config.h Co-Authored-By: Drashna Jaelre --- .../boards/ST_STM32F072B_DISCOVERY/board.c | 109 +++ .../boards/ST_STM32F072B_DISCOVERY/board.h | 922 ++++++++++++++++++ .../boards/ST_STM32F072B_DISCOVERY/board.mk | 5 + .../ST_STM32F072B_DISCOVERY/cfg/board.chcfg | 703 +++++++++++++ .../cannonkeys/chimera65/bootloader_defs.h | 7 + keyboards/cannonkeys/chimera65/chconf.h | 524 ++++++++++ keyboards/cannonkeys/chimera65/chimera65.c | 1 + keyboards/cannonkeys/chimera65/chimera65.h | 17 + keyboards/cannonkeys/chimera65/config.h | 89 ++ keyboards/cannonkeys/chimera65/halconf.h | 354 +++++++ keyboards/cannonkeys/chimera65/info.json | 7 + .../chimera65/keymaps/default/keymap.c | 44 + .../cannonkeys/chimera65/keymaps/via/keymap.c | 44 + .../cannonkeys/chimera65/keymaps/via/rules.mk | 5 + keyboards/cannonkeys/chimera65/mcuconf.h | 176 ++++ keyboards/cannonkeys/chimera65/readme.md | 12 + keyboards/cannonkeys/chimera65/rules.mk | 57 ++ keyboards/cannonkeys/stm32f072/keyboard.c | 3 +- 18 files changed, 3077 insertions(+), 2 deletions(-) create mode 100644 keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.c create mode 100644 keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.h create mode 100644 keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.mk create mode 100644 keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg create mode 100644 keyboards/cannonkeys/chimera65/bootloader_defs.h create mode 100644 keyboards/cannonkeys/chimera65/chconf.h create mode 100644 keyboards/cannonkeys/chimera65/chimera65.c create mode 100644 keyboards/cannonkeys/chimera65/chimera65.h create mode 100644 keyboards/cannonkeys/chimera65/config.h create mode 100644 keyboards/cannonkeys/chimera65/halconf.h create mode 100644 keyboards/cannonkeys/chimera65/info.json create mode 100644 keyboards/cannonkeys/chimera65/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/chimera65/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/chimera65/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/chimera65/mcuconf.h create mode 100644 keyboards/cannonkeys/chimera65/readme.md create mode 100644 keyboards/cannonkeys/chimera65/rules.mk diff --git a/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.c b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.c new file mode 100644 index 00000000000..9d10fbd754d --- /dev/null +++ b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.c @@ -0,0 +1,109 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#include "hal.h" + +#if HAL_USE_PAL || defined(__DOXYGEN__) +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +const PALConfig pal_default_config = { +#if STM32_HAS_GPIOA + {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, + VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH}, +#endif +#if STM32_HAS_GPIOB + {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, + VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH}, +#endif +#if STM32_HAS_GPIOC + {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, + VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH}, +#endif +#if STM32_HAS_GPIOD + {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, + VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH}, +#endif +#if STM32_HAS_GPIOE + {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, + VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH}, +#endif +#if STM32_HAS_GPIOF + {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, + VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH}, +#endif +#if STM32_HAS_GPIOG + {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, + VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH}, +#endif +#if STM32_HAS_GPIOH + {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, + VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH}, +#endif +#if STM32_HAS_GPIOI + {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, + VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH} +#endif +}; +#endif + +void enter_bootloader_mode_if_requested(void); + +/** + * @brief Early initialization code. + * @details This initialization must be performed just after stack setup + * and before any other initialization. + */ +void __early_init(void) { + enter_bootloader_mode_if_requested(); + stm32_clock_init(); +} + +#if HAL_USE_MMC_SPI || defined(__DOXYGEN__) +/** + * @brief MMC_SPI card detection. + */ +bool mmc_lld_is_card_inserted(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return true; +} + +/** + * @brief MMC_SPI card write protection detection. + */ +bool mmc_lld_is_write_protected(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return false; +} +#endif + +/** + * @brief Board-specific initialization code. + * @todo Add your board-specific code, if any. + */ +void boardInit(void) { +} diff --git a/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.h b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.h new file mode 100644 index 00000000000..de3a93d1ceb --- /dev/null +++ b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.h @@ -0,0 +1,922 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#ifndef BOARD_H +#define BOARD_H + +/* + * Setup for ST STM32F072B-Discovery board. + */ + +/* + * Board identifier. + */ +#define BOARD_ST_STM32F072B_DISCOVERY +#define BOARD_NAME "ST STM32F072B-Discovery" + +/* + * Board oscillators-related settings. + * NOTE: HSE not fitted. + */ +#if !defined(STM32_LSECLK) +#define STM32_LSECLK 32768 +#endif + +#define STM32_LSEDRV (3U << 3U) + +#if !defined(STM32_HSECLK) +#define STM32_HSECLK 0U +#endif + +#define STM32_HSE_BYPASS + +/* + * MCU type as defined in the ST header. + */ +#define STM32F072xB + +/* + * IO pins assignments. + */ +#define GPIOA_BUTTON 0U +#define GPIOA_PIN1 1U +#define GPIOA_PIN2 2U +#define GPIOA_PIN3 3U +#define GPIOA_PIN4 4U +#define GPIOA_PIN5 5U +#define GPIOA_PIN6 6U +#define GPIOA_PIN7 7U +#define GPIOA_PIN8 8U +#define GPIOA_PIN9 9U +#define GPIOA_PIN10 10U +#define GPIOA_USB_DM 11U +#define GPIOA_USB_DP 12U +#define GPIOA_SWDIO 13U +#define GPIOA_SWCLK 14U +#define GPIOA_PIN15 15U + +#define GPIOB_PIN0 0U +#define GPIOB_PIN1 1U +#define GPIOB_PIN2 2U +#define GPIOB_PIN3 3U +#define GPIOB_PIN4 4U +#define GPIOB_PIN5 5U +#define GPIOB_PIN6 6U +#define GPIOB_PIN7 7U +#define GPIOB_PIN8 8U +#define GPIOB_PIN9 9U +#define GPIOB_PIN10 10U +#define GPIOB_PIN11 11U +#define GPIOB_PIN12 12U +#define GPIOB_SPI2_SCK 13U +#define GPIOB_SPI2_MISO 14U +#define GPIOB_SPI2_MOSI 15U + +#define GPIOC_MEMS_CS 0U +#define GPIOC_PIN1 1U +#define GPIOC_PIN2 2U +#define GPIOC_PIN3 3U +#define GPIOC_PIN4 4U +#define GPIOC_PIN5 5U +#define GPIOC_LED_RED 6U +#define GPIOC_LED_BLUE 7U +#define GPIOC_LED_ORANGE 8U +#define GPIOC_LED_GREEN 9U +#define GPIOC_PIN10 10U +#define GPIOC_PIN11 11U +#define GPIOC_PIN12 12U +#define GPIOC_PIN13 13U +#define GPIOC_OSC32_IN 14U +#define GPIOC_OSC32_OUT 15U + +#define GPIOD_PIN0 0U +#define GPIOD_PIN1 1U +#define GPIOD_PIN2 2U +#define GPIOD_PIN3 3U +#define GPIOD_PIN4 4U +#define GPIOD_PIN5 5U +#define GPIOD_PIN6 6U +#define GPIOD_PIN7 7U +#define GPIOD_PIN8 8U +#define GPIOD_PIN9 9U +#define GPIOD_PIN10 10U +#define GPIOD_PIN11 11U +#define GPIOD_PIN12 12U +#define GPIOD_PIN13 13U +#define GPIOD_PIN14 14U +#define GPIOD_PIN15 15U + +#define GPIOE_PIN0 0U +#define GPIOE_PIN1 1U +#define GPIOE_PIN2 2U +#define GPIOE_PIN3 3U +#define GPIOE_PIN4 4U +#define GPIOE_PIN5 5U +#define GPIOE_PIN6 6U +#define GPIOE_PIN7 7U +#define GPIOE_PIN8 8U +#define GPIOE_PIN9 9U +#define GPIOE_PIN10 10U +#define GPIOE_PIN11 11U +#define GPIOE_PIN12 12U +#define GPIOE_PIN13 13U +#define GPIOE_PIN14 14U +#define GPIOE_PIN15 15U + +#define GPIOF_OSC_IN 0U +#define GPIOF_OSC_OUT 1U +#define GPIOF_PIN2 2U +#define GPIOF_PIN3 3U +#define GPIOF_PIN4 4U +#define GPIOF_PIN5 5U +#define GPIOF_PIN6 6U +#define GPIOF_PIN7 7U +#define GPIOF_PIN8 8U +#define GPIOF_PIN9 9U +#define GPIOF_PIN10 10U +#define GPIOF_PIN11 11U +#define GPIOF_PIN12 12U +#define GPIOF_PIN13 13U +#define GPIOF_PIN14 14U +#define GPIOF_PIN15 15U + +/* + * IO lines assignments. + */ +#define LINE_BUTTON PAL_LINE(GPIOA, 0U) +#define LINE_USB_DM PAL_LINE(GPIOA, 11U) +#define LINE_USB_DP PAL_LINE(GPIOA, 12U) +#define LINE_SWDIO PAL_LINE(GPIOA, 13U) +#define LINE_SWCLK PAL_LINE(GPIOA, 14U) + +#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U) +#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U) +#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U) + +#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U) +#define LINE_LED_RED PAL_LINE(GPIOC, 6U) +#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U) +#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U) +#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U) +#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U) +#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U) + + + +#define LINE_OSC_IN PAL_LINE(GPIOF, 0U) +#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U) + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * Please refer to the STM32 Reference Manual for details. + */ +#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) +#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) +#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U)) +#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U)) +#define PIN_ODR_LOW(n) (0U << (n)) +#define PIN_ODR_HIGH(n) (1U << (n)) +#define PIN_OTYPE_PUSHPULL(n) (0U << (n)) +#define PIN_OTYPE_OPENDRAIN(n) (1U << (n)) +#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U)) +#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U)) +#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U)) +#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U)) +#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U)) +#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U)) +#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U)) +#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U)) + +/* + * GPIOA setup: + * + * PA0 - BUTTON (input floating). + * PA1 - PIN1 (input pullup). + * PA2 - PIN2 (input pullup). + * PA3 - PIN3 (input pullup). + * PA4 - PIN4 (input pullup). + * PA5 - PIN5 (input pullup). + * PA6 - PIN6 (input pullup). + * PA7 - PIN7 (input pullup). + * PA8 - PIN8 (input pullup). + * PA9 - PIN9 (input pullup). + * PA10 - PIN10 (input pullup). + * PA11 - USB_DM (input floating). + * PA12 - USB_DP (input floating). + * PA13 - SWDIO (alternate 0). + * PA14 - SWCLK (alternate 0). + * PA15 - PIN15 (input pullup). + */ +#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \ + PIN_MODE_INPUT(GPIOA_PIN1) | \ + PIN_MODE_INPUT(GPIOA_PIN2) | \ + PIN_MODE_INPUT(GPIOA_PIN3) | \ + PIN_MODE_INPUT(GPIOA_PIN4) | \ + PIN_MODE_INPUT(GPIOA_PIN5) | \ + PIN_MODE_INPUT(GPIOA_PIN6) | \ + PIN_MODE_INPUT(GPIOA_PIN7) | \ + PIN_MODE_INPUT(GPIOA_PIN8) | \ + PIN_MODE_INPUT(GPIOA_PIN9) | \ + PIN_MODE_INPUT(GPIOA_PIN10) | \ + PIN_MODE_INPUT(GPIOA_USB_DM) | \ + PIN_MODE_INPUT(GPIOA_USB_DP) | \ + PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \ + PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \ + PIN_MODE_INPUT(GPIOA_PIN15)) +#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \ + PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN15)) +#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \ + PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \ + PIN_OSPEED_HIGH(GPIOA_SWDIO) | \ + PIN_OSPEED_HIGH(GPIOA_SWCLK) | \ + PIN_OSPEED_HIGH(GPIOA_PIN15)) +#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN10) | \ + PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \ + PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \ + PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \ + PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN15)) +#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \ + PIN_ODR_HIGH(GPIOA_PIN1) | \ + PIN_ODR_HIGH(GPIOA_PIN2) | \ + PIN_ODR_HIGH(GPIOA_PIN3) | \ + PIN_ODR_HIGH(GPIOA_PIN4) | \ + PIN_ODR_HIGH(GPIOA_PIN5) | \ + PIN_ODR_HIGH(GPIOA_PIN6) | \ + PIN_ODR_HIGH(GPIOA_PIN7) | \ + PIN_ODR_HIGH(GPIOA_PIN8) | \ + PIN_ODR_HIGH(GPIOA_PIN9) | \ + PIN_ODR_HIGH(GPIOA_PIN10) | \ + PIN_ODR_HIGH(GPIOA_USB_DM) | \ + PIN_ODR_HIGH(GPIOA_USB_DP) | \ + PIN_ODR_HIGH(GPIOA_SWDIO) | \ + PIN_ODR_HIGH(GPIOA_SWCLK) | \ + PIN_ODR_HIGH(GPIOA_PIN15)) +#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN7, 0U)) +#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \ + PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \ + PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \ + PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN15, 0U)) + +/* + * GPIOB setup: + * + * PB0 - PIN0 (input pullup). + * PB1 - PIN1 (input pullup). + * PB2 - PIN2 (input pullup). + * PB3 - PIN3 (input pullup). + * PB4 - PIN4 (input pullup). + * PB5 - PIN5 (input pullup). + * PB6 - PIN6 (input pullup). + * PB7 - PIN7 (input pullup). + * PB8 - PIN8 (input pullup). + * PB9 - PIN9 (input pullup). + * PB10 - PIN10 (input pullup). + * PB11 - PIN11 (input pullup). + * PB12 - PIN12 (input pullup). + * PB13 - SPI2_SCK (alternate 0). + * PB14 - SPI2_MISO (alternate 0). + * PB15 - SPI2_MOSI (alternate 0). + */ +#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \ + PIN_MODE_INPUT(GPIOB_PIN1) | \ + PIN_MODE_INPUT(GPIOB_PIN2) | \ + PIN_MODE_INPUT(GPIOB_PIN3) | \ + PIN_MODE_INPUT(GPIOB_PIN4) | \ + PIN_MODE_INPUT(GPIOB_PIN5) | \ + PIN_MODE_INPUT(GPIOB_PIN6) | \ + PIN_MODE_INPUT(GPIOB_PIN7) | \ + PIN_MODE_INPUT(GPIOB_PIN8) | \ + PIN_MODE_INPUT(GPIOB_PIN9) | \ + PIN_MODE_INPUT(GPIOB_PIN10) | \ + PIN_MODE_INPUT(GPIOB_PIN11) | \ + PIN_MODE_INPUT(GPIOB_PIN12) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \ + PIN_OSPEED_HIGH(GPIOB_PIN2) | \ + PIN_OSPEED_HIGH(GPIOB_PIN3) | \ + PIN_OSPEED_HIGH(GPIOB_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN12) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \ + PIN_ODR_HIGH(GPIOB_PIN1) | \ + PIN_ODR_HIGH(GPIOB_PIN2) | \ + PIN_ODR_HIGH(GPIOB_PIN3) | \ + PIN_ODR_HIGH(GPIOB_PIN4) | \ + PIN_ODR_HIGH(GPIOB_PIN5) | \ + PIN_ODR_HIGH(GPIOB_PIN6) | \ + PIN_ODR_HIGH(GPIOB_PIN7) | \ + PIN_ODR_HIGH(GPIOB_PIN8) | \ + PIN_ODR_HIGH(GPIOB_PIN9) | \ + PIN_ODR_HIGH(GPIOB_PIN10) | \ + PIN_ODR_HIGH(GPIOB_PIN11) | \ + PIN_ODR_HIGH(GPIOB_PIN12) | \ + PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \ + PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \ + PIN_ODR_HIGH(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN7, 0U)) +#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U)) + +/* + * GPIOC setup: + * + * PC0 - MEMS_CS (output pushpull maximum). + * PC1 - PIN1 (input pullup). + * PC2 - PIN2 (input pullup). + * PC3 - PIN3 (input pullup). + * PC4 - PIN4 (input pullup). + * PC5 - PIN5 (input pullup). + * PC6 - LED_RED (output pushpull maximum). + * PC7 - LED_BLUE (output pushpull maximum). + * PC8 - LED_ORANGE (output pushpull maximum). + * PC9 - LED_GREEN (output pushpull maximum). + * PC10 - PIN10 (input pullup). + * PC11 - PIN11 (input pullup). + * PC12 - PIN12 (input pullup). + * PC13 - PIN13 (input pullup). + * PC14 - OSC32_IN (input floating). + * PC15 - OSC32_OUT (input floating). + */ +#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \ + PIN_MODE_INPUT(GPIOC_PIN1) | \ + PIN_MODE_INPUT(GPIOC_PIN2) | \ + PIN_MODE_INPUT(GPIOC_PIN3) | \ + PIN_MODE_INPUT(GPIOC_PIN4) | \ + PIN_MODE_INPUT(GPIOC_PIN5) | \ + PIN_MODE_OUTPUT(GPIOC_LED_RED) | \ + PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \ + PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \ + PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \ + PIN_MODE_INPUT(GPIOC_PIN10) | \ + PIN_MODE_INPUT(GPIOC_PIN11) | \ + PIN_MODE_INPUT(GPIOC_PIN12) | \ + PIN_MODE_INPUT(GPIOC_PIN13) | \ + PIN_MODE_INPUT(GPIOC_OSC32_IN) | \ + PIN_MODE_INPUT(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \ + PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \ + PIN_OSPEED_HIGH(GPIOC_LED_RED) | \ + PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \ + PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \ + PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \ + PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \ + PIN_OSPEED_HIGH(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN5) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN13) | \ + PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \ + PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \ + PIN_ODR_HIGH(GPIOC_PIN1) | \ + PIN_ODR_HIGH(GPIOC_PIN2) | \ + PIN_ODR_HIGH(GPIOC_PIN3) | \ + PIN_ODR_HIGH(GPIOC_PIN4) | \ + PIN_ODR_HIGH(GPIOC_PIN5) | \ + PIN_ODR_LOW(GPIOC_LED_RED) | \ + PIN_ODR_LOW(GPIOC_LED_BLUE) | \ + PIN_ODR_LOW(GPIOC_LED_ORANGE) | \ + PIN_ODR_LOW(GPIOC_LED_GREEN) | \ + PIN_ODR_HIGH(GPIOC_PIN10) | \ + PIN_ODR_HIGH(GPIOC_PIN11) | \ + PIN_ODR_HIGH(GPIOC_PIN12) | \ + PIN_ODR_HIGH(GPIOC_PIN13) | \ + PIN_ODR_HIGH(GPIOC_OSC32_IN) | \ + PIN_ODR_HIGH(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_BLUE, 0U)) +#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \ + PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U)) + +/* + * GPIOD setup: + * + * PD0 - PIN0 (input pullup). + * PD1 - PIN1 (input pullup). + * PD2 - PIN2 (input pullup). + * PD3 - PIN3 (input pullup). + * PD4 - PIN4 (input pullup). + * PD5 - PIN5 (input pullup). + * PD6 - PIN6 (input pullup). + * PD7 - PIN7 (input pullup). + * PD8 - PIN8 (input pullup). + * PD9 - PIN9 (input pullup). + * PD10 - PIN10 (input pullup). + * PD11 - PIN11 (input pullup). + * PD12 - PIN12 (input pullup). + * PD13 - PIN13 (input pullup). + * PD14 - PIN14 (input pullup). + * PD15 - PIN15 (input pullup). + */ +#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \ + PIN_MODE_INPUT(GPIOD_PIN1) | \ + PIN_MODE_INPUT(GPIOD_PIN2) | \ + PIN_MODE_INPUT(GPIOD_PIN3) | \ + PIN_MODE_INPUT(GPIOD_PIN4) | \ + PIN_MODE_INPUT(GPIOD_PIN5) | \ + PIN_MODE_INPUT(GPIOD_PIN6) | \ + PIN_MODE_INPUT(GPIOD_PIN7) | \ + PIN_MODE_INPUT(GPIOD_PIN8) | \ + PIN_MODE_INPUT(GPIOD_PIN9) | \ + PIN_MODE_INPUT(GPIOD_PIN10) | \ + PIN_MODE_INPUT(GPIOD_PIN11) | \ + PIN_MODE_INPUT(GPIOD_PIN12) | \ + PIN_MODE_INPUT(GPIOD_PIN13) | \ + PIN_MODE_INPUT(GPIOD_PIN14) | \ + PIN_MODE_INPUT(GPIOD_PIN15)) +#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN15)) +#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN15)) +#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN15)) +#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \ + PIN_ODR_HIGH(GPIOD_PIN1) | \ + PIN_ODR_HIGH(GPIOD_PIN2) | \ + PIN_ODR_HIGH(GPIOD_PIN3) | \ + PIN_ODR_HIGH(GPIOD_PIN4) | \ + PIN_ODR_HIGH(GPIOD_PIN5) | \ + PIN_ODR_HIGH(GPIOD_PIN6) | \ + PIN_ODR_HIGH(GPIOD_PIN7) | \ + PIN_ODR_HIGH(GPIOD_PIN8) | \ + PIN_ODR_HIGH(GPIOD_PIN9) | \ + PIN_ODR_HIGH(GPIOD_PIN10) | \ + PIN_ODR_HIGH(GPIOD_PIN11) | \ + PIN_ODR_HIGH(GPIOD_PIN12) | \ + PIN_ODR_HIGH(GPIOD_PIN13) | \ + PIN_ODR_HIGH(GPIOD_PIN14) | \ + PIN_ODR_HIGH(GPIOD_PIN15)) +#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN7, 0U)) +#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN15, 0U)) + +/* + * GPIOE setup: + * + * PE0 - PIN0 (input pullup). + * PE1 - PIN1 (input pullup). + * PE2 - PIN2 (input pullup). + * PE3 - PIN3 (input pullup). + * PE4 - PIN4 (input pullup). + * PE5 - PIN5 (input pullup). + * PE6 - PIN6 (input pullup). + * PE7 - PIN7 (input pullup). + * PE8 - PIN8 (input pullup). + * PE9 - PIN9 (input pullup). + * PE10 - PIN10 (input pullup). + * PE11 - PIN11 (input pullup). + * PE12 - PIN12 (input pullup). + * PE13 - PIN13 (input pullup). + * PE14 - PIN14 (input pullup). + * PE15 - PIN15 (input pullup). + */ +#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \ + PIN_MODE_INPUT(GPIOE_PIN1) | \ + PIN_MODE_INPUT(GPIOE_PIN2) | \ + PIN_MODE_INPUT(GPIOE_PIN3) | \ + PIN_MODE_INPUT(GPIOE_PIN4) | \ + PIN_MODE_INPUT(GPIOE_PIN5) | \ + PIN_MODE_INPUT(GPIOE_PIN6) | \ + PIN_MODE_INPUT(GPIOE_PIN7) | \ + PIN_MODE_INPUT(GPIOE_PIN8) | \ + PIN_MODE_INPUT(GPIOE_PIN9) | \ + PIN_MODE_INPUT(GPIOE_PIN10) | \ + PIN_MODE_INPUT(GPIOE_PIN11) | \ + PIN_MODE_INPUT(GPIOE_PIN12) | \ + PIN_MODE_INPUT(GPIOE_PIN13) | \ + PIN_MODE_INPUT(GPIOE_PIN14) | \ + PIN_MODE_INPUT(GPIOE_PIN15)) +#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN15)) +#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN15)) +#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN15)) +#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \ + PIN_ODR_HIGH(GPIOE_PIN1) | \ + PIN_ODR_HIGH(GPIOE_PIN2) | \ + PIN_ODR_HIGH(GPIOE_PIN3) | \ + PIN_ODR_HIGH(GPIOE_PIN4) | \ + PIN_ODR_HIGH(GPIOE_PIN5) | \ + PIN_ODR_HIGH(GPIOE_PIN6) | \ + PIN_ODR_HIGH(GPIOE_PIN7) | \ + PIN_ODR_HIGH(GPIOE_PIN8) | \ + PIN_ODR_HIGH(GPIOE_PIN9) | \ + PIN_ODR_HIGH(GPIOE_PIN10) | \ + PIN_ODR_HIGH(GPIOE_PIN11) | \ + PIN_ODR_HIGH(GPIOE_PIN12) | \ + PIN_ODR_HIGH(GPIOE_PIN13) | \ + PIN_ODR_HIGH(GPIOE_PIN14) | \ + PIN_ODR_HIGH(GPIOE_PIN15)) +#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN7, 0U)) +#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN15, 0U)) + +/* + * GPIOF setup: + * + * PF0 - OSC_IN (input floating). + * PF1 - OSC_OUT (input floating). + * PF2 - PIN2 (input pullup). + * PF3 - PIN3 (input pullup). + * PF4 - PIN4 (input pullup). + * PF5 - PIN5 (input pullup). + * PF6 - PIN6 (input pullup). + * PF7 - PIN7 (input pullup). + * PF8 - PIN8 (input pullup). + * PF9 - PIN9 (input pullup). + * PF10 - PIN10 (input pullup). + * PF11 - PIN11 (input pullup). + * PF12 - PIN12 (input pullup). + * PF13 - PIN13 (input pullup). + * PF14 - PIN14 (input pullup). + * PF15 - PIN15 (input pullup). + */ +#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \ + PIN_MODE_INPUT(GPIOF_OSC_OUT) | \ + PIN_MODE_INPUT(GPIOF_PIN2) | \ + PIN_MODE_INPUT(GPIOF_PIN3) | \ + PIN_MODE_INPUT(GPIOF_PIN4) | \ + PIN_MODE_INPUT(GPIOF_PIN5) | \ + PIN_MODE_INPUT(GPIOF_PIN6) | \ + PIN_MODE_INPUT(GPIOF_PIN7) | \ + PIN_MODE_INPUT(GPIOF_PIN8) | \ + PIN_MODE_INPUT(GPIOF_PIN9) | \ + PIN_MODE_INPUT(GPIOF_PIN10) | \ + PIN_MODE_INPUT(GPIOF_PIN11) | \ + PIN_MODE_INPUT(GPIOF_PIN12) | \ + PIN_MODE_INPUT(GPIOF_PIN13) | \ + PIN_MODE_INPUT(GPIOF_PIN14) | \ + PIN_MODE_INPUT(GPIOF_PIN15)) +#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \ + PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN15)) +#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \ + PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN15)) +#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \ + PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN15)) +#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \ + PIN_ODR_HIGH(GPIOF_OSC_OUT) | \ + PIN_ODR_HIGH(GPIOF_PIN2) | \ + PIN_ODR_HIGH(GPIOF_PIN3) | \ + PIN_ODR_HIGH(GPIOF_PIN4) | \ + PIN_ODR_HIGH(GPIOF_PIN5) | \ + PIN_ODR_HIGH(GPIOF_PIN6) | \ + PIN_ODR_HIGH(GPIOF_PIN7) | \ + PIN_ODR_HIGH(GPIOF_PIN8) | \ + PIN_ODR_HIGH(GPIOF_PIN9) | \ + PIN_ODR_HIGH(GPIOF_PIN10) | \ + PIN_ODR_HIGH(GPIOF_PIN11) | \ + PIN_ODR_HIGH(GPIOF_PIN12) | \ + PIN_ODR_HIGH(GPIOF_PIN13) | \ + PIN_ODR_HIGH(GPIOF_PIN14) | \ + PIN_ODR_HIGH(GPIOF_PIN15)) +#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \ + PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN7, 0U)) +#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN15, 0U)) + + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.mk b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.mk new file mode 100644 index 00000000000..b98dcdd26c6 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY diff --git a/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg new file mode 100644 index 00000000000..9c7cf4fd76a --- /dev/null +++ b/keyboards/cannonkeys/chimera65/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg @@ -0,0 +1,703 @@ + + + + + resources/gencfg/processors/boards/stm32f0xx/templates + .. + 3.0.x + + ST STM32F072B-Discovery + ST_STM32F072B_DISCOVERY + + STM32F072xB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/keyboards/cannonkeys/chimera65/bootloader_defs.h b/keyboards/cannonkeys/chimera65/bootloader_defs.h new file mode 100644 index 00000000000..02c48c4e6dc --- /dev/null +++ b/keyboards/cannonkeys/chimera65/bootloader_defs.h @@ -0,0 +1,7 @@ +/* Address for jumping to bootloader on STM32 chips. */ +/* It is chip dependent, the correct number can be looked up here (page 175): + * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf + * This also requires a patch to chibios: + * /tmk_core/tool/chibios/ch-bootloader-jump.patch + */ +#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800 diff --git a/keyboards/cannonkeys/chimera65/chconf.h b/keyboards/cannonkeys/chimera65/chconf.h new file mode 100644 index 00000000000..99fa8ce3982 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/chconf.h @@ -0,0 +1,524 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 10000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 2 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 0 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE FALSE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP FALSE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS FALSE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK FALSE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS FALSE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS FALSE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS FALSE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/cannonkeys/chimera65/chimera65.c b/keyboards/cannonkeys/chimera65/chimera65.c new file mode 100644 index 00000000000..14f170d9c2b --- /dev/null +++ b/keyboards/cannonkeys/chimera65/chimera65.c @@ -0,0 +1 @@ +#include "chimera65.h" diff --git a/keyboards/cannonkeys/chimera65/chimera65.h b/keyboards/cannonkeys/chimera65/chimera65.h new file mode 100644 index 00000000000..81532f3f19d --- /dev/null +++ b/keyboards/cannonkeys/chimera65/chimera65.h @@ -0,0 +1,17 @@ +#pragma once + +#include "quantum.h" + +#define LAYOUT_default( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K401, K402, K406, K409, K410, K411, K412, K413, K415 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, K115 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, K409, K410, K411, K412, K413, KC_NO, K415 } \ +} diff --git a/keyboards/cannonkeys/chimera65/config.h b/keyboards/cannonkeys/chimera65/config.h new file mode 100644 index 00000000000..ace3565bea9 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/config.h @@ -0,0 +1,89 @@ +/* +Copyright 2015 Jun Wako + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0xC024 +#define DEVICE_VER 0x0001 +/* in python2: list(u"whatever".encode('utf-16-le')) */ +/* at most 32 characters or the ugly hack in usb_main.c borks */ +#define MANUFACTURER CannonKeys +#define PRODUCT Chimera65 +#define DESCRIPTION Chimera65 Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, A5, A4, A3, A2, A1, F0, C15, C14, A9, A8, A10, B3 } +#define MATRIX_ROW_PINS { A13, A14, A15, C13, B8 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +// EEPROM usage +// TODO: refactor with new user EEPROM code (coming soon) +#define EEPROM_MAGIC 0x451F +#define EEPROM_MAGIC_ADDR 34 +// Bump this every time we change what we store +// This will automatically reset the EEPROM with defaults +// and avoid loading invalid data from the EEPROM +#define EEPROM_VERSION 0x02 +#define EEPROM_VERSION_ADDR 36 + + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 +// Dynamic macro starts after dynamic keymaps (35+(4*5*15*2)) = (35+600) = 635 +// start + layer * rows * col * 2 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +#define EEPROM_CUSTOM_BACKLIGHT 678 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 679 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 202 +#define DYNAMIC_KEYMAP_MACRO_COUNT 16 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/cannonkeys/chimera65/halconf.h b/keyboards/cannonkeys/chimera65/halconf.h new file mode 100644 index 00000000000..64cf68298bc --- /dev/null +++ b/keyboards/cannonkeys/chimera65/halconf.h @@ -0,0 +1,354 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C TRUE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM TRUE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 16 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 1 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/cannonkeys/chimera65/info.json b/keyboards/cannonkeys/chimera65/info.json new file mode 100644 index 00000000000..75a5f293d10 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/info.json @@ -0,0 +1,7 @@ +{ + "keyboard_name": "Chimera65", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "width": 16, + "height": 5 +} diff --git a/keyboards/cannonkeys/chimera65/keymaps/default/keymap.c b/keyboards/cannonkeys/chimera65/keymaps/default/keymap.c new file mode 100644 index 00000000000..a63fcf6f751 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2012,2013 Jun Wako + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BASE 0 +#define _FN1 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_INC, BL_DEC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/chimera65/keymaps/via/keymap.c b/keyboards/cannonkeys/chimera65/keymaps/via/keymap.c new file mode 100644 index 00000000000..a63fcf6f751 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2012,2013 Jun Wako + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BASE 0 +#define _FN1 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_INC, BL_DEC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/chimera65/keymaps/via/rules.mk b/keyboards/cannonkeys/chimera65/keymaps/via/rules.mk new file mode 100644 index 00000000000..d12497792d5 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/keymaps/via/rules.mk @@ -0,0 +1,5 @@ +# rules.mk overrides to enable VIA + +RAW_ENABLE = yes +DYNAMIC_KEYMAP_ENABLE = yes + diff --git a/keyboards/cannonkeys/chimera65/mcuconf.h b/keyboards/cannonkeys/chimera65/mcuconf.h new file mode 100644 index 00000000000..048eb4df650 --- /dev/null +++ b/keyboards/cannonkeys/chimera65/mcuconf.h @@ -0,0 +1,176 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +/* + * STM32F0xx drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 3...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +#define STM32F0xx_MCUCONF +// #define STM32F070xB + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 +#define STM32_HSI_ENABLED TRUE +#define STM32_HSI14_ENABLED TRUE +#define STM32_HSI48_ENABLED FALSE +#define STM32_LSI_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 +#define STM32_PREDIV_VALUE 1 +#define STM32_PLLMUL_VALUE 12 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE STM32_PPRE_DIV1 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_USBSW STM32_USBSW_HSI48 +#define STM32_CECSW STM32_CECSW_HSI +#define STM32_I2C1SW STM32_I2C1SW_HSI +#define STM32_USART1SW STM32_USART1SW_PCLK +#define STM32_RTCSEL STM32_RTCSEL_LSI + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 2 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM14 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 2 +#define STM32_GPT_TIM2_IRQ_PRIORITY 2 +#define STM32_GPT_TIM3_IRQ_PRIORITY 2 +#define STM32_GPT_TIM14_IRQ_PRIORITY 2 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 TRUE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 3 +#define STM32_I2C_I2C2_IRQ_PRIORITY 3 +#define STM32_I2C_USE_DMA TRUE +#define STM32_I2C_I2C1_DMA_PRIORITY 1 +#define STM32_I2C_I2C2_DMA_PRIORITY 1 +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 3 +#define STM32_ICU_TIM2_IRQ_PRIORITY 3 +#define STM32_ICU_TIM3_IRQ_PRIORITY 3 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 TRUE +#define STM32_PWM_TIM1_IRQ_PRIORITY 3 +#define STM32_PWM_TIM2_IRQ_PRIORITY 3 +#define STM32_PWM_TIM3_IRQ_PRIORITY 3 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USART1_PRIORITY 3 +#define STM32_SERIAL_USART2_PRIORITY 3 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 TRUE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) +#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 2 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 3 +#define STM32_UART_USART2_IRQ_PRIORITY 3 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/cannonkeys/chimera65/readme.md b/keyboards/cannonkeys/chimera65/readme.md new file mode 100644 index 00000000000..e612240e40a --- /dev/null +++ b/keyboards/cannonkeys/chimera65/readme.md @@ -0,0 +1,12 @@ +# Chimera65 + +Chimera65 Keyboard + +Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/chimera65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk new file mode 100644 index 00000000000..580a7712c6a --- /dev/null +++ b/keyboards/cannonkeys/chimera65/rules.mk @@ -0,0 +1,57 @@ +# project specific files +# SRC = ssd1306.c +## chip/board settings +# the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +MCU_FAMILY = STM32 +MCU_SERIES = STM32F0xx +# linker script to use +# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +MCU_LDSCRIPT = STM32F072xB +# startup code to use +# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +MCU_STARTUP = stm32f0xx +# it should exist either in /os/hal/boards/ +# or /boards +BOARD = ST_STM32F072B_DISCOVERY +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m0 +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 6 +# If you want to be able to jump to bootloader from firmware on STM32 MCUs, +# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in +# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have +# a custom board definition that you plan to reuse). +# If you're not setting it here, leave it commented out. +# It is chip dependent, the correct number can be looked up here (page 175): +# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf +# This also requires a patch to chibios: +# /tmk_core/tool/chibios/ch-bootloader-jump.patch +#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 + +# Build Options +# comment out to disable the options. +# + +# project specific files +VPATH += keyboards/cannonkeys/stm32f072 +SRC = keyboard.c \ + led.c + +DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave + +#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover +CUSTOM_MATRIX = no # Custom matrix file +# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason +RGBLIGHT_ENABLE = no + +# RAW_ENABLE = yes +# DYNAMIC_KEYMAP_ENABLE = yes diff --git a/keyboards/cannonkeys/stm32f072/keyboard.c b/keyboards/cannonkeys/stm32f072/keyboard.c index 9520398d05f..5a9ccafff74 100644 --- a/keyboards/cannonkeys/stm32f072/keyboard.c +++ b/keyboards/cannonkeys/stm32f072/keyboard.c @@ -86,10 +86,9 @@ void matrix_init_board(void); void matrix_init_kb(void){ eeprom_init_kb(); /* MOSI pin*/ +#ifdef RGBLIGHT_ENABLE palSetPadMode(PORT_WS2812, PIN_WS2812, PAL_MODE_ALTERNATE(0)); wait_ms(500); - -#ifdef RGBLIGHT_ENABLE leds_init(); #endif backlight_init_ports(); From 55432d0d91d68150de249d540c06f38239f175b4 Mon Sep 17 00:00:00 2001 From: Wilba Date: Wed, 18 Sep 2019 02:59:34 +1000 Subject: [PATCH 03/72] [Keyboard] Fixed EEPROM start address for firmware using VIA (#6757) --- keyboards/aeboards/aegis/config.h | 12 ++++++------ keyboards/aeboards/ext65/config.h | 12 ++++++------ keyboards/ai03/lunar/config.h | 10 +++++----- keyboards/handwired/prime_exl/config.h | 12 ++++++------ keyboards/hs60/v2/config.h | 16 ++++++++-------- keyboards/idb_60/config.h | 12 ++++++------ keyboards/keebio/iris/rev1/config.h | 12 ++++++------ keyboards/keebio/iris/rev1_led/config.h | 12 ++++++------ keyboards/keebio/iris/rev2/config.h | 12 ++++++------ keyboards/keebio/iris/rev3/config.h | 12 ++++++------ keyboards/maartenwut/plain60/config.h | 12 ++++++------ keyboards/nk65/config.h | 16 ++++++++-------- keyboards/primekb/prime_e/config.h | 12 ++++++------ keyboards/snagpad/config.h | 12 ++++++------ keyboards/westfoxtrot/aanzee/config.h | 12 ++++++------ keyboards/wilba_tech/rama_works_koyu/config.h | 16 ++++++++-------- keyboards/wilba_tech/rama_works_m10_b/config.h | 12 ++++++------ keyboards/wilba_tech/rama_works_m60_a/config.h | 16 ++++++++-------- keyboards/wilba_tech/rama_works_m6_a/config.h | 16 ++++++++-------- keyboards/wilba_tech/rama_works_m6_b/config.h | 16 ++++++++-------- keyboards/wilba_tech/rama_works_u80_a/config.h | 16 ++++++++-------- keyboards/wilba_tech/wt60_a/config.h | 12 ++++++------ keyboards/wilba_tech/wt60_d/config.h | 12 ++++++------ keyboards/wilba_tech/wt65_a/config.h | 12 ++++++------ keyboards/wilba_tech/wt65_b/config.h | 12 ++++++------ keyboards/wilba_tech/wt69_a/config.h | 12 ++++++------ keyboards/wilba_tech/wt75_a/config.h | 12 ++++++------ keyboards/wilba_tech/wt75_b/config.h | 12 ++++++------ keyboards/wilba_tech/wt80_a/config.h | 12 ++++++------ keyboards/wilba_tech/wt8_a/config.h | 12 ++++++------ keyboards/wilba_tech/zeal60/config.h | 16 ++++++++-------- keyboards/wilba_tech/zeal65/config.h | 16 ++++++++-------- 32 files changed, 209 insertions(+), 209 deletions(-) diff --git a/keyboards/aeboards/aegis/config.h b/keyboards/aeboards/aegis/config.h index 01e20454c30..d8c256c7d98 100644 --- a/keyboards/aeboards/aegis/config.h +++ b/keyboards/aeboards/aegis/config.h @@ -55,16 +55,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*12*9*2)) = (35+864) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 899 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 125 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*12*9*2)) = (37+864) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 901 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 123 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/aeboards/ext65/config.h b/keyboards/aeboards/ext65/config.h index 2f66f3f9262..b3e1b8c2f0b 100644 --- a/keyboards/aeboards/ext65/config.h +++ b/keyboards/aeboards/ext65/config.h @@ -55,17 +55,17 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*10*2)) = (35+800) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 835 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 189 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*10*2)) = (37+800) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 837 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 187 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/ai03/lunar/config.h b/keyboards/ai03/lunar/config.h index a9d19255462..f7f3262ac73 100644 --- a/keyboards/ai03/lunar/config.h +++ b/keyboards/ai03/lunar/config.h @@ -250,17 +250,17 @@ along with this program. If not, see . // EEPROM usage #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 // DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR = DYNAMIC_KEYMAP_EEPROM_ADDR + (DYNAMIC_KEYMAP_LAYER_COUNT * MATRIX_ROWS * MATRIX_COLS * 2) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 635 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637 // DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE = 1024 - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 389 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/handwired/prime_exl/config.h b/keyboards/handwired/prime_exl/config.h index a2962c07466..ef6e204ec45 100644 --- a/keyboards/handwired/prime_exl/config.h +++ b/keyboards/handwired/prime_exl/config.h @@ -56,16 +56,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*9*2)) = (35+720) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 755 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 269 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*9*2)) = (37+720) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 757 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 267 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 \ No newline at end of file diff --git a/keyboards/hs60/v2/config.h b/keyboards/hs60/v2/config.h index 7169d846ba3..57014993f49 100644 --- a/keyboards/hs60/v2/config.h +++ b/keyboards/hs60/v2/config.h @@ -136,19 +136,19 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+32) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 67 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+32) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 69 #define DYNAMIC_KEYMAP_LAYER_COUNT 4 -// Dynamic macro starts after dynamic keymaps (67+(4*5*14*2)) = (67+560) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 627 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398 +// Dynamic macro starts after dynamic keymaps (69+(4*5*14*2)) = (69+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 629 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 396 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/idb_60/config.h b/keyboards/idb_60/config.h index b85eb14af9c..0120e470e50 100644 --- a/keyboards/idb_60/config.h +++ b/keyboards/idb_60/config.h @@ -155,16 +155,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 675 // **** CHANGE THIS BASED ON MATRIX_ROWS & MATRIX_COLS **** -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 349 // **** CHANGE THIS BASED ON 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR **** +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 677 // **** CHANGE THIS BASED ON MATRIX_ROWS & MATRIX_COLS **** +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 347 // **** CHANGE THIS BASED ON 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR **** #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/keebio/iris/rev1/config.h b/keyboards/keebio/iris/rev1/config.h index 2a21861a1cd..12b4e098b36 100644 --- a/keyboards/keebio/iris/rev1/config.h +++ b/keyboards/keebio/iris/rev1/config.h @@ -69,16 +69,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 515 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 509 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 517 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 507 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/keebio/iris/rev1_led/config.h b/keyboards/keebio/iris/rev1_led/config.h index b3629354e9f..3b3c999b82a 100644 --- a/keyboards/keebio/iris/rev1_led/config.h +++ b/keyboards/keebio/iris/rev1_led/config.h @@ -69,16 +69,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 515 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 509 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 517 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 507 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/keebio/iris/rev2/config.h b/keyboards/keebio/iris/rev2/config.h index a46328b94bc..938ff05f09a 100644 --- a/keyboards/keebio/iris/rev2/config.h +++ b/keyboards/keebio/iris/rev2/config.h @@ -69,16 +69,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 515 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 509 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 517 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 507 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/keebio/iris/rev3/config.h b/keyboards/keebio/iris/rev3/config.h index 9653625437f..6576ff68386 100644 --- a/keyboards/keebio/iris/rev3/config.h +++ b/keyboards/keebio/iris/rev3/config.h @@ -78,16 +78,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 515 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 509 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 517 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 507 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/maartenwut/plain60/config.h b/keyboards/maartenwut/plain60/config.h index a86c2358717..d17481617ff 100644 --- a/keyboards/maartenwut/plain60/config.h +++ b/keyboards/maartenwut/plain60/config.h @@ -55,16 +55,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 635 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 389 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/nk65/config.h b/keyboards/nk65/config.h index 791e4446898..4358d9cf959 100755 --- a/keyboards/nk65/config.h +++ b/keyboards/nk65/config.h @@ -136,19 +136,19 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+32) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 67 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+32) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 69 #define DYNAMIC_KEYMAP_LAYER_COUNT 4 -// Dynamic macro starts after dynamic keymaps (67+(4*5*15*2)) = (67+600) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 667 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398 +// Dynamic macro starts after dynamic keymaps (69+(4*5*15*2)) = (69+600) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 669 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 396 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/primekb/prime_e/config.h b/keyboards/primekb/prime_e/config.h index 9ef4edd88a4..46124973de1 100644 --- a/keyboards/primekb/prime_e/config.h +++ b/keyboards/primekb/prime_e/config.h @@ -57,16 +57,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*13*4*2)) = (35+416) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 451 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 573 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*13*4*2)) = (37+416) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 453 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 571 // 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/snagpad/config.h b/keyboards/snagpad/config.h index 9503ae25f9d..cd32a3d8c26 100644 --- a/keyboards/snagpad/config.h +++ b/keyboards/snagpad/config.h @@ -57,16 +57,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*4*2)) = (35+160) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 195 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 829 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*4*2)) = (37+160) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 197 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 827 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 \ No newline at end of file diff --git a/keyboards/westfoxtrot/aanzee/config.h b/keyboards/westfoxtrot/aanzee/config.h index d88101fdc85..4a5b65c5839 100644 --- a/keyboards/westfoxtrot/aanzee/config.h +++ b/keyboards/westfoxtrot/aanzee/config.h @@ -127,16 +127,16 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*6*2)) = (35+480) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 675 // **** CHANGE THIS BASED ON MATRIX_ROWS & MATRIX_COLS **** -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 349 // **** CHANGE THIS BASED ON 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR **** +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*6*2)) = (37+480) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 677 // **** CHANGE THIS BASED ON MATRIX_ROWS & MATRIX_COLS **** +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 347 // **** CHANGE THIS BASED ON 1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR **** #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/rama_works_koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h index 7fcfe08be03..f3e21aa15f4 100644 --- a/keyboards/wilba_tech/rama_works_koyu/config.h +++ b/keyboards/wilba_tech/rama_works_koyu/config.h @@ -125,18 +125,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+31) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 -// Dynamic macro starts after dynamic keymaps (66+(4*5*15*2)) = (66+600) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 666 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 358 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 68 +// Dynamic macro starts after dynamic keymaps (68+(4*5*15*2)) = (68+600) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 668 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 356 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/rama_works_m10_b/config.h b/keyboards/wilba_tech/rama_works_m10_b/config.h index 0c800968f42..6901309a08b 100644 --- a/keyboards/wilba_tech/rama_works_m10_b/config.h +++ b/keyboards/wilba_tech/rama_works_m10_b/config.h @@ -189,18 +189,18 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*10*2)) = (35+80) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 115 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 909 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*10*2)) = (37+80) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 117 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 907 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 #endif diff --git a/keyboards/wilba_tech/rama_works_m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h index b8ce1b6c869..1ee76750c1c 100644 --- a/keyboards/wilba_tech/rama_works_m60_a/config.h +++ b/keyboards/wilba_tech/rama_works_m60_a/config.h @@ -122,18 +122,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+31) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 -// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 68 +// Dynamic macro starts after dynamic keymaps (68+(4*5*14*2)) = (68+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 628 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 396 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/rama_works_m6_a/config.h b/keyboards/wilba_tech/rama_works_m6_a/config.h index b9f12f42530..07396450d6b 100644 --- a/keyboards/wilba_tech/rama_works_m6_a/config.h +++ b/keyboards/wilba_tech/rama_works_m6_a/config.h @@ -109,21 +109,21 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // NOTE: M6-A doesn't use RGB backlight, but we keep this // consistent with M6-B which does. // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+43) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 78 -// Dynamic macro starts after dynamic keymaps (78+(4*6*2)) = (78+48) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 126 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 898 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+43) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 80 +// Dynamic macro starts after dynamic keymaps (80+(4*6*2)) = (80+48) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 128 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 896 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/rama_works_m6_b/config.h b/keyboards/wilba_tech/rama_works_m6_b/config.h index 10377eae70b..535c64b80fb 100644 --- a/keyboards/wilba_tech/rama_works_m6_b/config.h +++ b/keyboards/wilba_tech/rama_works_m6_b/config.h @@ -155,18 +155,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+43) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 78 -// Dynamic macro starts after dynamic keymaps (78+(4*6*2)) = (78+48) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 126 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 898 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+43) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 80 +// Dynamic macro starts after dynamic keymaps (80+(4*6*2)) = (80+48) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 128 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 896 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h index d4b14e7c096..348b124b90b 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/config.h +++ b/keyboards/wilba_tech/rama_works_u80_a/config.h @@ -241,18 +241,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x07 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+31) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 -// Dynamic macro starts after dynamic keymaps (66+(4*6*17*2)) = (66+816) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 882 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 142 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 68 +// Dynamic macro starts after dynamic keymaps (68+(4*6*17*2)) = (68+816) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 884 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 140 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h index 3a2adb3c4b1..3ac8ea6fc04 100644 --- a/keyboards/wilba_tech/wt60_a/config.h +++ b/keyboards/wilba_tech/wt60_a/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*14*2)) = (35+560) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 595 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 429 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*14*2)) = (37+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 597 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 427 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt60_d/config.h b/keyboards/wilba_tech/wt60_d/config.h index 0ba243159e9..066465d424c 100644 --- a/keyboards/wilba_tech/wt60_d/config.h +++ b/keyboards/wilba_tech/wt60_d/config.h @@ -185,16 +185,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*14*2)) = (35+560) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 595 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 429 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*14*2)) = (37+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 597 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 427 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h index cb0df1460db..f1bcb990aab 100644 --- a/keyboards/wilba_tech/wt65_a/config.h +++ b/keyboards/wilba_tech/wt65_a/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*15*2)) = (35+600) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 635 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 389 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*15*2)) = (37+600) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h index 086168987be..765ed8ee1d0 100644 --- a/keyboards/wilba_tech/wt65_b/config.h +++ b/keyboards/wilba_tech/wt65_b/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*15*2)) = (35+600) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 635 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 389 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*15*2)) = (37+600) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt69_a/config.h b/keyboards/wilba_tech/wt69_a/config.h index 0ed40b27e00..57546cb4911 100644 --- a/keyboards/wilba_tech/wt69_a/config.h +++ b/keyboards/wilba_tech/wt69_a/config.h @@ -188,16 +188,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*5*17*2)) = (35+680) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 715 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 309 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*5*17*2)) = (37+680) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 717 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 307 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h index d1ae3315668..024370d54d8 100644 --- a/keyboards/wilba_tech/wt75_a/config.h +++ b/keyboards/wilba_tech/wt75_a/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*6*15*2)) = (35+720) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 755 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 269 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*6*15*2)) = (37+720) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 757 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 267 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h index c9b37755f1e..b8ada14e8f2 100644 --- a/keyboards/wilba_tech/wt75_b/config.h +++ b/keyboards/wilba_tech/wt75_b/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*6*16*2)) = (35+768) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 803 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 221 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*6*16*2)) = (37+768) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 805 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 219 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h index 7d974193c29..3ba90230b58 100644 --- a/keyboards/wilba_tech/wt80_a/config.h +++ b/keyboards/wilba_tech/wt80_a/config.h @@ -187,16 +187,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*6*17*2)) = (35+816) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 851 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 173 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*6*17*2)) = (37+816) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 853 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 171 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/wt8_a/config.h b/keyboards/wilba_tech/wt8_a/config.h index 6604b7ce827..08556650da2 100644 --- a/keyboards/wilba_tech/wt8_a/config.h +++ b/keyboards/wilba_tech/wt8_a/config.h @@ -100,16 +100,16 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 -// Dynamic macro starts after dynamic keymaps (35+(4*1*8*2)) = (35+64) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 99 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 925 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 37 +// Dynamic macro starts after dynamic keymaps (37+(4*1*8*2)) = (37+64) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 101 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 923 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h index 7c5340e7302..6b9529a6f97 100644 --- a/keyboards/wilba_tech/zeal60/config.h +++ b/keyboards/wilba_tech/zeal60/config.h @@ -121,18 +121,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+31) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 -// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 68 +// Dynamic macro starts after dynamic keymaps (68+(4*5*14*2)) = (68+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 628 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 396 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/wilba_tech/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h index 7217c6ed161..f452fbd4750 100644 --- a/keyboards/wilba_tech/zeal65/config.h +++ b/keyboards/wilba_tech/zeal65/config.h @@ -121,18 +121,18 @@ // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 34 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x08 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 36 // Backlight config starts after EEPROM version -#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 -// Dynamic keymap starts after backlight config (35+31) -#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 -// Dynamic macro starts after dynamic keymaps (66+(4*5*15*2)) = (66+600) -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 666 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 358 +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 37 +// Dynamic keymap starts after backlight config (37+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 68 +// Dynamic macro starts after dynamic keymaps (68+(4*5*15*2)) = (68+600) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 668 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 356 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 From 32b2486c6b894894d0782eb46cc2d97542c92ea2 Mon Sep 17 00:00:00 2001 From: IanGC Date: Tue, 17 Sep 2019 13:15:07 -0400 Subject: [PATCH 04/72] [Keymap] Plaid Keymap for Programmers (#6706) * map programmer qwerty * clarify and fix typo * finishing touches * use qmk s templates for readme * update copyright notice * remove unnecessary code Co-Authored-By: Drashna Jaelre * remove unnecessary code Co-Authored-By: Drashna Jaelre * Update keyboards/plaid/keymaps/thehalfdeafchef/keymap.c Co-Authored-By: Drashna Jaelre * fix documentation * reformat code * Apply suggestions from code review Co-Authored-By: Drashna Jaelre --- .../plaid/keymaps/thehalfdeafchef/config.h | 19 ++ .../plaid/keymaps/thehalfdeafchef/keymap.c | 182 ++++++++++++++++++ .../plaid/keymaps/thehalfdeafchef/readme.md | 5 + 3 files changed, 206 insertions(+) create mode 100644 keyboards/plaid/keymaps/thehalfdeafchef/config.h create mode 100644 keyboards/plaid/keymaps/thehalfdeafchef/keymap.c create mode 100644 keyboards/plaid/keymaps/thehalfdeafchef/readme.md diff --git a/keyboards/plaid/keymaps/thehalfdeafchef/config.h b/keyboards/plaid/keymaps/thehalfdeafchef/config.h new file mode 100644 index 00000000000..4bcbc6f673a --- /dev/null +++ b/keyboards/plaid/keymaps/thehalfdeafchef/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 Ian Canino (ian@thecommittedbug.io) + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/plaid/keymaps/thehalfdeafchef/keymap.c b/keyboards/plaid/keymaps/thehalfdeafchef/keymap.c new file mode 100644 index 00000000000..bdf6c54c316 --- /dev/null +++ b/keyboards/plaid/keymaps/thehalfdeafchef/keymap.c @@ -0,0 +1,182 @@ +#include QMK_KEYBOARD_H + +enum plaid_layers { + _QWERTY, + _DVORAK, + _COLEMAK, + _LOWER, + _RAISE, + _FUNCTION, +}; + +enum plaid_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, LED }; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +#define LED_ON 1 +#define LED_OFF 0 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | LS/( | Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT_planck_mit(KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, KC_LGUI, KC_LALT, KC_LBRC, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, KC_RSPC), + + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | LS/( | Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) | + * `-----------------------------------------------------------------------------------' + */ + + [_COLEMAK] = LAYOUT_planck_mit(KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, KC_RSPC), + + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Esc | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | LGUI | Alt | [ |Lower | Space |Raise | ] | RGUI | \ | RS/) | + * `-----------------------------------------------------------------------------------' + */ + + [_DVORAK] = LAYOUT_planck_mit(KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_RBRC, KC_RGUI, KC_BSLS, KC_RSPC), + + /* LOWER + * ,----------------------------------------------------------------------------. + * | | | MPRV | MPLY | MNXT | | | | PGUP| UP | PGDN|PSCR | + * |------+------+------+------+------+-----+-----+-----+-----+-----------+-----+ + * | | | MUTE | VOLD | VOLU | | | | LEFT| DOWN|RIGHT| | + * |------+------+------+------+------+-----+-----+-----+-----+-----+-----+-----+ + * | | | MAIL | WBAK | WFWD | | | | HOME| | END | | + * |------+------+------+------+------+-----+-----+-----+-----+-----------+-----+ + * | | | | | | DEL | | | | | | + * `----------------------------------------------------------------------------' + */ + + [_LOWER] = LAYOUT_planck_mit(KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_MAIL, KC_WBAK, KC_WFWD, KC_NO, KC_NO, KC_NO, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), + + /* RAISE + * ,--------------------------------------------------------------------------------. + * | NLCK | 1 | 2 | 3 | - | | | | ! | # | $ | + | + * |------+------+------+------+------+-----+-----+-----+------+------+------+------+ + * | / | 4 | 5 | 6 | + | | | | % | ! | ! | = | + * |------+------+------+------+------+-----+-----+-----+------+------+------+------+ + * | * | 7 | 8 | 9 | , | | | | _ | - | @ | ~ | + * |------+------+------+------+------+-----+-----+-----+------+------+------+------+ + * | | 0 | . | Ent | = | | | | | | ` | + * `--------------------------------------------------------------------------------' + */ + + [_RAISE] = LAYOUT_planck_mit(KC_NLCK, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_EXLM, KC_HASH, KC_DLR, KC_PLUS, KC_PSLS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_PERC, KC_ASTR, KC_AMPR, KC_EQL, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PCMM, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_MINS, KC_AT, KC_TILDE, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_PEQL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_GRV), + + /* Function (Lower + Raise) + * ,-----------------------------------------------------------------------------------------------------------------------. + * | RESET| LCA_T(F1) | LCA_T(F2) | LCA_T(F3) | LCA_T(F4) | LCA_T(F5) | LCA_T(F6) | LCA_T(F7) | | | | | + * |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+ + * | | | | | | QWERTY | DVORAK | COLEMAK | | | | | + * |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+ + * | | | | | | | | | | | | | + * |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+ + * | | | | | | LED | | | | | | + * `-----------------------------------------------------------------------------------------------------------------------' + */ + + [_FUNCTION] = LAYOUT_planck_mit(RESET, LCA_T(KC_F1), LCA_T(KC_F2), LCA_T(KC_F3), LCA_T(KC_F4), LCA_T(KC_F5), LCA_T(KC_F6), LCA_T(KC_F7), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QWERTY, DVORAK, COLEMAK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LED, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)}; + +// constants to toggle LED behavior + +// Setup config struct for LED +typedef union { + uint32_t raw; + struct { + bool red_mode : 1; + bool green_mode : 1; + }; +} led_config_t; +led_config_t led_config; + +void keyboard_post_init_user(void) { led_config.raw = eeconfig_read_user(); } + +void eeconfig_init_user(void) { // EEPROM is getting reset! + led_config.raw = 0; + led_config.red_mode = LED_ON; + led_config.green_mode = LED_ON; + eeconfig_update_user(led_config.raw); + eeconfig_update_user(led_config.raw); +} + +// When LOWER and RAISE are held together, go to the FUNCTION layer +uint32_t layer_state_set_user(uint32_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _FUNCTION); } + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + switch (layer) { + case _LOWER: + writePinHigh(LED_RED); + break; + case _RAISE: + writePinHigh(LED_GREEN); + break; + default: + writePinLow(LED_GREEN); + writePinLow(LED_RED); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case LED: + if (record->event.pressed) { + if (led_config.red_mode == LED_ON && led_config.green_mode == LED_ON) { + led_config.red_mode = LED_OFF; + led_config.green_mode = LED_OFF; + } else if (led_config.red_mode == LED_OFF && led_config.green_mode == LED_OFF) { + led_config.red_mode = LED_ON; + led_config.green_mode = LED_ON; + } + } + eeconfig_update_user(led_config.raw); + return false; + break; + } + return true; +} diff --git a/keyboards/plaid/keymaps/thehalfdeafchef/readme.md b/keyboards/plaid/keymaps/thehalfdeafchef/readme.md new file mode 100644 index 00000000000..bd09965b55e --- /dev/null +++ b/keyboards/plaid/keymaps/thehalfdeafchef/readme.md @@ -0,0 +1,5 @@ +![Plaid Layout Image](https://i.imgur.com/WnVnwEG.png) + +# The Half Deaf Chef Plaid Layout + +Opinionated keymaps optimized for programmers. The Left and Right Shift tap as parenthesis and the bracket keys are to either side of the layer keys (LOWER, RAISE). A 'right-side' up number pad in a layer with a complementary 'symbol' pad on the opposite side. An additional layer is provided to switch to virtual console on Linux based systems running xorg. These changes are propagated among all the layouts. From ab48ffd5c5923b822e789bb3b18d8a16654da91a Mon Sep 17 00:00:00 2001 From: Noan Mousy <4sstylz@protonmail.ch> Date: Tue, 17 Sep 2019 19:17:03 +0200 Subject: [PATCH 05/72] [Keyboard] Adding AEK64 keyboard (#6725) * Adding AEK64 keyboard * Deleting useless layout definition * Resolving many code review issues * Documenting my 4sStylZ keymap * Adding default keymap * Apply suggestions from code review Code review corrections Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Co-Authored-By: fauxpark * Update keyboards/handwired/aek64/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Correcting the NKRO implementation --- keyboards/handwired/aek64/aek64.c | 36 +++++++ keyboards/handwired/aek64/aek64.h | 34 ++++++ keyboards/handwired/aek64/config.h | 78 ++++++++++++++ keyboards/handwired/aek64/info.json | 12 +++ .../handwired/aek64/keymaps/4sstylz/keymap.c | 102 ++++++++++++++++++ .../handwired/aek64/keymaps/default/keymap.c | 53 +++++++++ keyboards/handwired/aek64/readme.md | 17 +++ keyboards/handwired/aek64/rules.mk | 29 +++++ 8 files changed, 361 insertions(+) create mode 100644 keyboards/handwired/aek64/aek64.c create mode 100644 keyboards/handwired/aek64/aek64.h create mode 100644 keyboards/handwired/aek64/config.h create mode 100644 keyboards/handwired/aek64/info.json create mode 100644 keyboards/handwired/aek64/keymaps/4sstylz/keymap.c create mode 100644 keyboards/handwired/aek64/keymaps/default/keymap.c create mode 100644 keyboards/handwired/aek64/readme.md create mode 100644 keyboards/handwired/aek64/rules.mk diff --git a/keyboards/handwired/aek64/aek64.c b/keyboards/handwired/aek64/aek64.c new file mode 100644 index 00000000000..0646d308d0e --- /dev/null +++ b/keyboards/handwired/aek64/aek64.c @@ -0,0 +1,36 @@ +/* +Copyright 2012,2013 Jun Wako <4sStylZ@protonmail.ch> + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "quantum.h" + +/* + * Hardware function pre initialisation. + * See https://docs.qmk.fm/#/custom_quantum_functions?id=example-keyboard_pre_init_user-implementation + */ +void keyboard_pre_init_user(void) { + // Call the keyboard pre init code. + + // Set our LED pins as output + setPinOutput(C3); +} + +void matrix_init_kb(void) { + + // Flash the led 1 sec on startup. + writePinHigh(C3); + wait_ms(1000); + writePinLow(C3); +} diff --git a/keyboards/handwired/aek64/aek64.h b/keyboards/handwired/aek64/aek64.h new file mode 100644 index 00000000000..63784487601 --- /dev/null +++ b/keyboards/handwired/aek64/aek64.h @@ -0,0 +1,34 @@ +/* +Copyright 2012,2013 Jun Wako <4sStylZ@protonmail.ch> + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* Alps64 physical definition macro */ +#define LAYOUT( \ + k00, k01, k02, k03 , k04 , k05 , k06, k07 , k08 , k09 , k010 , k011, k012, k013 , \ + k10, k11, k12, k13 , k14 , k15 , k16, k17 , k18 , k19 , k110 , k111, k112, \ + k20, k21, k22, k23 , k24 , k25 , k26, k27 , k28 , k29 , k210 , k211, k212, k213 , \ + k30, k31, k32, k33 , k34 , k35 , k36, k37 , k38 , k39 , k310 , k311, k312, \ + k40, k41, k42, k46, k411, k412, k413 \ +) { \ + { k00, k01, k02, k03 , k04 , k05 , k06, k07 , k08 , k09 , k010 , k011, k012, k013 }, \ + { k10, k11, k12, k13 , k14 , k15 , k16, k17 , k18 , k19 , k110 , k111, k112, KC_NO }, \ + { k20, k21, k22, k23 , k24 , k25 , k26, k27 , k28 , k29 , k210 , k211, k212, k213 }, \ + { k30, k31, k32, k33 , k34 , k35 , k36, k37 , k38 , k39 , k310 , k311, k312, KC_NO }, \ + { k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k411, k412, k413 }, \ +} diff --git a/keyboards/handwired/aek64/config.h b/keyboards/handwired/aek64/config.h new file mode 100644 index 00000000000..45ce6665bce --- /dev/null +++ b/keyboards/handwired/aek64/config.h @@ -0,0 +1,78 @@ +/* +Copyright 2015 Jun Wako <4sStylZ@protonmail.ch> + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6464 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 4sStylZ and others makers +#define PRODUCT AEK64 +#define DESCRIPTION QMK keyboard firmware for AEK64 handwired + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// Originally made for a Teensy 2++ +#define MATRIX_COL_PINS { F0, E6, E7, B0, B1, B2, B3, B4, B5, B6, B7, D0, D1, D2 } +#define MATRIX_ROW_PINS { E0, E1, C0, C1, C2 } +#define UNUSED_PINS + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +// #define LOCKING_SUPPORT_ENABLE + +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* Enable the space-cadet options */ +#define RSPC_KEYS KC_RSFT, KC_TRNS, KC_PGUP +#define RCPC_KEYS KC_RCTL, KC_TRNS, KC_PGDOWN +#define LSPO_KEYS KC_LSFT, KC_TRNS, KC_HOME +#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_END + +/* Enable double tab */ +#define TAPPING_TERM 175 + +#define COMBO_COUNT 1 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/aek64/info.json b/keyboards/handwired/aek64/info.json new file mode 100644 index 00000000000..4665b463876 --- /dev/null +++ b/keyboards/handwired/aek64/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "aek64", + "url": "", + "maintainer": "qmk", + "width": 14.75, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [{"label":"Esc", "x":0, "y":0, "w":1.25}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.25, "y":0}, {"label":"6", "x":6.25, "y":0}, {"label":"7", "x":7.25, "y":0}, {"label":"8", "x":8.25, "y":0}, {"label":"9", "x":9.25, "y":0}, {"label":"0", "x":10.25, "y":0}, {"label":"\u00b0", "x":11.25, "y":0}, {"label":"+", "x":12.25, "y":0}, {"label":"Backspace", "x":13.25, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"Z", "x":2.75, "y":1}, {"label":"E", "x":3.75, "y":1}, {"label":"R", "x":4.75, "y":1}, {"label":"T", "x":5.75, "y":1}, {"label":"Y", "x":6.75, "y":1}, {"label":"U", "x":7.75, "y":1}, {"label":"I", "x":8.75, "y":1}, {"label":"O", "x":9.75, "y":1}, {"label":"P", "x":10.75, "y":1}, {"label":"{", "x":11.75, "y":1}, {"label":"}", "x":12.75, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":2}, {"label":"Q", "x":2, "y":2}, {"label":"S", "x":3, "y":2}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"H", "x":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":"M", "x":11, "y":2}, {"label":"%", "x":12, "y":2}, {"label":"µ", "x":13, "y":2}, {"label":"Enter", "x":14, "y":1, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":">", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"?", "x":8.5, "y":3}, {"label":".", "x":9.5, "y":3}, {"label":"/", "x":10.5, "y":3}, {"label":"§", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":2.5}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Opt", "x":1.5, "y":4, "w":1.25}, {"label":"Cmd", "x":2.75, "y":4, "w":1.5}, {"label":"Space", "x":4.25, "y":4, "w":6.5}, {"label":"Cmd", "x":10.75, "y":4, "w":1.5}, {"label":"Opt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c b/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c new file mode 100644 index 00000000000..65f8354aabe --- /dev/null +++ b/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c @@ -0,0 +1,102 @@ +#include QMK_KEYBOARD_H + +// Implement Super-alt↯tab +// See https://docs.qmk.fm/#/feature_macros?id=super-alt↯tab +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +// Defining all the custom keycodes. +enum custom_keycodes { + ALT_TAB = SAFE_RANGE +}; + +const uint16_t PROGMEM lock_combo[] = {KC_J, KC_K, KC_L, KC_SCLN, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO(lock_combo, LGUI(KC_O))}; + +// Define the keycodes for one qwerty layer and one Fn layer. +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty + * ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬─────────────┐ + * │ ` Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bksp │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┬───────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┴┐ Enter│ + * │ Layer 2 │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├──────┬──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┤ + * │ Shift│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ + * ├──────┼──────┼──────┼──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┼──────┬──────┬──────┤ + * │ Ctrl │ Alt │↯ATab │ Space │ Gui │ Alt │ Ctrl │ + * └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘ + * + * Hidden features :  + * - Left Shift is also Home on a single tap. + * - Left Ctrl is also End on a single tap. + * - Right Shift is also page-up on a single tap. + * - Right Ctrl is also page-down on a single tap. + * - Press JKLM for Windows + L (Session lock) + */ + [0] = LAYOUT( \ + KC_GESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, + MO(1) , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , + KC_LSPO , KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC , + KC_LCPO , KC_LALT, ALT_TAB, KC_SPC, KC_LGUI, KC_RALT, KC_RCPC + ), + + /* 1: second layer for media keys and many advanced features ç + * ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬─────────────┐ + * │Alt F4│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │ + * ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┬───────┤ + * │ │ │ │PrtScn│ Brt+ │ Brt- │Ctrl A│ Home │ Up │ End │ ‽  │ ↑     │ ⸮   │ │ │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┴┐ │ + * │ │ Cut │ Copy │Paste │ Del │ Del │ Left │ Down │Right │ ← │ ↓ │ → │ │ │ + * ├──────┬──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┤ + * │ │ │ Mute │ Vol- │ Vol+ │ │ │ │ │ │ │Reset │ │ + * ├──────┼──────┼──────┼──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┼──────┬──────┬──────┤ + * │ │ │ │ │ │ │ │ + * └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘ + */ + [1] = LAYOUT( \ + LALT(KC_F4), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, + _______ , _______ , _______ , KC_PSCR , KC_BRIU , KC_BRID, LCTL(KC_A), KC_HOME, KC_UP , KC_END , UC(0x203D) , UC(0x8593), UC(0x2E2E), + _______ , _______ , LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), KC_DEL , KC_DEL , KC_LEFT, KC_DOWN, KC_RIGHT, UC(0x8592) , UC(0x8595), UC(0x8594), _______, + _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , _______, _______ , _______, _______, _______ , _______ , RESET , _______ , + _______ , _______ , _______ , _______, _______ , _______ , _______ + ) +}; + +// Set the unicode input mode for using UC. +void matrix_init_user(void) { + set_unicode_input_mode(UC_LNX); +} + +// Processing all the key pressed. +// Alt+tab. +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + // Depending keycodes… + switch (keycode) { // This will do most of the grunt work with the keycodes. + case ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +} + +void matrix_scan_user(void) { // The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 750) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} diff --git a/keyboards/handwired/aek64/keymaps/default/keymap.c b/keyboards/handwired/aek64/keymaps/default/keymap.c new file mode 100644 index 00000000000..5b9115902dc --- /dev/null +++ b/keyboards/handwired/aek64/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +#include QMK_KEYBOARD_H + +// Define the keycodes for one qwerty layer and one Fn layer. +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty + * ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬─────────────┐ + * │ ` Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bksp │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┬───────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┴┐ Enter│ + * │ Layer 2 │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├──────┬──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┤ + * │ Shift│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ + * ├──────┼──────┼──────┼──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┼──────┬──────┬──────┤ + * │ Ctrl │ Alt │ Gui │ Space │ Gui │ Alt │ Ctrl │ + * └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘ + * + * Hidden features :  + * - Left Shift is also Home on a single tap. + * - Left Ctrl is also End on a single tap. + * - Right Shift is also page-up on a single tap. + * - Right Ctrl is also page-down on a single tap. + * - Press JKLM for Windows + L (Session lock) + */ + [0] = LAYOUT( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, + MO(1) , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , + KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC , + KC_LCPO, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCPC + ), + + /* 1: second layer for media keys and many advanced features ç + * ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬─────────────┐ + * │Alt F4│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │ + * ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┬───────┤ + * │ │ │ │ │ │ │Ctrl A│ Home │ Up │ End │ │ │ │ │ │ + * ├─────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────┴┐ │ + * │ │ Cut │ Copy │Paste │ Del │ Del │ Left │ Down │Right │ │ │ │ │ │ + * ├──────┬──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┤ + * │ │ │ Mute │ Vol- │ Vol+ │ │ │ │ │ │ │Reset │ │ + * ├──────┼──────┼──────┼──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┼──────┬──────┬──────┤ + * │ │ │ │ │ │ │ │ + * └──────┴──────┴──────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────┘ + */ + [1] = LAYOUT( + LALT(KC_F4), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, + _______ , _______ , _______ , _______ , _______ , _______, LCTL(KC_A), KC_HOME, KC_UP , KC_END , _______ , _______ , _______ , + _______ , _______ , LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), KC_DEL , KC_DEL , KC_LEFT, KC_DOWN, KC_RIGHT, _______ , _______ , _______ , _______, + _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , _______, _______ , _______, _______, _______ , _______ , RESET , _______ , + _______ , _______ , _______ , _______, _______ , _______ , _______ + ) +}; diff --git a/keyboards/handwired/aek64/readme.md b/keyboards/handwired/aek64/readme.md new file mode 100644 index 00000000000..7afecca12c6 --- /dev/null +++ b/keyboards/handwired/aek64/readme.md @@ -0,0 +1,17 @@ +# AEK64 + +An Alps-only 60% handwired ISO AEK based on the original AEK plate. + +Keyboard Maintainer: QMK Community +Hardware Supported: AEK II ISO +Hardware Availability: buy an used one and salvage / cut the plate and rip-off the switchs. For the case, a GH60 can be good. + +Make example for this keyboard (after setting up your build environment): + + make aek64:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Known issues + +* The Unicode characters on the keymap don’t work. diff --git a/keyboards/handwired/aek64/rules.mk b/keyboards/handwired/aek64/rules.mk new file mode 100644 index 00000000000..5fe5a9bae96 --- /dev/null +++ b/keyboards/handwired/aek64/rules.mk @@ -0,0 +1,29 @@ +# Target file name (without extension). + +# project specific files + +# MCU name +MCU = at90usb1286 + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +BOOTLOADER = halfKay + +# Build Options +# change to no to disable the options. +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA +UNICODE_ENABLE = yes # Enable support for arrow keys icon on the second layer. +COMBO_ENABLE = yes # Enable combo for special function when using multiple keys at once. +TAP_DANCE_ENABLE = no # Enable use multiple tap +NKRO_ENABLE = yes From d137fdea780a37395f397f9641fc7ebd2c7f27a0 Mon Sep 17 00:00:00 2001 From: Ethan Durrant <5387347+emdarcher@users.noreply.github.com> Date: Tue, 17 Sep 2019 11:19:16 -0600 Subject: [PATCH 06/72] [Keyboard] Adding YMDK "Bface" keyboard (#6731) * making a new board setup for ymdk bface clone * removing extra keymaps that copied over * documentation and edits for new ymdk_bface board * cleaning up config and keymaps * removed extra keymap and working on READMEs * readme edits * shorter aliexpress link in ymdk_bface readme * added images to readmes and edited the keymaps * more flashing directions * Mac directions formatting * editing and creating the all layout * cleanign up ymdk_bface keymaps * fixed typos in layout * removed tabs * cleaned up the LED and Backlight configuration. * adding more to info.josn and cleaning up readme * fixing JSON typos * made a ymdk folder and moved the bface into it. * fixing file names for the new folder structure --- keyboards/ymdk/bface/README.md | 55 +++ keyboards/ymdk/bface/bface.c | 41 ++ keyboards/ymdk/bface/bface.h | 69 +++ keyboards/ymdk/bface/config.h | 41 ++ keyboards/ymdk/bface/info.json | 20 + keyboards/ymdk/bface/keymaps/default/config.h | 3 + keyboards/ymdk/bface/keymaps/default/keymap.c | 60 +++ .../ymdk/bface/keymaps/default/readme.md | 11 + .../ymdk/bface/keymaps/emdarcher/config.h | 3 + .../ymdk/bface/keymaps/emdarcher/keymap.c | 69 +++ .../ymdk/bface/keymaps/emdarcher/readme.md | 14 + keyboards/ymdk/bface/rules.mk | 33 ++ keyboards/ymdk/bface/usbconfig.h | 393 ++++++++++++++++++ 13 files changed, 812 insertions(+) create mode 100644 keyboards/ymdk/bface/README.md create mode 100644 keyboards/ymdk/bface/bface.c create mode 100644 keyboards/ymdk/bface/bface.h create mode 100644 keyboards/ymdk/bface/config.h create mode 100644 keyboards/ymdk/bface/info.json create mode 100644 keyboards/ymdk/bface/keymaps/default/config.h create mode 100644 keyboards/ymdk/bface/keymaps/default/keymap.c create mode 100644 keyboards/ymdk/bface/keymaps/default/readme.md create mode 100644 keyboards/ymdk/bface/keymaps/emdarcher/config.h create mode 100644 keyboards/ymdk/bface/keymaps/emdarcher/keymap.c create mode 100644 keyboards/ymdk/bface/keymaps/emdarcher/readme.md create mode 100644 keyboards/ymdk/bface/rules.mk create mode 100644 keyboards/ymdk/bface/usbconfig.h diff --git a/keyboards/ymdk/bface/README.md b/keyboards/ymdk/bface/README.md new file mode 100644 index 00000000000..f6a703beced --- /dev/null +++ b/keyboards/ymdk/bface/README.md @@ -0,0 +1,55 @@ +# The YMDK "Bface" PCB + +![ymdk_bface](https://i.imgur.com/qhFxN0g.jpg) + +A 60% keyboard that runs ps2avrgb natively and fits the popular GH60 form factor. Another "bfake" or clone of the original B.face PCB by [Winkeyless](https://winkeyless.kr/product/b-face-x2-pcb/). This PCB has slightly different switch matrix than the origninal B.face, and is also different than the bfake. It commonly comes as the PCB in 60% keyboard kits sold by YMDK on Aliexpress. + +Keyboard Maintainer: QMK Community +Hardware Supported: White Bface Mini USB PCB with no RGB. +Hardware Availability: [Shenzhen YMD Tech Co. (YMDK) on Aliexpress](https://www.aliexpress.com/item/32799437588.html) + +Make example for this keyboard (after setting up your build environment): + + make ymdk/bface:default + +Flashing: + +ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods. + +This board has a pair of jumper holes on the left edge of the PCB marked "Jb", near TAB and CAPS LOCK. If you short the contacts with tweezers or wire the board will enter into the bootloader and you can flash it. + +Windows: +1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash). +2. Place your keyboard into reset. +3. Press the `Find Device` button and ensure that your keyboard is found. +4. Press the `Open .hex File` button and locate the `.hex` file you created. +5. Press the `Flash Device` button and wait for the process to complete. + +macOS: +1. Install homebrew by typing the following: + ``` + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + ``` +2. Install `crosspack-avr`. + ``` + brew cask install crosspack-avr + ``` +3. Install the following packages: + ``` + brew install python + pip3 install pyusb + brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb + ``` + +4. Place your keyboard into reset by shorting the jumper on the left edge of the PCB.. +5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. + +Another method for Mac or Linux: +After installing `bootloadHID`, you can use the `./util/atmega32a_program.py` program included in QMK. You will need to have `python` and the `pyusb` library installed. + +Then you can run this to compile the firmware and flash the board without using the jumper: +``` +make ymdk/bface:default:program +``` + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ymdk/bface/bface.c b/keyboards/ymdk/bface/bface.c new file mode 100644 index 00000000000..8622fd5238c --- /dev/null +++ b/keyboards/ymdk/bface/bface.c @@ -0,0 +1,41 @@ +/* + * Copyright 2019 Ethan Durrant (emdarcher) + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "quantum.h" + + +void keyboard_pre_init_kb(void){ + //init the CAPS LOCK LED pin as an output + setPinOutput(D1); + //init the Backlight Pin as an output + setPinOutput(D4); + //call any user initialization code + keyboard_pre_init_user(); +} + +void led_set_kb(uint8_t usb_led){ + //control the caps lock LED + if(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)){ + //set led pin to high + writePinHigh(D1); + } else { + //set to low + writePinLow(D1); + } + //call any user LED functions + led_set_user(usb_led); +} + diff --git a/keyboards/ymdk/bface/bface.h b/keyboards/ymdk/bface/bface.h new file mode 100644 index 00000000000..5f1c9578b6b --- /dev/null +++ b/keyboards/ymdk/bface/bface.h @@ -0,0 +1,69 @@ +/* +Copyright 2019 Ethan Durrant (emdarcher) + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all(\ + K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KD4, KE4, \ + K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, \ + K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC2, KD2, \ + K01, K11, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KC1, KD1, KE1, \ + K00, K10, K20, K30, K70, K80, K90, KA0, KB0, KC0, KD0 \ +){ \ + { K00, K10, K20, K30, KC_NO, KC_NO, KC_NO,K70, K80, K90, KA0, KB0, KC0, KD0, KC_NO }, \ + { K01, K11, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KC1, KD1, KE1 }, \ + { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC2, KD2, KC_NO }, \ + { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, KC_NO }, \ + { K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KD4, KE4 }, \ +} +// 0 1 2 3 4 5 6 7 8 9 A B C D E +// A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 D7 + +#define LAYOUT_60_ansi(\ + K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KE4, \ + K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, \ + K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KD2, \ + K01, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KD1, \ + K00, K10, K20, K70, K90, KA0, KC0, KD0 \ +){ \ + { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, K70, KC_NO, K90, KA0, KC_NO, KC0, KD0, KC_NO }, \ + { K01, KC_NO, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KC_NO, KD1, KC_NO }, \ + { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC_NO, KD2, KC_NO }, \ + { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, KC_NO }, \ + { K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KC_NO, KE4 }, \ +} +// 0 1 2 3 4 5 6 7 8 9 A B C D E +// A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 D7 + +#define LAYOUT_60_ansi_split_rshift(\ + K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KE4, \ + K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, \ + K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KD2, \ + K01, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KD1, KE1, \ + K00, K10, K20, K70, K90, KA0, KC0, KD0 \ +){ \ + { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, K70, KC_NO, K90, KA0, KC_NO, KC0, KD0, KC_NO }, \ + { K01, KC_NO, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KC_NO, KD1, KE1 }, \ + { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC_NO, KD2, KC_NO }, \ + { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, KC_NO }, \ + { K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KC_NO, KE4 }, \ +} +// 0 1 2 3 4 5 6 7 8 9 A B C D E +// A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 D7 + diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h new file mode 100644 index 00000000000..8eaa1188eee --- /dev/null +++ b/keyboards/ymdk/bface/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2019 Ethan Durrant (emdarcher) + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define VENDOR_ID 0x20A0 +#define PRODUCT_ID 0x422D +// You can edit those at usbconfig.h about line 250. These values will +// unforunatly be ignored so far +#define MANUFACTURER YMDK +#define PRODUCT bface + +/* matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// 0 1 2 3 4 5 6 7 8 9 A B C D E +#define MATRIX_ROW_PINS { B7, B6, B5, B4, B3} +#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7} +#define UNUSED_PINS + +#define NO_UART 1 + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 6 + + diff --git a/keyboards/ymdk/bface/info.json b/keyboards/ymdk/bface/info.json new file mode 100644 index 00000000000..4e6e831595d --- /dev/null +++ b/keyboards/ymdk/bface/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "YMDK Bface", + "url": "", + "maintainer": "qmk", + "width": 15, + "height": 5, + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0},{"x":13, "y":0}, {"label":"Backspace", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2},{"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":0, "y":3},{"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"x":12, "y":3},{"x":13, "y":3}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.75}, {"x":1.75, "y":4, "w":1.25}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25},{"x":5.5, "y":4, "w":3}, {"x":8.5, "y":4, "w":1.25}, {"x":9.75, "y":4, "w":1.25}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + }, + + "LAYOUT_60_ansi": { + "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] + }, + + "LAYOUT_60_ansi_split_rshift": { + "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] + } + } +} diff --git a/keyboards/ymdk/bface/keymaps/default/config.h b/keyboards/ymdk/bface/keymaps/default/config.h new file mode 100644 index 00000000000..e1a6eb1a2b0 --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/default/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define GRAVE_ESC_ALT_OVERRIDE diff --git a/keyboards/ymdk/bface/keymaps/default/keymap.c b/keyboards/ymdk/bface/keymaps/default/keymap.c new file mode 100644 index 00000000000..9d2a2c9a0ed --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* +Copyright 2019 Ethan Durrant (emdarcher) + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +#define _FL 1 +#define _CL 2 +#define KC_X0 LT(_CL, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + //Base Layer + [0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, + KC_X0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_MENU,KC_RCTL + ), + //FN Layer + [_FL] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_PGDN, KC_END,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, BL_DEC,BL_TOGG, BL_INC,KC_MPLY,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + ), + //CAPS LOCK layer + [_CL] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_UP,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + ), + /* You can copy this layer as base for a new fn layer * / + [n] = LAYOUT_60_ansi( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + ), + */ +}; + diff --git a/keyboards/ymdk/bface/keymaps/default/readme.md b/keyboards/ymdk/bface/keymaps/default/readme.md new file mode 100644 index 00000000000..33c32a5117d --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/default/readme.md @@ -0,0 +1,11 @@ +# Default Keymap + +Base Layer: +![base](https://i.imgur.com/O7rNtDs.jpg) + +Standard ANSI 60% Layout. + +- GESC for ESC key. +- FN layer with media and navigation controls. +- CAPS LOCK layer (when held down) that has arrows mapped to IJKL keys. +- FN+V = Backlight Toggle, FN+C = Backlight Decrease, FN+B = Backlight Increase diff --git a/keyboards/ymdk/bface/keymaps/emdarcher/config.h b/keyboards/ymdk/bface/keymaps/emdarcher/config.h new file mode 100644 index 00000000000..e1a6eb1a2b0 --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/emdarcher/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define GRAVE_ESC_ALT_OVERRIDE diff --git a/keyboards/ymdk/bface/keymaps/emdarcher/keymap.c b/keyboards/ymdk/bface/keymaps/emdarcher/keymap.c new file mode 100644 index 00000000000..86cacfce509 --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/emdarcher/keymap.c @@ -0,0 +1,69 @@ +/* +Copyright 2019 Ethan Durrant (emdarcher) + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +#define _FL 1 +#define _CL 2 +#define _AL 3 +#define KC_X0 LT(_CL, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + //Base layer + [0] = LAYOUT_60_ansi_split_rshift( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, + KC_X0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT,KC_LGUI, KC_SPC, MO(_FL),MO(_AL),KC_RCTL, KC_DOWN + ), + //FN Layer + [_FL] = LAYOUT_60_ansi_split_rshift( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MRWD,KC_MFFD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPLY,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS, KC_TRNS,KC_PGUP, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_PGDN + ), + //CAPS LOCK Layer + [_CL] = LAYOUT_60_ansi_split_rshift( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_HOME, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_END + ), + //Alt layer + [_AL] = LAYOUT_60_ansi_split_rshift( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS + ), + /* You can copy this layer as base for a new fn layer * / + [n] = LAYOUT_60_ansi_split_rshift( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS + ), + */ +}; + diff --git a/keyboards/ymdk/bface/keymaps/emdarcher/readme.md b/keyboards/ymdk/bface/keymaps/emdarcher/readme.md new file mode 100644 index 00000000000..7cba92fab60 --- /dev/null +++ b/keyboards/ymdk/bface/keymaps/emdarcher/readme.md @@ -0,0 +1,14 @@ +# emdarcher's keymap + +Base Layer: +![base](https://i.imgur.com/ie5aF7d.jpg) + +Uses a tweaked 60% ANSI layout with split right shift and up/down keys in the bottom right. Resulted from being used to 65% boards with arrow keys in bottom right and using the up/down arrows a lot in terminal. + +- Page Up/Down, and Home/End have been mapped to the up/down keys on different layers. +- The Caps Lock Layer uses VIM style directions on HJKL keys. +- LGUI moved to Mac Command Key location +- FN2 layer that has arrows on IJKL for one-handed arrow key control. +- Added Print Screen, Scroll Lock, and Pause keys on P,[,] keys to add Mac screen brightness control. + * On Mac, Scroll Lock is Brightness Down and Pause is Brightness Up, so with this FN+[ = brighness down, FN+] = brightness up +- Has Mac Fast-forward and Rewind keys mapped for changing media tracks. FN+; = Rewind, FN+' = Fast-forward diff --git a/keyboards/ymdk/bface/rules.mk b/keyboards/ymdk/bface/rules.mk new file mode 100644 index 00000000000..8f1f83f78ec --- /dev/null +++ b/keyboards/ymdk/bface/rules.mk @@ -0,0 +1,33 @@ +# Copyright 2019 Ethan Durrant (emdarcher) +# +# 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 distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# MCU name +MCU = atmega32a + +# build options +BOOTMAGIC_ENABLE = no +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +BACKLIGHT_ENABLE = yes +BACKLIGHT_CUSTOM_DRIVER = no +BACKLIGHT_BREATHING = no +RGBLIGHT_ENABLE = no +RGBLIGHT_CUSTOM_DRIVER = no + +OPT_DEFS = -DDEBUG_LEVEL=0 +BOOTLOADER = bootloadHID + diff --git a/keyboards/ymdk/bface/usbconfig.h b/keyboards/ymdk/bface/usbconfig.h new file mode 100644 index 00000000000..c9d0fe4d971 --- /dev/null +++ b/keyboards/ymdk/bface/usbconfig.h @@ -0,0 +1,393 @@ +/* Name: usbconfig.h + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2005-04-01 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $ + */ + +#pragma once + +#include "config.h" + +/* +General Description: +This file is an example configuration (with inline documentation) for the USB +driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is +also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may +wire the lines to any other port, as long as D+ is also wired to INT0 (or any +other hardware interrupt, as long as it is the highest level interrupt, see +section at the end of this file). +*/ + +/* ---------------------------- Hardware Config ---------------------------- */ + +#define USB_CFG_IOPORTNAME D +/* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 2 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port. Please note that D+ must also be connected + * to interrupt pin INT0! [You can also use other interrupts, see section + * "Optional MCU Description" below, or you can connect D- to the interrupt, as + * it is required if you use the USB_COUNT_SOF feature. If you use D- for the + * interrupt, the USB interrupt will also be triggered at Start-Of-Frame + * markers every millisecond.] + */ +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ +#define USB_CFG_CHECK_CRC 0 +/* Define this to 1 if you want that the driver checks integrity of incoming + * data packets (CRC checks). CRC checks cost quite a bit of code size and are + * currently only available for 18 MHz crystal clock. You must choose + * USB_CFG_CLOCK_KHZ = 18000 if you enable this option. + */ + +/* ----------------------- Optional Hardware Config ------------------------ */ + +/* #define USB_CFG_PULLUP_IOPORTNAME D */ +/* If you connect the 1.5k pullup resistor from D- to a port pin instead of + * V+, you can connect and disconnect the device from firmware by calling + * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h). + * This constant defines the port on which the pullup resistor is connected. + */ +/* #define USB_CFG_PULLUP_BIT 4 */ +/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined + * above) where the 1.5k pullup resistor is connected. See description + * above for details. + */ + +/* --------------------------- Functional Range ---------------------------- */ + +#define USB_CFG_HAVE_INTRIN_ENDPOINT 1 +/* Define this to 1 if you want to compile a version with two endpoints: The + * default control endpoint 0 and an interrupt-in endpoint (any other endpoint + * number). + */ +#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1 +/* Define this to 1 if you want to compile a version with three endpoints: The + * default control endpoint 0, an interrupt-in endpoint 3 (or the number + * configured below) and a catch-all default interrupt-in endpoint as above. + * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature. + */ +#define USB_CFG_EP3_NUMBER 3 +/* If the so-called endpoint 3 is used, it can now be configured to any other + * endpoint number (except 0) with this macro. Default if undefined is 3. + */ +/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */ +/* The above macro defines the startup condition for data toggling on the + * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1. + * Since the token is toggled BEFORE sending any data, the first packet is + * sent with the oposite value of this configuration! + */ +#define USB_CFG_IMPLEMENT_HALT 0 +/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature + * for endpoint 1 (interrupt endpoint). Although you may not need this feature, + * it is required by the standard. We have made it a config option because it + * bloats the code considerably. + */ +#define USB_CFG_SUPPRESS_INTR_CODE 0 +/* Define this to 1 if you want to declare interrupt-in endpoints, but don't + * want to send any data over them. If this macro is defined to 1, functions + * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if + * you need the interrupt-in endpoints in order to comply to an interface + * (e.g. HID), but never want to send any data. This option saves a couple + * of bytes in flash memory and the transmit buffers in RAM. + */ +#define USB_CFG_INTR_POLL_INTERVAL 1 +/* If you compile a version with endpoint 1 (interrupt-in), this is the poll + * interval. The value is in milliseconds and must not be less than 10 ms for + * low speed devices. + */ +#define USB_CFG_IS_SELF_POWERED 0 +/* Define this to 1 if the device has its own power supply. Set it to 0 if the + * device is powered from the USB bus. + */ +#define USB_CFG_MAX_BUS_POWER 500 +/* Set this variable to the maximum USB bus power consumption of your device. + * The value is in milliamperes. [It will be divided by two since USB + * communicates power requirements in units of 2 mA.] + */ +#define USB_CFG_IMPLEMENT_FN_WRITE 1 +/* Set this to 1 if you want usbFunctionWrite() to be called for control-out + * transfers. Set it to 0 if you don't need it and want to save a couple of + * bytes. + */ +#define USB_CFG_IMPLEMENT_FN_READ 0 +/* Set this to 1 if you need to send control replies which are generated + * "on the fly" when usbFunctionRead() is called. If you only want to send + * data from a static buffer, set it to 0 and return the data from + * usbFunctionSetup(). This saves a couple of bytes. + */ +#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0 +/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints. + * You must implement the function usbFunctionWriteOut() which receives all + * interrupt/bulk data sent to any endpoint other than 0. The endpoint number + * can be found in 'usbRxToken'. + */ +#define USB_CFG_HAVE_FLOWCONTROL 0 +/* Define this to 1 if you want flowcontrol over USB data. See the definition + * of the macros usbDisableAllRequests() and usbEnableAllRequests() in + * usbdrv.h. + */ +#define USB_CFG_DRIVER_FLASH_PAGE 0 +/* If the device has more than 64 kBytes of flash, define this to the 64 k page + * where the driver's constants (descriptors) are located. Or in other words: + * Define this to 1 for boot loaders on the ATMega128. + */ +#define USB_CFG_LONG_TRANSFERS 0 +/* Define this to 1 if you want to send/receive blocks of more than 254 bytes + * in a single control-in or control-out transfer. Note that the capability + * for long transfers increases the driver size. + */ +/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */ +/* This macro is a hook if you want to do unconventional things. If it is + * defined, it's inserted at the beginning of received message processing. + * If you eat the received message and don't want default processing to + * proceed, do a return after doing your things. One possible application + * (besides debugging) is to flash a status LED on each packet. + */ +/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */ +/* This macro is a hook if you need to know when an USB RESET occurs. It has + * one parameter which distinguishes between the start of RESET state and its + * end. + */ +/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */ +/* This macro (if defined) is executed when a USB SET_ADDRESS request was + * received. + */ +#define USB_COUNT_SOF 1 +/* define this macro to 1 if you need the global variable "usbSofCount" which + * counts SOF packets. This feature requires that the hardware interrupt is + * connected to D- instead of D+. + */ +/* #ifdef __ASSEMBLER__ + * macro myAssemblerMacro + * in YL, TCNT0 + * sts timer0Snapshot, YL + * endm + * #endif + * #define USB_SOF_HOOK myAssemblerMacro + * This macro (if defined) is executed in the assembler module when a + * Start Of Frame condition is detected. It is recommended to define it to + * the name of an assembler macro which is defined here as well so that more + * than one assembler instruction can be used. The macro may use the register + * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages + * immediately after an SOF pulse may be lost and must be retried by the host. + * What can you do with this hook? Since the SOF signal occurs exactly every + * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in + * designs running on the internal RC oscillator. + * Please note that Start Of Frame detection works only if D- is wired to the + * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES! + */ +#define USB_CFG_CHECK_DATA_TOGGLING 0 +/* define this macro to 1 if you want to filter out duplicate data packets + * sent by the host. Duplicates occur only as a consequence of communication + * errors, when the host does not receive an ACK. Please note that you need to + * implement the filtering yourself in usbFunctionWriteOut() and + * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable + * for each control- and out-endpoint to check for duplicate packets. + */ +#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0 +/* define this macro to 1 if you want the function usbMeasureFrameLength() + * compiled in. This function can be used to calibrate the AVR's RC oscillator. + */ +#define USB_USE_FAST_CRC 0 +/* The assembler module has two implementations for the CRC algorithm. One is + * faster, the other is smaller. This CRC routine is only used for transmitted + * messages where timing is not critical. The faster routine needs 31 cycles + * per byte while the smaller one needs 61 to 69 cycles. The faster routine + * may be worth the 32 bytes bigger code size if you transmit lots of data and + * run the AVR close to its limit. + */ + +/* -------------------------- Device Description --------------------------- */ + +#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF) +/* USB vendor ID for the device, low byte first. If you have registered your + * own Vendor ID, define it here. Otherwise you may use one of obdev's free + * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules! + * *** IMPORTANT NOTE *** + * This template uses obdev's shared VID/PID pair for Vendor Class devices + * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand + * the implications! + */ +#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF) +/* This is the ID of the product, low byte first. It is interpreted in the + * scope of the vendor ID. If you have registered your own VID with usb.org + * or if you have licensed a PID from somebody else, define it here. Otherwise + * you may use one of obdev's free shared VID/PID pairs. See the file + * USB-IDs-for-free.txt for details! + * *** IMPORTANT NOTE *** + * This template uses obdev's shared VID/PID pair for Vendor Class devices + * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand + * the implications! + */ +#define USB_CFG_DEVICE_VERSION 0x00, 0x02 +/* Version number of the device: Minor number first, then major number. + */ +#define USB_CFG_VENDOR_NAME 'Y', 'M', 'D', 'K' +#define USB_CFG_VENDOR_NAME_LEN 4 +/* These two values define the vendor name returned by the USB device. The name + * must be given as a list of characters under single quotes. The characters + * are interpreted as Unicode (UTF-16) entities. + * If you don't want a vendor name string, undefine these macros. + * ALWAYS define a vendor name containing your Internet domain name if you use + * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for + * details. + */ +#define USB_CFG_DEVICE_NAME 'b', 'f', 'a', 'c', 'e' +#define USB_CFG_DEVICE_NAME_LEN 5 +/* Same as above for the device name. If you don't want a device name, undefine + * the macros. See the file USB-IDs-for-free.txt before you assign a name if + * you use a shared VID/PID. + */ +/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */ +/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */ +/* Same as above for the serial number. If you don't want a serial number, + * undefine the macros. + * It may be useful to provide the serial number through other means than at + * compile time. See the section about descriptor properties below for how + * to fine tune control over USB descriptors such as the string descriptor + * for the serial number. + */ +#define USB_CFG_DEVICE_CLASS 0 +#define USB_CFG_DEVICE_SUBCLASS 0 +/* See USB specification if you want to conform to an existing device class. + * Class 0xff is "vendor specific". + */ +#define USB_CFG_INTERFACE_CLASS 3 /* HID */ +#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */ +#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */ +/* See USB specification if you want to conform to an existing device class or + * protocol. The following classes must be set at interface level: + * HID class is 3, no subclass and protocol required (but may be useful!) + * CDC class is 2, use subclass 2 and protocol 1 for ACM + */ +#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 +/* Define this to the length of the HID report descriptor, if you implement + * an HID device. Otherwise don't define it or define it to 0. + * If you use this define, you must add a PROGMEM character array named + * "usbHidReportDescriptor" to your code which contains the report descriptor. + * Don't forget to keep the array and this define in sync! + */ + +/* #define USB_PUBLIC static */ +/* Use the define above if you #include usbdrv.c instead of linking against it. + * This technique saves a couple of bytes in flash memory. + */ + +/* ------------------- Fine Control over USB Descriptors ------------------- */ +/* If you don't want to use the driver's default USB descriptors, you can + * provide our own. These can be provided as (1) fixed length static data in + * flash memory, (2) fixed length static data in RAM or (3) dynamically at + * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more + * information about this function. + * Descriptor handling is configured through the descriptor's properties. If + * no properties are defined or if they are 0, the default descriptor is used. + * Possible properties are: + * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched + * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is + * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if + * you want RAM pointers. + * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found + * in static memory is in RAM, not in flash memory. + * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash), + * the driver must know the descriptor's length. The descriptor itself is + * found at the address of a well known identifier (see below). + * List of static descriptor names (must be declared PROGMEM if in flash): + * char usbDescriptorDevice[]; + * char usbDescriptorConfiguration[]; + * char usbDescriptorHidReport[]; + * char usbDescriptorString0[]; + * int usbDescriptorStringVendor[]; + * int usbDescriptorStringDevice[]; + * int usbDescriptorStringSerialNumber[]; + * Other descriptors can't be provided statically, they must be provided + * dynamically at runtime. + * + * Descriptor properties are or-ed or added together, e.g.: + * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18)) + * + * The following descriptors are defined: + * USB_CFG_DESCR_PROPS_DEVICE + * USB_CFG_DESCR_PROPS_CONFIGURATION + * USB_CFG_DESCR_PROPS_STRINGS + * USB_CFG_DESCR_PROPS_STRING_0 + * USB_CFG_DESCR_PROPS_STRING_VENDOR + * USB_CFG_DESCR_PROPS_STRING_PRODUCT + * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER + * USB_CFG_DESCR_PROPS_HID + * USB_CFG_DESCR_PROPS_HID_REPORT + * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver) + * + * Note about string descriptors: String descriptors are not just strings, they + * are Unicode strings prefixed with a 2 byte header. Example: + * int serialNumberDescriptor[] = { + * USB_STRING_DESCRIPTOR_HEADER(6), + * 'S', 'e', 'r', 'i', 'a', 'l' + * }; + */ + +#define USB_CFG_DESCR_PROPS_DEVICE 0 +#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0 +#define USB_CFG_DESCR_PROPS_STRINGS 0 +#define USB_CFG_DESCR_PROPS_STRING_0 0 +#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0 +#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0 +#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0 +#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_HID 0 +#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_HID_REPORT 0 +#define USB_CFG_DESCR_PROPS_UNKNOWN 0 + +#define usbMsgPtr_t unsigned short +/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to + * a scalar type here because gcc generates slightly shorter code for scalar + * arithmetics than for pointer arithmetics. Remove this define for backward + * type compatibility or define it to an 8 bit type if you use data in RAM only + * and all RAM is below 256 bytes (tiny memory model in IAR CC). + */ + +/* ----------------------- Optional MCU Description ------------------------ */ + +/* The following configurations have working defaults in usbdrv.h. You + * usually don't need to set them explicitly. Only if you want to run + * the driver on a device which is not yet supported or with a compiler + * which is not fully supported (such as IAR C) or if you use a differnt + * interrupt than INT0, you may have to define some of these. + */ +/* #define USB_INTR_CFG MCUCR */ +/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */ +/* #define USB_INTR_CFG_CLR 0 */ +/* #define USB_INTR_ENABLE GIMSK */ +/* #define USB_INTR_ENABLE_BIT INT0 */ +/* #define USB_INTR_PENDING GIFR */ +/* #define USB_INTR_PENDING_BIT INTF0 */ +/* #define USB_INTR_VECTOR INT0_vect */ + +/* Set INT1 for D- falling edge to count SOF */ +/* #define USB_INTR_CFG EICRA */ +#define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10)) +/* #define USB_INTR_CFG_CLR 0 */ +/* #define USB_INTR_ENABLE EIMSK */ +#define USB_INTR_ENABLE_BIT INT1 +/* #define USB_INTR_PENDING EIFR */ +#define USB_INTR_PENDING_BIT INTF1 +#define USB_INTR_VECTOR INT1_vect From b364a40e60ae13c17cfaa49172e187ff7a25d5e7 Mon Sep 17 00:00:00 2001 From: vuhopkep Date: Wed, 18 Sep 2019 00:23:13 +0700 Subject: [PATCH 07/72] [Keyboard] Correct info.json data for vn66 (#6741) * Correct info.json data for vn66 * update .json file data * Update info.json --- keyboards/vn66/info.json | 6 +++--- keyboards/vn66/vn66.h | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/vn66/info.json b/keyboards/vn66/info.json index 214b93544ad..9756905f991 100644 --- a/keyboards/vn66/info.json +++ b/keyboards/vn66/info.json @@ -6,13 +6,13 @@ "height": 5.25, "layouts": { "LAYOUT_all": { - "layout": [{"label":"ESC", "x":3, "y":0}, {"label":"!", "x":4, "y":0}, {"label":"@", "x":5, "y":0}, {"label":"#", "x":6, "y":0}, {"label":"$", "x":7, "y":0}, {"label":"%", "x":8, "y":0}, {"label":"^", "x":9, "y":0}, {"label":"&", "x":10, "y":0}, {"label":"*", "x":11, "y":0}, {"label":"(", "x":12, "y":0}, {"label":")", "x":13, "y":0}, {"label":"_", "x":14, "y":0}, {"label":"+", "x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"label":"Insert", "x":18.25, "y":0}, {"label":"Tab", "x":3, "y":1, "w":1.5}, {"label":"Q", "x":4.5, "y":1}, {"label":"W", "x":5.5, "y":1}, {"label":"E", "x":6.5, "y":1}, {"label":"R", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"Y", "x":9.5, "y":1}, {"label":"U", "x":10.5, "y":1}, {"label":"I", "x":11.5, "y":1}, {"label":"O", "x":12.5, "y":1}, {"label":"P", "x":13.5, "y":1}, {"label":"{", "x":14.5, "y":1}, {"label":"}", "x":15.5, "y":1}, {"label":"Enter", "x":16.75, "y":1, "w":1.25, "h":2}, {"label":"Delete", "x":18.25, "y":1}, {"label":"Caps", "x":3, "y":2, "w":1.25}, {"label":"A", "x":4.75, "y":2}, {"label":"S", "x":5.75, "y":2}, {"label":"D", "x":6.75, "y":2}, {"label":"F", "x":7.75, "y":2}, {"label":"G", "x":8.75, "y":2}, {"label":"H", "x":9.75, "y":2}, {"label":"J", "x":10.75, "y":2}, {"label":"K", "x":11.75, "y":2}, {"label":"L", "x":12.75, "y":2}, {"label":":", "x":13.75, "y":2}, {"label":"\"", "x":14.75, "y":2}, {"x":15.75, "y":2}, {"x":3, "y":3, "w":1.25}, {"x":4.25, "y":3}, {"label":"Z", "x":5.25, "y":3}, {"label":"X", "x":6.25, "y":3}, {"label":"C", "x":7.25, "y":3}, {"label":"V", "x":8.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"\u2191", "x":17.25, "y":3.25}, {"label":"Ctrl", "x":3, "y":4, "w":1.25}, {"label":"Win", "x":4.25, "y":4}, {"label":"Alt", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":6}, {"label":"Alt", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4}, {"label":"Menu", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.25, "y":4.25}, {"label":"\u2193", "x":17.25, "y":4.25}, {"label":"\u2192", "x":18.25, "y":4.25}] + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15.25, "y":1}, {"label":"Caps", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6}, {"label":"Alt", "x":9.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":4}, {"label":"Menu", "x":11.75, "y":4, "w":1.25}, {"label":"\u2190", "x":13.25, "y":4.25}, {"label":"\u2193", "x":14.25, "y":4.25}, {"label":"\u2192", "x":15.25, "y":4.25}] }, "LAYOUT_ansi": { - "layout": [{"label":"ESC", "x":3, "y":0}, {"label":"!", "x":4, "y":0}, {"label":"@", "x":5, "y":0}, {"label":"#", "x":6, "y":0}, {"label":"$", "x":7, "y":0}, {"label":"%", "x":8, "y":0}, {"label":"^", "x":9, "y":0}, {"label":"&", "x":10, "y":0}, {"label":"*", "x":11, "y":0}, {"label":"(", "x":12, "y":0}, {"label":")", "x":13, "y":0}, {"label":"_", "x":14, "y":0}, {"label":"+", "x":15, "y":0}, {"x":16, "y":0, "w":2}, {"label":"Insert", "x":18.25, "y":0}, {"label":"Tab", "x":3, "y":1, "w":1.5}, {"label":"Q", "x":4.5, "y":1}, {"label":"W", "x":5.5, "y":1}, {"label":"E", "x":6.5, "y":1}, {"label":"R", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"Y", "x":9.5, "y":1}, {"label":"U", "x":10.5, "y":1}, {"label":"I", "x":11.5, "y":1}, {"label":"O", "x":12.5, "y":1}, {"label":"P", "x":13.5, "y":1}, {"label":"{", "x":14.5, "y":1}, {"label":"}", "x":15.5, "y":1}, {"x":16.5, "y":1, "w":1.5}, {"label":"Delete", "x":18.25, "y":1}, {"label":"Caps", "x":3, "y":2, "w":1.25}, {"label":"A", "x":4.75, "y":2}, {"label":"S", "x":5.75, "y":2}, {"label":"D", "x":6.75, "y":2}, {"label":"F", "x":7.75, "y":2}, {"label":"G", "x":8.75, "y":2}, {"label":"H", "x":9.75, "y":2}, {"label":"J", "x":10.75, "y":2}, {"label":"K", "x":11.75, "y":2}, {"label":"L", "x":12.75, "y":2}, {"label":":", "x":13.75, "y":2}, {"label":"\"", "x":14.75, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2}, {"label":"Shift", "x":3, "y":3, "w":2.25}, {"label":"Z", "x":5.25, "y":3}, {"label":"X", "x":6.25, "y":3}, {"label":"C", "x":7.25, "y":3}, {"label":"V", "x":8.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"Shift", "x":14.25, "y":3, "w":2.75}, {"label":"\u2191", "x":17.25, "y":3.25}, {"label":"Ctrl", "x":3, "y":4, "w":1.25}, {"label":"Win", "x":4.25, "y":4, "w":1.25}, {"label":"Alt", "x":5.5, "y":4, "w":1.25}, {"x":6.75, "y":4, "w":6.25}, {"label":"Alt", "x":13, "y":4, "w":1.5}, {"label":"Ctrl", "x":14.5, "y":4, "w":1.5}, {"label":"\u2190", "x":16.25, "y":4.25}, {"label":"\u2193", "x":17.25, "y":4.25}, {"label":"\u2192", "x":18.25, "y":4.25}] + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0, "w":2}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15.25, "y":1}, {"label":"Caps", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6}, {"label":"Alt", "x":9.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":4}, {"label":"Menu", "x":11.75, "y":4, "w":1.25}, {"label":"\u2190", "x":13.25, "y":4.25}, {"label":"\u2193", "x":14.25, "y":4.25}, {"label":"\u2192", "x":15.25, "y":4.25}] }, "LAYOUT_iso": { - "layout": [{"label":"ESC", "x":3, "y":0}, {"label":"!", "x":4, "y":0}, {"label":"@", "x":5, "y":0}, {"label":"#", "x":6, "y":0}, {"label":"$", "x":7, "y":0}, {"label":"%", "x":8, "y":0}, {"label":"^", "x":9, "y":0}, {"label":"&", "x":10, "y":0}, {"label":"*", "x":11, "y":0}, {"label":"(", "x":12, "y":0}, {"label":")", "x":13, "y":0}, {"label":"_", "x":14, "y":0}, {"label":"+", "x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"label":"Insert", "x":18.25, "y":0}, {"label":"Tab", "x":3, "y":1, "w":1.5}, {"label":"Q", "x":4.5, "y":1}, {"label":"W", "x":5.5, "y":1}, {"label":"E", "x":6.5, "y":1}, {"label":"R", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"Y", "x":9.5, "y":1}, {"label":"U", "x":10.5, "y":1}, {"label":"I", "x":11.5, "y":1}, {"label":"O", "x":12.5, "y":1}, {"label":"P", "x":13.5, "y":1}, {"label":"{", "x":14.5, "y":1}, {"label":"}", "x":15.5, "y":1}, {"label":"Enter", "x":16.75, "y":1, "w":1.25, "h":2}, {"label":"Delete", "x":18.25, "y":1}, {"label":"Caps", "x":3, "y":2, "w":1.25}, {"label":"A", "x":4.75, "y":2}, {"label":"S", "x":5.75, "y":2}, {"label":"D", "x":6.75, "y":2}, {"label":"F", "x":7.75, "y":2}, {"label":"G", "x":8.75, "y":2}, {"label":"H", "x":9.75, "y":2}, {"label":"J", "x":10.75, "y":2}, {"label":"K", "x":11.75, "y":2}, {"label":"L", "x":12.75, "y":2}, {"label":":", "x":13.75, "y":2}, {"label":"\"", "x":14.75, "y":2}, {"x":15.75, "y":2}, {"x":3, "y":3, "w":1.25}, {"x":4.25, "y":3}, {"label":"Z", "x":5.25, "y":3}, {"label":"X", "x":6.25, "y":3}, {"label":"C", "x":7.25, "y":3}, {"label":"V", "x":8.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"\u2191", "x":17.25, "y":3.25}, {"label":"Ctrl", "x":3, "y":4, "w":1.25}, {"label":"Win", "x":4.25, "y":4}, {"label":"Alt", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":6}, {"label":"Alt", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4}, {"label":"Menu", "x":14.75, "y":4, "w":1.25}, {"label":"\u2190", "x":16.25, "y":4.25}, {"label":"\u2193", "x":17.25, "y":4.25}, {"label":"\u2192", "x":18.25, "y":4.25}] + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0, "w":2}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":15.25, "y":1}, {"label":"Caps", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6}, {"label":"Alt", "x":9.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":4}, {"label":"Menu", "x":11.75, "y":4, "w":1.25}, {"label":"\u2190", "x":13.25, "y":4.25}, {"label":"\u2193", "x":14.25, "y":4.25}, {"label":"\u2192", "x":15.25, "y":4.25}] } } } \ No newline at end of file diff --git a/keyboards/vn66/vn66.h b/keyboards/vn66/vn66.h index c1bb997973b..8e4c1764141 100644 --- a/keyboards/vn66/vn66.h +++ b/keyboards/vn66/vn66.h @@ -41,28 +41,28 @@ } #define LAYOUT_ansi( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, k4c,\ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k4b,\ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k41, k42, k44, k45, k46, k47, k48, k49, k4a \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4c,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k4b,\ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k44, k45, k46, k47, k48, k49, k4a \ ) LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, k4c,\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, KC_NO, k4c,\ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k4b,\ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d, \ + k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ k40, k41, k42, k44, k45, k46, k47, k48, k49, k4a \ ) #define LAYOUT_iso( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, k4c,\ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k4b,\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4c,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k4b,\ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ k40, k41, k42, k44, k45, k46, k47, k48, k49, k4a \ ) LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k4d, k4c,\ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k4b,\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, KC_NO, k4c,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, KC_NO, k4b,\ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ k40, k41, k42, k44, k45, k46, k47, k48, k49, k4a \ From bb3569dce39ef43b78d3da06d832311d16cbbe5f Mon Sep 17 00:00:00 2001 From: Drew Smathers Date: Tue, 17 Sep 2019 10:24:15 -0700 Subject: [PATCH 08/72] [Keymap] idobo/drewdobo keymap v1 (#6744) --- keyboards/idobo/keymaps/drewdobo/config.h | 23 ++++++++ keyboards/idobo/keymaps/drewdobo/keymap.c | 65 ++++++++++++++++++++++ keyboards/idobo/keymaps/drewdobo/readme.md | 1 + keyboards/idobo/keymaps/drewdobo/rules.mk | 17 ++++++ 4 files changed, 106 insertions(+) create mode 100644 keyboards/idobo/keymaps/drewdobo/config.h create mode 100644 keyboards/idobo/keymaps/drewdobo/keymap.c create mode 100644 keyboards/idobo/keymaps/drewdobo/readme.md create mode 100644 keyboards/idobo/keymaps/drewdobo/rules.mk diff --git a/keyboards/idobo/keymaps/drewdobo/config.h b/keyboards/idobo/keymaps/drewdobo/config.h new file mode 100644 index 00000000000..58787ce12b9 --- /dev/null +++ b/keyboards/idobo/keymaps/drewdobo/config.h @@ -0,0 +1,23 @@ +/* Copyright 2017 Benjamin Kesselring + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +// place overrides here + + +#define TAPPING_TOGGLE 5 diff --git a/keyboards/idobo/keymaps/drewdobo/keymap.c b/keyboards/idobo/keymaps/drewdobo/keymap.c new file mode 100644 index 00000000000..9dfc335e823 --- /dev/null +++ b/keyboards/idobo/keymaps/drewdobo/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2020 Drew Smathers + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Keyboard Layers +enum layer_names { + _QW, + _QW_MAC, + _FN, + _MOUSE, +}; + +// Some short-cut aliases +#define Z_LALT LALT_T(KC_ESC) +#define Z_MAC DF(_QW_MAC) +#define Z_PC DF(_QW) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QW] = LAYOUT_ortho_5x15( /* QWERTY */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, \ + Z_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RALT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, XXXXXXX, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + TT(_FN), XXXXXXX, XXXXXXX, TT(_MOUSE), KC_EQL, KC_BSPC, KC_DEL, XXXXXXX, KC_ENT, KC_SPC, KC_MINUS, KC_GRAVE, KC_LBRC, KC_RBRC, XXXXXXX \ + ), + + [_QW_MAC] = LAYOUT_ortho_5x15( /* QWERTY MAC */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BRMU, KC_MUTE, KC__VOLUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BRMD, XXXXXXX, KC__VOLDOWN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, \ + Z_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RALT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCMD, XXXXXXX, KC_RCMD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + TT(_FN), KC_LCTL, XXXXXXX, TT(_MOUSE), KC_EQL, KC_BSPC, KC_DEL, XXXXXXX, KC_ENT, KC_SPC, KC_MINUS, KC_GRAVE, KC_LBRC, KC_RBRC, KC_RCTL \ + ), + + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, RESET, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, Z_MAC, _______, XXXXXXX, KC_HOME, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, \ + TT(_FN), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, Z_PC, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + ), + + [_MOUSE] = LAYOUT_ortho_5x15( /* MOUSE */ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + TT(_FN), XXXXXXX, XXXXXXX, TT(_MOUSE), XXXXXXX, KC_ACL1, KC_ACL2, XXXXXXX, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + ) +}; diff --git a/keyboards/idobo/keymaps/drewdobo/readme.md b/keyboards/idobo/keymaps/drewdobo/readme.md new file mode 100644 index 00000000000..209808ca87f --- /dev/null +++ b/keyboards/idobo/keymaps/drewdobo/readme.md @@ -0,0 +1 @@ +# Drew's thumb-friendly keymap for idobo boards diff --git a/keyboards/idobo/keymaps/drewdobo/rules.mk b/keyboards/idobo/keymaps/drewdobo/rules.mk new file mode 100644 index 00000000000..f9bbfd4948c --- /dev/null +++ b/keyboards/idobo/keymaps/drewdobo/rules.mk @@ -0,0 +1,17 @@ +# Copyright 2013 Jun Wako +# +# 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 distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +MOUSEKEY_ENABLE = yes From 2493eecc7b318193263dc410fae9a010a6dde574 Mon Sep 17 00:00:00 2001 From: Jason Thigpen Date: Tue, 17 Sep 2019 10:27:07 -0700 Subject: [PATCH 09/72] [Keymap] Fix e65 7u WK layout and add crd's personal keymap (#6750) * Add e65 keymap for crd * Fix e65 7u wk layout --- keyboards/exclusive/e65/e65.h | 16 +++++----- keyboards/exclusive/e65/keymaps/crd/keymap.c | 31 +++++++++++++++++++ keyboards/exclusive/e65/keymaps/crd/readme.md | 7 +++++ 3 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 keyboards/exclusive/e65/keymaps/crd/keymap.c create mode 100644 keyboards/exclusive/e65/keymaps/crd/readme.md diff --git a/keyboards/exclusive/e65/e65.h b/keyboards/exclusive/e65/e65.h index 0a977049d63..4b9fff75c56 100644 --- a/keyboards/exclusive/e65/e65.h +++ b/keyboards/exclusive/e65/e65.h @@ -198,13 +198,13 @@ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) { \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \ - { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413, K414, K415 } \ + { K400, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, KC_NO, K413, K414, K415 } \ } #define LAYOUT_65_ansi_7u_wk( \ @@ -212,13 +212,13 @@ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) LAYOUT_65_all_7u_wk( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, \ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) #define LAYOUT_65_ansi_7u_wk_splitbs( \ @@ -226,13 +226,13 @@ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) LAYOUT_65_all_7u_wk( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) #define LAYOUT_65_iso_7u_wk( \ @@ -240,13 +240,13 @@ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K214, K215, \ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) LAYOUT_65_all_7u_wk( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015, \ K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ - K400, K401, K402, K406, K411, K413, K414, K415 \ + K400, K401, K403, K406, K411, K413, K414, K415 \ ) // layout with bottom row 1.5,blocker,1.5,7,1.5, blocker, <-,v,-> diff --git a/keyboards/exclusive/e65/keymaps/crd/keymap.c b/keyboards/exclusive/e65/keymaps/crd/keymap.c new file mode 100644 index 00000000000..38a1944ef9b --- /dev/null +++ b/keyboards/exclusive/e65/keymaps/crd/keymap.c @@ -0,0 +1,31 @@ +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL = 0, // Base Layer + _FL, // Function Layer + _LL // Lights layer +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BL] = LAYOUT_65_ansi_7u_wk_splitbs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, LT(_FL, KC_UP), KC_DEL, + MO(_LL), KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FL] = LAYOUT_65_ansi_7u_wk_splitbs( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + + [_LL] = LAYOUT_65_ansi_7u_wk_splitbs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAD, + _______, _______, _______, _______, _______, RGB_RMOD, RGB_HUD, RGB_MOD), +}; \ No newline at end of file diff --git a/keyboards/exclusive/e65/keymaps/crd/readme.md b/keyboards/exclusive/e65/keymaps/crd/readme.md new file mode 100644 index 00000000000..ac58f84249a --- /dev/null +++ b/keyboards/exclusive/e65/keymaps/crd/readme.md @@ -0,0 +1,7 @@ +# crd's Keymap + +Difference from base layout: + * split backspace + * blocker bottom row + * HHKB Fn layer on Up key when held + * lights layer on left Ctrl From c427023b31f544771391b4cd22d797ee14cadac3 Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Tue, 17 Sep 2019 12:28:02 -0500 Subject: [PATCH 10/72] [Keymap][Xulkal] User code update (#6752) * Updating rgb menu behavior * Fixing toggle keycode to work how I want it * Enabling auto scroll timeout --- users/xulkal/config.h | 4 ++++ users/xulkal/custom_rgb.c | 22 +++++++++++----------- users/xulkal/process_records.c | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/users/xulkal/config.h b/users/xulkal/config.h index c794530d456..4b05ea4ec4d 100644 --- a/users/xulkal/config.h +++ b/users/xulkal/config.h @@ -28,3 +28,7 @@ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS #define DISABLE_RGB_MATRIX_SPLASH #define DISABLE_RGB_MATRIX_SOLID_SPLASH + +// 20m timeout (20m * 60s * 1000mil) +#define RGB_DISABLE_TIMEOUT 1200000 +#define OLED_SCROLL_TIMEOUT 20000 diff --git a/users/xulkal/custom_rgb.c b/users/xulkal/custom_rgb.c index 11bfad1d7a3..f68a7c56c08 100644 --- a/users/xulkal/custom_rgb.c +++ b/users/xulkal/custom_rgb.c @@ -10,17 +10,17 @@ void rgb_matrix_increase_flags(void) } break; case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - case LED_FLAG_UNDERGLOW: { rgb_matrix_set_flags(LED_FLAG_NONE); rgb_matrix_disable_noeeprom(); } break; - default: { + case LED_FLAG_UNDERGLOW: { rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); rgb_matrix_enable_noeeprom(); } break; @@ -31,8 +31,8 @@ void rgb_matrix_decrease_flags(void) { switch (rgb_matrix_get_flags()) { case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_disable_noeeprom(); + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); } break; case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: { @@ -41,12 +41,12 @@ void rgb_matrix_decrease_flags(void) } break; case LED_FLAG_UNDERGLOW: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); - rgb_matrix_set_color_all(0, 0, 0); + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); } break; default: { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); rgb_matrix_enable_noeeprom(); } break; diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c index 9c0274823bd..ca2376145df 100644 --- a/users/xulkal/process_records.c +++ b/users/xulkal/process_records.c @@ -40,7 +40,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) #ifdef RGB_MATRIX_TOG_LAYERS case RGB_TOG: if (record->event.pressed) { - rgb_matrix_decrease_flags(); + rgb_matrix_increase_flags(); } return false; #endif From 86d59f1034785b9cd8cc2bfcce7016cd97d041e9 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 17 Sep 2019 10:34:52 -0700 Subject: [PATCH 11/72] [Keyboard] KBD75 refactor (#6755) * convert codebase to #pragma once * fix file includes - quantum.h is included at keyboard level, redundant at revision level - keyboard-level path is accessible at revision level, remove relative pathing * duplicate common layout macros from rev1 to rev2 Add the layout macros supported by both rev1 and rev2 to rev2.h directly, which exposes these layouts to QMK Configurator. * enable community layout support (75_ansi, 75_iso) * add LAYOUT_75_iso layout data It needs its own tree because its keys are in a different order from LAYOUT_iso_1u even though the physical layout is the same. * minimize rules.mk files (use QMK defaults) * use atmel-dfu bootloader rule * fix typo on rev1 info.json --- keyboards/kbdfans/kbd75/config.h | 5 +- keyboards/kbdfans/kbd75/kbd75.h | 8 +- keyboards/kbdfans/kbd75/rev1/info.json | 90 ++++++++++++++++ keyboards/kbdfans/kbd75/rev1/rev1.h | 34 +++++-- keyboards/kbdfans/kbd75/rev1/rules.mk | 44 +------- keyboards/kbdfans/kbd75/rev2/info.json | 90 ++++++++++++++++ keyboards/kbdfans/kbd75/rev2/rev2.h | 136 +++++++++++++++++++++++-- keyboards/kbdfans/kbd75/rev2/rules.mk | 44 +------- 8 files changed, 347 insertions(+), 104 deletions(-) diff --git a/keyboards/kbdfans/kbd75/config.h b/keyboards/kbdfans/kbd75/config.h index 611e682e54c..a9dc487db14 100644 --- a/keyboards/kbdfans/kbd75/config.h +++ b/keyboards/kbdfans/kbd75/config.h @@ -1,5 +1,4 @@ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -46,5 +45,3 @@ #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #endif - -#endif diff --git a/keyboards/kbdfans/kbd75/kbd75.h b/keyboards/kbdfans/kbd75/kbd75.h index ad8706ba97e..e4122428782 100644 --- a/keyboards/kbdfans/kbd75/kbd75.h +++ b/keyboards/kbdfans/kbd75/kbd75.h @@ -2,12 +2,8 @@ #include "quantum.h" -#ifdef KEYBOARD_kbdfans_kbd75_rev1 +#if defined(KEYBOARD_kbdfans_kbd75_rev1) #include "rev1.h" -#endif - -#ifdef KEYBOARD_kbdfans_kbd75_rev2 - #include "../rev1/rev1.h" +#elif defined(KEYBOARD_kbdfans_kbd75_rev2) #include "rev2.h" #endif - diff --git a/keyboards/kbdfans/kbd75/rev1/info.json b/keyboards/kbdfans/kbd75/rev1/info.json index 4f963c2d801..7f9e04fdfc0 100644 --- a/keyboards/kbdfans/kbd75/rev1/info.json +++ b/keyboards/kbdfans/kbd75/rev1/info.json @@ -28,6 +28,96 @@ "LAYOUT_iso": { "key_count": 84, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"AltGr", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] + }, + + "LAYOUT_75_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Scroll Lock", "x":14, "y":0}, + {"label":"Pause", "x":15, "y":0}, + {"label":"`", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"-", "x":11, "y":1}, + {"label":"=", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"[", "x":11.5, "y":2}, + {"label":"]", "x":12.5, "y":2}, + {"label":"PgUp", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":";", "x":10.75, "y":3}, + {"label":"'", "x":11.75, "y":3}, + {"label":"ISO #", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"ISO \\", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":",", "x":9.25, "y":4}, + {"label":".", "x":10.25, "y":4}, + {"label":"/", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"AltGr", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] } } } diff --git a/keyboards/kbdfans/kbd75/rev1/rev1.h b/keyboards/kbdfans/kbd75/rev1/rev1.h index fd3e6e48822..97474f16b14 100644 --- a/keyboards/kbdfans/kbd75/rev1/rev1.h +++ b/keyboards/kbdfans/kbd75/rev1/rev1.h @@ -1,8 +1,6 @@ -#ifndef REV1_H -#define REV1_H +#pragma once -#include "quantum.h" -#include "../kbd75.h" +#include "kbd75.h" /* LAYOUT * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -20,7 +18,7 @@ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┴───┘ */ -// LAYOUT for all possible switch positions on a KBD75 +// LAYOUT for all possible switch positions on a KBD75 rev 1 #define LAYOUT( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ @@ -44,7 +42,7 @@ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ */ - #define LAYOUT_ansi_1u( \ +#define LAYOUT_ansi_1u( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ @@ -53,13 +51,15 @@ K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ ) { \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \ } +#define LAYOUT_75_ansi LAYOUT_ansi_1u + #define LAYOUT_iso_1u( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ @@ -76,6 +76,22 @@ { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \ } +#define LAYOUT_75_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K313, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) LAYOUT_iso_1u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K313, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) + /* normal bottom row ──────────────────────── ↓ ─── ↓ * ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┬───┬───┐ @@ -83,7 +99,7 @@ * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘ */ - #define LAYOUT_ansi( \ +#define LAYOUT_ansi( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ @@ -114,5 +130,3 @@ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \ } - -#endif diff --git a/keyboards/kbdfans/kbd75/rev1/rules.mk b/keyboards/kbdfans/kbd75/rev1/rules.mk index 9c4082da29f..421894a387b 100644 --- a/keyboards/kbdfans/kbd75/rev1/rules.mk +++ b/keyboards/kbdfans/kbd75/rev1/rules.mk @@ -1,44 +1,8 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +BOOTLOADER = atmel-dfu # Build Options @@ -53,4 +17,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no -RGBLIGHT_ENABLE = yes \ No newline at end of file +RGBLIGHT_ENABLE = yes + +LAYOUTS = 75_ansi 75_iso diff --git a/keyboards/kbdfans/kbd75/rev2/info.json b/keyboards/kbdfans/kbd75/rev2/info.json index 31a5d3117cd..c6ff35e9d86 100644 --- a/keyboards/kbdfans/kbd75/rev2/info.json +++ b/keyboards/kbdfans/kbd75/rev2/info.json @@ -32,6 +32,96 @@ "LAYOUT_numpad": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"label":"Home", "x":13, "y":1}, {"label":"_", "x":14, "y":1}, {"label":"+", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"|", "x":11.5, "y":2, "w":1.5}, {"label":"Page Up", "x":13, "y":2}, {"label":"{", "x":14, "y":2}, {"label":"}", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":"Enter", "x":10.75, "y":3, "w":2.25}, {"label":"Page Down", "x":13, "y":3}, {"label":":", "x":14, "y":3}, {"label":"\"", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"?", "x":9.25, "y":4}, {"label":"Shift", "x":10.25, "y":4, "w":1.75}, {"label":"\u2191", "x":12, "y":4}, {"label":"End", "x":13, "y":4}, {"label":"<", "x":14, "y":4}, {"label":">", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":1.25}, {"x":5, "y":5, "w":2.25}, {"x":7.25, "y":5, "w":1.75}, {"x":9, "y":5}, {"label":"Alt", "x":10, "y":5}, {"label":"\u2190", "x":11, "y":5}, {"label":"\u2193", "x":12, "y":5}, {"label":"\u2192", "x":13, "y":5}, {"label":"Fn", "x":14, "y":5}, {"label":"Ctrl", "x":15, "y":5}] + }, + + "LAYOUT_75_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Scroll Lock", "x":14, "y":0}, + {"label":"Pause", "x":15, "y":0}, + {"label":"`", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"-", "x":11, "y":1}, + {"label":"=", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"[", "x":11.5, "y":2}, + {"label":"]", "x":12.5, "y":2}, + {"label":"PgUp", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":";", "x":10.75, "y":3}, + {"label":"'", "x":11.75, "y":3}, + {"label":"ISO #", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"ISO \\", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":",", "x":9.25, "y":4}, + {"label":".", "x":10.25, "y":4}, + {"label":"/", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"AltGr", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] } } } diff --git a/keyboards/kbdfans/kbd75/rev2/rev2.h b/keyboards/kbdfans/kbd75/rev2/rev2.h index f2a1fead299..73baf31d377 100644 --- a/keyboards/kbdfans/kbd75/rev2/rev2.h +++ b/keyboards/kbdfans/kbd75/rev2/rev2.h @@ -1,9 +1,135 @@ -#ifndef REV2_H -#define REV2_H +#pragma once -#include "quantum.h" -#include "../kbd75.h" +#include "kbd75.h" +/* LAYOUT + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │1.5U │ │ │ │ │ │ │ │ │ │ │ │ │1.5U │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │1.75U │ │ │ │ │ │ │ │ │ │ │ │2.25U │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │2.25U │ │ │ │ │ │ │ │ │ │ │1.75U │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │1.25│1.25│1.25│2.25U │1.25│2.75U │ │ │ │ │ │ │ + * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┴───┘ + */ + +// LAYOUT for all possible switch positions on a KBD75 rev 1 +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K504, K506, K508, K510, K511, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, KC_NO, K503, K504, KC_NO, K506, KC_NO, K508, KC_NO, K510, K511, K512, K513, K514, K515 } \ +} + + +/* 1U bottom row ─────────────────────────── ↓ ─ ↓ ─ ↓ + * ┌────┬────┬────┬────────────────────────┬───┬───┬───┬───┬───┬───┐ + * │1.25│1.25│1.25│6.25U │1U │1U │1U │1U │1U │1U │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ + +#define LAYOUT_ansi_1u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \ +} + +#define LAYOUT_75_ansi LAYOUT_ansi_1u + +#define LAYOUT_iso_1u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K313, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \ +} + +#define LAYOUT_75_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K313, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) LAYOUT_iso_1u( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K313, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +) + + +/* normal bottom row ──────────────────────── ↓ ─── ↓ + * ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┬───┬───┐ + * │1.25│1.25│1.25│6.25U │1.5U │1.5U │1U │1U │1U │ + * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘ + */ + +#define LAYOUT_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \ +} + +#define LAYOUT_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K313, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K214, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K503, K506, K510, K512, K513, K514, K515 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \ +} // LAYOUT for all possible switch positions on a KBD75 rev 2 #define LAYOUT_numpad( \ @@ -21,5 +147,3 @@ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ { K500, K501, KC_NO, K503, K504, KC_NO, K506, KC_NO, K508, K509, K510, K511, K512, K513, K514, K515 } \ } - -#endif diff --git a/keyboards/kbdfans/kbd75/rev2/rules.mk b/keyboards/kbdfans/kbd75/rev2/rules.mk index 9c4082da29f..421894a387b 100644 --- a/keyboards/kbdfans/kbd75/rev2/rules.mk +++ b/keyboards/kbdfans/kbd75/rev2/rules.mk @@ -1,44 +1,8 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +BOOTLOADER = atmel-dfu # Build Options @@ -53,4 +17,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no -RGBLIGHT_ENABLE = yes \ No newline at end of file +RGBLIGHT_ENABLE = yes + +LAYOUTS = 75_ansi 75_iso From 12cdcd5e104353d757def68d8b51e6a15760eaa8 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 17 Sep 2019 10:36:18 -0700 Subject: [PATCH 12/72] [Keyboard] Freyr: Configurator bugfixes (#6756) - rebuild LAYOUT_all tree (key count mismatch) - correct keyboard dimensions and key positioning - complete key object labels - debug linting (one key object per line; changes white space only) --- keyboards/freyr/info.json | 288 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 280 insertions(+), 8 deletions(-) diff --git a/keyboards/freyr/info.json b/keyboards/freyr/info.json index f201aec1e4f..22fc96fa240 100644 --- a/keyboards/freyr/info.json +++ b/keyboards/freyr/info.json @@ -1,18 +1,290 @@ { - "keyboard_name": "freyr", - "url": "", - "maintainer": "qmk", - "width": 21.25, - "height": 6.5, + "keyboard_name": "freyr", + "url": "", + "maintainer": "vuhopkep", + "width": 18.25, + "height": 6.25, "layouts": { "LAYOUT_all": { - "layout": [{"label":"Esc", "x":3, "y":0.25}, {"label":"F1", "x":5, "y":0.25}, {"label":"F2", "x":6, "y":0.25}, {"label":"F3", "x":7, "y":0.25}, {"label":"F4", "x":8, "y":0.25}, {"label":"F5", "x":9.5, "y":0.25}, {"label":"F6", "x":10.5, "y":0.25}, {"label":"F7", "x":11.5, "y":0.25}, {"label":"F8", "x":12.5, "y":0.25}, {"label":"F9", "x":14, "y":0.25}, {"label":"F10", "x":15, "y":0.25}, {"label":"F11", "x":16, "y":0.25}, {"label":"F12", "x":17, "y":0.25}, {"label":"PrtSc", "x":18.25, "y":0.25}, {"label":"Scroll Lock", "x":19.25, "y":0.25}, {"label":"Pause", "x":20.25, "y":0.25}, {"label":"~", "x":3, "y":1.5}, {"label":"!", "x":4, "y":1.5}, {"label":"@", "x":5, "y":1.5}, {"label":"#", "x":6, "y":1.5}, {"label":"$", "x":7, "y":1.5}, {"label":"%", "x":8, "y":1.5}, {"label":"^", "x":9, "y":1.5}, {"label":"&", "x":10, "y":1.5}, {"label":"*", "x":11, "y":1.5}, {"label":"(", "x":12, "y":1.5}, {"label":")", "x":13, "y":1.5}, {"label":"_", "x":14, "y":1.5}, {"label":"+", "x":15, "y":1.5}, {"label":"Backspace", "x":16, "y":1.5, "w":2}, {"label":"Insert", "x":18.25, "y":1.5}, {"label":"Home", "x":19.25, "y":1.5}, {"label":"PgUp", "x":20.25, "y":1.5}, {"label":"Tab", "x":3, "y":2.5, "w":1.5}, {"label":"Q", "x":4.5, "y":2.5}, {"label":"W", "x":5.5, "y":2.5}, {"label":"E", "x":6.5, "y":2.5}, {"label":"R", "x":7.5, "y":2.5}, {"label":"T", "x":8.5, "y":2.5}, {"label":"Y", "x":9.5, "y":2.5}, {"label":"U", "x":10.5, "y":2.5}, {"label":"I", "x":11.5, "y":2.5}, {"label":"O", "x":12.5, "y":2.5}, {"label":"P", "x":13.5, "y":2.5}, {"label":"{", "x":14.5, "y":2.5}, {"label":"}", "x":15.5, "y":2.5}, {"label":"Enter", "x":16.75, "y":2.5, "w":1.25, "h":2}, {"label":"Delete", "x":18.25, "y":2.5}, {"label":"End", "x":19.25, "y":2.5}, {"label":"PgDn", "x":20.25, "y":2.5}, {"label":"Caps", "x":3, "y":3.5, "w":1.25}, {"label":"A", "x":4.75, "y":3.5}, {"label":"S", "x":5.75, "y":3.5}, {"label":"D", "x":6.75, "y":3.5}, {"label":"F", "x":7.75, "y":3.5}, {"label":"G", "x":8.75, "y":3.5}, {"label":"H", "x":9.75, "y":3.5}, {"label":"J", "x":10.75, "y":3.5}, {"label":"K", "x":11.75, "y":3.5}, {"label":"L", "x":12.75, "y":3.5}, {"label":":", "x":13.75, "y":3.5}, {"label":"\"", "x":14.75, "y":3.5}, {"x":15.75, "y":3.5}, {"label":"Shift", "x":3, "y":4.5, "w":1.25}, {"x":4.25, "y":4.5}, {"label":"Z", "x":5.25, "y":4.5}, {"label":"X", "x":6.25, "y":4.5}, {"label":"C", "x":7.25, "y":4.5}, {"label":"V", "x":8.25, "y":4.5}, {"label":"B", "x":9.25, "y":4.5}, {"label":"N", "x":10.25, "y":4.5}, {"label":"M", "x":11.25, "y":4.5}, {"label":"<", "x":12.25, "y":4.5}, {"label":">", "x":13.25, "y":4.5}, {"label":"?", "x":14.25, "y":4.5}, {"x":15.25, "y":4.5}, {"x":16.25, "y":4.5, "w":1.75}, {"label":"\u2191", "x":19.25, "y":4.5}, {"label":"Ctrl", "x":3, "y":5.5, "w":1.25}, {"label":"Win", "x":4.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":5.5, "y":5.5, "w":1.25}, {"x":6.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":13, "y":5.5, "w":1.25}, {"label":"Win", "x":14.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18.25, "y":5.5}, {"label":"\u2193", "x":19.25, "y":5.5}, {"label":"\u2192", "x":20.25, "y":5.5}] + "key_count": 91, + "layout": [ + {"label":"Esc (k00)", "x":0, "y":0}, + {"label":"F1 (k01)", "x":2, "y":0}, + {"label":"F2 (k02)", "x":3, "y":0}, + {"label":"F3 (k03)", "x":4, "y":0}, + {"label":"F4 (k04)", "x":5, "y":0}, + {"label":"F5 (k06)", "x":6.5, "y":0}, + {"label":"F6 (k07)", "x":7.5, "y":0}, + {"label":"F7 (k08)", "x":8.5, "y":0}, + {"label":"F8 (k09)", "x":9.5, "y":0}, + {"label":"F9 (k60)", "x":11, "y":0}, + {"label":"F10 (k61)", "x":12, "y":0}, + {"label":"F11 (k62)", "x":13, "y":0}, + {"label":"F12 (k63)", "x":14, "y":0}, + {"label":"PrtSc (k64)", "x":15.25, "y":0}, + {"label":"Scroll Lock (k65)", "x":16.25, "y":0}, + {"label":"Pause (k66)", "x":17.25, "y":0}, + {"label":"~ (k10)", "x":0, "y":1.25}, + {"label":"! (k11)", "x":1, "y":1.25}, + {"label":"@ (k12)", "x":2, "y":1.25}, + {"label":"# (k13)", "x":3, "y":1.25}, + {"label":"$ (k14)", "x":4, "y":1.25}, + {"label":"% (k15)", "x":5, "y":1.25}, + {"label":"^ (k16)", "x":6, "y":1.25}, + {"label":"& (k17)", "x":7, "y":1.25}, + {"label":"* (k18)", "x":8, "y":1.25}, + {"label":"( (k19)", "x":9, "y":1.25}, + {"label":") (k70)", "x":10, "y":1.25}, + {"label":"_ (k71)", "x":11, "y":1.25}, + {"label":"+ (k72)", "x":12, "y":1.25}, + {"label":"Backspace (k73)", "x":13, "y":1.25}, + {"label":"Backspace2 (k74)", "x":14, "y":1.25}, + {"label":"Insert (k75)", "x":15.25, "y":1.25}, + {"label":"Home (k76)", "x":16.25, "y":1.25}, + {"label":"PgUp (k67)", "x":17.25, "y":1.25}, + {"label":"Tab (k20)", "x":0, "y":2.25, "w":1.5}, + {"label":"Q (k21)", "x":1.5, "y":2.25}, + {"label":"W (k22)", "x":2.5, "y":2.25}, + {"label":"E (k23)", "x":3.5, "y":2.25}, + {"label":"R (k24)", "x":4.5, "y":2.25}, + {"label":"T (k25)", "x":5.5, "y":2.25}, + {"label":"Y (k26)", "x":6.5, "y":2.25}, + {"label":"U (k27)", "x":7.5, "y":2.25}, + {"label":"I (k28)", "x":8.5, "y":2.25}, + {"label":"O (k29)", "x":9.5, "y":2.25}, + {"label":"P (k80)", "x":10.5, "y":2.25}, + {"label":"{ (k81)", "x":11.5, "y":2.25}, + {"label":"} (k82)", "x":12.5, "y":2.25}, + {"label":"| (k83)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete (k78)", "x":15.25, "y":2.25}, + {"label":"End (k77)", "x":16.25, "y":2.25}, + {"label":"PgDn (k68)", "x":17.25, "y":2.25}, + {"label":"Caps Lock (k30)", "x":0, "y":3.25, "w":1.75}, + {"label":"A (k31)", "x":1.75, "y":3.25}, + {"label":"S (k32)", "x":2.75, "y":3.25}, + {"label":"D (k33)", "x":3.75, "y":3.25}, + {"label":"F (k34)", "x":4.75, "y":3.25}, + {"label":"G (k35)", "x":5.75, "y":3.25}, + {"label":"H (k36)", "x":6.75, "y":3.25}, + {"label":"J (k37)", "x":7.75, "y":3.25}, + {"label":"K (k38)", "x":8.75, "y":3.25}, + {"label":"L (k39)", "x":9.75, "y":3.25}, + {"label":": (k90)", "x":10.75, "y":3.25}, + {"label":"\" (k91)", "x":11.75, "y":3.25}, + {"label":"~ (k92)", "x":12.75, "y":3.25}, + {"label":"Enter (k84)", "x":13.75, "y":3.25, "w":1.25}, + {"label":"Shift (k40)", "x":0, "y":4.25, "w":1.25}, + {"label":"| (k41)", "x":1.25, "y":4.25}, + {"label":"Z (k42)", "x":2.25, "y":4.25}, + {"label":"X (k43)", "x":3.25, "y":4.25}, + {"label":"C (k44)", "x":4.25, "y":4.25}, + {"label":"V (k45)", "x":5.25, "y":4.25}, + {"label":"B (k46)", "x":6.25, "y":4.25}, + {"label":"N (k47)", "x":7.25, "y":4.25}, + {"label":"M (k48)", "x":8.25, "y":4.25}, + {"label":"< (k49)", "x":9.25, "y":4.25}, + {"label":"> (k95)", "x":10.25, "y":4.25}, + {"label":"? (k94)", "x":11.25, "y":4.25}, + {"label":"JP Ro (k85)", "x":12.25, "y":4.25}, + {"label":"Shift (k93)", "x":13.25, "y":4.25, "w":1.75}, + {"label":"Up (k79)", "x":16.25, "y":4.25}, + {"label":"Ctrl (k50)", "x":0, "y":5.25, "w":1.25}, + {"label":"Win (k51)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt (k52)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space (k53)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt (k54)", "x":10, "y":5.25, "w":1.25}, + {"label":"Win (k55)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu (k56)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl (k57)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"Left (k58)", "x":15.25, "y":5.25}, + {"label":"Down (k59)", "x":16.25, "y":5.25}, + {"label":"Right (k69)", "x":17.25, "y":5.25} + ] }, "LAYOUT_tkl_ansi": { - "layout": [{"label":"Esc", "x":3, "y":0.25}, {"label":"F1", "x":5, "y":0.25}, {"label":"F2", "x":6, "y":0.25}, {"label":"F3", "x":7, "y":0.25}, {"label":"F4", "x":8, "y":0.25}, {"label":"F5", "x":9.5, "y":0.25}, {"label":"F6", "x":10.5, "y":0.25}, {"label":"F7", "x":11.5, "y":0.25}, {"label":"F8", "x":12.5, "y":0.25}, {"label":"F9", "x":14, "y":0.25}, {"label":"F10", "x":15, "y":0.25}, {"label":"F11", "x":16, "y":0.25}, {"label":"F12", "x":17, "y":0.25}, {"label":"PrtSc", "x":18.25, "y":0.25}, {"label":"Scroll Lock", "x":19.25, "y":0.25}, {"label":"Pause", "x":20.25, "y":0.25}, {"label":"~", "x":3, "y":1.5}, {"label":"!", "x":4, "y":1.5}, {"label":"@", "x":5, "y":1.5}, {"label":"#", "x":6, "y":1.5}, {"label":"$", "x":7, "y":1.5}, {"label":"%", "x":8, "y":1.5}, {"label":"^", "x":9, "y":1.5}, {"label":"&", "x":10, "y":1.5}, {"label":"*", "x":11, "y":1.5}, {"label":"(", "x":12, "y":1.5}, {"label":")", "x":13, "y":1.5}, {"label":"_", "x":14, "y":1.5}, {"label":"+", "x":15, "y":1.5}, {"label":"Backspace", "x":16, "y":1.5, "w":2}, {"label":"Insert", "x":18.25, "y":1.5}, {"label":"Home", "x":19.25, "y":1.5}, {"label":"PgUp", "x":20.25, "y":1.5}, {"label":"Tab", "x":3, "y":2.5, "w":1.5}, {"label":"Q", "x":4.5, "y":2.5}, {"label":"W", "x":5.5, "y":2.5}, {"label":"E", "x":6.5, "y":2.5}, {"label":"R", "x":7.5, "y":2.5}, {"label":"T", "x":8.5, "y":2.5}, {"label":"Y", "x":9.5, "y":2.5}, {"label":"U", "x":10.5, "y":2.5}, {"label":"I", "x":11.5, "y":2.5}, {"label":"O", "x":12.5, "y":2.5}, {"label":"P", "x":13.5, "y":2.5}, {"label":"{", "x":14.5, "y":2.5}, {"label":"}", "x":15.5, "y":2.5}, {"label":"|", "x":16.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":18.25, "y":2.5}, {"label":"End", "x":19.25, "y":2.5}, {"label":"PgDn", "x":20.25, "y":2.5}, {"label":"Caps Lock", "x":3, "y":3.5, "w":1.75}, {"label":"A", "x":4.75, "y":3.5}, {"label":"S", "x":5.75, "y":3.5}, {"label":"D", "x":6.75, "y":3.5}, {"label":"F", "x":7.75, "y":3.5}, {"label":"G", "x":8.75, "y":3.5}, {"label":"H", "x":9.75, "y":3.5}, {"label":"J", "x":10.75, "y":3.5}, {"label":"K", "x":11.75, "y":3.5}, {"label":"L", "x":12.75, "y":3.5}, {"label":":", "x":13.75, "y":3.5}, {"label":"\"", "x":14.75, "y":3.5}, {"label":"Enter", "x":15.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":3, "y":4.5, "w":2.25}, {"label":"Z", "x":5.25, "y":4.5}, {"label":"X", "x":6.25, "y":4.5}, {"label":"C", "x":7.25, "y":4.5}, {"label":"V", "x":8.25, "y":4.5}, {"label":"B", "x":9.25, "y":4.5}, {"label":"N", "x":10.25, "y":4.5}, {"label":"M", "x":11.25, "y":4.5}, {"label":"<", "x":12.25, "y":4.5}, {"label":">", "x":13.25, "y":4.5}, {"label":"?", "x":14.25, "y":4.5}, {"label":"Shift", "x":15.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":19.25, "y":4.5}, {"label":"Ctrl", "x":3, "y":5.5, "w":1.25}, {"label":"Win", "x":4.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":5.5, "y":5.5, "w":1.25}, {"x":6.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":13, "y":5.5, "w":1.25}, {"label":"Win", "x":14.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18.25, "y":5.5}, {"label":"\u2193", "x":19.25, "y":5.5}, {"label":"\u2192", "x":20.25, "y":5.5}] + "key_count": 87, + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.25}, + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.25}, + {"label":"Down", "x":16.25, "y":5.25}, + {"label":"Right", "x":17.25, "y":5.25} + ] }, "LAYOUT_tkl_iso": { - "layout": [{"label":"Esc", "x":3, "y":0.25}, {"label":"F1", "x":5, "y":0.25}, {"label":"F2", "x":6, "y":0.25}, {"label":"F3", "x":7, "y":0.25}, {"label":"F4", "x":8, "y":0.25}, {"label":"F5", "x":9.5, "y":0.25}, {"label":"F6", "x":10.5, "y":0.25}, {"label":"F7", "x":11.5, "y":0.25}, {"label":"F8", "x":12.5, "y":0.25}, {"label":"F9", "x":14, "y":0.25}, {"label":"F10", "x":15, "y":0.25}, {"label":"F11", "x":16, "y":0.25}, {"label":"F12", "x":17, "y":0.25}, {"label":"PrtSc", "x":18.25, "y":0.25}, {"label":"Scroll Lock", "x":19.25, "y":0.25}, {"label":"Pause", "x":20.25, "y":0.25}, {"label":"~", "x":3, "y":1.5}, {"label":"!", "x":4, "y":1.5}, {"label":"@", "x":5, "y":1.5}, {"label":"#", "x":6, "y":1.5}, {"label":"$", "x":7, "y":1.5}, {"label":"%", "x":8, "y":1.5}, {"label":"^", "x":9, "y":1.5}, {"label":"&", "x":10, "y":1.5}, {"label":"*", "x":11, "y":1.5}, {"label":"(", "x":12, "y":1.5}, {"label":")", "x":13, "y":1.5}, {"label":"_", "x":14, "y":1.5}, {"label":"+", "x":15, "y":1.5}, {"label":"Backspace", "x":16, "y":1.5, "w":2}, {"label":"Insert", "x":18.25, "y":1.5}, {"label":"Home", "x":19.25, "y":1.5}, {"label":"PgUp", "x":20.25, "y":1.5}, {"label":"Tab", "x":3, "y":2.5, "w":1.5}, {"label":"Q", "x":4.5, "y":2.5}, {"label":"W", "x":5.5, "y":2.5}, {"label":"E", "x":6.5, "y":2.5}, {"label":"R", "x":7.5, "y":2.5}, {"label":"T", "x":8.5, "y":2.5}, {"label":"Y", "x":9.5, "y":2.5}, {"label":"U", "x":10.5, "y":2.5}, {"label":"I", "x":11.5, "y":2.5}, {"label":"O", "x":12.5, "y":2.5}, {"label":"P", "x":13.5, "y":2.5}, {"label":"{", "x":14.5, "y":2.5}, {"label":"}", "x":15.5, "y":2.5}, {"label":"Enter", "x":16.75, "y":2.5, "w":1.25, "h":2}, {"label":"Delete", "x":18.25, "y":2.5}, {"label":"End", "x":19.25, "y":2.5}, {"label":"PgDn", "x":20.25, "y":2.5}, {"label":"Caps Lock", "x":3, "y":3.5, "w":1.75}, {"label":"A", "x":4.75, "y":3.5}, {"label":"S", "x":5.75, "y":3.5}, {"label":"D", "x":6.75, "y":3.5}, {"label":"F", "x":7.75, "y":3.5}, {"label":"G", "x":8.75, "y":3.5}, {"label":"H", "x":9.75, "y":3.5}, {"label":"J", "x":10.75, "y":3.5}, {"label":"K", "x":11.75, "y":3.5}, {"label":"L", "x":12.75, "y":3.5}, {"label":":", "x":13.75, "y":3.5}, {"label":"\"", "x":14.75, "y":3.5}, {"x":15.75, "y":3.5}, {"label":"Shift", "x":3, "y":4.5, "w":1.25}, {"x":4.25, "y":4.5}, {"label":"Z", "x":5.25, "y":4.5}, {"label":"X", "x":6.25, "y":4.5}, {"label":"C", "x":7.25, "y":4.5}, {"label":"V", "x":8.25, "y":4.5}, {"label":"B", "x":9.25, "y":4.5}, {"label":"N", "x":10.25, "y":4.5}, {"label":"M", "x":11.25, "y":4.5}, {"label":"<", "x":12.25, "y":4.5}, {"label":">", "x":13.25, "y":4.5}, {"label":"?", "x":14.25, "y":4.5}, {"label":"Shift", "x":15.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":19.25, "y":4.5}, {"label":"Ctrl", "x":3, "y":5.5, "w":1.25}, {"label":"Win", "x":4.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":5.5, "y":5.5, "w":1.25}, {"x":6.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":13, "y":5.5, "w":1.25}, {"label":"Win", "x":14.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18.25, "y":5.5}, {"label":"\u2193", "x":19.25, "y":5.5}, {"label":"\u2192", "x":20.25, "y":5.5}] + "key_count": 88, + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"\u00ac", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"\"", "x":2, "y":1.25}, + {"label":"\u00a3", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"@", "x":11.75, "y":3.25}, + {"label":"~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.25}, + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"AltGr", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.25}, + {"label":"Down", "x":16.25, "y":5.25}, + {"label":"Right", "x":17.25, "y":5.25} + ] } } } From 23186d32a36e5ca114e71fc2807c5e4a133edfa7 Mon Sep 17 00:00:00 2001 From: fougner Date: Tue, 17 Sep 2019 19:37:01 +0200 Subject: [PATCH 13/72] [Keyboard] xd87: add capslock led support (#6758) --- keyboards/xd87/xd87.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/keyboards/xd87/xd87.c b/keyboards/xd87/xd87.c index da07c71d88b..e14480b054a 100644 --- a/keyboards/xd87/xd87.c +++ b/keyboards/xd87/xd87.c @@ -18,7 +18,7 @@ void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up - + led_init_ports(); matrix_init_user(); } @@ -39,5 +39,15 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { void led_set_kb(uint8_t usb_led) { // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { + writePinLow(E2); + } else { + writePinHigh(E2); + } + led_set_user(usb_led); } + +void led_init_ports(void) { + setPinOutput(E2); +} From 54503168c93b6322975e3144c929cffe6c74d36c Mon Sep 17 00:00:00 2001 From: fauxpark Date: Wed, 18 Sep 2019 09:48:58 +1000 Subject: [PATCH 14/72] Update bootloader.mk (#6698) --- bootloader.mk | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/bootloader.mk b/bootloader.mk index 9d73063d0fc..d615533947b 100644 --- a/bootloader.mk +++ b/bootloader.mk @@ -19,12 +19,14 @@ # # Sets the bootloader defined in the keyboard's/keymap's rules.mk # Current options: -# atmel-dfu -# lufa-dfu -# qmk-dfu -# halfkay -# caterina -# bootloadHID +# +# halfkay PJRC Teensy +# caterina Pro Micro (Sparkfun/generic) +# atmel-dfu Atmel factory DFU +# lufa-dfu LUFA DFU +# qmk-dfu QMK DFU (LUFA + blinkenlight) +# bootloadHID HIDBootFlash compatible (ATmega32A) +# USBasp USBaspLoader (ATmega328P) # # BOOTLOADER_SIZE can still be defined manually, but it's recommended # you add any possible configuration to this list @@ -32,40 +34,40 @@ ifeq ($(strip $(BOOTLOADER)), atmel-dfu) OPT_DEFS += -DBOOTLOADER_ATMEL_DFU OPT_DEFS += -DBOOTLOADER_DFU - ifeq ($(strip $(MCU)), atmega32u4) - BOOTLOADER_SIZE = 4096 + ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4)) + BOOTLOADER_SIZE = 4096 endif ifeq ($(strip $(MCU)), at90usb1286) - BOOTLOADER_SIZE = 8192 + BOOTLOADER_SIZE = 8192 endif endif ifeq ($(strip $(BOOTLOADER)), lufa-dfu) OPT_DEFS += -DBOOTLOADER_LUFA_DFU OPT_DEFS += -DBOOTLOADER_DFU - ifeq ($(strip $(MCU)), atmega32u4) - BOOTLOADER_SIZE = 4096 + ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4)) + BOOTLOADER_SIZE = 4096 endif ifeq ($(strip $(MCU)), at90usb1286) - BOOTLOADER_SIZE = 8192 + BOOTLOADER_SIZE = 8192 endif endif ifeq ($(strip $(BOOTLOADER)), qmk-dfu) OPT_DEFS += -DBOOTLOADER_QMK_DFU OPT_DEFS += -DBOOTLOADER_DFU - ifeq ($(strip $(MCU)), atmega32u4) - BOOTLOADER_SIZE = 4096 + ifneq (,$(filter $(MCU), at90usb646 atmega16u2 atmega16u4 atmega32u2 atmega32u4)) + BOOTLOADER_SIZE = 4096 endif ifeq ($(strip $(MCU)), at90usb1286) - BOOTLOADER_SIZE = 8192 + BOOTLOADER_SIZE = 8192 endif endif ifeq ($(strip $(BOOTLOADER)), halfkay) OPT_DEFS += -DBOOTLOADER_HALFKAY ifeq ($(strip $(MCU)), atmega32u4) - BOOTLOADER_SIZE = 512 + BOOTLOADER_SIZE = 512 endif ifeq ($(strip $(MCU)), at90usb1286) - BOOTLOADER_SIZE = 1024 + BOOTLOADER_SIZE = 1024 endif endif ifeq ($(strip $(BOOTLOADER)), caterina) From 37c29961379f39dd60f173b4b82df41a4f80b078 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 17 Sep 2019 16:50:04 -0700 Subject: [PATCH 15/72] [Keyboard] Fix compile issues for OLKB Default keymaps (#6751) --- keyboards/planck/keymaps/default/keymap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index e3818fec7a1..3d44088bbab 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -292,7 +292,9 @@ void encoder_update(bool clockwise) { void dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { +#ifdef AUDIO_ENABLE static bool play_sound = false; +#endif if (active) { #ifdef AUDIO_ENABLE if (play_sound) { PLAY_SONG(plover_song); } @@ -304,7 +306,9 @@ void dip_switch_update_user(uint8_t index, bool active) { #endif layer_off(_ADJUST); } +#ifdef AUDIO_ENABLE play_sound = true; +#endif break; } case 1: From 7d8dea30a460da2c3e163713252e53c43211c123 Mon Sep 17 00:00:00 2001 From: vuhopkep Date: Wed, 18 Sep 2019 13:36:05 +0700 Subject: [PATCH 16/72] [Keyboard] add personal fullsize pcb hnah108 (#6759) * add personal fullsize pcb hnah108 * Update keymap.c --- keyboards/handwired/hnah108/config.h | 245 ++++++++++++++++++ keyboards/handwired/hnah108/hnah108.c | 43 +++ keyboards/handwired/hnah108/hnah108.h | 72 +++++ keyboards/handwired/hnah108/info.json | 18 ++ .../hnah108/keymaps/default/config.h | 19 ++ .../hnah108/keymaps/default/keymap.c | 76 ++++++ .../hnah108/keymaps/default/readme.md | 1 + keyboards/handwired/hnah108/readme.md | 14 + keyboards/handwired/hnah108/rules.mk | 49 ++++ 9 files changed, 537 insertions(+) create mode 100644 keyboards/handwired/hnah108/config.h create mode 100644 keyboards/handwired/hnah108/hnah108.c create mode 100644 keyboards/handwired/hnah108/hnah108.h create mode 100644 keyboards/handwired/hnah108/info.json create mode 100644 keyboards/handwired/hnah108/keymaps/default/config.h create mode 100644 keyboards/handwired/hnah108/keymaps/default/keymap.c create mode 100644 keyboards/handwired/hnah108/keymaps/default/readme.md create mode 100644 keyboards/handwired/hnah108/readme.md create mode 100644 keyboards/handwired/hnah108/rules.mk diff --git a/keyboards/handwired/hnah108/config.h b/keyboards/handwired/hnah108/config.h new file mode 100644 index 00000000000..b2d84e3e38a --- /dev/null +++ b/keyboards/handwired/hnah108/config.h @@ -0,0 +1,245 @@ +/* +Copyright 2019 HnahKB + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0002 +#define MANUFACTURER HnahKB +#define PRODUCT Hnah108 +#define DESCRIPTION Fullsize PCB keyboard + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 11 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS \ + { F7, F6, F5, F4, F1, C7, B4, B5, B6, C6 } +#define MATRIX_COL_PINS \ + { F0, E6, B0, D0, D1, D2, D3, D5, D4, D6, D7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + + +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } + +#define ENCODER_RESOLUTION 4 + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 4 + +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 31 + +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +/* defined by default; to change, uncomment and set to the combination you want */ +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP H +//#define MAGIC_KEY_HELP_ALT SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER0_ALT GRAVE +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_BOOTLOADER_ALT ESC +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_EEPROM_CLEAR BSPACE +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + +/* + * HD44780 LCD Display Configuration + */ +/* +#define LCD_LINES 2 //< number of visible lines of the display +#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display + +#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode + +#if LCD_IO_MODE +#define LCD_PORT PORTB //< port for the LCD lines +#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 +#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 +#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 +#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 +#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 +#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 +#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 +#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 +#define LCD_RS_PORT LCD_PORT //< port for RS line +#define LCD_RS_PIN 3 //< pin for RS line +#define LCD_RW_PORT LCD_PORT //< port for RW line +#define LCD_RW_PIN 2 //< pin for RW line +#define LCD_E_PORT LCD_PORT //< port for Enable line +#define LCD_E_PIN 1 //< pin for Enable line +#endif +*/ diff --git a/keyboards/handwired/hnah108/hnah108.c b/keyboards/handwired/hnah108/hnah108.c new file mode 100644 index 00000000000..a05cc4fe121 --- /dev/null +++ b/keyboards/handwired/hnah108/hnah108.c @@ -0,0 +1,43 @@ +/* Copyright 2019 HnahKB + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "hnah108.h" + + + +led_config_t g_led_config = { { + //Key Matrix to LED Index + { 18, 17, 16,NO_LED, 15, 14,NO_LED,NO_LED, 13, 12,NO_LED}, + {NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED}, + {19, NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED}, + {NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED}, + {20, NO_LED,NO_LED,NO_LED,NO_LED,24 ,NO_LED,NO_LED,26 ,NO_LED,NO_LED}, + { 21, 22, 23, 25, 27,NO_LED, 28, 29,NO_LED, 0, 1}, + { 11, 10,NO_LED, 9,NO_LED, 8,NO_LED, 7, 6,NO_LED, 5}, + {NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED, 4}, + {NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED, 3}, + {NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED,NO_LED, 2} +}, { + //LED Index to Physical Positon + { 0, 0}, { 18, 0}, { 37, 0 }, { 56, 0}, { 74, 0}, { 93, 0}, { 112, 0 }, { 130, 0}, { 149, 0}, { 168, 0}, { 186, 0 }, { 205, 0}, + { 0, 25} , { 205, 25}, + { 0, 51} , { 205, 51}, + { 0, 63} , { 18, 63}, { 37, 63}, { 56, 63}, { 74, 63}, { 93, 63}, { 112, 63}, { 130, 63},{ 149, 63}, { 168, 63}, { 186, 63 }, { 205, 63}, +}, { + 1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1, + 1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1, +} }; \ No newline at end of file diff --git a/keyboards/handwired/hnah108/hnah108.h b/keyboards/handwired/hnah108/hnah108.h new file mode 100644 index 00000000000..64695a41645 --- /dev/null +++ b/keyboards/handwired/hnah108/hnah108.h @@ -0,0 +1,72 @@ +/* Copyright 2019 HnahKB + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, k65, k66, k67, k68, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k82, k83, k84, k85, k86, k87, k79, k6A, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k93, k94, k96, k97, k88, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A }, \ + { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7A }, \ + { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8A }, \ + { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9A }, \ +} + +#define LAYOUT_fullsize_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k83, k84, k85, k86, k87, k79, k6A, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k93, k94, k96, k97, k88, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \ +) LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, KC_NO, k83, k84, k85, k86, k87, k79, k6A, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k93, k94, k96, k97, k88, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \ +) + +#define LAYOUT_fullsize_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k82, k83, k84, k85, k86, k87, k79, k6A, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k94, k96, k97, k88, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \ +) LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k82, k83, k84, k85, k86, k87, k79, k6A, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91,KC_NO,k94, k96, k97, k88, \ + k40,KC_NO,k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \ + k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \ +) diff --git a/keyboards/handwired/hnah108/info.json b/keyboards/handwired/hnah108/info.json new file mode 100644 index 00000000000..2a99c4891a0 --- /dev/null +++ b/keyboards/handwired/hnah108/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "hnah108", + "url": "", + "maintainer": "HnahKB", + "width": 22.5, + "height": 6.25, + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":21.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}] + }, + "LAYOUT_fullsize_iso": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}] + }, + "LAYOUT_fullsize_ansi": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/hnah108/keymaps/default/config.h b/keyboards/handwired/hnah108/keymaps/default/config.h new file mode 100644 index 00000000000..348d7c5513b --- /dev/null +++ b/keyboards/handwired/hnah108/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 HnahKB + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/handwired/hnah108/keymaps/default/keymap.c b/keyboards/handwired/hnah108/keymaps/default/keymap.c new file mode 100644 index 00000000000..a0f06fe1fdf --- /dev/null +++ b/keyboards/handwired/hnah108/keymaps/default/keymap.c @@ -0,0 +1,76 @@ +/* Copyright 2019 HnahKB + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum hnah_layers{ + _QWERTY, + _FN +}; + +#define LOWER MO(_FN) +#define RAISE MO(_QWERTY) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_all( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MYCM, KC_CALC, KC_MPLY, LOWER, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_SLSH, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [_FN] = LAYOUT_all( /* Base */ + RESET, BL_STEP,RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRIU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______, _______, _______ + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_FN)) { /* First encoder */ + if (clockwise) { + rgb_matrix_step(); + } else { + rgb_matrix_step_reverse(); + } + } else { + if (clockwise) { + rgb_matrix_increase_speed(); + } else { + rgb_matrix_decrease_speed(); + } + } +} + +void rgb_matrix_indicators_user(void) +{ + if IS_HOST_LED_ON(USB_LED_CAPS_LOCK) + { + rgb_matrix_set_color(30, 0x00, 0xFF, 0x00); + } else if IS_HOST_LED_ON(USB_LED_NUM_LOCK) + { + rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); + } else if IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) + { + rgb_matrix_set_color(30, 0x00, 0x00, 0xFF); + } else { + rgb_matrix_set_color(30, 0x00, 0x00, 0x00); + } +} \ No newline at end of file diff --git a/keyboards/handwired/hnah108/keymaps/default/readme.md b/keyboards/handwired/hnah108/keymaps/default/readme.md new file mode 100644 index 00000000000..37477efdb1a --- /dev/null +++ b/keyboards/handwired/hnah108/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for hnah108 \ No newline at end of file diff --git a/keyboards/handwired/hnah108/readme.md b/keyboards/handwired/hnah108/readme.md new file mode 100644 index 00000000000..d4cd6a18028 --- /dev/null +++ b/keyboards/handwired/hnah108/readme.md @@ -0,0 +1,14 @@ +# hnah108 + +![hnah108](https://i.imgur.com/rV0lM8M.jpg) + +A Full size keyboard pcb with rotary encoder. Used ws2811 IC as a indicator LED driver + +Keyboard Maintainer: [HnahKB](https://github.com/vuhopkep) +Hardware Supported: Hnah108 v1 + +Make example for this keyboard (after setting up your build environment): + + make handwired/hnah108:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/hnah108/rules.mk b/keyboards/handwired/hnah108/rules.mk new file mode 100644 index 00000000000..f881a08bfe2 --- /dev/null +++ b/keyboards/handwired/hnah108/rules.mk @@ -0,0 +1,49 @@ +# MCU name +MCU = atmega32u4 + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = atmel-dfu + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) +ENCODER_ENABLE = yes +RGB_MATRIX_ENABLE = WS2812 + +# Supported layouts +LAYOUTS = fullsize_ansi fullsize_iso From 6f5f943bb91185e9dacc499fcc97550348223e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20T=C3=A9tar?= <1250894+adrientetar@users.noreply.github.com> Date: Wed, 18 Sep 2019 20:14:49 +0200 Subject: [PATCH 17/72] [Keyboard] Introduce AT-AT 660M (#6729) * Introduce AT-AT 660M * PR feedback Co-Authored-By: fauxpark * Add dfu-util args * Add URL --- keyboards/at_at/660m/660m.c | 1 + keyboards/at_at/660m/660m.h | 19 + .../boards/ST_STM32F072B_DISCOVERY/board.c | 109 +++ .../boards/ST_STM32F072B_DISCOVERY/board.h | 922 ++++++++++++++++++ .../boards/ST_STM32F072B_DISCOVERY/board.mk | 5 + .../ST_STM32F072B_DISCOVERY/cfg/board.chcfg | 703 +++++++++++++ keyboards/at_at/660m/bootloader_defs.h | 7 + keyboards/at_at/660m/chconf.h | 524 ++++++++++ keyboards/at_at/660m/config.h | 66 ++ keyboards/at_at/660m/halconf.h | 354 +++++++ keyboards/at_at/660m/info.json | 18 + keyboards/at_at/660m/keymaps/default/keymap.c | 43 + keyboards/at_at/660m/mcuconf.h | 176 ++++ keyboards/at_at/660m/readme.md | 14 + keyboards/at_at/660m/rules.mk | 53 + 15 files changed, 3014 insertions(+) create mode 100644 keyboards/at_at/660m/660m.c create mode 100644 keyboards/at_at/660m/660m.h create mode 100644 keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.c create mode 100644 keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.h create mode 100644 keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.mk create mode 100644 keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg create mode 100644 keyboards/at_at/660m/bootloader_defs.h create mode 100644 keyboards/at_at/660m/chconf.h create mode 100644 keyboards/at_at/660m/config.h create mode 100644 keyboards/at_at/660m/halconf.h create mode 100644 keyboards/at_at/660m/info.json create mode 100644 keyboards/at_at/660m/keymaps/default/keymap.c create mode 100644 keyboards/at_at/660m/mcuconf.h create mode 100644 keyboards/at_at/660m/readme.md create mode 100644 keyboards/at_at/660m/rules.mk diff --git a/keyboards/at_at/660m/660m.c b/keyboards/at_at/660m/660m.c new file mode 100644 index 00000000000..1a54df3be5f --- /dev/null +++ b/keyboards/at_at/660m/660m.c @@ -0,0 +1 @@ +#include "660m.h" diff --git a/keyboards/at_at/660m/660m.h b/keyboards/at_at/660m/660m.h new file mode 100644 index 00000000000..78b6ea4aeec --- /dev/null +++ b/keyboards/at_at/660m/660m.h @@ -0,0 +1,19 @@ +#pragma once + +#include "quantum.h" + +#define KNO KC_NO + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \ + k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, KNO, k0F }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KNO, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KNO, k2D, KNO, KNO }, \ + { k30, KNO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, KNO, k3E, KNO }, \ + { k40, k41, k42, KNO, KNO, KNO, k46, KNO, KNO, KNO, k4A, k4B, k4C, k4D, k4E, k4F } \ +} diff --git a/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.c b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.c new file mode 100644 index 00000000000..9d10fbd754d --- /dev/null +++ b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.c @@ -0,0 +1,109 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#include "hal.h" + +#if HAL_USE_PAL || defined(__DOXYGEN__) +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +const PALConfig pal_default_config = { +#if STM32_HAS_GPIOA + {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, + VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH}, +#endif +#if STM32_HAS_GPIOB + {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, + VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH}, +#endif +#if STM32_HAS_GPIOC + {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, + VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH}, +#endif +#if STM32_HAS_GPIOD + {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, + VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH}, +#endif +#if STM32_HAS_GPIOE + {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, + VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH}, +#endif +#if STM32_HAS_GPIOF + {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, + VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH}, +#endif +#if STM32_HAS_GPIOG + {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, + VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH}, +#endif +#if STM32_HAS_GPIOH + {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, + VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH}, +#endif +#if STM32_HAS_GPIOI + {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, + VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH} +#endif +}; +#endif + +void enter_bootloader_mode_if_requested(void); + +/** + * @brief Early initialization code. + * @details This initialization must be performed just after stack setup + * and before any other initialization. + */ +void __early_init(void) { + enter_bootloader_mode_if_requested(); + stm32_clock_init(); +} + +#if HAL_USE_MMC_SPI || defined(__DOXYGEN__) +/** + * @brief MMC_SPI card detection. + */ +bool mmc_lld_is_card_inserted(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return true; +} + +/** + * @brief MMC_SPI card write protection detection. + */ +bool mmc_lld_is_write_protected(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return false; +} +#endif + +/** + * @brief Board-specific initialization code. + * @todo Add your board-specific code, if any. + */ +void boardInit(void) { +} diff --git a/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.h b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.h new file mode 100644 index 00000000000..de3a93d1ceb --- /dev/null +++ b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.h @@ -0,0 +1,922 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#ifndef BOARD_H +#define BOARD_H + +/* + * Setup for ST STM32F072B-Discovery board. + */ + +/* + * Board identifier. + */ +#define BOARD_ST_STM32F072B_DISCOVERY +#define BOARD_NAME "ST STM32F072B-Discovery" + +/* + * Board oscillators-related settings. + * NOTE: HSE not fitted. + */ +#if !defined(STM32_LSECLK) +#define STM32_LSECLK 32768 +#endif + +#define STM32_LSEDRV (3U << 3U) + +#if !defined(STM32_HSECLK) +#define STM32_HSECLK 0U +#endif + +#define STM32_HSE_BYPASS + +/* + * MCU type as defined in the ST header. + */ +#define STM32F072xB + +/* + * IO pins assignments. + */ +#define GPIOA_BUTTON 0U +#define GPIOA_PIN1 1U +#define GPIOA_PIN2 2U +#define GPIOA_PIN3 3U +#define GPIOA_PIN4 4U +#define GPIOA_PIN5 5U +#define GPIOA_PIN6 6U +#define GPIOA_PIN7 7U +#define GPIOA_PIN8 8U +#define GPIOA_PIN9 9U +#define GPIOA_PIN10 10U +#define GPIOA_USB_DM 11U +#define GPIOA_USB_DP 12U +#define GPIOA_SWDIO 13U +#define GPIOA_SWCLK 14U +#define GPIOA_PIN15 15U + +#define GPIOB_PIN0 0U +#define GPIOB_PIN1 1U +#define GPIOB_PIN2 2U +#define GPIOB_PIN3 3U +#define GPIOB_PIN4 4U +#define GPIOB_PIN5 5U +#define GPIOB_PIN6 6U +#define GPIOB_PIN7 7U +#define GPIOB_PIN8 8U +#define GPIOB_PIN9 9U +#define GPIOB_PIN10 10U +#define GPIOB_PIN11 11U +#define GPIOB_PIN12 12U +#define GPIOB_SPI2_SCK 13U +#define GPIOB_SPI2_MISO 14U +#define GPIOB_SPI2_MOSI 15U + +#define GPIOC_MEMS_CS 0U +#define GPIOC_PIN1 1U +#define GPIOC_PIN2 2U +#define GPIOC_PIN3 3U +#define GPIOC_PIN4 4U +#define GPIOC_PIN5 5U +#define GPIOC_LED_RED 6U +#define GPIOC_LED_BLUE 7U +#define GPIOC_LED_ORANGE 8U +#define GPIOC_LED_GREEN 9U +#define GPIOC_PIN10 10U +#define GPIOC_PIN11 11U +#define GPIOC_PIN12 12U +#define GPIOC_PIN13 13U +#define GPIOC_OSC32_IN 14U +#define GPIOC_OSC32_OUT 15U + +#define GPIOD_PIN0 0U +#define GPIOD_PIN1 1U +#define GPIOD_PIN2 2U +#define GPIOD_PIN3 3U +#define GPIOD_PIN4 4U +#define GPIOD_PIN5 5U +#define GPIOD_PIN6 6U +#define GPIOD_PIN7 7U +#define GPIOD_PIN8 8U +#define GPIOD_PIN9 9U +#define GPIOD_PIN10 10U +#define GPIOD_PIN11 11U +#define GPIOD_PIN12 12U +#define GPIOD_PIN13 13U +#define GPIOD_PIN14 14U +#define GPIOD_PIN15 15U + +#define GPIOE_PIN0 0U +#define GPIOE_PIN1 1U +#define GPIOE_PIN2 2U +#define GPIOE_PIN3 3U +#define GPIOE_PIN4 4U +#define GPIOE_PIN5 5U +#define GPIOE_PIN6 6U +#define GPIOE_PIN7 7U +#define GPIOE_PIN8 8U +#define GPIOE_PIN9 9U +#define GPIOE_PIN10 10U +#define GPIOE_PIN11 11U +#define GPIOE_PIN12 12U +#define GPIOE_PIN13 13U +#define GPIOE_PIN14 14U +#define GPIOE_PIN15 15U + +#define GPIOF_OSC_IN 0U +#define GPIOF_OSC_OUT 1U +#define GPIOF_PIN2 2U +#define GPIOF_PIN3 3U +#define GPIOF_PIN4 4U +#define GPIOF_PIN5 5U +#define GPIOF_PIN6 6U +#define GPIOF_PIN7 7U +#define GPIOF_PIN8 8U +#define GPIOF_PIN9 9U +#define GPIOF_PIN10 10U +#define GPIOF_PIN11 11U +#define GPIOF_PIN12 12U +#define GPIOF_PIN13 13U +#define GPIOF_PIN14 14U +#define GPIOF_PIN15 15U + +/* + * IO lines assignments. + */ +#define LINE_BUTTON PAL_LINE(GPIOA, 0U) +#define LINE_USB_DM PAL_LINE(GPIOA, 11U) +#define LINE_USB_DP PAL_LINE(GPIOA, 12U) +#define LINE_SWDIO PAL_LINE(GPIOA, 13U) +#define LINE_SWCLK PAL_LINE(GPIOA, 14U) + +#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U) +#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U) +#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U) + +#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U) +#define LINE_LED_RED PAL_LINE(GPIOC, 6U) +#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U) +#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U) +#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U) +#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U) +#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U) + + + +#define LINE_OSC_IN PAL_LINE(GPIOF, 0U) +#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U) + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * Please refer to the STM32 Reference Manual for details. + */ +#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) +#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) +#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U)) +#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U)) +#define PIN_ODR_LOW(n) (0U << (n)) +#define PIN_ODR_HIGH(n) (1U << (n)) +#define PIN_OTYPE_PUSHPULL(n) (0U << (n)) +#define PIN_OTYPE_OPENDRAIN(n) (1U << (n)) +#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U)) +#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U)) +#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U)) +#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U)) +#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U)) +#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U)) +#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U)) +#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U)) + +/* + * GPIOA setup: + * + * PA0 - BUTTON (input floating). + * PA1 - PIN1 (input pullup). + * PA2 - PIN2 (input pullup). + * PA3 - PIN3 (input pullup). + * PA4 - PIN4 (input pullup). + * PA5 - PIN5 (input pullup). + * PA6 - PIN6 (input pullup). + * PA7 - PIN7 (input pullup). + * PA8 - PIN8 (input pullup). + * PA9 - PIN9 (input pullup). + * PA10 - PIN10 (input pullup). + * PA11 - USB_DM (input floating). + * PA12 - USB_DP (input floating). + * PA13 - SWDIO (alternate 0). + * PA14 - SWCLK (alternate 0). + * PA15 - PIN15 (input pullup). + */ +#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \ + PIN_MODE_INPUT(GPIOA_PIN1) | \ + PIN_MODE_INPUT(GPIOA_PIN2) | \ + PIN_MODE_INPUT(GPIOA_PIN3) | \ + PIN_MODE_INPUT(GPIOA_PIN4) | \ + PIN_MODE_INPUT(GPIOA_PIN5) | \ + PIN_MODE_INPUT(GPIOA_PIN6) | \ + PIN_MODE_INPUT(GPIOA_PIN7) | \ + PIN_MODE_INPUT(GPIOA_PIN8) | \ + PIN_MODE_INPUT(GPIOA_PIN9) | \ + PIN_MODE_INPUT(GPIOA_PIN10) | \ + PIN_MODE_INPUT(GPIOA_USB_DM) | \ + PIN_MODE_INPUT(GPIOA_USB_DP) | \ + PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \ + PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \ + PIN_MODE_INPUT(GPIOA_PIN15)) +#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \ + PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN15)) +#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \ + PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \ + PIN_OSPEED_HIGH(GPIOA_SWDIO) | \ + PIN_OSPEED_HIGH(GPIOA_SWCLK) | \ + PIN_OSPEED_HIGH(GPIOA_PIN15)) +#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN10) | \ + PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \ + PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \ + PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \ + PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN15)) +#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \ + PIN_ODR_HIGH(GPIOA_PIN1) | \ + PIN_ODR_HIGH(GPIOA_PIN2) | \ + PIN_ODR_HIGH(GPIOA_PIN3) | \ + PIN_ODR_HIGH(GPIOA_PIN4) | \ + PIN_ODR_HIGH(GPIOA_PIN5) | \ + PIN_ODR_HIGH(GPIOA_PIN6) | \ + PIN_ODR_HIGH(GPIOA_PIN7) | \ + PIN_ODR_HIGH(GPIOA_PIN8) | \ + PIN_ODR_HIGH(GPIOA_PIN9) | \ + PIN_ODR_HIGH(GPIOA_PIN10) | \ + PIN_ODR_HIGH(GPIOA_USB_DM) | \ + PIN_ODR_HIGH(GPIOA_USB_DP) | \ + PIN_ODR_HIGH(GPIOA_SWDIO) | \ + PIN_ODR_HIGH(GPIOA_SWCLK) | \ + PIN_ODR_HIGH(GPIOA_PIN15)) +#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN7, 0U)) +#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \ + PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \ + PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \ + PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN15, 0U)) + +/* + * GPIOB setup: + * + * PB0 - PIN0 (input pullup). + * PB1 - PIN1 (input pullup). + * PB2 - PIN2 (input pullup). + * PB3 - PIN3 (input pullup). + * PB4 - PIN4 (input pullup). + * PB5 - PIN5 (input pullup). + * PB6 - PIN6 (input pullup). + * PB7 - PIN7 (input pullup). + * PB8 - PIN8 (input pullup). + * PB9 - PIN9 (input pullup). + * PB10 - PIN10 (input pullup). + * PB11 - PIN11 (input pullup). + * PB12 - PIN12 (input pullup). + * PB13 - SPI2_SCK (alternate 0). + * PB14 - SPI2_MISO (alternate 0). + * PB15 - SPI2_MOSI (alternate 0). + */ +#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \ + PIN_MODE_INPUT(GPIOB_PIN1) | \ + PIN_MODE_INPUT(GPIOB_PIN2) | \ + PIN_MODE_INPUT(GPIOB_PIN3) | \ + PIN_MODE_INPUT(GPIOB_PIN4) | \ + PIN_MODE_INPUT(GPIOB_PIN5) | \ + PIN_MODE_INPUT(GPIOB_PIN6) | \ + PIN_MODE_INPUT(GPIOB_PIN7) | \ + PIN_MODE_INPUT(GPIOB_PIN8) | \ + PIN_MODE_INPUT(GPIOB_PIN9) | \ + PIN_MODE_INPUT(GPIOB_PIN10) | \ + PIN_MODE_INPUT(GPIOB_PIN11) | \ + PIN_MODE_INPUT(GPIOB_PIN12) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \ + PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \ + PIN_OSPEED_HIGH(GPIOB_PIN2) | \ + PIN_OSPEED_HIGH(GPIOB_PIN3) | \ + PIN_OSPEED_HIGH(GPIOB_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \ + PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN12) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \ + PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \ + PIN_ODR_HIGH(GPIOB_PIN1) | \ + PIN_ODR_HIGH(GPIOB_PIN2) | \ + PIN_ODR_HIGH(GPIOB_PIN3) | \ + PIN_ODR_HIGH(GPIOB_PIN4) | \ + PIN_ODR_HIGH(GPIOB_PIN5) | \ + PIN_ODR_HIGH(GPIOB_PIN6) | \ + PIN_ODR_HIGH(GPIOB_PIN7) | \ + PIN_ODR_HIGH(GPIOB_PIN8) | \ + PIN_ODR_HIGH(GPIOB_PIN9) | \ + PIN_ODR_HIGH(GPIOB_PIN10) | \ + PIN_ODR_HIGH(GPIOB_PIN11) | \ + PIN_ODR_HIGH(GPIOB_PIN12) | \ + PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \ + PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \ + PIN_ODR_HIGH(GPIOB_SPI2_MOSI)) +#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN7, 0U)) +#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \ + PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U)) + +/* + * GPIOC setup: + * + * PC0 - MEMS_CS (output pushpull maximum). + * PC1 - PIN1 (input pullup). + * PC2 - PIN2 (input pullup). + * PC3 - PIN3 (input pullup). + * PC4 - PIN4 (input pullup). + * PC5 - PIN5 (input pullup). + * PC6 - LED_RED (output pushpull maximum). + * PC7 - LED_BLUE (output pushpull maximum). + * PC8 - LED_ORANGE (output pushpull maximum). + * PC9 - LED_GREEN (output pushpull maximum). + * PC10 - PIN10 (input pullup). + * PC11 - PIN11 (input pullup). + * PC12 - PIN12 (input pullup). + * PC13 - PIN13 (input pullup). + * PC14 - OSC32_IN (input floating). + * PC15 - OSC32_OUT (input floating). + */ +#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \ + PIN_MODE_INPUT(GPIOC_PIN1) | \ + PIN_MODE_INPUT(GPIOC_PIN2) | \ + PIN_MODE_INPUT(GPIOC_PIN3) | \ + PIN_MODE_INPUT(GPIOC_PIN4) | \ + PIN_MODE_INPUT(GPIOC_PIN5) | \ + PIN_MODE_OUTPUT(GPIOC_LED_RED) | \ + PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \ + PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \ + PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \ + PIN_MODE_INPUT(GPIOC_PIN10) | \ + PIN_MODE_INPUT(GPIOC_PIN11) | \ + PIN_MODE_INPUT(GPIOC_PIN12) | \ + PIN_MODE_INPUT(GPIOC_PIN13) | \ + PIN_MODE_INPUT(GPIOC_OSC32_IN) | \ + PIN_MODE_INPUT(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \ + PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \ + PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \ + PIN_OSPEED_HIGH(GPIOC_LED_RED) | \ + PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \ + PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \ + PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \ + PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \ + PIN_OSPEED_HIGH(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN5) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \ + PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN13) | \ + PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \ + PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \ + PIN_ODR_HIGH(GPIOC_PIN1) | \ + PIN_ODR_HIGH(GPIOC_PIN2) | \ + PIN_ODR_HIGH(GPIOC_PIN3) | \ + PIN_ODR_HIGH(GPIOC_PIN4) | \ + PIN_ODR_HIGH(GPIOC_PIN5) | \ + PIN_ODR_LOW(GPIOC_LED_RED) | \ + PIN_ODR_LOW(GPIOC_LED_BLUE) | \ + PIN_ODR_LOW(GPIOC_LED_ORANGE) | \ + PIN_ODR_LOW(GPIOC_LED_GREEN) | \ + PIN_ODR_HIGH(GPIOC_PIN10) | \ + PIN_ODR_HIGH(GPIOC_PIN11) | \ + PIN_ODR_HIGH(GPIOC_PIN12) | \ + PIN_ODR_HIGH(GPIOC_PIN13) | \ + PIN_ODR_HIGH(GPIOC_OSC32_IN) | \ + PIN_ODR_HIGH(GPIOC_OSC32_OUT)) +#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_BLUE, 0U)) +#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \ + PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \ + PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U)) + +/* + * GPIOD setup: + * + * PD0 - PIN0 (input pullup). + * PD1 - PIN1 (input pullup). + * PD2 - PIN2 (input pullup). + * PD3 - PIN3 (input pullup). + * PD4 - PIN4 (input pullup). + * PD5 - PIN5 (input pullup). + * PD6 - PIN6 (input pullup). + * PD7 - PIN7 (input pullup). + * PD8 - PIN8 (input pullup). + * PD9 - PIN9 (input pullup). + * PD10 - PIN10 (input pullup). + * PD11 - PIN11 (input pullup). + * PD12 - PIN12 (input pullup). + * PD13 - PIN13 (input pullup). + * PD14 - PIN14 (input pullup). + * PD15 - PIN15 (input pullup). + */ +#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \ + PIN_MODE_INPUT(GPIOD_PIN1) | \ + PIN_MODE_INPUT(GPIOD_PIN2) | \ + PIN_MODE_INPUT(GPIOD_PIN3) | \ + PIN_MODE_INPUT(GPIOD_PIN4) | \ + PIN_MODE_INPUT(GPIOD_PIN5) | \ + PIN_MODE_INPUT(GPIOD_PIN6) | \ + PIN_MODE_INPUT(GPIOD_PIN7) | \ + PIN_MODE_INPUT(GPIOD_PIN8) | \ + PIN_MODE_INPUT(GPIOD_PIN9) | \ + PIN_MODE_INPUT(GPIOD_PIN10) | \ + PIN_MODE_INPUT(GPIOD_PIN11) | \ + PIN_MODE_INPUT(GPIOD_PIN12) | \ + PIN_MODE_INPUT(GPIOD_PIN13) | \ + PIN_MODE_INPUT(GPIOD_PIN14) | \ + PIN_MODE_INPUT(GPIOD_PIN15)) +#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN15)) +#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOD_PIN15)) +#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN15)) +#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \ + PIN_ODR_HIGH(GPIOD_PIN1) | \ + PIN_ODR_HIGH(GPIOD_PIN2) | \ + PIN_ODR_HIGH(GPIOD_PIN3) | \ + PIN_ODR_HIGH(GPIOD_PIN4) | \ + PIN_ODR_HIGH(GPIOD_PIN5) | \ + PIN_ODR_HIGH(GPIOD_PIN6) | \ + PIN_ODR_HIGH(GPIOD_PIN7) | \ + PIN_ODR_HIGH(GPIOD_PIN8) | \ + PIN_ODR_HIGH(GPIOD_PIN9) | \ + PIN_ODR_HIGH(GPIOD_PIN10) | \ + PIN_ODR_HIGH(GPIOD_PIN11) | \ + PIN_ODR_HIGH(GPIOD_PIN12) | \ + PIN_ODR_HIGH(GPIOD_PIN13) | \ + PIN_ODR_HIGH(GPIOD_PIN14) | \ + PIN_ODR_HIGH(GPIOD_PIN15)) +#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN7, 0U)) +#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN15, 0U)) + +/* + * GPIOE setup: + * + * PE0 - PIN0 (input pullup). + * PE1 - PIN1 (input pullup). + * PE2 - PIN2 (input pullup). + * PE3 - PIN3 (input pullup). + * PE4 - PIN4 (input pullup). + * PE5 - PIN5 (input pullup). + * PE6 - PIN6 (input pullup). + * PE7 - PIN7 (input pullup). + * PE8 - PIN8 (input pullup). + * PE9 - PIN9 (input pullup). + * PE10 - PIN10 (input pullup). + * PE11 - PIN11 (input pullup). + * PE12 - PIN12 (input pullup). + * PE13 - PIN13 (input pullup). + * PE14 - PIN14 (input pullup). + * PE15 - PIN15 (input pullup). + */ +#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \ + PIN_MODE_INPUT(GPIOE_PIN1) | \ + PIN_MODE_INPUT(GPIOE_PIN2) | \ + PIN_MODE_INPUT(GPIOE_PIN3) | \ + PIN_MODE_INPUT(GPIOE_PIN4) | \ + PIN_MODE_INPUT(GPIOE_PIN5) | \ + PIN_MODE_INPUT(GPIOE_PIN6) | \ + PIN_MODE_INPUT(GPIOE_PIN7) | \ + PIN_MODE_INPUT(GPIOE_PIN8) | \ + PIN_MODE_INPUT(GPIOE_PIN9) | \ + PIN_MODE_INPUT(GPIOE_PIN10) | \ + PIN_MODE_INPUT(GPIOE_PIN11) | \ + PIN_MODE_INPUT(GPIOE_PIN12) | \ + PIN_MODE_INPUT(GPIOE_PIN13) | \ + PIN_MODE_INPUT(GPIOE_PIN14) | \ + PIN_MODE_INPUT(GPIOE_PIN15)) +#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN15)) +#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOE_PIN15)) +#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN15)) +#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \ + PIN_ODR_HIGH(GPIOE_PIN1) | \ + PIN_ODR_HIGH(GPIOE_PIN2) | \ + PIN_ODR_HIGH(GPIOE_PIN3) | \ + PIN_ODR_HIGH(GPIOE_PIN4) | \ + PIN_ODR_HIGH(GPIOE_PIN5) | \ + PIN_ODR_HIGH(GPIOE_PIN6) | \ + PIN_ODR_HIGH(GPIOE_PIN7) | \ + PIN_ODR_HIGH(GPIOE_PIN8) | \ + PIN_ODR_HIGH(GPIOE_PIN9) | \ + PIN_ODR_HIGH(GPIOE_PIN10) | \ + PIN_ODR_HIGH(GPIOE_PIN11) | \ + PIN_ODR_HIGH(GPIOE_PIN12) | \ + PIN_ODR_HIGH(GPIOE_PIN13) | \ + PIN_ODR_HIGH(GPIOE_PIN14) | \ + PIN_ODR_HIGH(GPIOE_PIN15)) +#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN7, 0U)) +#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN15, 0U)) + +/* + * GPIOF setup: + * + * PF0 - OSC_IN (input floating). + * PF1 - OSC_OUT (input floating). + * PF2 - PIN2 (input pullup). + * PF3 - PIN3 (input pullup). + * PF4 - PIN4 (input pullup). + * PF5 - PIN5 (input pullup). + * PF6 - PIN6 (input pullup). + * PF7 - PIN7 (input pullup). + * PF8 - PIN8 (input pullup). + * PF9 - PIN9 (input pullup). + * PF10 - PIN10 (input pullup). + * PF11 - PIN11 (input pullup). + * PF12 - PIN12 (input pullup). + * PF13 - PIN13 (input pullup). + * PF14 - PIN14 (input pullup). + * PF15 - PIN15 (input pullup). + */ +#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \ + PIN_MODE_INPUT(GPIOF_OSC_OUT) | \ + PIN_MODE_INPUT(GPIOF_PIN2) | \ + PIN_MODE_INPUT(GPIOF_PIN3) | \ + PIN_MODE_INPUT(GPIOF_PIN4) | \ + PIN_MODE_INPUT(GPIOF_PIN5) | \ + PIN_MODE_INPUT(GPIOF_PIN6) | \ + PIN_MODE_INPUT(GPIOF_PIN7) | \ + PIN_MODE_INPUT(GPIOF_PIN8) | \ + PIN_MODE_INPUT(GPIOF_PIN9) | \ + PIN_MODE_INPUT(GPIOF_PIN10) | \ + PIN_MODE_INPUT(GPIOF_PIN11) | \ + PIN_MODE_INPUT(GPIOF_PIN12) | \ + PIN_MODE_INPUT(GPIOF_PIN13) | \ + PIN_MODE_INPUT(GPIOF_PIN14) | \ + PIN_MODE_INPUT(GPIOF_PIN15)) +#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \ + PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN15)) +#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \ + PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOF_PIN15)) +#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \ + PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN15)) +#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \ + PIN_ODR_HIGH(GPIOF_OSC_OUT) | \ + PIN_ODR_HIGH(GPIOF_PIN2) | \ + PIN_ODR_HIGH(GPIOF_PIN3) | \ + PIN_ODR_HIGH(GPIOF_PIN4) | \ + PIN_ODR_HIGH(GPIOF_PIN5) | \ + PIN_ODR_HIGH(GPIOF_PIN6) | \ + PIN_ODR_HIGH(GPIOF_PIN7) | \ + PIN_ODR_HIGH(GPIOF_PIN8) | \ + PIN_ODR_HIGH(GPIOF_PIN9) | \ + PIN_ODR_HIGH(GPIOF_PIN10) | \ + PIN_ODR_HIGH(GPIOF_PIN11) | \ + PIN_ODR_HIGH(GPIOF_PIN12) | \ + PIN_ODR_HIGH(GPIOF_PIN13) | \ + PIN_ODR_HIGH(GPIOF_PIN14) | \ + PIN_ODR_HIGH(GPIOF_PIN15)) +#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \ + PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN7, 0U)) +#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN15, 0U)) + + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.mk b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.mk new file mode 100644 index 00000000000..b98dcdd26c6 --- /dev/null +++ b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY diff --git a/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg new file mode 100644 index 00000000000..9c7cf4fd76a --- /dev/null +++ b/keyboards/at_at/660m/boards/ST_STM32F072B_DISCOVERY/cfg/board.chcfg @@ -0,0 +1,703 @@ + + + + + resources/gencfg/processors/boards/stm32f0xx/templates + .. + 3.0.x + + ST STM32F072B-Discovery + ST_STM32F072B_DISCOVERY + + STM32F072xB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/keyboards/at_at/660m/bootloader_defs.h b/keyboards/at_at/660m/bootloader_defs.h new file mode 100644 index 00000000000..02c48c4e6dc --- /dev/null +++ b/keyboards/at_at/660m/bootloader_defs.h @@ -0,0 +1,7 @@ +/* Address for jumping to bootloader on STM32 chips. */ +/* It is chip dependent, the correct number can be looked up here (page 175): + * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf + * This also requires a patch to chibios: + * /tmk_core/tool/chibios/ch-bootloader-jump.patch + */ +#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800 diff --git a/keyboards/at_at/660m/chconf.h b/keyboards/at_at/660m/chconf.h new file mode 100644 index 00000000000..99fa8ce3982 --- /dev/null +++ b/keyboards/at_at/660m/chconf.h @@ -0,0 +1,524 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 10000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 2 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 0 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE FALSE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP FALSE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS FALSE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK FALSE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS FALSE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS FALSE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS FALSE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/at_at/660m/config.h b/keyboards/at_at/660m/config.h new file mode 100644 index 00000000000..f9b19c01817 --- /dev/null +++ b/keyboards/at_at/660m/config.h @@ -0,0 +1,66 @@ +/* +Copyright 2015 Jun Wako + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA22A +#define PRODUCT_ID 0x6600 +#define DEVICE_VER 0x0001 +/* in python2: list(u"whatever".encode('utf-16-le')) */ +/* at most 32 characters or the ugly hack in usb_main.c borks */ +#define MANUFACTURER AT-AT +#define PRODUCT 660M +#define DESCRIPTION 660M Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { B15, B14, B13, B12, B11, B10, B2, B1, B9, B8, B7, B6, B5, B3, B4, B0 } +#define MATRIX_ROW_PINS { A3, A4, A5, A0, A1 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/at_at/660m/halconf.h b/keyboards/at_at/660m/halconf.h new file mode 100644 index 00000000000..38743e0904f --- /dev/null +++ b/keyboards/at_at/660m/halconf.h @@ -0,0 +1,354 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C TRUE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM TRUE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI TRUE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 16 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 1 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/at_at/660m/info.json b/keyboards/at_at/660m/info.json new file mode 100644 index 00000000000..935b96200b7 --- /dev/null +++ b/keyboards/at_at/660m/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "AT-AT 660M", + "url": "", + "maintainer": "adrientetar", + "width": 16.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Ins", "x":15.5, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15.5, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"label":"↑", "x":14.5, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6.25}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Fn", "x":11, "y":4, "w":1.25}, {"label":"Ctrl", "x":12.25, "y":4, "w":1.25}, {"label":"←", "x":13.5, "y":4}, {"label":"↓", "x":14.5, "y":4}, {"label":"→", "x":15.5, "y":4} + ] + } + } +} diff --git a/keyboards/at_at/660m/keymaps/default/keymap.c b/keyboards/at_at/660m/keymaps/default/keymap.c new file mode 100644 index 00000000000..2006f1818ec --- /dev/null +++ b/keyboards/at_at/660m/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2012,2013 Jun Wako + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BASE 0 +#define _FN1 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLD, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ) +}; diff --git a/keyboards/at_at/660m/mcuconf.h b/keyboards/at_at/660m/mcuconf.h new file mode 100644 index 00000000000..048eb4df650 --- /dev/null +++ b/keyboards/at_at/660m/mcuconf.h @@ -0,0 +1,176 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +/* + * STM32F0xx drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 3...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +#define STM32F0xx_MCUCONF +// #define STM32F070xB + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 +#define STM32_HSI_ENABLED TRUE +#define STM32_HSI14_ENABLED TRUE +#define STM32_HSI48_ENABLED FALSE +#define STM32_LSI_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2 +#define STM32_PREDIV_VALUE 1 +#define STM32_PLLMUL_VALUE 12 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE STM32_PPRE_DIV1 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_ADCSW STM32_ADCSW_HSI14 +#define STM32_USBSW STM32_USBSW_HSI48 +#define STM32_CECSW STM32_CECSW_HSI +#define STM32_I2C1SW STM32_I2C1SW_HSI +#define STM32_USART1SW STM32_USART1SW_PCLK +#define STM32_RTCSEL STM32_RTCSEL_LSI + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 2 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM14 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 2 +#define STM32_GPT_TIM2_IRQ_PRIORITY 2 +#define STM32_GPT_TIM3_IRQ_PRIORITY 2 +#define STM32_GPT_TIM14_IRQ_PRIORITY 2 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 TRUE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 3 +#define STM32_I2C_I2C2_IRQ_PRIORITY 3 +#define STM32_I2C_USE_DMA TRUE +#define STM32_I2C_I2C1_DMA_PRIORITY 1 +#define STM32_I2C_I2C2_DMA_PRIORITY 1 +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 3 +#define STM32_ICU_TIM2_IRQ_PRIORITY 3 +#define STM32_ICU_TIM3_IRQ_PRIORITY 3 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 TRUE +#define STM32_PWM_TIM1_IRQ_PRIORITY 3 +#define STM32_PWM_TIM2_IRQ_PRIORITY 3 +#define STM32_PWM_TIM3_IRQ_PRIORITY 3 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USART1_PRIORITY 3 +#define STM32_SERIAL_USART2_PRIORITY 3 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 TRUE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_IRQ_PRIORITY 2 +#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) +#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 2 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 3 +#define STM32_UART_USART2_IRQ_PRIORITY 3 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/at_at/660m/readme.md b/keyboards/at_at/660m/readme.md new file mode 100644 index 00000000000..999beec5b03 --- /dev/null +++ b/keyboards/at_at/660m/readme.md @@ -0,0 +1,14 @@ +# AT-AT 660M + +660M keyboard + +Keyboard Maintainer: [Adrien Tétar](https://github.com/adrientetar) +Hardware Supported: AT-AT 660M +Hardware Availability: + + +Make example for this keyboard (after setting up your build environment): + + make at_at/660m:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk new file mode 100644 index 00000000000..245cf23d575 --- /dev/null +++ b/keyboards/at_at/660m/rules.mk @@ -0,0 +1,53 @@ +# project specific files +# SRC = ssd1306.c +## chip/board settings +# the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +MCU_FAMILY = STM32 +MCU_SERIES = STM32F0xx +# linker script to use +# it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +MCU_LDSCRIPT = STM32F072xB +# startup code to use +# is should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ +MCU_STARTUP = stm32f0xx +# it should exist either in /os/hal/boards/ +# or /boards +BOARD = ST_STM32F072B_DISCOVERY +# Cortex version +# Teensy LC is cortex-m0; Teensy 3.x are cortex-m4 +MCU = cortex-m0 +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 6 +# If you want to be able to jump to bootloader from firmware on STM32 MCUs, +# set the correct BOOTLOADER_ADDRESS. Either set it here, or define it in +# ./bootloader_defs.h or in ./boards//bootloader_defs.h (if you have +# a custom board definition that you plan to reuse). +# If you're not setting it here, leave it commented out. +# It is chip dependent, the correct number can be looked up here (page 175): +# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf +# This also requires a patch to chibios: +# /tmk_core/tool/chibios/ch-bootloader-jump.patch +#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 + +# Options to pass to dfu-util when flashing +DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave +DFU_SUFFIX_ARGS = -p df11 -v 0483 + +# Build Options +# comment out to disable the options. +# + +#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover +CUSTOM_MATRIX = no # Custom matrix file +# BACKLIGHT_ENABLE = yes +# RGBLIGHT_ENABLE = yes +NO_USB_STARTUP_CHECK = yes # Workaround for issue 6369 + From e5aa28455ec6c377cc9117b07dfa7d3951e6d610 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Wed, 18 Sep 2019 20:41:46 -0400 Subject: [PATCH 18/72] [Keyboard] 201909 s75 custom encoder (#6745) * Handle custom encoder configuration * Whitespace changes * Undo broken stuff * more * Remove printfs * fix the dumb bug --- keyboards/cannonkeys/satisfaction75/config.h | 18 +-- .../satisfaction75/satisfaction75.c | 112 +++++++++--------- .../satisfaction75/satisfaction75.h | 8 ++ .../satisfaction75/satisfaction_encoder.c | 58 ++++++++- 4 files changed, 129 insertions(+), 67 deletions(-) diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h index 1cbe43fadfd..8387289d87b 100644 --- a/keyboards/cannonkeys/satisfaction75/config.h +++ b/keyboards/cannonkeys/satisfaction75/config.h @@ -71,15 +71,15 @@ along with this program. If not, see . // TODO: refactor with new user EEPROM code (coming soon) #define EEPROM_MAGIC 0x451F -#define EEPROM_MAGIC_ADDR 32 +#define EEPROM_MAGIC_ADDR 40 // Bump this every time we change what we store // This will automatically reset the EEPROM with defaults // and avoid loading invalid data from the EEPROM #define EEPROM_VERSION 0x01 -#define EEPROM_VERSION_ADDR 34 +#define EEPROM_VERSION_ADDR 42 // Dynamic keymap starts after EEPROM version -#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 +#define DYNAMIC_KEYMAP_EEPROM_ADDR 43 // Dynamic macro starts after dynamic keymaps (35+(4*6*16*2)) = (35+768) = 803 @@ -89,13 +89,13 @@ along with this program. If not, see . // 1 for OLED default mode // 6 for 3x custom encoder settings, left, right, and press (18 total) -#define DYNAMIC_KEYMAP_ENABLED_ENCODER_MODES 803 -#define DYNAMIC_KEYMAP_CUSTOM_BACKLIGHT 804 -#define DYNAMIC_KEYMAP_DEFAULT_OLED 805 -#define DYNAMIC_KEYMAP_CUSTOM_ENCODER 806 +#define DYNAMIC_KEYMAP_ENABLED_ENCODER_MODES 811 +#define DYNAMIC_KEYMAP_CUSTOM_BACKLIGHT 812 +#define DYNAMIC_KEYMAP_DEFAULT_OLED 813 +#define DYNAMIC_KEYMAP_CUSTOM_ENCODER 814 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 824 -#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 200 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 832 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 192 #define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c index 531bf047466..12d3660daeb 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c @@ -94,51 +94,53 @@ void raw_hid_receive( uint8_t *data, uint8_t length ) } case id_get_keyboard_value: { - switch( command_data[0]) - { - case id_uptime: - { - uint32_t value = timer_read32(); - command_data[1] = (value >> 24 ) & 0xFF; - command_data[2] = (value >> 16 ) & 0xFF; - command_data[3] = (value >> 8 ) & 0xFF; - command_data[4] = value & 0xFF; - break; - } - case id_oled_default_mode: - { - uint8_t default_oled = eeprom_read_byte((uint8_t*)DYNAMIC_KEYMAP_DEFAULT_OLED); - command_data[1] = default_oled; - break; - } - case id_oled_mode: - { - command_data[1] = oled_mode; - break; - - } - case id_encoder_modes: - { - command_data[1] = enabled_encoder_modes; - break; - } - case id_encoder_custom: - { - // uint8_t custom_encoder_idx = command_data[1]; - // command_data[2] = 0x00; - // command_data[3] = 0x00; - // command_data[4] = 0x00; - // command_data[5] = 0x00; - // command_data[6] = 0x00; - // command_data[7] = 0x00; - break; - } - default: - { - *command_id = id_unhandled; - break; - } - } + switch( command_data[0]) + { + case id_uptime: + { + uint32_t value = timer_read32(); + command_data[1] = (value >> 24 ) & 0xFF; + command_data[2] = (value >> 16 ) & 0xFF; + command_data[3] = (value >> 8 ) & 0xFF; + command_data[4] = value & 0xFF; + break; + } + case id_oled_default_mode: + { + uint8_t default_oled = eeprom_read_byte((uint8_t*)DYNAMIC_KEYMAP_DEFAULT_OLED); + command_data[1] = default_oled; + break; + } + case id_oled_mode: + { + command_data[1] = oled_mode; + break; + } + case id_encoder_modes: + { + command_data[1] = enabled_encoder_modes; + break; + } + case id_encoder_custom: + { + uint8_t custom_encoder_idx = command_data[1]; + uint16_t keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_CW); + command_data[2] = keycode >> 8; + command_data[3] = keycode & 0xFF; + keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_CCW); + command_data[4] = keycode >> 8; + command_data[5] = keycode & 0xFF; + keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_PRESS); + command_data[6] = keycode >> 8; + command_data[7] = keycode & 0xFF; + break; + } + default: + { + *command_id = id_unhandled; + break; + } + } break; } #ifdef DYNAMIC_KEYMAP_ENABLE @@ -164,7 +166,10 @@ void raw_hid_receive( uint8_t *data, uint8_t length ) } case id_encoder_custom: { - // uint8_t custom_encoder_idx = command_data[1]; + uint8_t custom_encoder_idx = command_data[1]; + uint8_t encoder_behavior = command_data[2]; + uint16_t keycode = (command_data[3] << 8) | command_data[4]; + set_custom_encoder_config(custom_encoder_idx, encoder_behavior, keycode); break; } default: @@ -205,13 +210,6 @@ void raw_hid_receive( uint8_t *data, uint8_t length ) break; } case id_dynamic_keymap_macro_get_buffer: - { - uint16_t offset = ( command_data[0] << 8 ) | command_data[1]; - uint16_t size = command_data[2]; // size <= 28 - dynamic_keymap_macro_get_buffer( offset, size, &command_data[3] ); - break; - } - case id_dynamic_keymap_macro_set_buffer: { uint16_t offset = ( command_data[0] << 8 ) | command_data[1]; uint16_t size = command_data[2]; // size <= 28 @@ -339,9 +337,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { uint16_t mapped_code = handle_encoder_press(); uint16_t held_keycode_timer = timer_read(); if(mapped_code != 0){ - register_code(mapped_code); + register_code16(mapped_code); while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ } - unregister_code(mapped_code); + unregister_code16(mapped_code); } } else { // Do something else when release @@ -380,9 +378,9 @@ void encoder_update_kb(uint8_t index, bool clockwise) { } uint16_t held_keycode_timer = timer_read(); if(mapped_code != 0){ - register_code(mapped_code); + register_code16(mapped_code); while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ } - unregister_code(mapped_code); + unregister_code16(mapped_code); } } else { if(clockwise){ diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.h b/keyboards/cannonkeys/satisfaction75/satisfaction75.h index dfab68017f0..188a1d49707 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction75.h +++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.h @@ -47,6 +47,12 @@ enum encoder_modes { ENC_MODE_CLOCK_SET // This shouldn't be included in the default modes, so we put it after NUM_ENCODER_MODES }; +enum custom_encoder_behavior { + ENC_CUSTOM_CW = 0, + ENC_CUSTOM_CCW, + ENC_CUSTOM_PRESS +}; + enum oled_modes { OLED_DEFAULT, OLED_TIME, @@ -96,6 +102,8 @@ void change_encoder_mode(bool negative); uint16_t handle_encoder_clockwise(void); uint16_t handle_encoder_ccw(void); uint16_t handle_encoder_press(void); +uint16_t retrieve_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior); +void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t new_code); void update_time_config(int8_t increment); diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c index 67768169186..e866d897c7e 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c @@ -1,4 +1,5 @@ #include "satisfaction75.h" +#include "tmk_core/common/eeprom.h" void pre_encoder_mode_change(){ if(encoder_mode == ENC_MODE_CLOCK_SET){ @@ -111,6 +112,17 @@ uint16_t handle_encoder_clockwise(){ case ENC_MODE_BRIGHTNESS: mapped_code = KC_BRIGHTNESS_UP; break; +#ifdef DYNAMIC_KEYMAP_ENABLE + case ENC_MODE_CUSTOM0: + mapped_code = retrieve_custom_encoder_config(0, ENC_CUSTOM_CW); + break; + case ENC_MODE_CUSTOM1: + mapped_code = retrieve_custom_encoder_config(1, ENC_CUSTOM_CW); + break; + case ENC_MODE_CUSTOM2: + mapped_code = retrieve_custom_encoder_config(2, ENC_CUSTOM_CW); + break; +#endif case ENC_MODE_CLOCK_SET: update_time_config(1); queue_for_send = true; @@ -145,6 +157,18 @@ uint16_t handle_encoder_ccw(){ case ENC_MODE_BRIGHTNESS: mapped_code = KC_BRIGHTNESS_DOWN; break; +#ifdef DYNAMIC_KEYMAP_ENABLE + case ENC_MODE_CUSTOM0: + mapped_code = retrieve_custom_encoder_config(0, ENC_CUSTOM_CCW); + break; + case ENC_MODE_CUSTOM1: + mapped_code = retrieve_custom_encoder_config(1, ENC_CUSTOM_CCW); + break; + case ENC_MODE_CUSTOM2: + mapped_code = retrieve_custom_encoder_config(2, ENC_CUSTOM_CCW); + break; +#endif + case ENC_MODE_CLOCK_SET: update_time_config(-1); queue_for_send = true; @@ -159,6 +183,7 @@ uint16_t handle_encoder_press(){ case ENC_MODE_VOLUME: mapped_code = KC_MUTE; break; + default: case ENC_MODE_MEDIA: mapped_code = KC_MEDIA_PLAY_PAUSE; break; @@ -174,11 +199,42 @@ uint16_t handle_encoder_press(){ breathing_enable(); } break; +#ifdef DYNAMIC_KEYMAP_ENABLE + case ENC_MODE_CUSTOM0: + mapped_code = retrieve_custom_encoder_config(0, ENC_CUSTOM_PRESS); + break; + case ENC_MODE_CUSTOM1: + mapped_code = retrieve_custom_encoder_config(1, ENC_CUSTOM_PRESS); + break; + case ENC_MODE_CUSTOM2: + mapped_code = retrieve_custom_encoder_config(2, ENC_CUSTOM_PRESS); + break; +#endif case ENC_MODE_CLOCK_SET: time_config_idx = (time_config_idx + 1) % 5; - default: case ENC_MODE_BRIGHTNESS: break; } return mapped_code; } + + +uint16_t retrieve_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior){ +#ifdef DYNAMIC_KEYMAP_ENABLE + void* addr = (void*)(DYNAMIC_KEYMAP_CUSTOM_ENCODER + (encoder_idx * 6) + (behavior * 2)); + //big endian + uint16_t keycode = eeprom_read_byte(addr) << 8; + keycode |= eeprom_read_byte(addr + 1); + return keycode; +#else + return 0; +#endif +} + +void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t new_code){ +#ifdef DYNAMIC_KEYMAP_ENABLE + void* addr = (void*)(DYNAMIC_KEYMAP_CUSTOM_ENCODER + (encoder_idx * 6) + (behavior * 2)); + eeprom_update_byte(addr, (uint8_t)(new_code >> 8)); + eeprom_update_byte(addr + 1, (uint8_t)(new_code & 0xFF)); +#endif +} From 46c49ae4e639509ceb6e81c460855d2eb89086b8 Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Wed, 18 Sep 2019 19:56:11 -0500 Subject: [PATCH 19/72] Updated split encoders so indexes are based on left hand encoders first (#6382) * Updated encoder.c so that split encoders are indexed based on left hand encoders first. This ensures when swapping master sides that code logic based on encoder index doesn't change. PR Review fixes * Removed extra define --- quantum/encoder.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/quantum/encoder.c b/quantum/encoder.c index b3b1cd9f2b7..36a6403b367 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -40,8 +40,10 @@ static int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, static uint8_t encoder_state[NUMBER_OF_ENCODERS] = {0}; #ifdef SPLIT_KEYBOARD -// slave half encoders come over as second set of encoders +// right half encoders come over as second set of encoders static int8_t encoder_value[NUMBER_OF_ENCODERS * 2] = {0}; +// row offsets for each hand +static uint8_t thisHand, thatHand; #else static int8_t encoder_value[NUMBER_OF_ENCODERS] = {0}; #endif @@ -68,20 +70,33 @@ void encoder_init(void) { encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); } + +#ifdef SPLIT_KEYBOARD + thisHand = isLeftHand ? 0 : NUMBER_OF_ENCODERS; + thatHand = NUMBER_OF_ENCODERS - thisHand; +#endif +} + +static void encoder_update(int8_t index, uint8_t state) { + encoder_value[index] += encoder_LUT[state & 0xF]; + if (encoder_value[index] >= ENCODER_RESOLUTION) { + encoder_update_kb(index, false); + } + if (encoder_value[index] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise + encoder_update_kb(index, true); + } + encoder_value[index] %= ENCODER_RESOLUTION; } void encoder_read(void) { for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { encoder_state[i] <<= 2; encoder_state[i] |= (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); - encoder_value[i] += encoder_LUT[encoder_state[i] & 0xF]; - if (encoder_value[i] >= ENCODER_RESOLUTION) { - encoder_update_kb(i, false); - } - if (encoder_value[i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise - encoder_update_kb(i, true); - } - encoder_value[i] %= ENCODER_RESOLUTION; +#if SPLIT_KEYBOARD + encoder_update(i + thisHand, encoder_state[i]); +#else + encoder_update(i, encoder_state[i]); +#endif } } @@ -90,14 +105,7 @@ void encoder_state_raw(uint8_t* slave_state) { memcpy(slave_state, encoder_state void encoder_update_raw(uint8_t* slave_state) { for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { - encoder_value[NUMBER_OF_ENCODERS + i] += encoder_LUT[slave_state[i] & 0xF]; - if (encoder_value[NUMBER_OF_ENCODERS + i] >= ENCODER_RESOLUTION) { - encoder_update_kb(NUMBER_OF_ENCODERS + i, false); - } - if (encoder_value[NUMBER_OF_ENCODERS + i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise - encoder_update_kb(NUMBER_OF_ENCODERS + i, true); - } - encoder_value[NUMBER_OF_ENCODERS + i] %= ENCODER_RESOLUTION; + encoder_update(i + thatHand, slave_state[i]); } } #endif From 095b88bca528a827029c92b2e4053061223f4f9d Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Wed, 18 Sep 2019 20:32:38 -0500 Subject: [PATCH 20/72] Smoother Linear Light Table (#6764) --- quantum/color.c | 10 ++++------ quantum/led_tables.c | 44 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/quantum/color.c b/quantum/color.c index 847129736d5..1f398e24038 100644 --- a/quantum/color.c +++ b/quantum/color.c @@ -36,7 +36,11 @@ RGB hsv_to_rgb(HSV hsv) { h = hsv.h; s = hsv.s; +#ifdef USE_CIE1931_CURVE + v = pgm_read_byte(&CIE1931_CURVE[hsv.v]); +#else v = hsv.v; +#endif region = h * 6 / 255; remainder = (h * 2 - region * 85) * 3; @@ -79,11 +83,5 @@ RGB hsv_to_rgb(HSV hsv) { break; } -#ifdef USE_CIE1931_CURVE - rgb.r = pgm_read_byte(&CIE1931_CURVE[rgb.r]); - rgb.g = pgm_read_byte(&CIE1931_CURVE[rgb.g]); - rgb.b = pgm_read_byte(&CIE1931_CURVE[rgb.b]); -#endif - return rgb; } diff --git a/quantum/led_tables.c b/quantum/led_tables.c index 8cbf6f4c022..6eb2c09dc8e 100644 --- a/quantum/led_tables.c +++ b/quantum/led_tables.c @@ -15,14 +15,50 @@ along with this program. If not, see . #include "led_tables.h" +// clang-format off + #ifdef USE_CIE1931_CURVE // Lightness curve using the CIE 1931 lightness formula // Generated by the python script provided in http://jared.geek.nz/2013/feb/linear-led-pwm -const uint8_t CIE1931_CURVE[256] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 28, 28, 29, 29, 30, 31, 31, 32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 39, 40, 40, 41, 42, 43, 44, 44, 45, 46, - 47, 48, 49, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 94, 96, 97, 99, 100, 101, 103, 104, 106, 107, 108, 110, 111, 113, 114, 116, 118, 119, 121, 122, 124, 125, 127, 129, 130, 132, 134, 135, 137, 139, 141, 142, 144, 146, 148, 149, 151, 153, 155, 157, 159, 161, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 185, 187, 189, 191, 193, 195, 197, 200, 202, 204, 206, 208, 211, 213, 215, 218, 220, 222, 225, 227, 230, 232, 234, 237, 239, 242, 244, 247, 249, 252, 255}; +const uint8_t CIE1931_CURVE[256] PROGMEM = { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, + 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, + 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, + 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, + 26, 26, 27, 27, 28, 29, 29, 30, 30, 31, 32, 32, 33, 34, 34, 35, + 36, 36, 37, 38, 38, 39, 40, 41, 41, 42, 43, 44, 45, 45, 46, 47, + 48, 49, 50, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, + 80, 81, 83, 84, 85, 86, 88, 89, 90, 91, 93, 94, 95, 97, 98, 100, + 101, 102, 104, 105, 107, 108, 109, 111, 112, 114, 115, 117, 119, 120, 122, 123, + 125, 126, 128, 130, 131, 133, 135, 136, 138, 140, 142, 143, 145, 147, 149, 150, + 152, 154, 156, 158, 160, 162, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, + 183, 186, 188, 190, 192, 194, 196, 198, 201, 203, 205, 207, 209, 212, 214, 216, + 219, 221, 223, 226, 228, 231, 233, 235, 238, 240, 243, 245, 248, 250, 253, 255 +}; #endif #ifdef USE_LED_BREATHING_TABLE -const uint8_t LED_BREATHING_TABLE[256] PROGMEM = {0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35, 37, 40, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 67, 70, 73, 76, 79, 82, 85, 88, 90, 93, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124, 127, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 162, 165, 167, 170, 173, 176, 179, 182, 185, 188, 190, 193, 196, 198, 201, 203, 206, 208, 211, 213, 215, 218, 220, 222, 224, 226, 228, 230, 232, 234, 235, 237, 238, 240, 241, 243, 244, 245, 246, 248, 249, 250, 250, 251, 252, 253, 253, 254, 254, 254, 255, 255, 255, - 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 251, 250, 250, 249, 248, 246, 245, 244, 243, 241, 240, 238, 237, 235, 234, 232, 230, 228, 226, 224, 222, 220, 218, 215, 213, 211, 208, 206, 203, 201, 198, 196, 193, 190, 188, 185, 182, 179, 176, 173, 170, 167, 165, 162, 158, 155, 152, 149, 146, 143, 140, 137, 134, 131, 128, 124, 121, 118, 115, 112, 109, 106, 103, 100, 97, 93, 90, 88, 85, 82, 79, 76, 73, 70, 67, 65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 40, 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 17, 15, 14, 12, 11, 10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0}; +const uint8_t LED_BREATHING_TABLE[256] PROGMEM = { + 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, + 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35, + 37, 40, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 67, 70, 73, 76, + 79, 82, 85, 88, 90, 93, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124, + 127, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 162, 165, 167, 170, 173, + 176, 179, 182, 185, 188, 190, 193, 196, 198, 201, 203, 206, 208, 211, 213, 215, + 218, 220, 222, 224, 226, 228, 230, 232, 234, 235, 237, 238, 240, 241, 243, 244, + 245, 246, 248, 249, 250, 250, 251, 252, 253, 253, 254, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 251, 250, 250, 249, 248, 246, + 245, 244, 243, 241, 240, 238, 237, 235, 234, 232, 230, 228, 226, 224, 222, 220, + 218, 215, 213, 211, 208, 206, 203, 201, 198, 196, 193, 190, 188, 185, 182, 179, + 176, 173, 170, 167, 165, 162, 158, 155, 152, 149, 146, 143, 140, 137, 134, 131, + 128, 124, 121, 118, 115, 112, 109, 106, 103, 100, 97, 93, 90, 88, 85, 82, + 79, 76, 73, 70, 67, 65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 40, + 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 17, 15, 14, 12, 11, + 10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0 +}; #endif + +// clang-format on From 7142b604058483a99a5fd476d5c95aa6ac52a1f8 Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Wed, 18 Sep 2019 21:38:56 -0400 Subject: [PATCH 21/72] [Keymap] Update Planck Layer Diagram To Match Layer (#6712) --- keyboards/planck/keymaps/default/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index 3d44088bbab..f0ba47b2a9b 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -153,12 +153,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Adjust (Lower + Raise) * v------------------------RGB CONTROL--------------------v - * ,----------------------------------------------------------------------------------- + * ,-----------------------------------------------------------------------------------. * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' From 7a5a2591ebc797d9670366a45396afed48c5fc6f Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Wed, 18 Sep 2019 18:42:53 -0700 Subject: [PATCH 22/72] [Keyboard] 1up60hte cleanup + bugfix (#6763) * move caps lock led to keyboard level so even QMK Configurator users have access to it * set bootloader correctly to atmel-dfu * clean up extra carriage return --- keyboards/1upkeyboards/1up60hte/1up60hte.c | 16 +++++++ .../1up60hte/keymaps/default/keymap.c | 19 -------- .../1up60hte/keymaps/hhkb/keymap.c | 19 -------- keyboards/1upkeyboards/1up60hte/readme.md | 1 - keyboards/1upkeyboards/1up60hte/rules.mk | 43 +------------------ 5 files changed, 18 insertions(+), 80 deletions(-) diff --git a/keyboards/1upkeyboards/1up60hte/1up60hte.c b/keyboards/1upkeyboards/1up60hte/1up60hte.c index 460e42a0e57..3af0e9d400a 100644 --- a/keyboards/1upkeyboards/1up60hte/1up60hte.c +++ b/keyboards/1upkeyboards/1up60hte/1up60hte.c @@ -16,3 +16,19 @@ along with this program. If not, see . */ #include "1up60hte.h" + +void keyboard_pre_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + setPinOutput(B6); + keyboard_pre_init_user(); +} + +void led_set_kb(uint8_t usb_led) { + if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { + writePinLow(B6); + } else { + writePinHigh(B6); + } + led_set_user(usb_led); +} \ No newline at end of file diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c index 359ac754063..2f91e1c76e7 100644 --- a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c @@ -31,22 +31,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; - -void matrix_init_user(void) { - setPinOutput(B6); -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(B6); - } else { - writePinHigh(B6); - } -} diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c index 5312e3b6752..81e29ec1913 100644 --- a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c +++ b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c @@ -31,22 +31,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; - -void matrix_init_user(void) { - setPinOutput(B6); -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(B6); - } else { - writePinHigh(B6); - } -} diff --git a/keyboards/1upkeyboards/1up60hte/readme.md b/keyboards/1upkeyboards/1up60hte/readme.md index 93767c541f3..b49773fd778 100644 --- a/keyboards/1upkeyboards/1up60hte/readme.md +++ b/keyboards/1upkeyboards/1up60hte/readme.md @@ -8,7 +8,6 @@ A 60% PCB with USB C, RGB underglow, backlighting, hotswappable switches, and a Keyboard Maintainer: [Bubnick](https://github.com/bubnick) Hardware Supported: 1up60hte 60% PCB - Hardware Availability: [1upkeyboards.com](https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk index 860a754a643..e994785ba86 100644 --- a/keyboards/1upkeyboards/1up60hte/rules.mk +++ b/keyboards/1upkeyboards/1up60hte/rules.mk @@ -1,50 +1,12 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -54,6 +16,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes -EXTRAFLAGS += -flto LAYOUTS = 60_hhkb From 911b8915cc89c040db3c6075a1a547003b0ab37f Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Thu, 19 Sep 2019 09:42:33 -0700 Subject: [PATCH 23/72] DRV2605L Continuous Haptic Feedback Support (#6461) * provide means to turn on RTP mode and set the amplitude * new keycode HPT_CONT to turn RTP off/on * introduce new keycodes HPT_CONI, and HPT_COND for Haptic Continuous Increase and Decrease * support for continuous mode amplitude increase and decrease * code cleanup * update docs to reference new keycodes and functionality * don't touch the keymaps * add function prototypes * add proper guards * cleanup guards * remove extra reserved --- docs/feature_haptic_feedback.md | 7 ++++ drivers/haptic/DRV2605L.c | 11 ++++++ drivers/haptic/DRV2605L.h | 2 + drivers/haptic/haptic.c | 67 +++++++++++++++++++++++++++++++++ drivers/haptic/haptic.h | 17 ++++++--- quantum/quantum_keycodes.h | 3 ++ 6 files changed, 101 insertions(+), 6 deletions(-) diff --git a/docs/feature_haptic_feedback.md b/docs/feature_haptic_feedback.md index 85fd4396402..acd156a27aa 100644 --- a/docs/feature_haptic_feedback.md +++ b/docs/feature_haptic_feedback.md @@ -29,6 +29,9 @@ Not all keycodes below will work depending on which haptic mechanism you have ch |`HPT_BUZ` | Toggle solenoid buzz on/off | |`HPT_MODI` | Go to next DRV2605L waveform | |`HPT_MODD` | Go to previous DRV2605L waveform | +|`HPT_CONT` | Toggle continuous haptic mode on/off | +|`HPT_CONI` | Increase DRV2605L continous haptic strength | +|`HPT_COND` | Decrease DRV2605L continous haptic strength | |`HPT_DWLI` | Increase Solenoid dwell time | |`HPT_DWLD` | Decrease Solenoid dwell time | @@ -145,3 +148,7 @@ If haptic feedback is enabled, the keyboard will vibrate to a specific sqeuence #define DRV_MODE_DEFAULT *sequence name or number* ``` This will set what sequence HPT_RST will set as the active mode. If not defined, mode will be set to 1 when HPT_RST is pressed. + +### DRV2605L Continuous Haptic Mode + +This mode sets continuous haptic feedback with the option to increase or decrease strength. \ No newline at end of file diff --git a/drivers/haptic/DRV2605L.c b/drivers/haptic/DRV2605L.c index f74c9652537..728554b01eb 100644 --- a/drivers/haptic/DRV2605L.c +++ b/drivers/haptic/DRV2605L.c @@ -114,6 +114,17 @@ void DRV_init(void) { DRV_write(DRV_GO, 0x01); } +void DRV_rtp_init(void) { + DRV_write(DRV_GO, 0x00); + DRV_write(DRV_RTP_INPUT, 20); //20 is the lowest value I've found where haptics can still be felt. + DRV_write(DRV_MODE, 0x05); + DRV_write(DRV_GO, 0x01); +} + +void DRV_amplitude(uint8_t amplitude) { + DRV_write(DRV_RTP_INPUT, amplitude); +} + void DRV_pulse(uint8_t sequence) { DRV_write(DRV_GO, 0x00); DRV_write(DRV_WAVEFORM_SEQ_1, sequence); diff --git a/drivers/haptic/DRV2605L.h b/drivers/haptic/DRV2605L.h index f550b859f7c..535c777658b 100644 --- a/drivers/haptic/DRV2605L.h +++ b/drivers/haptic/DRV2605L.h @@ -170,6 +170,8 @@ void DRV_init(void); void DRV_write(const uint8_t drv_register, const uint8_t settings); uint8_t DRV_read(const uint8_t regaddress); +void DRV_rtp_init(void); +void DRV_amplitude(const uint8_t amplitude); void DRV_pulse(const uint8_t sequence); typedef enum DRV_EFFECT { diff --git a/drivers/haptic/haptic.c b/drivers/haptic/haptic.c index ded6d8a44a0..989970beeed 100644 --- a/drivers/haptic/haptic.c +++ b/drivers/haptic/haptic.c @@ -168,6 +168,15 @@ void haptic_set_mode(uint8_t mode) { xprintf("haptic_config.mode = %u\n", haptic_config.mode); } +void haptic_set_amplitude(uint8_t amp) { + haptic_config.amplitude = amp; + eeconfig_update_haptic(haptic_config.raw); + xprintf("haptic_config.amplitude = %u\n", haptic_config.amplitude); + #ifdef DRV2605L + DRV_amplitude(amp); + #endif +} + void haptic_set_buzz(uint8_t buzz) { haptic_config.buzz = buzz; eeconfig_update_haptic(haptic_config.raw); @@ -201,6 +210,53 @@ uint8_t haptic_get_dwell(void) { return haptic_config.dwell; } +void haptic_enable_continuous(void) { + haptic_config.cont = 1; + xprintf("haptic_config.cont = %u\n", haptic_config.cont); + eeconfig_update_haptic(haptic_config.raw); + #ifdef DRV2605L + DRV_rtp_init(); + #endif +} + +void haptic_disable_continuous(void) { + haptic_config.cont = 0; + xprintf("haptic_config.cont = %u\n", haptic_config.cont); + eeconfig_update_haptic(haptic_config.raw); + #ifdef DRV2605L + DRV_write(DRV_MODE,0x00); + #endif +} + +void haptic_toggle_continuous(void) { +#ifdef DRV2605L +if (haptic_config.cont) { + haptic_disable_continuous(); + } else { + haptic_enable_continuous(); + } + eeconfig_update_haptic(haptic_config.raw); +#endif +} + + +void haptic_cont_increase(void) { + uint8_t amp = haptic_config.amplitude + 10; + if (haptic_config.amplitude >= 120) { + amp = 120; + } + haptic_set_amplitude(amp); +} + +void haptic_cont_decrease(void) { + uint8_t amp = haptic_config.amplitude - 10; + if (haptic_config.amplitude < 20) { + amp = 20; + } + haptic_set_amplitude(amp); +} + + void haptic_play(void) { #ifdef DRV2605L uint8_t play_eff = 0; @@ -213,6 +269,7 @@ void haptic_play(void) { } bool process_haptic(uint16_t keycode, keyrecord_t *record) { + if (keycode == HPT_ON && record->event.pressed) { haptic_enable(); } @@ -243,6 +300,16 @@ bool process_haptic(uint16_t keycode, keyrecord_t *record) { if (keycode == HPT_DWLD && record->event.pressed) { haptic_dwell_decrease(); } + if (keycode == HPT_CONT && record->event.pressed) { + haptic_toggle_continuous(); + } + if (keycode == HPT_CONI && record->event.pressed) { + haptic_cont_increase(); + } + if (keycode == HPT_COND && record->event.pressed) { + haptic_cont_decrease(); + } + if (haptic_config.enable) { if (record->event.pressed) { // keypress diff --git a/drivers/haptic/haptic.h b/drivers/haptic/haptic.h index 8135d0d4398..2f6eb31fc2d 100644 --- a/drivers/haptic/haptic.h +++ b/drivers/haptic/haptic.h @@ -34,12 +34,14 @@ typedef union { uint32_t raw; struct { - bool enable : 1; - uint8_t feedback : 2; - uint8_t mode : 7; - bool buzz : 1; - uint8_t dwell : 7; - uint16_t reserved : 16; + bool enable :1; + uint8_t feedback :2; + uint8_t mode :7; + bool buzz :1; + uint8_t dwell :7; + bool cont :1; + uint8_t amplitude :8; + uint16_t reserved :7; }; } haptic_config_t; @@ -71,6 +73,9 @@ uint8_t haptic_get_mode(void); uint8_t haptic_get_feedback(void); void haptic_dwell_increase(void); void haptic_dwell_decrease(void); +void haptic_toggle_continuous(void); +void haptic_cont_increase(void); +void haptic_cont_decrease(void); void haptic_play(void); void haptic_shutdown(void); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index f5dca02e6bf..af984a7cd78 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -473,6 +473,9 @@ enum quantum_keycodes { HPT_BUZ, HPT_MODI, HPT_MODD, + HPT_CONT, + HPT_CONI, + HPT_COND, HPT_DWLI, HPT_DWLD, From f34299efd7c5be439b0991d46c26de6c8709a2d9 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 20 Sep 2019 02:55:03 +1000 Subject: [PATCH 24/72] Cleanup rules.mk for USB64 and USB128 keyboards (#6769) --- keyboards/clueboard/2x1800/rules.mk | 16 +++-- keyboards/converter/modelm101/rules.mk | 51 +-------------- keyboards/donutcables/scrabblepad/rules.mk | 54 +++------------- .../handwired/108key_trackpoint/rules.mk | 50 +-------------- keyboards/handwired/aek64/rules.mk | 20 +++--- keyboards/handwired/daishi/rules.mk | 53 +++------------- keyboards/handwired/datahand/rules.mk | 49 ++++----------- keyboards/handwired/downbubble/rules.mk | 51 +-------------- keyboards/handwired/hacked_motospeed/rules.mk | 51 +-------------- keyboards/handwired/ibm122m/rules.mk | 54 +++------------- keyboards/handwired/magicforce61/rules.mk | 55 +++------------- keyboards/handwired/ms_sculpt_mobile/rules.mk | 51 ++++++--------- .../handwired/onekey/teensy_2pp/rules.mk | 50 +-------------- keyboards/kinesis/rules.mk | 62 ++++--------------- keyboards/lfkeyboards/lfk78/rules.mk | 4 +- keyboards/lfkeyboards/lfk87/rules.mk | 7 +-- keyboards/lfkeyboards/mini1800/rules.mk | 7 +-- keyboards/lfkeyboards/smk65/rules.mk | 12 +++- keyboards/m0lly/rules.mk | 42 +------------ keyboards/omnikey_blackheart/rules.mk | 50 +++------------ keyboards/omnikeyish/rules.mk | 48 ++------------ keyboards/planck/light/rules.mk | 15 ++--- keyboards/subatomic/rules.mk | 56 +++-------------- keyboards/tkc1800/rules.mk | 55 +++------------- keyboards/uk78/rules.mk | 50 +++------------ keyboards/vision_division/rules.mk | 54 +++------------- keyboards/z150_blackheart/rules.mk | 48 +++----------- 27 files changed, 196 insertions(+), 919 deletions(-) diff --git a/keyboards/clueboard/2x1800/rules.mk b/keyboards/clueboard/2x1800/rules.mk index eb679b9fb77..f5a41ff142a 100644 --- a/keyboards/clueboard/2x1800/rules.mk +++ b/keyboards/clueboard/2x1800/rules.mk @@ -1,11 +1,15 @@ -# MCU details +# MCU name MCU = at90usb1286 -F_CPU = 16000000 -ARCH = AVR8 -F_USB = $(F_CPU) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -OPT_DEFS += -DBOOTLOADER_SIZE=1024 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) diff --git a/keyboards/converter/modelm101/rules.mk b/keyboards/converter/modelm101/rules.mk index 4c05d9b8528..dada3f22d97 100644 --- a/keyboards/converter/modelm101/rules.mk +++ b/keyboards/converter/modelm101/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -#OPT_DEFS += -DBOOTLOADER_SIZE=1024 - - # Build Options # change yes to no to disable # diff --git a/keyboards/donutcables/scrabblepad/rules.mk b/keyboards/donutcables/scrabblepad/rules.mk index 20f532af4d5..be6c7d9ac8f 100644 --- a/keyboards/donutcables/scrabblepad/rules.mk +++ b/keyboards/donutcables/scrabblepad/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change yes to no to disable diff --git a/keyboards/handwired/108key_trackpoint/rules.mk b/keyboards/handwired/108key_trackpoint/rules.mk index 47d94671c52..2a8ed6af15c 100644 --- a/keyboards/handwired/108key_trackpoint/rules.mk +++ b/keyboards/handwired/108key_trackpoint/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/aek64/rules.mk b/keyboards/handwired/aek64/rules.mk index 5fe5a9bae96..c02af3dd6c8 100644 --- a/keyboards/handwired/aek64/rules.mk +++ b/keyboards/handwired/aek64/rules.mk @@ -1,17 +1,15 @@ -# Target file name (without extension). - -# project specific files - # MCU name MCU = at90usb1286 -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -BOOTLOADER = halfKay +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change to no to disable the options. diff --git a/keyboards/handwired/daishi/rules.mk b/keyboards/handwired/daishi/rules.mk index ece1eaaac3a..dacecfb0b16 100644 --- a/keyboards/handwired/daishi/rules.mk +++ b/keyboards/handwired/daishi/rules.mk @@ -1,49 +1,14 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu # QMK Build Options @@ -63,4 +28,4 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -ENCODER_ENABLE = yes # Add rotary encoder support \ No newline at end of file +ENCODER_ENABLE = yes # Add rotary encoder support diff --git a/keyboards/handwired/datahand/rules.mk b/keyboards/handwired/datahand/rules.mk index 59f14e17a40..a46dcedb1cb 100644 --- a/keyboards/handwired/datahand/rules.mk +++ b/keyboards/handwired/datahand/rules.mk @@ -1,44 +1,14 @@ -# Project-specific includes -SRC = matrix.c - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay # Build Options @@ -57,3 +27,6 @@ CUSTOM_MATRIX = yes # We definitely have a nonstandard matrix # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +# Project specific files +SRC = matrix.c diff --git a/keyboards/handwired/downbubble/rules.mk b/keyboards/handwired/downbubble/rules.mk index c751d9d4a4e..189b82720e2 100644 --- a/keyboards/handwired/downbubble/rules.mk +++ b/keyboards/handwired/downbubble/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/hacked_motospeed/rules.mk b/keyboards/handwired/hacked_motospeed/rules.mk index 17d71ada4d3..a2ad5adc07c 100644 --- a/keyboards/handwired/hacked_motospeed/rules.mk +++ b/keyboards/handwired/hacked_motospeed/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=1024 - - # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/ibm122m/rules.mk b/keyboards/handwired/ibm122m/rules.mk index ba4be67667c..f775fa03b37 100644 --- a/keyboards/handwired/ibm122m/rules.mk +++ b/keyboards/handwired/ibm122m/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = at90usb1286 -BOOTLOADER = halfKay - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change yes to no to disable diff --git a/keyboards/handwired/magicforce61/rules.mk b/keyboards/handwired/magicforce61/rules.mk index 91147ab4fb5..d1ed63f65b3 100644 --- a/keyboards/handwired/magicforce61/rules.mk +++ b/keyboards/handwired/magicforce61/rules.mk @@ -1,52 +1,15 @@ - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=1024 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change yes to no to disable diff --git a/keyboards/handwired/ms_sculpt_mobile/rules.mk b/keyboards/handwired/ms_sculpt_mobile/rules.mk index 680c057d361..d38138bbb85 100644 --- a/keyboards/handwired/ms_sculpt_mobile/rules.mk +++ b/keyboards/handwired/ms_sculpt_mobile/rules.mk @@ -1,37 +1,27 @@ - -## Project specific files -SRC= babblePaste.c - - ifdef ASTAR - CFLAGS=-D ASTAR - MCU = atmega32u4 - SCULPT_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done ; \ - avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) - + MCU = atmega32u4 + CFLAGS = -D ASTAR + USB = /dev/cu.usbmodem14141 + SCULPT_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done ; avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) else - MCU = at90usb1286 - SCULPT_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex + MCU = at90usb1286 + SCULPT_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex endif -F_CPU = 16000000 -ARCH = AVR8 -F_USB = $(F_CPU) - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp ifdef ASTAR - BOOTLOADER = caterina + BOOTLOADER = caterina else - BOOTLOADER = atmel-dfu + BOOTLOADER = atmel-dfu endif -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) @@ -47,10 +37,5 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 - -USB = /dev/cu.usbmodem14141 - - - -# upload: build -# $(SCULPT_UPLOAD_COMMAND) +# Project specific files +SRC = babblePaste.c diff --git a/keyboards/handwired/onekey/teensy_2pp/rules.mk b/keyboards/handwired/onekey/teensy_2pp/rules.mk index e318e4b9e7b..c421eb862e9 100644 --- a/keyboards/handwired/onekey/teensy_2pp/rules.mk +++ b/keyboards/handwired/onekey/teensy_2pp/rules.mk @@ -1,58 +1,12 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk index b3a6b84d637..295054d7551 100644 --- a/keyboards/kinesis/rules.mk +++ b/keyboards/kinesis/rules.mk @@ -1,56 +1,15 @@ - -## Project specific files - -SRC= matrix.c - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 2048 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=2048 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change yes to no to disable @@ -72,3 +31,6 @@ AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hard CUSTOM_MATRIX=yes # need to do our own thing with the matrix DEFAULT_FOLDER = kinesis/alvicstep + +# Project specific files +SRC = matrix.c diff --git a/keyboards/lfkeyboards/lfk78/rules.mk b/keyboards/lfkeyboards/lfk78/rules.mk index b9cdf230762..3c90998d983 100644 --- a/keyboards/lfkeyboards/lfk78/rules.mk +++ b/keyboards/lfkeyboards/lfk78/rules.mk @@ -7,14 +7,12 @@ LFK_REV = J ifeq ($(LFK_REV), B) MCU = atmega32u4 - OPT_DEFS += -DBOOTLOADER_SIZE=4096 else ifeq ($(LFK_REV), J) MCU = at90usb646 - OPT_DEFS += -DBOOTLOADER_SIZE=4096 else MCU = at90usb1286 - OPT_DEFS += -DBOOTLOADER_SIZE=8192 endif +BOOTLOADER = atmel-dfu OPT_DEFS += -DLFK_REV_$(LFK_REV) OPT_DEFS += -DLFK_REV_STRING=\"Rev$(LFK_REV)\" diff --git a/keyboards/lfkeyboards/lfk87/rules.mk b/keyboards/lfkeyboards/lfk87/rules.mk index bc96e3520e7..8e19706150b 100644 --- a/keyboards/lfkeyboards/lfk87/rules.mk +++ b/keyboards/lfkeyboards/lfk87/rules.mk @@ -7,12 +7,11 @@ LFK_REV = C ifeq ($(LFK_REV), A) - MCU = at90usb1286 - OPT_DEFS += -DBOOTLOADER_SIZE=8192 + MCU = at90usb1286 else - MCU = at90usb646 - OPT_DEFS += -DBOOTLOADER_SIZE=4096 + MCU = at90usb646 endif +BOOTLOADER = atmel-dfu OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV) # Extra source files for IS3731 lighting diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk index a06225491f9..d3e6a24023d 100644 --- a/keyboards/lfkeyboards/mini1800/rules.mk +++ b/keyboards/lfkeyboards/mini1800/rules.mk @@ -8,12 +8,11 @@ LFK_REV = C ifeq ($(LFK_REV), A) - MCU = at90usb1286 - OPT_DEFS += -DBOOTLOADER_SIZE=8192 + MCU = at90usb1286 else - MCU = at90usb646 - OPT_DEFS += -DBOOTLOADER_SIZE=4096 + MCU = at90usb646 endif +BOOTLOADER = atmel-dfu OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV) # Extra source files for IS3731 lighting diff --git a/keyboards/lfkeyboards/smk65/rules.mk b/keyboards/lfkeyboards/smk65/rules.mk index 5834cf5c3ae..d3f009e4d2a 100644 --- a/keyboards/lfkeyboards/smk65/rules.mk +++ b/keyboards/lfkeyboards/smk65/rules.mk @@ -1,5 +1,15 @@ +# MCU name MCU = at90usb646 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Extra source files for IS3731 lighting SRC = TWIlib.c issi.c lighting.c diff --git a/keyboards/m0lly/rules.mk b/keyboards/m0lly/rules.mk index ae6cdcb5350..21e3697dc6a 100644 --- a/keyboards/m0lly/rules.mk +++ b/keyboards/m0lly/rules.mk @@ -1,54 +1,16 @@ - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - # Build Options # change yes to no to disable # diff --git a/keyboards/omnikey_blackheart/rules.mk b/keyboards/omnikey_blackheart/rules.mk index 3d4422e9867..648f84eeed3 100644 --- a/keyboards/omnikey_blackheart/rules.mk +++ b/keyboards/omnikey_blackheart/rules.mk @@ -1,45 +1,15 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # comment out to disable the options. @@ -53,4 +23,4 @@ SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality AUDIO_ENABLE ?= no -RGBLIGHT_ENABLE ?= no \ No newline at end of file +RGBLIGHT_ENABLE ?= no diff --git a/keyboards/omnikeyish/rules.mk b/keyboards/omnikeyish/rules.mk index 38d50425fbd..6318daef7a7 100644 --- a/keyboards/omnikeyish/rules.mk +++ b/keyboards/omnikeyish/rules.mk @@ -1,55 +1,16 @@ -# keyboard specific files -SRC += dynamic_macro.c - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - # Build Options # comment out to disable the options. # @@ -62,4 +23,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no -RGBLIGHT_ENABLE = no \ No newline at end of file +RGBLIGHT_ENABLE = no + +# Project specific files +SRC += dynamic_macro.c diff --git a/keyboards/planck/light/rules.mk b/keyboards/planck/light/rules.mk index b621a9abb0f..0d86bb8a558 100644 --- a/keyboards/planck/light/rules.mk +++ b/keyboards/planck/light/rules.mk @@ -1,15 +1,16 @@ # MCU name MCU = at90usb1286 -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically diff --git a/keyboards/subatomic/rules.mk b/keyboards/subatomic/rules.mk index b4e2f488dd7..4d1c4c1c557 100644 --- a/keyboards/subatomic/rules.mk +++ b/keyboards/subatomic/rules.mk @@ -1,51 +1,15 @@ - - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=8192 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in @@ -66,4 +30,4 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend \ No newline at end of file +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/tkc1800/rules.mk b/keyboards/tkc1800/rules.mk index 35da90d0761..21e3697dc6a 100644 --- a/keyboards/tkc1800/rules.mk +++ b/keyboards/tkc1800/rules.mk @@ -1,52 +1,15 @@ - # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=8192 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/uk78/rules.mk b/keyboards/uk78/rules.mk index 5c2691823f8..ddd799c08e1 100644 --- a/keyboards/uk78/rules.mk +++ b/keyboards/uk78/rules.mk @@ -1,45 +1,15 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=8192 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. @@ -53,4 +23,4 @@ SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality AUDIO_ENABLE ?= no -RGBLIGHT_ENABLE ?= yes \ No newline at end of file +RGBLIGHT_ENABLE ?= yes diff --git a/keyboards/vision_division/rules.mk b/keyboards/vision_division/rules.mk index 5cd3a69bbb9..960210046d6 100644 --- a/keyboards/vision_division/rules.mk +++ b/keyboards/vision_division/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=1024 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay # Build Options # change yes to no to disable diff --git a/keyboards/z150_blackheart/rules.mk b/keyboards/z150_blackheart/rules.mk index b258bf35fd3..150af8dabc1 100644 --- a/keyboards/z150_blackheart/rules.mk +++ b/keyboards/z150_blackheart/rules.mk @@ -1,48 +1,16 @@ # MCU name MCU = at90usb1286 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay -# Boot Section Size in *bytes* -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # comment out to disable the options. # @@ -55,4 +23,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no -RGBLIGHT_ENABLE = no \ No newline at end of file +RGBLIGHT_ENABLE = no From 44c5be0a3e56c814120ea4e622907b2f0ba92c9a Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 20 Sep 2019 02:55:14 +1000 Subject: [PATCH 25/72] Cleanup rules.mk for 16U2 and 32U2 keyboards (#6768) * Cleanup rules.mk for 16U2 and 32U2 keyboards * Add back Tap Dance build option --- keyboards/2key2crawl/rules.mk | 6 +-- keyboards/alps64/rules.mk | 15 +++--- keyboards/bigseries/rules.mk | 48 ++++-------------- keyboards/bpiphany/frosty_flake/rules.mk | 54 ++++----------------- keyboards/bpiphany/kitten_paw/rules.mk | 54 ++++----------------- keyboards/bpiphany/pegasushoof/rules.mk | 45 ++++------------- keyboards/bpiphany/tiger_lily/rules.mk | 54 ++++----------------- keyboards/bpiphany/unloved_bastard/rules.mk | 54 ++++----------------- keyboards/handwired/6macro/rules.mk | 51 +------------------ keyboards/idb_60/rules.mk | 54 ++++----------------- keyboards/illuminati/is0/rules.mk | 51 +------------------ keyboards/kbdfans/kbdpad_mk2/rules.mk | 51 +------------------ keyboards/meme/rules.mk | 54 ++++----------------- keyboards/novelpad/rules.mk | 5 +- keyboards/primekb/prime_m/rules.mk | 51 +------------------ keyboards/primekb/prime_o/rules.mk | 51 +------------------ keyboards/sixkeyboard/rules.mk | 18 +++---- keyboards/staryu/rules.mk | 49 +------------------ keyboards/ut472/rules.mk | 41 +--------------- keyboards/xd004/v1/rules.mk | 17 +++---- 20 files changed, 115 insertions(+), 708 deletions(-) diff --git a/keyboards/2key2crawl/rules.mk b/keyboards/2key2crawl/rules.mk index feff75b1f34..c7bacab796d 100644 --- a/keyboards/2key2crawl/rules.mk +++ b/keyboards/2key2crawl/rules.mk @@ -1,18 +1,16 @@ # MCU name MCU = atmega32u2 - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - - # Build Options # comment out to disable the options. # diff --git a/keyboards/alps64/rules.mk b/keyboards/alps64/rules.mk index d618e1c3cad..79d9cb36076 100644 --- a/keyboards/alps64/rules.mk +++ b/keyboards/alps64/rules.mk @@ -1,13 +1,14 @@ # MCU name MCU = atmega32u2 -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options diff --git a/keyboards/bigseries/rules.mk b/keyboards/bigseries/rules.mk index c862f0b2564..a3dd1ad6c56 100755 --- a/keyboards/bigseries/rules.mk +++ b/keyboards/bigseries/rules.mk @@ -1,45 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. diff --git a/keyboards/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk index 74d24b8402b..a890c4a5940 100644 --- a/keyboards/bpiphany/frosty_flake/rules.mk +++ b/keyboards/bpiphany/frosty_flake/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/bpiphany/kitten_paw/rules.mk b/keyboards/bpiphany/kitten_paw/rules.mk index 68c31d3027a..72a7f14b3fe 100644 --- a/keyboards/bpiphany/kitten_paw/rules.mk +++ b/keyboards/bpiphany/kitten_paw/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 - OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk index 58b8f09e11c..0910feb61b5 100644 --- a/keyboards/bpiphany/pegasushoof/rules.mk +++ b/keyboards/bpiphany/pegasushoof/rules.mk @@ -1,42 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - -BOOTLOADER=atmel-dfu +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/bpiphany/tiger_lily/rules.mk b/keyboards/bpiphany/tiger_lily/rules.mk index d471ceb2e57..edd3ab6a4a3 100644 --- a/keyboards/bpiphany/tiger_lily/rules.mk +++ b/keyboards/bpiphany/tiger_lily/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk index aa3346b5c25..e0d75dde8a8 100644 --- a/keyboards/bpiphany/unloved_bastard/rules.mk +++ b/keyboards/bpiphany/unloved_bastard/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/handwired/6macro/rules.mk b/keyboards/handwired/6macro/rules.mk index fc886fb9afa..13760ae0664 100644 --- a/keyboards/handwired/6macro/rules.mk +++ b/keyboards/handwired/6macro/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/idb_60/rules.mk b/keyboards/idb_60/rules.mk index b5c9413470d..b57f12db6a9 100644 --- a/keyboards/idb_60/rules.mk +++ b/keyboards/idb_60/rules.mk @@ -1,52 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - # Build Options # comment out to disable the options. # @@ -62,4 +26,4 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https: # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # MIDI_ENABLE = YES # MIDI controls # UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file +# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/illuminati/is0/rules.mk b/keyboards/illuminati/is0/rules.mk index 065d0d2843e..7baa8f4c3ab 100644 --- a/keyboards/illuminati/is0/rules.mk +++ b/keyboards/illuminati/is0/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/kbdfans/kbdpad_mk2/rules.mk b/keyboards/kbdfans/kbdpad_mk2/rules.mk index 90614e94090..cfb65f5edfc 100644 --- a/keyboards/kbdfans/kbdpad_mk2/rules.mk +++ b/keyboards/kbdfans/kbdpad_mk2/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/meme/rules.mk b/keyboards/meme/rules.mk index c9f2bd450a4..621c2dded1c 100644 --- a/keyboards/meme/rules.mk +++ b/keyboards/meme/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/novelpad/rules.mk b/keyboards/novelpad/rules.mk index e77a0d6515a..54e4cea03bb 100755 --- a/keyboards/novelpad/rules.mk +++ b/keyboards/novelpad/rules.mk @@ -1,17 +1,16 @@ # MCU name MCU = atmega32u2 - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - # Build Options # comment out to disable the options. # diff --git a/keyboards/primekb/prime_m/rules.mk b/keyboards/primekb/prime_m/rules.mk index 72ad8325d30..615750bfb27 100644 --- a/keyboards/primekb/prime_m/rules.mk +++ b/keyboards/primekb/prime_m/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/primekb/prime_o/rules.mk b/keyboards/primekb/prime_o/rules.mk index 8d3b835f188..e9b7f1558b0 100644 --- a/keyboards/primekb/prime_o/rules.mk +++ b/keyboards/primekb/prime_o/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/sixkeyboard/rules.mk b/keyboards/sixkeyboard/rules.mk index b718c7e65fb..2befe17d8fe 100644 --- a/keyboards/sixkeyboard/rules.mk +++ b/keyboards/sixkeyboard/rules.mk @@ -3,15 +3,15 @@ SRC = matrix.c # MCU name MCU = atmega16u2 - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. diff --git a/keyboards/staryu/rules.mk b/keyboards/staryu/rules.mk index ad4873a39a0..52bb72ca7f1 100755 --- a/keyboards/staryu/rules.mk +++ b/keyboards/staryu/rules.mk @@ -1,61 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = lufa-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # comment out to disable the options. # diff --git a/keyboards/ut472/rules.mk b/keyboards/ut472/rules.mk index 6398eab21d5..1dd477652b1 100644 --- a/keyboards/ut472/rules.mk +++ b/keyboards/ut472/rules.mk @@ -1,53 +1,16 @@ # MCU name MCU = atmega32u2 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - - # Build Options # change yes to no to disable # diff --git a/keyboards/xd004/v1/rules.mk b/keyboards/xd004/v1/rules.mk index 9cc03498a7a..e17ca648e19 100644 --- a/keyboards/xd004/v1/rules.mk +++ b/keyboards/xd004/v1/rules.mk @@ -1,17 +1,16 @@ # MCU name MCU = atmega16u2 - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 2048 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - # Build Options BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration MOUSEKEY_ENABLE = no # Mouse keys(+4700) From 59000f491f83432b320a810630126c0af5baa1d5 Mon Sep 17 00:00:00 2001 From: Brian Lou Date: Thu, 19 Sep 2019 19:38:42 -0400 Subject: [PATCH 26/72] [Keymap] Added my personal keymaps for dz60 and TMO50. (#6772) * Added ottodokto keymaps for dz60 and tmo50. * moved placement of keymaps to proper directory * fixed accidental deletion of semicolon for tmo50 map * fix to use short form codes Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> --- keyboards/dz60/keymaps/ottodokto/config.h | 13 ++++++ keyboards/dz60/keymaps/ottodokto/keymap.c | 44 ++++++++++++++++++++ keyboards/dz60/keymaps/ottodokto/rules.mk | 1 + keyboards/tmo50/keymaps/ottodokto/config.h | 10 +++++ keyboards/tmo50/keymaps/ottodokto/keymap.c | 47 ++++++++++++++++++++++ keyboards/tmo50/keymaps/ottodokto/rules.mk | 1 + 6 files changed, 116 insertions(+) create mode 100644 keyboards/dz60/keymaps/ottodokto/config.h create mode 100644 keyboards/dz60/keymaps/ottodokto/keymap.c create mode 100644 keyboards/dz60/keymaps/ottodokto/rules.mk create mode 100644 keyboards/tmo50/keymaps/ottodokto/config.h create mode 100644 keyboards/tmo50/keymaps/ottodokto/keymap.c create mode 100644 keyboards/tmo50/keymaps/ottodokto/rules.mk diff --git a/keyboards/dz60/keymaps/ottodokto/config.h b/keyboards/dz60/keymaps/ottodokto/config.h new file mode 100644 index 00000000000..331b14f2872 --- /dev/null +++ b/keyboards/dz60/keymaps/ottodokto/config.h @@ -0,0 +1,13 @@ +/*---defines-------------------------------------------- */ +#define TAPPING_TOGGLE 2 // toggle on layer on two taps. + +/*---RGB settings-------------------------------------------- */ +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL + +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 200 \ No newline at end of file diff --git a/keyboards/dz60/keymaps/ottodokto/keymap.c b/keyboards/dz60/keymaps/ottodokto/keymap.c new file mode 100644 index 00000000000..347c6a04974 --- /dev/null +++ b/keyboards/dz60/keymaps/ottodokto/keymap.c @@ -0,0 +1,44 @@ +/* + Last updated: 3 Aug 2019 + DZ60 Layout by ottodokto + + This layout is a modification of the 60 tsangan hhkb layout, + with an additional layer to update the arrow keys and + */ + +#include QMK_KEYBOARD_H + +/*---Layers-------------------------------------------- */ +#define _base 0 // default, tsangan layout with split backspace +#define _func 1 // media controls and reset buttons + +/*---defines-------------------------------------------- */ +#define KC_CTOG LT(_func, KC_CAPS) +#define KC_TTAP TT(_func) + +#define RGB_STA RGB_M_P // rgb static +#define RGB_BRE RGB_M_B // rgb breathe +#define RGB_RAI RGB_M_R // rgb rainbow +#define RGB_SWI RGB_M_SW // rgb swirl +#define RGB_SNA RGB_M_SN // rgb snake +#define RGB_KNI RGB_M_K // rgb knight +#define RGB_GRA RGB_M_G // rgb gradient + + +/*---Layout-------------------------------------------- */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_base] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_CTOG, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TTAP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [_func] = LAYOUT_60_tsangan_hhkb( + RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RESET, \ + _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, RGB_SPI, RGB_HUD, RGB_VAI, RGB_HUI, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \ + _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, RGB_SPD, RGB_SAD, RGB_VAD, RGB_SAI, KC_BRID, KC_BRIU, _______, \ + _______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, VLK_TOG, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/dz60/keymaps/ottodokto/rules.mk b/keyboards/dz60/keymaps/ottodokto/rules.mk new file mode 100644 index 00000000000..1b0f198d06c --- /dev/null +++ b/keyboards/dz60/keymaps/ottodokto/rules.mk @@ -0,0 +1 @@ +VELOCIKEY_ENABLE = yes diff --git a/keyboards/tmo50/keymaps/ottodokto/config.h b/keyboards/tmo50/keymaps/ottodokto/config.h new file mode 100644 index 00000000000..7dcbc74ef76 --- /dev/null +++ b/keyboards/tmo50/keymaps/ottodokto/config.h @@ -0,0 +1,10 @@ +/*---RGB settings-------------------------------------------- */ +#undef RGBLIGHT_HUE_STEP +#undef RGBLIGHT_SAT_STEP +#undef RGBLIGHT_VAL_STEP +#undef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL + +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 200 \ No newline at end of file diff --git a/keyboards/tmo50/keymaps/ottodokto/keymap.c b/keyboards/tmo50/keymaps/ottodokto/keymap.c new file mode 100644 index 00000000000..688395c9d92 --- /dev/null +++ b/keyboards/tmo50/keymaps/ottodokto/keymap.c @@ -0,0 +1,47 @@ +#include QMK_KEYBOARD_H + + +/*---default defines-------------------------------------------- */ +#define LT1_SPC LT(1, KC_SPC) +#define LT2_SPC LT(2, KC_SPC) + + +#define RGB_STA RGB_M_P // rgb static +#define RGB_BRE RGB_M_B // rgb breathe +#define RGB_RAI RGB_M_R // rgb rainbow +#define RGB_SWI RGB_M_SW // rgb swirl +#define RGB_SNA RGB_M_SN // rgb snake9 +#define RGB_KNI RGB_M_K // rgb knight +#define RGB_GRA RGB_M_G // rgb gradient + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Default layer + [0] = LAYOUT_all( + KC_VOLU, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_VOLD, MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_MUTE, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_RSFT, + KC_MPLY, KC_LGUI, KC_LALT, LT2_SPC, LT1_SPC, KC_RALT, MO(3) + ), + // Numerals layer + [1] = LAYOUT_all( + KC_BRIU, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_BRID, KC_CAPS, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, + RGB_MOD, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, _______, _______, + RGB_RMOD, _______, _______, _______, _______, _______, _______ + ), + // FN & Navigation layer + [2] = LAYOUT_all( + KC_PGUP, _______, KC_END, KC_UP, KC_HOME, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, + KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, + KC_PSCR, _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + KC_RGUI, _______, _______, _______, _______, _______, _______ + ), + // RGB Control Layer + [3] = LAYOUT_all( + RGB_SPI, RGB_TOG, RGB_HUD, RGB_VAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + RGB_SPD, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, VLK_TOG, _______, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/tmo50/keymaps/ottodokto/rules.mk b/keyboards/tmo50/keymaps/ottodokto/rules.mk new file mode 100644 index 00000000000..43d2ebb17a2 --- /dev/null +++ b/keyboards/tmo50/keymaps/ottodokto/rules.mk @@ -0,0 +1 @@ +VELOCIKEY_ENABLE = yes # Enable velocikey. From beb4a12c9d06d30cc0f544ca52e618898fbb5302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20=C4=90or=C4=91evi=C4=87?= Date: Fri, 20 Sep 2019 02:29:23 +0200 Subject: [PATCH 27/72] Add reset instructions for boards that use Command to the Zadig driver installation guide (#6770) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add reset instructions for boards that use Command to the Zadig driver installation guide * -> → → * Apply suggestions from code review Replace shorthand keycode names with full names Co-Authored-By: fauxpark --- docs/driver_installation_zadig.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md index ccee7008eba..72c26373434 100644 --- a/docs/driver_installation_zadig.md +++ b/docs/driver_installation_zadig.md @@ -8,10 +8,10 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have ## Installation -Place your keyboard into the bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch usually located on the underside of the board. If your keyboard has neither, try holding Escape, or Space+`B`, as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). -Some keyboards may have specific instructions for entering the bootloader, for example the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (Escape) might be on a different key, such as Left Control. Refer to the board's README if you are unsure. +Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. +Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure. -Zadig will automatically detect the bootloader device. You may sometimes need to check **Options -> List All Devices**. +Zadig will automatically detect the bootloader device. You may sometimes need to check **Options → List All Devices**. - For keyboards with Atmel AVR MCUs, the bootloader will be named something similar to `ATm32U4DFU`, and have a Vendor ID of `03EB`. - USBasp bootloaders will appear as `USBasp`, with a VID/PID of `16C0:05DC`. - AVR keyboards flashed with the QMK-DFU bootloader will be named ` Bootloader` and will also have the VID `03EB`. @@ -39,4 +39,4 @@ Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driv ![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png) -Click **Action -> Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! +Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! From de4a47f1cc28c4ef66e7560eac2a50f717070ae2 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 21 Sep 2019 15:06:32 +1000 Subject: [PATCH 28/72] Cleanup rules.mk for 32A and 328P keyboards (#6767) --- docs/flashing.md | 80 +++++++++++++------ keyboards/ares/rules.mk | 23 ++---- keyboards/bfake/rules.mk | 23 ++---- keyboards/canoe/rules.mk | 23 ++---- keyboards/coseyfannitutti/discipline/rules.mk | 52 +----------- keyboards/donutcables/budget96/rules.mk | 23 ++---- keyboards/eve/meteor/rules.mk | 12 ++- keyboards/exclusive/e6v2/le_bmc/rules.mk | 58 +------------- keyboards/exclusive/e6v2/oe_bmc/rules.mk | 58 +------------- keyboards/facew/rules.mk | 23 ++---- keyboards/ft/mars80/rules.mk | 23 ++---- keyboards/gingham/rules.mk | 5 +- keyboards/gray_studio/hb85/rules.mk | 23 ++---- keyboards/handwired/hnah40/rules.mk | 10 ++- keyboards/jc65/v32a/rules.mk | 23 ++---- keyboards/jj40/rules.mk | 23 ++---- keyboards/jj4x4/rules.mk | 23 ++---- keyboards/jj50/keymaps/archetype/rules.mk | 23 ++---- keyboards/jj50/rules.mk | 14 +--- keyboards/kbdfans/kbdpad/mk1/rules.mk | 23 ++---- keyboards/mechmini/v1/rules.mk | 23 ++---- keyboards/mehkee96/rules.mk | 21 ++--- keyboards/mt40/rules.mk | 23 ++---- keyboards/panc60/rules.mk | 23 ++---- keyboards/pearl/rules.mk | 23 ++---- keyboards/plaid/rules.mk | 18 +---- keyboards/singa/rules.mk | 23 ++---- keyboards/skog/rules.mk | 23 ++---- keyboards/tgr/alice/rules.mk | 23 ++---- keyboards/tgr/jane/rules.mk | 23 ++---- keyboards/unikorn/rules.mk | 23 ++---- keyboards/winkeyless/bface/rules.mk | 21 +++-- keyboards/winkeyless/bmini/rules.mk | 23 ++---- keyboards/winkeyless/bminiex/rules.mk | 23 ++---- keyboards/ymd75/rules.mk | 24 ++---- keyboards/ymd96/rules.mk | 23 ++---- keyboards/ymdk/bface/rules.mk | 12 ++- keyboards/ymdk_np21/rules.mk | 23 ++---- quantum/template/avr/rules.mk | 6 +- quantum/template/ps2avrgb/rules.mk | 12 ++- 40 files changed, 333 insertions(+), 645 deletions(-) diff --git a/docs/flashing.md b/docs/flashing.md index b47a5ebf8e1..00350b8406e 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -10,11 +10,17 @@ Atmel's DFU bootloader comes on all atmega32u4 chips by default, and is used by To ensure compatibility with the DFU bootloader, make sure this block is present your `rules.mk` (optionally with `lufa-dfu` or `qmk-dfu` instead): - # Bootloader - # This definition is optional, and if your keyboard supports multiple bootloaders of - # different sizes, comment this out, and the correct address will be loaded - # automatically (+60). See bootloader.mk for all options. - BOOTLOADER = atmel-dfu +```make +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu +``` Compatible flashers: @@ -64,11 +70,17 @@ Arduino boards and their clones use the [Caterina bootloader](https://github.com To ensure compatibility with the Caterina bootloader, make sure this block is present your `rules.mk`: - # Bootloader - # This definition is optional, and if your keyboard supports multiple bootloaders of - # different sizes, comment this out, and the correct address will be loaded - # automatically (+60). See bootloader.mk for all options. - BOOTLOADER = caterina +```make +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina +``` Compatible flashers: @@ -100,11 +112,17 @@ Halfkay is a super-slim protocol developed by PJRC that uses HID, and come on al To ensure compatibility with the Halfkay bootloader, make sure this block is present your `rules.mk`: - # Bootloader - # This definition is optional, and if your keyboard supports multiple bootloaders of - # different sizes, comment this out, and the correct address will be loaded - # automatically (+60). See bootloader.mk for all options. - BOOTLOADER = halfkay +```make +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = halfkay +``` Compatible flashers: @@ -125,11 +143,17 @@ USBasploader is a bootloader developed by matrixstorm. It is used in some non-US To ensure compatibility with the USBasploader bootloader, make sure this block is present in your `rules.mk`: - # Bootloader - # This definition is optional, and if your keyboard supports multiple bootloaders of - # different sizes, comment this out, and the correct address will be loaded - # automatically (+60). See bootloader.mk for all options. - BOOTLOADER = USBasp +```make +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = USBasp +``` Compatible flashers: @@ -150,11 +174,17 @@ BootloadHID is a USB bootloader for AVR microcontrollers. The uploader tool requ To ensure compatibility with the bootloadHID bootloader, make sure this block is present your `rules.mk`: - # Bootloader - # This definition is optional, and if your keyboard supports multiple bootloaders of - # different sizes, comment this out, and the correct address will be loaded - # automatically (+60). See bootloader.mk for all options. - BOOTLOADER = bootloadHID +```make +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = bootloadHID +``` Compatible flashers: diff --git a/keyboards/ares/rules.mk b/keyboards/ares/rules.mk index cd8edc61121..3ac90cf973f 100644 --- a/keyboards/ares/rules.mk +++ b/keyboards/ares/rules.mk @@ -15,18 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -38,11 +35,7 @@ COMMAND_ENABLE = yes BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = no RGBLIGHT_CUSTOM_DRIVER = yes -NO_UART = yes OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/bfake/rules.mk b/keyboards/bfake/rules.mk index 6577ea193fd..b5b3b852cb0 100644 --- a/keyboards/bfake/rules.mk +++ b/keyboards/bfake/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,6 +41,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/canoe/rules.mk b/keyboards/canoe/rules.mk index 3d7bc0215d2..8cfc810566d 100644 --- a/keyboards/canoe/rules.mk +++ b/keyboards/canoe/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,6 +41,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk index bc81342de27..24b5969b74d 100644 --- a/keyboards/coseyfannitutti/discipline/rules.mk +++ b/keyboards/coseyfannitutti/discipline/rules.mk @@ -1,61 +1,19 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. +# Processor frequency F_CPU = 16000000 -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID -# -# This uses usbaspbootloader +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = USBasp -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 - # Flash program via avrdude, but default command is not suitable. # You can use plaid:default:program PROGRAM_CMD = avrdude -c usbasp -p m32 -U flash:w:$(BUILD_DIR)/$(TARGET).hex @@ -84,8 +42,4 @@ AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - LAYOUTS = 65_ansi diff --git a/keyboards/donutcables/budget96/rules.mk b/keyboards/donutcables/budget96/rules.mk index 67697ac7333..4f9e0e412df 100644 --- a/keyboards/donutcables/budget96/rules.mk +++ b/keyboards/donutcables/budget96/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -44,6 +40,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/eve/meteor/rules.mk b/keyboards/eve/meteor/rules.mk index 10fc8cd032e..e43baee5c5b 100644 --- a/keyboards/eve/meteor/rules.mk +++ b/keyboards/eve/meteor/rules.mk @@ -16,10 +16,14 @@ # MCU name MCU = atmega32a -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options diff --git a/keyboards/exclusive/e6v2/le_bmc/rules.mk b/keyboards/exclusive/e6v2/le_bmc/rules.mk index a9156adeb5f..13a5f1b89a4 100644 --- a/keyboards/exclusive/e6v2/le_bmc/rules.mk +++ b/keyboards/exclusive/e6v2/le_bmc/rules.mk @@ -1,46 +1,5 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB - -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 12000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -# ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -# F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS = -DDEBUG_LEVEL=0 - # Bootloader selection # Teensy halfkay @@ -48,20 +7,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # @@ -84,6 +33,5 @@ AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) +OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c - -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/exclusive/e6v2/oe_bmc/rules.mk b/keyboards/exclusive/e6v2/oe_bmc/rules.mk index a9156adeb5f..13a5f1b89a4 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/rules.mk +++ b/keyboards/exclusive/e6v2/oe_bmc/rules.mk @@ -1,46 +1,5 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB - -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 12000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -# ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -# F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS = -DDEBUG_LEVEL=0 - # Bootloader selection # Teensy halfkay @@ -48,20 +7,10 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # @@ -84,6 +33,5 @@ AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) +OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c - -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/facew/rules.mk b/keyboards/facew/rules.mk index b939b0fd240..c9942e36944 100644 --- a/keyboards/facew/rules.mk +++ b/keyboards/facew/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,7 +41,4 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup SRC = i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = 60_ansi diff --git a/keyboards/ft/mars80/rules.mk b/keyboards/ft/mars80/rules.mk index 159307f8d0c..f1c79b196c5 100644 --- a/keyboards/ft/mars80/rules.mk +++ b/keyboards/ft/mars80/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -44,7 +40,4 @@ OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk index 9afbd09644a..aa228c875bf 100644 --- a/keyboards/gingham/rules.mk +++ b/keyboards/gingham/rules.mk @@ -10,9 +10,8 @@ MCU = atmega328p # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID -# -# This uses usbaspbootloader +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = USBasp # Flash program via avrdude, but default command is not suitable. diff --git a/keyboards/gray_studio/hb85/rules.mk b/keyboards/gray_studio/hb85/rules.mk index c3e17e4932d..5339aad89cb 100644 --- a/keyboards/gray_studio/hb85/rules.mk +++ b/keyboards/gray_studio/hb85/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -43,6 +39,3 @@ RGBLIGHT_CUSTOM_DRIVER = yes OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/handwired/hnah40/rules.mk b/keyboards/handwired/hnah40/rules.mk index 341b8d03d90..bbdf5176c44 100644 --- a/keyboards/handwired/hnah40/rules.mk +++ b/keyboards/handwired/hnah40/rules.mk @@ -1,7 +1,15 @@ # MCU name MCU = atmega328p -BOOTLOADER = bootloadHID +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = USBasp # Flash program via avrdude, but default command is not suitable. # You can use hnah40:default:program diff --git a/keyboards/jc65/v32a/rules.mk b/keyboards/jc65/v32a/rules.mk index fac85172ecc..ee6efb3fa53 100644 --- a/keyboards/jc65/v32a/rules.mk +++ b/keyboards/jc65/v32a/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,6 +41,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/jj40/rules.mk b/keyboards/jj40/rules.mk index 3e496f97e95..b0bf574bd74 100644 --- a/keyboards/jj40/rules.mk +++ b/keyboards/jj40/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # Build Options @@ -54,7 +50,4 @@ HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) SRC += i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = ortho_4x12 planck_mit diff --git a/keyboards/jj4x4/rules.mk b/keyboards/jj4x4/rules.mk index 3ac2cc04329..fedc525f8ef 100644 --- a/keyboards/jj4x4/rules.mk +++ b/keyboards/jj4x4/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # Build Options @@ -54,7 +50,4 @@ HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) SRC += i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = ortho_4x4 diff --git a/keyboards/jj50/keymaps/archetype/rules.mk b/keyboards/jj50/keymaps/archetype/rules.mk index e32e8ce741e..1a63376bed2 100644 --- a/keyboards/jj50/keymaps/archetype/rules.mk +++ b/keyboards/jj50/keymaps/archetype/rules.mk @@ -16,19 +16,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -59,7 +55,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c -# programming options -PROGRAM_CMD = ./keyboards/ps2avrGB/program $(TARGET).hex - LAYOUTS = ortho_5x12 diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk index 2390d9631e3..b23b4becd40 100644 --- a/keyboards/jj50/rules.mk +++ b/keyboards/jj50/rules.mk @@ -16,14 +16,6 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB - -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 # Bootloader selection # Teensy halfkay @@ -31,7 +23,8 @@ F_CPU = 12000000 # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -60,7 +53,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = ortho_5x12 diff --git a/keyboards/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk index 421b0cf32d1..e43baee5c5b 100644 --- a/keyboards/kbdfans/kbdpad/mk1/rules.mk +++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -43,6 +39,3 @@ RGBLIGHT_CUSTOM_DRIVER = no OPT_DEFS = -DDEBUG_LEVEL=0 QUANTUM_LIB_SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/mechmini/v1/rules.mk b/keyboards/mechmini/v1/rules.mk index 11bd8955f39..3510ca6f3f1 100644 --- a/keyboards/mechmini/v1/rules.mk +++ b/keyboards/mechmini/v1/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu # build options @@ -45,6 +41,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/mehkee96/rules.mk b/keyboards/mehkee96/rules.mk index f7fb397e259..244dd2141e7 100644 --- a/keyboards/mehkee96/rules.mk +++ b/keyboards/mehkee96/rules.mk @@ -1,18 +1,16 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# Processor frequency. -F_CPU = 12000000 - -# Bootloader +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID - # Build Options # comment out to disable the options. # @@ -30,6 +28,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/mt40/rules.mk b/keyboards/mt40/rules.mk index db6ec93f5e3..19410bc6e02 100644 --- a/keyboards/mt40/rules.mk +++ b/keyboards/mt40/rules.mk @@ -1,18 +1,14 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -37,8 +33,5 @@ OPT_DEFS = -DDEBUG_LEVEL=0 CUSTOM_MATRIX = yes SRC = matrix.c i2c.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/panc60/rules.mk b/keyboards/panc60/rules.mk index 5531807f185..6ca8d7b78c3 100644 --- a/keyboards/panc60/rules.mk +++ b/keyboards/panc60/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,7 +41,4 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup SRC = i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = 60_ansi 60_hhkb diff --git a/keyboards/pearl/rules.mk b/keyboards/pearl/rules.mk index 4db92d1219c..eacf8bb2c3d 100644 --- a/keyboards/pearl/rules.mk +++ b/keyboards/pearl/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -44,6 +40,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/plaid/rules.mk b/keyboards/plaid/rules.mk index 755a4f89946..5ac35ee7f35 100644 --- a/keyboards/plaid/rules.mk +++ b/keyboards/plaid/rules.mk @@ -7,21 +7,9 @@ MCU = atmega328p # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID -# -# This uses usbaspbootloader -# BOOTLOADER = atmel-dfu - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 -OPT_DEFS += -DBOOTLOADER_SIZE=2048 +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = USBasp # Flash program via avrdude, but default command is not suitable. # You can use plaid:default:program diff --git a/keyboards/singa/rules.mk b/keyboards/singa/rules.mk index 7e46696891c..df2a59e905b 100644 --- a/keyboards/singa/rules.mk +++ b/keyboards/singa/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -43,6 +39,3 @@ RGBLIGHT_CUSTOM_DRIVER = yes OPT_DEFS = -DDEBUG_LEVEL=0 SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/skog/rules.mk b/keyboards/skog/rules.mk index bce0c442a6c..b8439906b8b 100644 --- a/keyboards/skog/rules.mk +++ b/keyboards/skog/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -50,6 +46,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/tgr/alice/rules.mk b/keyboards/tgr/alice/rules.mk index eecd38d7e76..aa141f7c3b5 100644 --- a/keyboards/tgr/alice/rules.mk +++ b/keyboards/tgr/alice/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -43,6 +39,3 @@ RGBLIGHT_CUSTOM_DRIVER = yes OPT_DEFS = -DDEBUG_LEVEL=0 SRC += i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/tgr/jane/rules.mk b/keyboards/tgr/jane/rules.mk index bf9aa79a86f..f2b4883066d 100644 --- a/keyboards/tgr/jane/rules.mk +++ b/keyboards/tgr/jane/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -44,7 +40,4 @@ OPT_DEFS = -DDEBUG_LEVEL=0 QUANTUM_LIB_SRC = i2c_master.c -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/unikorn/rules.mk b/keyboards/unikorn/rules.mk index 7d6fa14e1ed..d4f4d2aaf30 100644 --- a/keyboards/unikorn/rules.mk +++ b/keyboards/unikorn/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -43,6 +39,3 @@ RGBLIGHT_CUSTOM_DRIVER = no OPT_DEFS = -DDEBUG_LEVEL=0 SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk index 4e016b47dad..12b50278558 100644 --- a/keyboards/winkeyless/bface/rules.mk +++ b/keyboards/winkeyless/bface/rules.mk @@ -15,14 +15,16 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = bootloadHID # build options BOOTMAGIC_ENABLE = no @@ -37,11 +39,6 @@ RGBLIGHT_ENABLE = yes RGBLIGHT_CUSTOM_DRIVER = yes OPT_DEFS = -DDEBUG_LEVEL=0 -BOOTLOADER = bootloadHID # custom matrix setup SRC = i2c_master.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex - diff --git a/keyboards/winkeyless/bmini/rules.mk b/keyboards/winkeyless/bmini/rules.mk index 3d7bc0215d2..8cfc810566d 100644 --- a/keyboards/winkeyless/bmini/rules.mk +++ b/keyboards/winkeyless/bmini/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -45,6 +41,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/winkeyless/bminiex/rules.mk b/keyboards/winkeyless/bminiex/rules.mk index e5d3a2a88ca..24e4348795f 100644 --- a/keyboards/winkeyless/bminiex/rules.mk +++ b/keyboards/winkeyless/bminiex/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -51,6 +47,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/ymd75/rules.mk b/keyboards/ymd75/rules.mk index 9d09d3da94b..7bee201738a 100644 --- a/keyboards/ymd75/rules.mk +++ b/keyboards/ymd75/rules.mk @@ -16,19 +16,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -56,7 +52,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c - - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/ymd96/rules.mk b/keyboards/ymd96/rules.mk index 1cc4060b015..96441e1b3f3 100644 --- a/keyboards/ymd96/rules.mk +++ b/keyboards/ymd96/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -53,6 +49,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/keyboards/ymdk/bface/rules.mk b/keyboards/ymdk/bface/rules.mk index 8f1f83f78ec..7b829530b23 100644 --- a/keyboards/ymdk/bface/rules.mk +++ b/keyboards/ymdk/bface/rules.mk @@ -16,6 +16,16 @@ # MCU name MCU = atmega32a +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = bootloadHID + # build options BOOTMAGIC_ENABLE = no MOUSEKEY_ENABLE = yes @@ -29,5 +39,3 @@ RGBLIGHT_ENABLE = no RGBLIGHT_CUSTOM_DRIVER = no OPT_DEFS = -DDEBUG_LEVEL=0 -BOOTLOADER = bootloadHID - diff --git a/keyboards/ymdk_np21/rules.mk b/keyboards/ymdk_np21/rules.mk index 670967fbd97..634b9c69c4b 100644 --- a/keyboards/ymdk_np21/rules.mk +++ b/keyboards/ymdk_np21/rules.mk @@ -15,19 +15,15 @@ # MCU name MCU = atmega32a -PROTOCOL = VUSB -# unsupported features for now -NO_UART = yes -NO_SUSPEND_POWER_DOWN = yes - -# processor frequency -F_CPU = 12000000 - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options @@ -54,6 +50,3 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c backlight.c - -# programming options -PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex diff --git a/quantum/template/avr/rules.mk b/quantum/template/avr/rules.mk index 50deba92cf9..0ed05e71b54 100644 --- a/quantum/template/avr/rules.mk +++ b/quantum/template/avr/rules.mk @@ -1,17 +1,16 @@ # MCU name MCU = atmega32u4 - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu - # If you don't know the bootloader type, then you can specify the # Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line # Teensy halfKay 512 @@ -21,7 +20,6 @@ BOOTLOADER = atmel-dfu # USBaspLoader 2048 # OPT_DEFS += -DBOOTLOADER_SIZE=4096 - # Build Options # change yes to no to disable # diff --git a/quantum/template/ps2avrgb/rules.mk b/quantum/template/ps2avrgb/rules.mk index a3ac9bd75ac..bda115db55d 100644 --- a/quantum/template/ps2avrgb/rules.mk +++ b/quantum/template/ps2avrgb/rules.mk @@ -1,10 +1,14 @@ # MCU name MCU = atmega32a -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = bootloadHID # build options From c7d0262be7f3bc2c709fd45bd41327433285a11e Mon Sep 17 00:00:00 2001 From: coseyfannitutti <43188488+coseyfannitutti@users.noreply.github.com> Date: Sat, 21 Sep 2019 01:07:21 -0400 Subject: [PATCH 29/72] [Keyboard] Add Discipad, Update Zadig doc for USBaspLoader (#6771) * add discipad * Update driver_installation_zadig.md * Update keyboards/coseyfannitutti/discipad/info.json Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/coseyfannitutti/discipad/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update rules.mk * Update keyboards/coseyfannitutti/discipad/rules.mk Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/driver_installation_zadig.md Co-Authored-By: fauxpark * Update keyboards/coseyfannitutti/discipad/discipad.c Co-Authored-By: fauxpark * Update docs/driver_installation_zadig.md Co-Authored-By: fauxpark * Update docs/driver_installation_zadig.md Co-Authored-By: fauxpark * Update rules.mk * Update discipad.c * Update driver_installation_zadig.md * Update config.h --- docs/driver_installation_zadig.md | 6 +- keyboards/coseyfannitutti/discipad/config.h | 249 +++++++++++ keyboards/coseyfannitutti/discipad/discipad.c | 24 ++ keyboards/coseyfannitutti/discipad/discipad.h | 43 ++ keyboards/coseyfannitutti/discipad/info.json | 12 + .../discipad/keymaps/default/keymap.c | 27 ++ keyboards/coseyfannitutti/discipad/readme.md | 15 + keyboards/coseyfannitutti/discipad/rules.mk | 34 ++ .../coseyfannitutti/discipad/usbconfig.h | 397 ++++++++++++++++++ 9 files changed, 806 insertions(+), 1 deletion(-) create mode 100644 keyboards/coseyfannitutti/discipad/config.h create mode 100644 keyboards/coseyfannitutti/discipad/discipad.c create mode 100644 keyboards/coseyfannitutti/discipad/discipad.h create mode 100644 keyboards/coseyfannitutti/discipad/info.json create mode 100644 keyboards/coseyfannitutti/discipad/keymaps/default/keymap.c create mode 100644 keyboards/coseyfannitutti/discipad/readme.md create mode 100644 keyboards/coseyfannitutti/discipad/rules.mk create mode 100644 keyboards/coseyfannitutti/discipad/usbconfig.h diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md index 72c26373434..71e4cc440f8 100644 --- a/docs/driver_installation_zadig.md +++ b/docs/driver_installation_zadig.md @@ -11,7 +11,11 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure. +To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button. +Alternatively, hold `BOOT` while inserting the USB cable. + Zadig will automatically detect the bootloader device. You may sometimes need to check **Options → List All Devices**. + - For keyboards with Atmel AVR MCUs, the bootloader will be named something similar to `ATm32U4DFU`, and have a Vendor ID of `03EB`. - USBasp bootloaders will appear as `USBasp`, with a VID/PID of `16C0:05DC`. - AVR keyboards flashed with the QMK-DFU bootloader will be named ` Bootloader` and will also have the VID `03EB`. @@ -19,7 +23,7 @@ Zadig will automatically detect the bootloader device. You may sometimes need to !> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case! -If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. +If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. For flashing a USBaspLoader device via command line with msys2, the `libusbk` driver is recommended, otherwise `libusb-win32` will work fine if you are using QMK Toolbox for flashing. ![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png) diff --git a/keyboards/coseyfannitutti/discipad/config.h b/keyboards/coseyfannitutti/discipad/config.h new file mode 100644 index 00000000000..ffa06ee25c5 --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/config.h @@ -0,0 +1,249 @@ +/* +Copyright 2019 coseyfannitutti + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1769 +#define DEVICE_VER 0x0001 +#define MANUFACTURER coseyfannitutti +#define PRODUCT DISCIPAD +#define DESCRIPTION 17-key numpad assembled with only through hole components + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */ +#define MATRIX_ROW_PINS { B1, B0, D7, D6, D4 } +#define MATRIX_COL_PINS { C0, C1, C2, C3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define NO_UART 1 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +/* defined by default; to change, uncomment and set to the combination you want */ +// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP H +//#define MAGIC_KEY_HELP_ALT SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER0_ALT GRAVE +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_BOOTLOADER_ALT ESC +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_EEPROM_CLEAR BSPACE +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + +/* + * HD44780 LCD Display Configuration + */ +/* +#define LCD_LINES 2 //< number of visible lines of the display +#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display + +#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode + +#if LCD_IO_MODE +#define LCD_PORT PORTB //< port for the LCD lines +#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 +#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 +#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 +#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 +#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 +#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 +#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 +#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 +#define LCD_RS_PORT LCD_PORT //< port for RS line +#define LCD_RS_PIN 3 //< pin for RS line +#define LCD_RW_PORT LCD_PORT //< port for RW line +#define LCD_RW_PIN 2 //< pin for RW line +#define LCD_E_PORT LCD_PORT //< port for Enable line +#define LCD_E_PIN 1 //< pin for Enable line +#endif +*/ + +/* Bootmagic Lite key configuration +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +*/ diff --git a/keyboards/coseyfannitutti/discipad/discipad.c b/keyboards/coseyfannitutti/discipad/discipad.c new file mode 100644 index 00000000000..c8f6e0a178d --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/discipad.c @@ -0,0 +1,24 @@ +/* Copyright 2019 coseyfannitutti + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "discipad.h" + + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/coseyfannitutti/discipad/discipad.h b/keyboards/coseyfannitutti/discipad/discipad.h new file mode 100644 index 00000000000..5ce8b463425 --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/discipad.h @@ -0,0 +1,43 @@ +/* Copyright 2019 coseyfannitutti + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define _x_ KC_NO + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_numpad_5x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, \ + K20, K21, K22, K23, \ + K30, K31, K32, \ + K40, K42, K43 \ +) { \ +{ K00, K01, K02, K03, }, \ +{ K10, K11, K12, _x_, }, \ +{ K20, K21, K22, K23, }, \ +{ K30, K31, K32, _x_, }, \ +{ K40, _x_, K42, K43, }, \ +} + diff --git a/keyboards/coseyfannitutti/discipad/info.json b/keyboards/coseyfannitutti/discipad/info.json new file mode 100644 index 00000000000..fc50d3a1871 --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "DISCIPAD", + "url": "https://github.com/coseyfannitutti/discipad", + "maintainer": "coseyfannitutti", + "width": 4, + "height": 5, + "layouts": { + "LAYOUT_numpad_5x4": { + "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] + } + } +} diff --git a/keyboards/coseyfannitutti/discipad/keymaps/default/keymap.c b/keyboards/coseyfannitutti/discipad/keymaps/default/keymap.c new file mode 100644 index 00000000000..ffdc1044dff --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 COSEYFANNITUTTI + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#define _BL 0 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_numpad_5x4( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT ) +}; diff --git a/keyboards/coseyfannitutti/discipad/readme.md b/keyboards/coseyfannitutti/discipad/readme.md new file mode 100644 index 00000000000..4d5365fcede --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/readme.md @@ -0,0 +1,15 @@ +# DISCIPAD + +![discipline](https://i.imgur.com/3Coydx7.jpg) + +A 17-key numpad that can be assembled with only through hole components, including usb type-c + +Keyboard Maintainer: [coseyfannitutti](https://github.com/coseyfannitutti) +Hardware Supported: DISCIPAD, atmega328p +Hardware Availability: [cftkb.com](http://www.cftkb.com), [GitHub](https://github.com/coseyfannitutti/discipad) + +Make example for this keyboard (after setting up your build environment): + + make coseyfannitutti/discipad:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/coseyfannitutti/discipad/rules.mk b/keyboards/coseyfannitutti/discipad/rules.mk new file mode 100644 index 00000000000..64f6188542a --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/rules.mk @@ -0,0 +1,34 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = USBasp + +# Flash program via avrdude, but default command is not suitable. +# You can use coseyfannitutti/discipad:default:program +PROGRAM_CMD = avrdude -c usbasp -p m328p -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +# disable debug code +OPT_DEFS = -DDEBUG_LEVEL=0 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) diff --git a/keyboards/coseyfannitutti/discipad/usbconfig.h b/keyboards/coseyfannitutti/discipad/usbconfig.h new file mode 100644 index 00000000000..505f0e5c84b --- /dev/null +++ b/keyboards/coseyfannitutti/discipad/usbconfig.h @@ -0,0 +1,397 @@ +/* Name: usbconfig.h + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2005-04-01 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $ + */ + +#ifndef __usbconfig_h_included__ +#define __usbconfig_h_included__ + +#include "config.h" + +/* +General Description: +This file is an example configuration (with inline documentation) for the USB +driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is +also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may +wire the lines to any other port, as long as D+ is also wired to INT0 (or any +other hardware interrupt, as long as it is the highest level interrupt, see +section at the end of this file). +*/ + +/* ---------------------------- Hardware Config ---------------------------- */ + +#define USB_CFG_IOPORTNAME D +/* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 2 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port. Please note that D+ must also be connected + * to interrupt pin INT0! [You can also use other interrupts, see section + * "Optional MCU Description" below, or you can connect D- to the interrupt, as + * it is required if you use the USB_COUNT_SOF feature. If you use D- for the + * interrupt, the USB interrupt will also be triggered at Start-Of-Frame + * markers every millisecond.] + */ +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ +#define USB_CFG_CHECK_CRC 0 +/* Define this to 1 if you want that the driver checks integrity of incoming + * data packets (CRC checks). CRC checks cost quite a bit of code size and are + * currently only available for 18 MHz crystal clock. You must choose + * USB_CFG_CLOCK_KHZ = 18000 if you enable this option. + */ + +/* ----------------------- Optional Hardware Config ------------------------ */ + +/* #define USB_CFG_PULLUP_IOPORTNAME D */ +/* If you connect the 1.5k pullup resistor from D- to a port pin instead of + * V+, you can connect and disconnect the device from firmware by calling + * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h). + * This constant defines the port on which the pullup resistor is connected. + */ +/* #define USB_CFG_PULLUP_BIT 4 */ +/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined + * above) where the 1.5k pullup resistor is connected. See description + * above for details. + */ + +/* --------------------------- Functional Range ---------------------------- */ + +#define USB_CFG_HAVE_INTRIN_ENDPOINT 1 +/* Define this to 1 if you want to compile a version with two endpoints: The + * default control endpoint 0 and an interrupt-in endpoint (any other endpoint + * number). + */ +#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1 +/* Define this to 1 if you want to compile a version with three endpoints: The + * default control endpoint 0, an interrupt-in endpoint 3 (or the number + * configured below) and a catch-all default interrupt-in endpoint as above. + * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature. + */ +#define USB_CFG_EP3_NUMBER 3 +/* If the so-called endpoint 3 is used, it can now be configured to any other + * endpoint number (except 0) with this macro. Default if undefined is 3. + */ +/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */ +/* The above macro defines the startup condition for data toggling on the + * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1. + * Since the token is toggled BEFORE sending any data, the first packet is + * sent with the oposite value of this configuration! + */ +#define USB_CFG_IMPLEMENT_HALT 0 +/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature + * for endpoint 1 (interrupt endpoint). Although you may not need this feature, + * it is required by the standard. We have made it a config option because it + * bloats the code considerably. + */ +#define USB_CFG_SUPPRESS_INTR_CODE 0 +/* Define this to 1 if you want to declare interrupt-in endpoints, but don't + * want to send any data over them. If this macro is defined to 1, functions + * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if + * you need the interrupt-in endpoints in order to comply to an interface + * (e.g. HID), but never want to send any data. This option saves a couple + * of bytes in flash memory and the transmit buffers in RAM. + */ +#define USB_CFG_INTR_POLL_INTERVAL 1 +/* If you compile a version with endpoint 1 (interrupt-in), this is the poll + * interval. The value is in milliseconds and must not be less than 10 ms for + * low speed devices. + */ +#define USB_CFG_IS_SELF_POWERED 0 +/* Define this to 1 if the device has its own power supply. Set it to 0 if the + * device is powered from the USB bus. + */ +// max power draw with maxed white underglow measured at 120 mA (peaks) +#define USB_CFG_MAX_BUS_POWER 100 +/* Set this variable to the maximum USB bus power consumption of your device. + * The value is in milliamperes. [It will be divided by two since USB + * communicates power requirements in units of 2 mA.] + */ +#define USB_CFG_IMPLEMENT_FN_WRITE 1 +/* Set this to 1 if you want usbFunctionWrite() to be called for control-out + * transfers. Set it to 0 if you don't need it and want to save a couple of + * bytes. + */ +#define USB_CFG_IMPLEMENT_FN_READ 0 +/* Set this to 1 if you need to send control replies which are generated + * "on the fly" when usbFunctionRead() is called. If you only want to send + * data from a static buffer, set it to 0 and return the data from + * usbFunctionSetup(). This saves a couple of bytes. + */ +#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0 +/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints. + * You must implement the function usbFunctionWriteOut() which receives all + * interrupt/bulk data sent to any endpoint other than 0. The endpoint number + * can be found in 'usbRxToken'. + */ +#define USB_CFG_HAVE_FLOWCONTROL 0 +/* Define this to 1 if you want flowcontrol over USB data. See the definition + * of the macros usbDisableAllRequests() and usbEnableAllRequests() in + * usbdrv.h. + */ +#define USB_CFG_DRIVER_FLASH_PAGE 0 +/* If the device has more than 64 kBytes of flash, define this to the 64 k page + * where the driver's constants (descriptors) are located. Or in other words: + * Define this to 1 for boot loaders on the ATMega128. + */ +#define USB_CFG_LONG_TRANSFERS 0 +/* Define this to 1 if you want to send/receive blocks of more than 254 bytes + * in a single control-in or control-out transfer. Note that the capability + * for long transfers increases the driver size. + */ +/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */ +/* This macro is a hook if you want to do unconventional things. If it is + * defined, it's inserted at the beginning of received message processing. + * If you eat the received message and don't want default processing to + * proceed, do a return after doing your things. One possible application + * (besides debugging) is to flash a status LED on each packet. + */ +/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */ +/* This macro is a hook if you need to know when an USB RESET occurs. It has + * one parameter which distinguishes between the start of RESET state and its + * end. + */ +/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */ +/* This macro (if defined) is executed when a USB SET_ADDRESS request was + * received. + */ +#define USB_COUNT_SOF 0 +/* define this macro to 1 if you need the global variable "usbSofCount" which + * counts SOF packets. This feature requires that the hardware interrupt is + * connected to D- instead of D+. + */ +/* #ifdef __ASSEMBLER__ + * macro myAssemblerMacro + * in YL, TCNT0 + * sts timer0Snapshot, YL + * endm + * #endif + * #define USB_SOF_HOOK myAssemblerMacro + * This macro (if defined) is executed in the assembler module when a + * Start Of Frame condition is detected. It is recommended to define it to + * the name of an assembler macro which is defined here as well so that more + * than one assembler instruction can be used. The macro may use the register + * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages + * immediately after an SOF pulse may be lost and must be retried by the host. + * What can you do with this hook? Since the SOF signal occurs exactly every + * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in + * designs running on the internal RC oscillator. + * Please note that Start Of Frame detection works only if D- is wired to the + * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES! + */ +#define USB_CFG_CHECK_DATA_TOGGLING 0 +/* define this macro to 1 if you want to filter out duplicate data packets + * sent by the host. Duplicates occur only as a consequence of communication + * errors, when the host does not receive an ACK. Please note that you need to + * implement the filtering yourself in usbFunctionWriteOut() and + * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable + * for each control- and out-endpoint to check for duplicate packets. + */ +#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0 +/* define this macro to 1 if you want the function usbMeasureFrameLength() + * compiled in. This function can be used to calibrate the AVR's RC oscillator. + */ +#define USB_USE_FAST_CRC 0 +/* The assembler module has two implementations for the CRC algorithm. One is + * faster, the other is smaller. This CRC routine is only used for transmitted + * messages where timing is not critical. The faster routine needs 31 cycles + * per byte while the smaller one needs 61 to 69 cycles. The faster routine + * may be worth the 32 bytes bigger code size if you transmit lots of data and + * run the AVR close to its limit. + */ + +/* -------------------------- Device Description --------------------------- */ + +#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF) +/* USB vendor ID for the device, low byte first. If you have registered your + * own Vendor ID, define it here. Otherwise you may use one of obdev's free + * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules! + * *** IMPORTANT NOTE *** + * This template uses obdev's shared VID/PID pair for Vendor Class devices + * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand + * the implications! + */ +#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF) +/* This is the ID of the product, low byte first. It is interpreted in the + * scope of the vendor ID. If you have registered your own VID with usb.org + * or if you have licensed a PID from somebody else, define it here. Otherwise + * you may use one of obdev's free shared VID/PID pairs. See the file + * USB-IDs-for-free.txt for details! + * *** IMPORTANT NOTE *** + * This template uses obdev's shared VID/PID pair for Vendor Class devices + * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand + * the implications! + */ +#define USB_CFG_DEVICE_VERSION 0x01, 0x00 +/* Version number of the device: Minor number first, then major number. + */ +#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i' +#define USB_CFG_VENDOR_NAME_LEN 15 +/* These two values define the vendor name returned by the USB device. The name + * must be given as a list of characters under single quotes. The characters + * are interpreted as Unicode (UTF-16) entities. + * If you don't want a vendor name string, undefine these macros. + * ALWAYS define a vendor name containing your Internet domain name if you use + * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for + * details. + */ +#define USB_CFG_DEVICE_NAME 'D','I','S','C','I','P','A','D' +#define USB_CFG_DEVICE_NAME_LEN 8 +/* Same as above for the device name. If you don't want a device name, undefine + * the macros. See the file USB-IDs-for-free.txt before you assign a name if + * you use a shared VID/PID. + */ +#define USB_CFG_SERIAL_NUMBER '0' +#define USB_CFG_SERIAL_NUMBER_LEN 1 +/* Same as above for the serial number. If you don't want a serial number, + * undefine the macros. + * It may be useful to provide the serial number through other means than at + * compile time. See the section about descriptor properties below for how + * to fine tune control over USB descriptors such as the string descriptor + * for the serial number. + */ +#define USB_CFG_DEVICE_CLASS 0 +#define USB_CFG_DEVICE_SUBCLASS 0 +/* See USB specification if you want to conform to an existing device class. + * Class 0xff is "vendor specific". + */ +#define USB_CFG_INTERFACE_CLASS 3 /* HID */ +#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */ +#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */ +/* See USB specification if you want to conform to an existing device class or + * protocol. The following classes must be set at interface level: + * HID class is 3, no subclass and protocol required (but may be useful!) + * CDC class is 2, use subclass 2 and protocol 1 for ACM + */ +#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 +/* Define this to the length of the HID report descriptor, if you implement + * an HID device. Otherwise don't define it or define it to 0. + * If you use this define, you must add a PROGMEM character array named + * "usbHidReportDescriptor" to your code which contains the report descriptor. + * Don't forget to keep the array and this define in sync! + */ + +/* #define USB_PUBLIC static */ +/* Use the define above if you #include usbdrv.c instead of linking against it. + * This technique saves a couple of bytes in flash memory. + */ + +/* ------------------- Fine Control over USB Descriptors ------------------- */ +/* If you don't want to use the driver's default USB descriptors, you can + * provide our own. These can be provided as (1) fixed length static data in + * flash memory, (2) fixed length static data in RAM or (3) dynamically at + * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more + * information about this function. + * Descriptor handling is configured through the descriptor's properties. If + * no properties are defined or if they are 0, the default descriptor is used. + * Possible properties are: + * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched + * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is + * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if + * you want RAM pointers. + * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found + * in static memory is in RAM, not in flash memory. + * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash), + * the driver must know the descriptor's length. The descriptor itself is + * found at the address of a well known identifier (see below). + * List of static descriptor names (must be declared PROGMEM if in flash): + * char usbDescriptorDevice[]; + * char usbDescriptorConfiguration[]; + * char usbDescriptorHidReport[]; + * char usbDescriptorString0[]; + * int usbDescriptorStringVendor[]; + * int usbDescriptorStringDevice[]; + * int usbDescriptorStringSerialNumber[]; + * Other descriptors can't be provided statically, they must be provided + * dynamically at runtime. + * + * Descriptor properties are or-ed or added together, e.g.: + * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18)) + * + * The following descriptors are defined: + * USB_CFG_DESCR_PROPS_DEVICE + * USB_CFG_DESCR_PROPS_CONFIGURATION + * USB_CFG_DESCR_PROPS_STRINGS + * USB_CFG_DESCR_PROPS_STRING_0 + * USB_CFG_DESCR_PROPS_STRING_VENDOR + * USB_CFG_DESCR_PROPS_STRING_PRODUCT + * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER + * USB_CFG_DESCR_PROPS_HID + * USB_CFG_DESCR_PROPS_HID_REPORT + * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver) + * + * Note about string descriptors: String descriptors are not just strings, they + * are Unicode strings prefixed with a 2 byte header. Example: + * int serialNumberDescriptor[] = { + * USB_STRING_DESCRIPTOR_HEADER(6), + * 'S', 'e', 'r', 'i', 'a', 'l' + * }; + */ + +#define USB_CFG_DESCR_PROPS_DEVICE 0 +#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0 +#define USB_CFG_DESCR_PROPS_STRINGS 0 +#define USB_CFG_DESCR_PROPS_STRING_0 0 +#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0 +#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0 +#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0 +#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_HID 0 +#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC +//#define USB_CFG_DESCR_PROPS_HID_REPORT 0 +#define USB_CFG_DESCR_PROPS_UNKNOWN 0 + +#define usbMsgPtr_t unsigned short +/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to + * a scalar type here because gcc generates slightly shorter code for scalar + * arithmetics than for pointer arithmetics. Remove this define for backward + * type compatibility or define it to an 8 bit type if you use data in RAM only + * and all RAM is below 256 bytes (tiny memory model in IAR CC). + */ + +/* ----------------------- Optional MCU Description ------------------------ */ + +/* The following configurations have working defaults in usbdrv.h. You + * usually don't need to set them explicitly. Only if you want to run + * the driver on a device which is not yet supported or with a compiler + * which is not fully supported (such as IAR C) or if you use a differnt + * interrupt than INT0, you may have to define some of these. + */ +/* #define USB_INTR_CFG MCUCR */ +/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */ +/* #define USB_INTR_CFG_CLR 0 */ +/* #define USB_INTR_ENABLE GIMSK */ +/* #define USB_INTR_ENABLE_BIT INT0 */ +/* #define USB_INTR_PENDING GIFR */ +/* #define USB_INTR_PENDING_BIT INTF0 */ +/* #define USB_INTR_VECTOR INT0_vect */ + +/* Set INT1 for D- falling edge to count SOF */ +/* #define USB_INTR_CFG EICRA */ +// #define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10)) +// /* #define USB_INTR_CFG_CLR 0 */ +// /* #define USB_INTR_ENABLE EIMSK */ +// #define USB_INTR_ENABLE_BIT INT1 +// /* #define USB_INTR_PENDING EIFR */ +// #define USB_INTR_PENDING_BIT INTF1 +// #define USB_INTR_VECTOR INT1_vect + +#endif /* __usbconfig_h_included__ */ From 3642a82d37e8c4fb34b9ee60606ab831d642c9ec Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 21 Sep 2019 15:11:15 +1000 Subject: [PATCH 30/72] Add support for 328P hardware backlight on B1/B2 (#6776) --- docs/feature_backlight.md | 22 ++++++++++++---------- quantum/quantum.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 690eb821576..556da73859b 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -32,16 +32,18 @@ This feature is distinct from both the [RGB underglow](feature_rgblight.md) and Hardware PWM is supported according to the following table: -|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A| -|-------------|-------------|-------------|-------------|---------| -|`B5` |Timer 1 |Timer 1 | | | -|`B6` |Timer 1 |Timer 1 | | | -|`B7` |Timer 1 |Timer 1 |Timer 1 | | -|`C4` |Timer 3 | | | | -|`C5` |Timer 3 | |Timer 1 | | -|`C6` |Timer 3 |Timer 3 |Timer 1 | | -|`D4` | | | |Timer 1 | -|`D5` | | | |Timer 1 | +|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328P| +|-------------|-------------|-------------|-------------|---------|----------| +|`B1` | | | | |Timer 1 | +|`B2` | | | | |Timer 1 | +|`B5` |Timer 1 |Timer 1 | | | | +|`B6` |Timer 1 |Timer 1 | | | | +|`B7` |Timer 1 |Timer 1 |Timer 1 | | | +|`C4` |Timer 3 | | | | | +|`C5` |Timer 3 | |Timer 1 | | | +|`C6` |Timer 3 |Timer 3 |Timer 1 | | | +|`D4` | | | |Timer 1 | | +|`D5` | | | |Timer 1 | | All other pins will use software PWM. If the [Audio](feature_audio.md) feature is disabled or only using one timer, the backlight PWM can be triggered by a hardware timer: diff --git a/quantum/quantum.c b/quantum/quantum.c index 85a03377f3c..ec80fa557f9 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1104,6 +1104,22 @@ void matrix_scan_quantum() { # define COMxx1 COM1A1 # define OCRxx OCR1A # endif +# elif defined(__AVR_ATmega328P__) && (BACKLIGHT_PIN == B1 || BACKLIGHT_PIN == B2) +# define HARDWARE_PWM +# define ICRx ICR1 +# define TCCRxA TCCR1A +# define TCCRxB TCCR1B +# define TIMERx_OVF_vect TIMER1_OVF_vect +# define TIMSKx TIMSK1 +# define TOIEx TOIE1 + +# if BACKLIGHT_PIN == B1 +# define COMxx1 COM1A1 +# define OCRxx OCR1A +# elif BACKLIGHT_PIN == B2 +# define COMxx1 COM1B1 +# define OCRxx OCR1B +# endif # else # if !defined(BACKLIGHT_CUSTOM_DRIVER) # if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) From 7f65323e101a911fb64abc49ff3c81f8ed7656a7 Mon Sep 17 00:00:00 2001 From: Sorixelle <38685302+Sorixelle@users.noreply.github.com> Date: Sat, 21 Sep 2019 16:55:51 +1000 Subject: [PATCH 31/72] Add support for Void Linux systems to the qmk_install.sh script (#5526) * Add support for Void Linux systems to the qmk_install.sh script * Fix typos + grammatical edits in comments * Sort distributions by alphabetical order in linux_install.sh * Revert previous commit and sort Void packages in alphabetical order * Fix permissions on `util/linux_install.sh` --- util/linux_install.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/util/linux_install.sh b/util/linux_install.sh index 73ba25e13b0..dca0110a5de 100755 --- a/util/linux_install.sh +++ b/util/linux_install.sh @@ -183,6 +183,29 @@ elif grep ID /etc/os-release | grep -q solus; then unzip printf "\n$SOLUS_INFO\n" +elif grep ID /etc/os-release | grep -q void; then + # musl Void systems don't have glibc cross compilers avaliable in their repos. + # glibc Void systems do have musl cross compilers though, for some reason. + # So, default to musl, and switch to glibc if it is installed. + CROSS_ARM=cross-arm-linux-musleabi + if xbps-query glibc > /dev/null; then # Check is glibc if installed + CROSS_ARM=cross-arm-linux-gnueabi + fi + + sudo xbps-install \ + avr-binutils \ + avr-gcc \ + avr-libc \ + $CROSS_ARM \ + dfu-programmer \ + dfu-util \ + gcc \ + git \ + make \ + wget \ + unzip \ + zip + else echo "Sorry, we don't recognize your OS. Help us by contributing support!" echo From ea96c4b787f07d64a497700e07c2a842324fe4f5 Mon Sep 17 00:00:00 2001 From: jlquinn Date: Sat, 21 Sep 2019 02:59:16 -0400 Subject: [PATCH 32/72] [Keyboard] Update Stapelberg readme.md (#5557) Previously suggested parts are hard to find or non-existent. Update with available part numbers. --- keyboards/kinesis/stapelberg/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/kinesis/stapelberg/readme.md b/keyboards/kinesis/stapelberg/readme.md index 37b26623f23..dc6041e5a12 100644 --- a/keyboards/kinesis/stapelberg/readme.md +++ b/keyboards/kinesis/stapelberg/readme.md @@ -22,8 +22,8 @@ If you want to perform this customization, these parts may be helpful. | 10 pin headers for thumb clusters | 4 | Digi-Key | 609-3250-ND | | 8 pin cable for thumb clusters | 2 | Digi-Key | SAM8928-ND | | Teensy++ 2.0 | 1 | Digi-Key | 1528-1056-ND | -| 2 pin right angle header for reset | 1 | Digi-Key | 3M9467-ND | -| Reset cables | 2 | Sparkfun | PRT-09140 | +| 2 pin right angle header for reset | 1 | Digi-Key | 952-2244-ND | +| Reset cables | 1 | Digi-Key | PRT-08672-ND | The board and connections are shown here ![controller board](https://i.imgur.com/2ZPMwvZ.jpg) From 2df3799e3d3fe60ff6ed6159cd935d4356be70c3 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 21 Sep 2019 17:00:58 +1000 Subject: [PATCH 33/72] Add list-keymaps make target (#5563) --- Makefile | 13 +++++++++++++ message.mk | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/Makefile b/Makefile index 37f5f23dbe7..508691f45f1 100644 --- a/Makefile +++ b/Makefile @@ -371,6 +371,9 @@ define PARSE_KEYBOARD # The same if all was specified else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true) $$(eval $$(call PARSE_ALL_KEYMAPS)) + # List all keymaps for the given keyboard + else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,list-keymaps),true) + $$(eval $$(call LIST_ALL_KEYMAPS)) # Try to match the specified keyamp with the list of known keymaps else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM))) @@ -407,6 +410,16 @@ endef # endif # endef +# Prints a list of all known keymaps for the given keyboard +define LIST_ALL_KEYMAPS + COMMAND_true_LIST_KEYMAPS := \ + printf "$$(KEYMAPS)\n"; + COMMAND_false_LIST_KEYMAPS := \ + printf "$$(MSG_AVAILABLE_KEYMAPS)\n"; \ + printf "$$(KEYMAPS)\n"; + COMMANDS += LIST_KEYMAPS +endef + # $1 Keymap # This is the meat of compiling a keyboard, when entering this, everything is known # keyboard, subproject, and keymap diff --git a/message.mk b/message.mk index dfbde2845be..53afba20655 100644 --- a/message.mk +++ b/message.mk @@ -76,6 +76,11 @@ define GENERATE_MSG_MAKE_TEST endef MSG_MAKE_TEST = $(eval $(call GENERATE_MSG_MAKE_TEST))$(MSG_MAKE_TEST_ACTUAL) MSG_TEST = Testing $(BOLD)$(TEST_NAME)$(NO_COLOR) +define GENERATE_MSG_AVAILABLE_KEYMAPS + MSG_AVAILABLE_KEYMAPS_ACTUAL := Available keymaps for $(BOLD)$$(CURRENT_KB)$(NO_COLOR): +endef +MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAILABLE_KEYMAPS_ACTUAL) + MSG_CHECK_FILESIZE = Checking file size of $(TARGET).hex MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n From 75c97477874b9354a90b8b4eca2d3b1ecfc15435 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 21 Sep 2019 10:13:44 -0700 Subject: [PATCH 34/72] [Keymap] Bonta keymap for massdrop/ALT (#6391) * Added new bonta keymap. * Added a note. * Made map more mac like. --- keyboards/massdrop/alt/keymaps/bonta/keymap.c | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 keyboards/massdrop/alt/keymaps/bonta/keymap.c diff --git a/keyboards/massdrop/alt/keymaps/bonta/keymap.c b/keyboards/massdrop/alt/keymaps/bonta/keymap.c new file mode 100644 index 00000000000..c1acf2c151c --- /dev/null +++ b/keyboards/massdrop/alt/keymaps/bonta/keymap.c @@ -0,0 +1,114 @@ +#include QMK_KEYBOARD_H + +enum alt_keycodes { + U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active + U_T_AGCR, //USB Toggle Automatic GCR control + DBG_TOG, //DEBUG Toggle On / Off + DBG_MTRX, //DEBUG Toggle Matrix Prints + DBG_KBD, //DEBUG Toggle Keyboard Prints + DBG_MOU, //DEBUG Toggle Mouse Prints + MD_BOOT, //Restart into bootloader after hold timeout +}; + +#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode +#define RGB_BRU RGB_VAI +#define RGB_BRD RGB_VAD + +keymap_config_t keymap_config; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \ + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_MUTE, \ + _______, RGB_SPD, RGB_BRU, RGB_SPI, _______, _______, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ + _______, RGB_RMOD,RGB_BRD, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ + _______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, \ + _______, _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \ + ) +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +}; + +#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) +#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) +#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint32_t key_timer; + + switch (keycode) { + case U_T_AUTO: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode"); + } + return false; + case U_T_AGCR: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); + } + return false; + case DBG_TOG: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); + } + return false; + case DBG_MTRX: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix"); + } + return false; + case DBG_KBD: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard"); + } + return false; + case DBG_MOU: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse"); + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_KEYLIGHT: { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } + break; + } + } + return false; + case MD_BOOT: + if (record->event.pressed) { + key_timer = timer_read32(); + } else { + if (timer_elapsed32(key_timer) >= 500) { + reset_keyboard(); + } + } + return false; + default: + return true; //Process all other keycodes normally + } +} From 63a0b1241d204873cd5156a959e913c602b0c386 Mon Sep 17 00:00:00 2001 From: Daniel Shields Date: Sat, 21 Sep 2019 19:04:27 +0100 Subject: [PATCH 35/72] [Keymap] Move common code and configuration to userspace for dshields keymaps. (#6537) --- keyboards/model01/keymaps/dshields/config.h | 26 ---------------- keyboards/model01/keymaps/dshields/keymap.c | 28 +---------------- keyboards/model01/keymaps/dshields/rules.mk | 3 -- keyboards/planck/keymaps/dshields/config.h | 29 ----------------- keyboards/planck/keymaps/dshields/keymap.c | 29 ++--------------- users/dshields/config.h | 14 +++++++++ users/dshields/dshields.c | 30 ++++++++++++++++++ users/dshields/dshields.h | 31 +++++++++++++++++++ .../keymaps => users}/dshields/rules.mk | 0 9 files changed, 79 insertions(+), 111 deletions(-) delete mode 100644 keyboards/model01/keymaps/dshields/rules.mk create mode 100644 users/dshields/config.h create mode 100644 users/dshields/dshields.c create mode 100644 users/dshields/dshields.h rename {keyboards/planck/keymaps => users}/dshields/rules.mk (100%) diff --git a/keyboards/model01/keymaps/dshields/config.h b/keyboards/model01/keymaps/dshields/config.h index 0896a1f45e0..fdb23d46bae 100644 --- a/keyboards/model01/keymaps/dshields/config.h +++ b/keyboards/model01/keymaps/dshields/config.h @@ -1,30 +1,4 @@ #pragma once -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_DIGITAL_RAIN_DROPS 18 -#define USB_MAX_POWER_CONSUMPTION 100 -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 3000 - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_TIME_TO_MAX 40 -#define MOUSEKEY_MAX_SPEED 7 -#define MOUSEKEY_WHEEL_DELAY 0 - -// dynamic macro keys -#define DM_PLAY DYN_MACRO_PLAY1 -#define DM_STRT DYN_REC_START1 -#define DM_STOP DYN_REC_STOP - -// one-shot layer keys -#define OSL_FUN OSL(FUN) - -// one-shot modifier keys -#define OSMLCTL OSM(MOD_LCTL) -#define OSMRCTL OSM(MOD_RCTL) -#define OSMLALT OSM(MOD_LALT) -#define OSMRALT OSM(MOD_RALT) -#define OSMLSFT OSM(MOD_LSFT) -#define OSMRSFT OSM(MOD_RSFT) diff --git a/keyboards/model01/keymaps/dshields/keymap.c b/keyboards/model01/keymaps/dshields/keymap.c index dedfd69b483..6b9a5413210 100644 --- a/keyboards/model01/keymaps/dshields/keymap.c +++ b/keyboards/model01/keymaps/dshields/keymap.c @@ -1,4 +1,5 @@ #include QMK_KEYBOARD_H +#include "dshields.h" enum { DEF, FUN }; enum { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; @@ -30,30 +31,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case DEF: - set_all_leds_to(0,0,0); - break; - case FUN: - // TODO light the fn keys - // set_led_to(?, 0, 128, 0); - // set_led_to(?, 0, 128, 0); - break; - } - return state; -} - -/* -void matrix_init_user(void) { - eeconfig_init(); -}; -*/ - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_dynamic_macro(keycode, record)) { - return false; - } - return true; -} - diff --git a/keyboards/model01/keymaps/dshields/rules.mk b/keyboards/model01/keymaps/dshields/rules.mk deleted file mode 100644 index d3754cc1fc8..00000000000 --- a/keyboards/model01/keymaps/dshields/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = no -CONSOLE_ENABLE = no diff --git a/keyboards/planck/keymaps/dshields/config.h b/keyboards/planck/keymaps/dshields/config.h index 8d90d0d2cee..857c8164e31 100644 --- a/keyboards/planck/keymaps/dshields/config.h +++ b/keyboards/planck/keymaps/dshields/config.h @@ -1,33 +1,4 @@ #pragma once -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_DIGITAL_RAIN_DROPS 24 -#define USB_MAX_POWER_CONSUMPTION 100 -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 3000 -#define RETRO_TAPPING - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_TIME_TO_MAX 40 -#define MOUSEKEY_MAX_SPEED 7 -#define MOUSEKEY_WHEEL_DELAY 0 - -// dynamic macro keys -#define DM_PLAY DYN_MACRO_PLAY1 -#define DM_STRT DYN_REC_START1 -#define DM_STOP DYN_REC_STOP - -// one-shot layer keys -#define OSL_RSE OSL(RSE) -#define OSL_LWR OSL(LWR) -#define OSL_FUN OSL(FUN) - -// one-shot modifier keys -#define OSM_CTL OSM(MOD_LCTL) -#define OSM_ALT OSM(MOD_LALT) -#define OSM_SFT OSM(MOD_LSFT) - -// mod-tap keys -#define MT_SPC SFT_T(KC_SPC) diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c index 18e246a3eaf..18b026da443 100644 --- a/keyboards/planck/keymaps/dshields/keymap.c +++ b/keyboards/planck/keymaps/dshields/keymap.c @@ -1,27 +1,17 @@ #include QMK_KEYBOARD_H -#include "config.h" - -extern keymap_config_t keymap_config; +#include "dshields.h" enum planck_layers { DEF, LWR, RSE, FUN }; enum planck_keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; #include "dynamic_macro.h" -#ifdef KEYBOARD_planck_light - #define LGT_TOG RGB_TOG - #define LGT_MOD RGB_MOD -#else - #define LGT_TOG BL_TOGG - #define LGT_MOD BL_STEP -#endif - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DEF] = LAYOUT_planck_grid( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P , KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, - KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_Z, KC_X, KC_C, KC_V, KC_B, OSMLSFT, DM_PLAY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + OSMLCTL, KC_LGUI, OSMLALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), [LWR] = LAYOUT_planck_grid( KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, @@ -43,16 +33,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -/* -void matrix_init_user(void) { - eeconfig_init(); -}; -*/ - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_dynamic_macro(keycode, record)) { - return false; - } - return true; -} - diff --git a/users/dshields/config.h b/users/dshields/config.h new file mode 100644 index 00000000000..743f16f9998 --- /dev/null +++ b/users/dshields/config.h @@ -0,0 +1,14 @@ +#pragma once + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define USB_MAX_POWER_CONSUMPTION 100 +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 +#define RETRO_TAPPING + +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 40 +#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_WHEEL_DELAY 0 + diff --git a/users/dshields/dshields.c b/users/dshields/dshields.c new file mode 100644 index 00000000000..6aff5c6716a --- /dev/null +++ b/users/dshields/dshields.c @@ -0,0 +1,30 @@ +extern keymap_config_t keymap_config; + +/* uncomment to reset +void matrix_init_user(void) { + eeconfig_init(); +}; +*/ + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_dynamic_macro(keycode, record)) { + return false; + } + return true; +} + +// work in progress +uint32_t layer_state_set_user(uint32_t state) { + switch (biton32(state)) { + case DEF: + set_all_leds_to(0,0,0); + break; + case FUN: + // TODO light the fn keys + // set_led_to(?, 0, 128, 0); + // set_led_to(?, 0, 128, 0); + break; + } + return state; +} + diff --git a/users/dshields/dshields.h b/users/dshields/dshields.h new file mode 100644 index 00000000000..c746e74fb5b --- /dev/null +++ b/users/dshields/dshields.h @@ -0,0 +1,31 @@ +#pragma once + +// dynamic macro keys +#define DM_PLAY DYN_MACRO_PLAY1 +#define DM_STRT DYN_REC_START1 +#define DM_STOP DYN_REC_STOP + +// one-shot layer keys +#define OSL_RSE OSL(RSE) +#define OSL_LWR OSL(LWR) +#define OSL_FUN OSL(FUN) + +// one-shot modifier keys +#define OSMLCTL OSM(MOD_LCTL) +#define OSMRCTL OSM(MOD_RCTL) +#define OSMLALT OSM(MOD_LALT) +#define OSMRALT OSM(MOD_RALT) +#define OSMLSFT OSM(MOD_LSFT) +#define OSMRSFT OSM(MOD_RSFT) + +// mod-tap keys +#define MT_SPC SFT_T(KC_SPC) + +#ifdef KEYBOARD_planck_light + #define LGT_TOG RGB_TOG + #define LGT_MOD RGB_MOD +#else + #define LGT_TOG BL_TOGG + #define LGT_MOD BL_STEP +#endif + diff --git a/keyboards/planck/keymaps/dshields/rules.mk b/users/dshields/rules.mk similarity index 100% rename from keyboards/planck/keymaps/dshields/rules.mk rename to users/dshields/rules.mk From f069e9fc09859baf03d940b6db47e95c50a24936 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sat, 21 Sep 2019 11:22:27 -0700 Subject: [PATCH 36/72] Generalize Tap Dance Layer functions (#6629) * made tapdance dual_role general * updated original dual_role functionality * added toggling layer example * Fix dual role and add alias * Update docs about new layer tap dances * Fix up based on feedback --- .vscode/settings.json | 12 +++++++----- docs/feature_tap_dance.md | 4 +++- quantum/process_keycode/process_tap_dance.c | 2 +- quantum/process_keycode/process_tap_dance.h | 10 +++++++++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ba5b56aa402..e5089a55bad 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,10 +8,12 @@ "**/*.hex": true }, "files.associations": { - "*.h": "c", - "*.c": "c", - "*.cpp": "cpp", - "*.hpp": "cpp", - "xstddef": "c" + "*.h": "c", + "*.c": "c", + "*.cpp": "cpp", + "*.hpp": "cpp", + "xstddef": "c", + "type_traits": "c", + "utility": "c" } } diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md index 73e0471a012..e381c2af01d 100644 --- a/docs/feature_tap_dance.md +++ b/docs/feature_tap_dance.md @@ -30,7 +30,9 @@ Next, you will want to define some tap-dance keys, which is easiest to do with t After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options: * `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held. -* `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode). +* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode). + * This is the same as `ACTION_TAP_DANCE_DUAL_ROLE`, but renamed to something that is clearer about its functionality. Both names will work. +* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: Sends the `kc` keycode when tapped once, or toggles the state of `layer`. (this functions like the `TG` layer keycode). * `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action. * `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets. * `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`. diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index c27fe48347b..16756e59c20 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -71,7 +71,7 @@ void qk_tap_dance_dual_role_finished(qk_tap_dance_state_t *state, void *user_dat if (state->count == 1) { register_code16(pair->kc); } else if (state->count == 2) { - layer_move(pair->layer); + pair->layer_function(pair->layer); } } diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index b2d0cb8297c..8d227dfd70f 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -56,13 +56,19 @@ typedef struct { typedef struct { uint16_t kc; uint8_t layer; + void (*layer_function)(uint8_t); } qk_tap_dance_dual_role_t; # define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) \ { .fn = {qk_tap_dance_pair_on_each_tap, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset}, .user_data = (void *)&((qk_tap_dance_pair_t){kc1, kc2}), } # define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) \ - { .fn = {qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset}, .user_data = (void *)&((qk_tap_dance_dual_role_t){kc, layer}), } + { .fn = { qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_move }), } + +# define ACTION_TAP_DANCE_TOGGLE_LAYER(kc, layer) \ + { .fn = { NULL, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_invert }), } + +# define ACTION_TAP_DANCE_LAYER_MOVE(kc, layer) ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) # define ACTION_TAP_DANCE_FN(user_fn) \ { .fn = {NULL, user_fn, NULL}, .user_data = NULL, } @@ -73,6 +79,8 @@ typedef struct { # define ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term) \ { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, .custom_tapping_term = tap_specific_tapping_term, } + + extern qk_tap_dance_action_t tap_dance_actions[]; /* To be used internally */ From fd19795879a92287faa93eb3900ce8d10f89ace3 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Sat, 21 Sep 2019 11:27:53 -0700 Subject: [PATCH 37/72] [Keyboard] Move more percent boards into the percent directory (#6781) * move canoe into percent directory * update readme for new make path * move skog into percent directory * update readme for new path and new instructions * update readme * fix error in naming --- keyboards/{ => percent}/canoe/canoe.c | 0 keyboards/{ => percent}/canoe/canoe.h | 0 keyboards/{ => percent}/canoe/config.h | 0 keyboards/{ => percent}/canoe/i2c.c | 0 keyboards/{ => percent}/canoe/i2c.h | 0 keyboards/{ => percent}/canoe/info.json | 0 .../canoe/keymaps/boy_314/keymap.c | 0 .../canoe/keymaps/boy_314/readme.md | 0 .../canoe/keymaps/default/keymap.c | 0 .../canoe/keymaps/dhertz/keymap.c | 0 .../{ => percent}/canoe/keymaps/iso/keymap.c | 0 keyboards/{ => percent}/canoe/matrix.c | 0 keyboards/{ => percent}/canoe/readme.md | 12 +++--- keyboards/{ => percent}/canoe/rules.mk | 0 keyboards/{ => percent}/canoe/usbconfig.h | 0 keyboards/{ => percent}/skog/README.md | 38 ++++++------------- keyboards/{ => percent}/skog/backlight.c | 0 .../{ => percent}/skog/backlight_custom.h | 0 .../{ => percent}/skog/breathing_custom.h | 0 keyboards/{ => percent}/skog/config.h | 0 keyboards/{ => percent}/skog/i2c.c | 0 keyboards/{ => percent}/skog/i2c.h | 0 keyboards/{ => percent}/skog/info.json | 0 .../skog/keymaps/default/keymap.c | 0 keyboards/{ => percent}/skog/matrix.c | 0 keyboards/{ => percent}/skog/rules.mk | 0 keyboards/{ => percent}/skog/skog.c | 0 keyboards/{ => percent}/skog/skog.h | 0 keyboards/{ => percent}/skog/usbconfig.h | 0 29 files changed, 17 insertions(+), 33 deletions(-) rename keyboards/{ => percent}/canoe/canoe.c (100%) rename keyboards/{ => percent}/canoe/canoe.h (100%) rename keyboards/{ => percent}/canoe/config.h (100%) rename keyboards/{ => percent}/canoe/i2c.c (100%) rename keyboards/{ => percent}/canoe/i2c.h (100%) rename keyboards/{ => percent}/canoe/info.json (100%) rename keyboards/{ => percent}/canoe/keymaps/boy_314/keymap.c (100%) rename keyboards/{ => percent}/canoe/keymaps/boy_314/readme.md (100%) rename keyboards/{ => percent}/canoe/keymaps/default/keymap.c (100%) rename keyboards/{ => percent}/canoe/keymaps/dhertz/keymap.c (100%) rename keyboards/{ => percent}/canoe/keymaps/iso/keymap.c (100%) rename keyboards/{ => percent}/canoe/matrix.c (100%) rename keyboards/{ => percent}/canoe/readme.md (77%) rename keyboards/{ => percent}/canoe/rules.mk (100%) rename keyboards/{ => percent}/canoe/usbconfig.h (100%) rename keyboards/{ => percent}/skog/README.md (56%) rename keyboards/{ => percent}/skog/backlight.c (100%) rename keyboards/{ => percent}/skog/backlight_custom.h (100%) rename keyboards/{ => percent}/skog/breathing_custom.h (100%) rename keyboards/{ => percent}/skog/config.h (100%) rename keyboards/{ => percent}/skog/i2c.c (100%) rename keyboards/{ => percent}/skog/i2c.h (100%) rename keyboards/{ => percent}/skog/info.json (100%) rename keyboards/{ => percent}/skog/keymaps/default/keymap.c (100%) rename keyboards/{ => percent}/skog/matrix.c (100%) rename keyboards/{ => percent}/skog/rules.mk (100%) rename keyboards/{ => percent}/skog/skog.c (100%) rename keyboards/{ => percent}/skog/skog.h (100%) rename keyboards/{ => percent}/skog/usbconfig.h (100%) diff --git a/keyboards/canoe/canoe.c b/keyboards/percent/canoe/canoe.c similarity index 100% rename from keyboards/canoe/canoe.c rename to keyboards/percent/canoe/canoe.c diff --git a/keyboards/canoe/canoe.h b/keyboards/percent/canoe/canoe.h similarity index 100% rename from keyboards/canoe/canoe.h rename to keyboards/percent/canoe/canoe.h diff --git a/keyboards/canoe/config.h b/keyboards/percent/canoe/config.h similarity index 100% rename from keyboards/canoe/config.h rename to keyboards/percent/canoe/config.h diff --git a/keyboards/canoe/i2c.c b/keyboards/percent/canoe/i2c.c similarity index 100% rename from keyboards/canoe/i2c.c rename to keyboards/percent/canoe/i2c.c diff --git a/keyboards/canoe/i2c.h b/keyboards/percent/canoe/i2c.h similarity index 100% rename from keyboards/canoe/i2c.h rename to keyboards/percent/canoe/i2c.h diff --git a/keyboards/canoe/info.json b/keyboards/percent/canoe/info.json similarity index 100% rename from keyboards/canoe/info.json rename to keyboards/percent/canoe/info.json diff --git a/keyboards/canoe/keymaps/boy_314/keymap.c b/keyboards/percent/canoe/keymaps/boy_314/keymap.c similarity index 100% rename from keyboards/canoe/keymaps/boy_314/keymap.c rename to keyboards/percent/canoe/keymaps/boy_314/keymap.c diff --git a/keyboards/canoe/keymaps/boy_314/readme.md b/keyboards/percent/canoe/keymaps/boy_314/readme.md similarity index 100% rename from keyboards/canoe/keymaps/boy_314/readme.md rename to keyboards/percent/canoe/keymaps/boy_314/readme.md diff --git a/keyboards/canoe/keymaps/default/keymap.c b/keyboards/percent/canoe/keymaps/default/keymap.c similarity index 100% rename from keyboards/canoe/keymaps/default/keymap.c rename to keyboards/percent/canoe/keymaps/default/keymap.c diff --git a/keyboards/canoe/keymaps/dhertz/keymap.c b/keyboards/percent/canoe/keymaps/dhertz/keymap.c similarity index 100% rename from keyboards/canoe/keymaps/dhertz/keymap.c rename to keyboards/percent/canoe/keymaps/dhertz/keymap.c diff --git a/keyboards/canoe/keymaps/iso/keymap.c b/keyboards/percent/canoe/keymaps/iso/keymap.c similarity index 100% rename from keyboards/canoe/keymaps/iso/keymap.c rename to keyboards/percent/canoe/keymaps/iso/keymap.c diff --git a/keyboards/canoe/matrix.c b/keyboards/percent/canoe/matrix.c similarity index 100% rename from keyboards/canoe/matrix.c rename to keyboards/percent/canoe/matrix.c diff --git a/keyboards/canoe/readme.md b/keyboards/percent/canoe/readme.md similarity index 77% rename from keyboards/canoe/readme.md rename to keyboards/percent/canoe/readme.md index 729ab1a0faa..45773e46835 100644 --- a/keyboards/canoe/readme.md +++ b/keyboards/percent/canoe/readme.md @@ -1,5 +1,4 @@ -CANOE -======== +# Canoe A 65% keyboard with some RGB @@ -9,7 +8,7 @@ Hardware Availability: https://geekhack.org/index.php?topic=92418.0 Make example for this keyboard (after setting up your build environment): - make canoe:default + make percent/canoe:default Flashing @@ -33,12 +32,13 @@ macOS: ``` 3. Install the following packages: ``` - brew install python - pip install pyusb + brew install python3 + pip3 install pyusb brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb + ``` 4. Place your keyboard into reset. 5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/canoe/rules.mk b/keyboards/percent/canoe/rules.mk similarity index 100% rename from keyboards/canoe/rules.mk rename to keyboards/percent/canoe/rules.mk diff --git a/keyboards/canoe/usbconfig.h b/keyboards/percent/canoe/usbconfig.h similarity index 100% rename from keyboards/canoe/usbconfig.h rename to keyboards/percent/canoe/usbconfig.h diff --git a/keyboards/skog/README.md b/keyboards/percent/skog/README.md similarity index 56% rename from keyboards/skog/README.md rename to keyboards/percent/skog/README.md index 51a792b6bd2..5b7dacd915a 100644 --- a/keyboards/skog/README.md +++ b/keyboards/percent/skog/README.md @@ -1,5 +1,4 @@ -Skog TKL by Percent -========================== +# Skog TKL Keyboard Maintainer: QMK Community Hardware Supported: Skog PCB @@ -7,21 +6,14 @@ Hardware Availability: https://geekhack.org/index.php?topic=87953.0 Make example for this keyboard (after setting up your build environment): - make skog:default + make percent/skog:default -## Setting the board to bootloader mode - -If you're lucky, the programming script does this automagically for you. If -however this doesn't work for you, you need to enter the bootloader mode manually -by plugging the keyboard in while holding the bootloader key. If you did this -correctly the LEDs will blink and you'll be able to flash your firmware. - -The bootloader key is in the top-right (Pause). - -## Flashing +Flashing ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods. +**Reset Key:** Hold down the key located at `K00`, commonly programmed as Pause while plugging in the keyboard. + Windows: 1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash). 2. Place your keyboard into reset. @@ -40,22 +32,14 @@ macOS: ``` 3. Install the following packages: ``` - brew install python - brew install pyusb - brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb + brew install python3 + pip3 install pyusb + brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb + ``` 4. Place your keyboard into reset. 5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +**Please Note:** You will need to use the `EEP_RST` keycode first, followed by unplugging/replugging the board to get RGB underglow effects to work. -## Troubleshooting - -From my experience, it's really hard to brick these boards. But these -tricks have been useful when it got stuck in a weird scenario. - -1. Try plugging the board in while holding the bootloader key. This will force - it to boot only the bootloader without loading the firmware. Once this is - done, just reflash the board with the original firmware. -2. Sometimes USB hubs can act weird, so try connecting the board directly - to your computer or plugging/unplugging the USB hub. +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/skog/backlight.c b/keyboards/percent/skog/backlight.c similarity index 100% rename from keyboards/skog/backlight.c rename to keyboards/percent/skog/backlight.c diff --git a/keyboards/skog/backlight_custom.h b/keyboards/percent/skog/backlight_custom.h similarity index 100% rename from keyboards/skog/backlight_custom.h rename to keyboards/percent/skog/backlight_custom.h diff --git a/keyboards/skog/breathing_custom.h b/keyboards/percent/skog/breathing_custom.h similarity index 100% rename from keyboards/skog/breathing_custom.h rename to keyboards/percent/skog/breathing_custom.h diff --git a/keyboards/skog/config.h b/keyboards/percent/skog/config.h similarity index 100% rename from keyboards/skog/config.h rename to keyboards/percent/skog/config.h diff --git a/keyboards/skog/i2c.c b/keyboards/percent/skog/i2c.c similarity index 100% rename from keyboards/skog/i2c.c rename to keyboards/percent/skog/i2c.c diff --git a/keyboards/skog/i2c.h b/keyboards/percent/skog/i2c.h similarity index 100% rename from keyboards/skog/i2c.h rename to keyboards/percent/skog/i2c.h diff --git a/keyboards/skog/info.json b/keyboards/percent/skog/info.json similarity index 100% rename from keyboards/skog/info.json rename to keyboards/percent/skog/info.json diff --git a/keyboards/skog/keymaps/default/keymap.c b/keyboards/percent/skog/keymaps/default/keymap.c similarity index 100% rename from keyboards/skog/keymaps/default/keymap.c rename to keyboards/percent/skog/keymaps/default/keymap.c diff --git a/keyboards/skog/matrix.c b/keyboards/percent/skog/matrix.c similarity index 100% rename from keyboards/skog/matrix.c rename to keyboards/percent/skog/matrix.c diff --git a/keyboards/skog/rules.mk b/keyboards/percent/skog/rules.mk similarity index 100% rename from keyboards/skog/rules.mk rename to keyboards/percent/skog/rules.mk diff --git a/keyboards/skog/skog.c b/keyboards/percent/skog/skog.c similarity index 100% rename from keyboards/skog/skog.c rename to keyboards/percent/skog/skog.c diff --git a/keyboards/skog/skog.h b/keyboards/percent/skog/skog.h similarity index 100% rename from keyboards/skog/skog.h rename to keyboards/percent/skog/skog.h diff --git a/keyboards/skog/usbconfig.h b/keyboards/percent/skog/usbconfig.h similarity index 100% rename from keyboards/skog/usbconfig.h rename to keyboards/percent/skog/usbconfig.h From 42bf60751e1b1b65083e89b8b248ff282b3d5213 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 21 Sep 2019 11:32:08 -0700 Subject: [PATCH 38/72] [Keyboard] fix OLKB layout macro aliases (#6761) --- keyboards/planck/light/light.h | 2 +- keyboards/planck/rev1/rev1.h | 2 +- keyboards/planck/rev2/rev2.h | 2 +- keyboards/planck/rev3/rev3.h | 2 +- keyboards/planck/rev4/rev4.h | 2 +- keyboards/planck/rev5/rev5.h | 2 +- keyboards/planck/rev6/rev6.h | 2 +- keyboards/preonic/preonic.h | 10 +++++----- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboards/planck/light/light.h b/keyboards/planck/light/light.h index 2cf46c2a276..3ead109ac30 100644 --- a/keyboards/planck/light/light.h +++ b/keyboards/planck/light/light.h @@ -61,7 +61,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev1/rev1.h b/keyboards/planck/rev1/rev1.h index f81b36b316a..3d1d1d21c57 100644 --- a/keyboards/planck/rev1/rev1.h +++ b/keyboards/planck/rev1/rev1.h @@ -43,7 +43,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev2/rev2.h b/keyboards/planck/rev2/rev2.h index f81b36b316a..3d1d1d21c57 100644 --- a/keyboards/planck/rev2/rev2.h +++ b/keyboards/planck/rev2/rev2.h @@ -43,7 +43,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev3/rev3.h b/keyboards/planck/rev3/rev3.h index f81b36b316a..3d1d1d21c57 100644 --- a/keyboards/planck/rev3/rev3.h +++ b/keyboards/planck/rev3/rev3.h @@ -43,7 +43,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev4/rev4.h b/keyboards/planck/rev4/rev4.h index f81b36b316a..3d1d1d21c57 100644 --- a/keyboards/planck/rev4/rev4.h +++ b/keyboards/planck/rev4/rev4.h @@ -43,7 +43,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev5/rev5.h b/keyboards/planck/rev5/rev5.h index f81b36b316a..3d1d1d21c57 100644 --- a/keyboards/planck/rev5/rev5.h +++ b/keyboards/planck/rev5/rev5.h @@ -43,7 +43,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/planck/rev6/rev6.h b/keyboards/planck/rev6/rev6.h index 601e347f5e1..513b98f39fa 100644 --- a/keyboards/planck/rev6/rev6.h +++ b/keyboards/planck/rev6/rev6.h @@ -119,7 +119,7 @@ LAYOUT_ortho_4x12( \ ) #define KEYMAP LAYOUT_ortho_4x12 -#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 #define LAYOUT_kc_ortho_4x12 LAYOUT_kc #define KC_KEYMAP LAYOUT_kc diff --git a/keyboards/preonic/preonic.h b/keyboards/preonic/preonic.h index e2aa1545c19..aa184ccbdbd 100644 --- a/keyboards/preonic/preonic.h +++ b/keyboards/preonic/preonic.h @@ -4,7 +4,7 @@ /************************************************** ** Include headers specific to keyboard revision ** -***************************************************/ +**************************************************/ #ifdef KEYBOARD_preonic_rev1 #include "rev1.h" #endif @@ -20,7 +20,7 @@ /************************************************** ** Layout macros aliases common to all revisions ** - - Name of Alias Matrix Name: - ----------------- ------------------- ****/ -#define LAYOUT_ortho_5x12 LAYOUT_preonic_grid +** ** +** Name of Alias Matrix Name: ** +******* ----------------- ------------------- ****/ +#define LAYOUT_ortho_5x12 LAYOUT_preonic_grid From 0e96068d2352a1895ee1426b90bd54e4e055a672 Mon Sep 17 00:00:00 2001 From: skullydazed Date: Sat, 21 Sep 2019 11:58:06 -0700 Subject: [PATCH 39/72] Update the breaking changes process so we always have a future branch (#6785) --- docs/breaking_changes.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index b193b12da13..b5bcb7a1c76 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -14,7 +14,7 @@ The next Breaking Change is scheduled for Nov 29. ### Important Dates -* [ ] 2019 Oct 04 - `future` is created. It will be rebased weekly. +* [x] 2019 Sep 21 - `future` is created. It will be rebased weekly. * [ ] 2019 Nov 01 - `future` closed to new PR's. * [ ] 2019 Nov 01 - Call for testers. * [ ] 2019 Nov 27 - `master` is locked, no PR's merged. @@ -51,7 +51,9 @@ git rebase master git push --force ``` -## 8 Weeks Before Merge +## Creating the `future` branch + +This happens immediately after the previous `future` branch is merged. * `qmk_firmware` git commands * [ ] `git checkout master` @@ -65,9 +67,6 @@ git push --force * [ ] `git tag ` # Prevent the breakpoint tag from confusing version incrementing * [ ] `git push origin future` * [ ] `git push --tags` -* GitHub Actions - * [ ] Switch all [breaking_change PR's](https://github.com/qmk/qmk_firmware/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3Abreaking_change) to `future` - * [ ] Any that have a ChangeLog entry may be merged immediately. ## 4 Weeks Before Merge From e05b32d8941c90f5af8da85f29190c45e917bbd3 Mon Sep 17 00:00:00 2001 From: Francis St-Amour Date: Sat, 21 Sep 2019 14:59:18 -0400 Subject: [PATCH 40/72] add python3 to shell.nix (#6774) --- shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index e85221975d3..df5aff3508f 100644 --- a/shell.nix +++ b/shell.nix @@ -32,7 +32,7 @@ in stdenv.mkDerivation { name = "qmk-firmware"; - buildInputs = [ dfu-programmer dfu-util diffutils git ] + buildInputs = [ dfu-programmer dfu-util diffutils git python3 ] ++ lib.optional avr [ avrbinutils avrgcc avrlibc avrdude ] ++ lib.optional arm [ gcc-arm-embedded ] ++ lib.optional teensy [ teensy-loader-cli ]; From 29d7f9b1632fb15a7849762aa27b7f81af29c2b2 Mon Sep 17 00:00:00 2001 From: Burak Can Date: Sun, 22 Sep 2019 14:32:52 +0300 Subject: [PATCH 41/72] Correct casing for DS_Store in .gitignore (#6787) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 140bf4aa7e4..1f8f9dc74b0 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,7 @@ quantum/version.h CMakeLists.txt cmake-build-debug doxygen/ -.DS_STORE +.DS_Store /util/wsl_downloaded /util/win_downloaded /keyboards/*/Makefile From 2f49cae9bcbdd94431659727ef75cfd30f557da8 Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Sun, 22 Sep 2019 09:52:33 -0500 Subject: [PATCH 42/72] Fixing wrapping math logic for timer_expired functions (#6746) --- tmk_core/common/timer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/timer.h b/tmk_core/common/timer.h index 853cb983968..378cf7892c1 100644 --- a/tmk_core/common/timer.h +++ b/tmk_core/common/timer.h @@ -45,9 +45,9 @@ uint16_t timer_elapsed(uint16_t last); uint32_t timer_elapsed32(uint32_t last); // Utility functions to check if a future time has expired & autmatically handle time wrapping if checked / reset frequently (half of max value) -inline bool timer_expired(uint16_t current, uint16_t last) { return current - last < 0x8000; } +inline bool timer_expired(uint16_t current, uint16_t future) { return (uint16_t)(current - future) < 0x8000; } -inline bool timer_expired32(uint32_t current, uint32_t future) { return current - future < 0x80000000; } +inline bool timer_expired32(uint32_t current, uint32_t future) { return (uint32_t)(current - future) < 0x80000000; } #ifdef __cplusplus } From d569f0877155efc752994f8a21f5cf001f9d6ae6 Mon Sep 17 00:00:00 2001 From: skullydazed Date: Sun, 22 Sep 2019 13:25:33 -0700 Subject: [PATCH 43/72] Configuration system for CLI (#6708) * Rework how bin/qmk handles subcommands * qmk config wip * Code to show all configs * Fully working `qmk config` command * Mark some CLI arguments so they don't pollute the config file * Fleshed out config support, nicer subcommand support * sync with installable cli * pyformat * Add a test for subcommand_modules * Documentation for the `qmk config` command * split config_token on space so qmk config is more predictable * Rework how subcommands are imported * Document `arg_only` * Document deleting from CLI * Document how multiple operations work * Add cli config to the doc index * Add tests for the cli commands * Make running the tests more reliable * Be more selective about building all default keymaps * Update new-keymap to fit the new subcommand style * Add documentation about writing CLI scripts * Document new-keyboard * Update docs/cli_configuration.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/cli_development.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Address yan's comments. * Apply suggestions from code review suggestions from @noahfrederick Co-Authored-By: Noah Frederick * Apply suggestions from code review Co-Authored-By: Noah Frederick * Remove pip3 from the test runner --- bin/qmk | 92 +++++------ bin/qmk-compile-json | 1 - bin/qmk-doctor | 1 - bin/qmk-hello | 1 - bin/qmk-json-keymap | 1 - build_json.mk | 2 +- docs/_summary.md | 3 +- docs/cli.md | 114 +++++++++++++- docs/cli_configuration.md | 121 ++++++++++++++ docs/cli_development.md | 175 +++++++++++++++++++++ docs/python_development.md | 45 ------ docs/redirects.json | 4 + lib/python/milc.py | 113 ++++++++----- lib/python/qmk/cli/__init__.py | 13 ++ lib/python/qmk/cli/cformat.py | 6 +- lib/python/qmk/cli/compile.py | 10 +- lib/python/qmk/cli/config.py | 96 +++++++++++ lib/python/qmk/cli/doctor.py | 5 +- lib/python/qmk/cli/hello.py | 6 +- lib/python/qmk/cli/json/__init__.py | 5 + lib/python/qmk/cli/json/keymap.py | 20 +-- lib/python/qmk/cli/new/__init__.py | 1 + lib/python/qmk/cli/new/keymap.py | 17 +- lib/python/qmk/cli/pyformat.py | 5 +- lib/python/qmk/cli/{nose2.py => pytest.py} | 8 +- lib/python/qmk/path.py | 1 + lib/python/qmk/tests/test_cli_commands.py | 39 +++++ requirements.txt | 2 +- util/travis_build.sh | 7 +- 29 files changed, 715 insertions(+), 199 deletions(-) delete mode 120000 bin/qmk-compile-json delete mode 120000 bin/qmk-doctor delete mode 120000 bin/qmk-hello delete mode 120000 bin/qmk-json-keymap create mode 100644 docs/cli_configuration.md create mode 100644 docs/cli_development.md delete mode 100644 docs/python_development.md create mode 100644 lib/python/qmk/cli/config.py rename lib/python/qmk/cli/{nose2.py => pytest.py} (75%) create mode 100644 lib/python/qmk/tests/test_cli_commands.py diff --git a/bin/qmk b/bin/qmk index 1aa16e17dcc..876473fa43b 100755 --- a/bin/qmk +++ b/bin/qmk @@ -4,10 +4,8 @@ import os import subprocess import sys -from glob import glob -from time import strftime -from importlib import import_module from importlib.util import find_spec +from time import strftime # Add the QMK python libs to our path script_dir = os.path.dirname(os.path.realpath(__file__)) @@ -15,12 +13,8 @@ qmk_dir = os.path.abspath(os.path.join(script_dir, '..')) python_lib_dir = os.path.abspath(os.path.join(qmk_dir, 'lib', 'python')) sys.path.append(python_lib_dir) -# Change to the root of our checkout -os.environ['ORIG_CWD'] = os.getcwd() -os.chdir(qmk_dir) - # Make sure our modules have been setup -with open('requirements.txt', 'r') as fd: +with open(os.path.join(qmk_dir, 'requirements.txt'), 'r') as fd: for line in fd.readlines(): line = line.strip().replace('<', '=').replace('>', '=') @@ -32,72 +26,58 @@ with open('requirements.txt', 'r') as fd: module = line.split('=')[0] if '=' in line else line if not find_spec(module): - print('Your QMK build environment is not fully setup!\n') - print('Please run `./util/qmk_install.sh` to setup QMK.') + print('Could not find module %s!', module) + print('Please run `pip3 install -r requirements.txt` to install the python dependencies.') exit(255) # Figure out our version +# TODO(skullydazed/anyone): Find a method that doesn't involve git. This is slow in docker and on windows. command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] -result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) +result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if result.returncode == 0: - os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip() + os.environ['QMK_VERSION'] = result.stdout.strip() else: - os.environ['QMK_VERSION'] = 'QMK ' + strftime('%Y-%m-%d-%H:%M:%S') + os.environ['QMK_VERSION'] = 'nogit-' + strftime('%Y-%m-%d-%H:%M:%S') + '-dirty' # Setup the CLI import milc + milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}' -# If we were invoked as `qmk ` massage sys.argv into `qmk-`. -# This means we can't accept arguments to the qmk script itself. -script_name = os.path.basename(sys.argv[0]) -if script_name == 'qmk': - if len(sys.argv) == 1: - milc.cli.log.error('No subcommand specified!\n') - if len(sys.argv) == 1 or sys.argv[1] in ['-h', '--help']: - milc.cli.echo('usage: qmk [...]') - milc.cli.echo('\nsubcommands:') - subcommands = glob(os.path.join(qmk_dir, 'bin', 'qmk-*')) - for subcommand in sorted(subcommands): - subcommand = os.path.basename(subcommand).split('-', 1)[1] - milc.cli.echo('\t%s', subcommand) - milc.cli.echo('\nqmk --help for more information') - exit(1) +@milc.cli.entrypoint('QMK Helper Script') +def qmk_main(cli): + """The function that gets run when no subcommand is provided. + """ + cli.print_help() - if sys.argv[1] in ['-V', '--version']: - milc.cli.echo(os.environ['QMK_VERSION']) - exit(0) - sys.argv[0] = script_name = '-'.join((script_name, sys.argv[1])) - del sys.argv[1] +def main(): + """Setup our environment and then call the CLI entrypoint. + """ + # Change to the root of our checkout + os.environ['ORIG_CWD'] = os.getcwd() + os.chdir(qmk_dir) -# Look for which module to import -if script_name == 'qmk': - milc.cli.print_help() - exit(0) -elif not script_name.startswith('qmk-'): - milc.cli.log.error('Invalid symlink, must start with "qmk-": %s', script_name) -else: - subcommand = script_name.replace('-', '.').replace('_', '.').split('.') - subcommand.insert(1, 'cli') - subcommand = '.'.join(subcommand) + # Import the subcommands + import qmk.cli - try: - import_module(subcommand) - except ModuleNotFoundError as e: - if e.__class__.__name__ != subcommand: - raise - - milc.cli.log.error('Invalid subcommand! Could not import %s.', subcommand) - exit(1) - -if __name__ == '__main__': + # Execute return_code = milc.cli() + if return_code is False: exit(1) - elif return_code is not True and isinstance(return_code, int) and return_code < 256: + + elif return_code is not True and isinstance(return_code, int): + if return_code < 0 or return_code > 255: + milc.cli.log.error('Invalid return_code: %d', return_code) + exit(255) + exit(return_code) - else: - exit(0) + + exit(0) + + +if __name__ == '__main__': + main() diff --git a/bin/qmk-compile-json b/bin/qmk-compile-json deleted file mode 120000 index c92dce8a10d..00000000000 --- a/bin/qmk-compile-json +++ /dev/null @@ -1 +0,0 @@ -qmk \ No newline at end of file diff --git a/bin/qmk-doctor b/bin/qmk-doctor deleted file mode 120000 index c92dce8a10d..00000000000 --- a/bin/qmk-doctor +++ /dev/null @@ -1 +0,0 @@ -qmk \ No newline at end of file diff --git a/bin/qmk-hello b/bin/qmk-hello deleted file mode 120000 index c92dce8a10d..00000000000 --- a/bin/qmk-hello +++ /dev/null @@ -1 +0,0 @@ -qmk \ No newline at end of file diff --git a/bin/qmk-json-keymap b/bin/qmk-json-keymap deleted file mode 120000 index c92dce8a10d..00000000000 --- a/bin/qmk-json-keymap +++ /dev/null @@ -1 +0,0 @@ -qmk \ No newline at end of file diff --git a/build_json.mk b/build_json.mk index 8820a8f4a65..e2a33e3b6a5 100644 --- a/build_json.mk +++ b/build_json.mk @@ -23,5 +23,5 @@ endif # Generate the keymap.c ifneq ("$(KEYMAP_JSON)","") - _ = $(shell test -e $(KEYMAP_C) || bin/qmk-json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C)) + _ = $(shell test -e $(KEYMAP_C) || bin/qmk json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C)) endif diff --git a/docs/_summary.md b/docs/_summary.md index 4e87d8f1f21..233b2cdaa25 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -9,6 +9,7 @@ * [QMK Basics](README.md) * [QMK Introduction](getting_started_introduction.md) * [QMK CLI](cli.md) + * [QMK CLI Config](cli_configuration.md) * [Contributing to QMK](contributing.md) * [How to Use Github](getting_started_github.md) * [Getting Help](getting_started_getting_help.md) @@ -48,7 +49,7 @@ * [Useful Functions](ref_functions.md) * [Configurator Support](reference_configurator_support.md) * [info.json Format](reference_info_json.md) - * [Python Development](python_development.md) + * [Python CLI Development](cli_development.md) * [Features](features.md) * [Basic Keycodes](keycodes_basic.md) diff --git a/docs/cli.md b/docs/cli.md index 4b8472b19ed..cb609e2a93e 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -4,22 +4,70 @@ This page describes how to setup and use the QMK CLI. # Overview -The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to help you work with QMK: +The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more. -* `qmk compile` -* `qmk doctor` +* [Global CLI](#global-cli) +* [Local CLI](#local-cli) +* [CLI Commands](#cli-commands) -# Setup +# Requirements -Simply add the `qmk_firmware/bin` directory to your `PATH`. You can run the `qmk` commands from any directory. +The CLI requires Python 3.5 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). + +# Global CLI + +QMK provides an installable CLI that can be used to setup your QMK build environment, work with QMK, and which makes working with multiple copies of `qmk_firmware` easier. We recommend installing and updating this periodically. + +## Install Using Homebrew (macOS, some Linux) + +If you have installed [Homebrew](https://brew.sh) you can tap and install QMK: ``` -export PATH=$PATH:$HOME/qmk_firmware/bin +brew tap qmk/qmk +brew install qmk +export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware` +qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment ``` -You may want to add this to your `.profile`, `.bash_profile`, `.zsh_profile`, or other shell startup scripts. +## Install Using easy_install or pip -# Commands +If your system is not listed above you can install QMK manually. First ensure that you have python 3.5 (or later) installed and have installed pip. Then install QMK with this command: + +``` +pip3 install qmk +export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware` +qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment +``` + +## Packaging For Other Operating Systems + +We are looking for people to create and maintain a `qmk` package for more operating systems. If you would like to create a package for your OS please follow these guidelines: + +* Follow best practices for your OS when they conflict with these guidelines + * Documment why in a comment when you do deviate +* Install using a virtualenv +* Instruct the user to set the environment variable `QMK_HOME` to have the firmware source checked out somewhere other than `~/qmk_firmware`. + +# Local CLI + +If you do not want to use the global CLI there is a local CLI bundled with `qmk_firmware`. You can find it in `qmk_firmware/bin/qmk`. You can run the `qmk` command from any directory and it will always operate on that copy of `qmk_firmware`. + +**Example**: + +``` +$ ~/qmk_firmware/bin/qmk hello +Ψ Hello, World! +``` + +## Local CLI Limitations + +There are some limitations to the local CLI compared to the global CLI: + +* The local CLI does not support `qmk setup` or `qmk clone` +* The local CLI always operates on the same `qmk_firmware` tree, even if you have multiple repositories cloned. +* The local CLI does not run in a virtualenv, so it's possible that dependencies will conflict + +# CLI Commands ## `qmk compile` @@ -46,3 +94,53 @@ This command formats C code using clang-format. Run it with no arguments to form ``` qmk cformat [file1] [file2] [...] [fileN] ``` + +## `qmk config` + +This command lets you configure the behavior of QMK. For the full `qmk config` documentation see [CLI Configuration](cli_configuration.md). + +**Usage**: + +``` +qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN] +``` + +## `qmk doctor` + +This command examines your environment and alerts you to potential build or flash problems. + +**Usage**: + +``` +qmk doctor +``` + +## `qmk new-keymap` + +This command creates a new keymap based on a keyboard's existing default keymap. + +**Usage**: + +``` +qmk new-keymap [-kb KEYBOARD] [-km KEYMAP] +``` + +## `qmk pyformat` + +This command formats python code in `qmk_firmware`. + +**Usage**: + +``` +qmk pyformat +``` + +## `qmk pytest` + +This command runs the python test suite. If you make changes to python code you should ensure this runs successfully. + +**Usage**: + +``` +qmk pytest +``` diff --git a/docs/cli_configuration.md b/docs/cli_configuration.md new file mode 100644 index 00000000000..ad9ff291c81 --- /dev/null +++ b/docs/cli_configuration.md @@ -0,0 +1,121 @@ +# QMK CLI Configuration + +This document explains how `qmk config` works. + +# Introduction + +Configuration for QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set. + +## Simple Example + +As an example let's look at the command `qmk compile --keyboard clueboard/66/rev4 --keymap default`. + +There are two command line arguments that could be read from configuration instead: + +* `compile.keyboard` +* `compile.keymap` + +Let's set these now: + +``` +$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default +compile.keyboard: None -> clueboard/66/rev4 +compile.keymap: None -> default +Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini' +``` + +Now I can run `qmk compile` without specifying my keyboard and keymap each time. + +## Setting User Defaults + +Sometimes you want to share a setting between multiple commands. For example, multiple commands take the argument `--keyboard`. Rather than setting this value for every command you can set a user value which will be used by any command that takes that argument. + +Example: + +``` +$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default +user.keyboard: None -> clueboard/66/rev4 +user.keymap: None -> default +Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini' +``` + +# CLI Documentation (`qmk config`) + +The `qmk config` command is used to interact with the underlying configuration. When run with no argument it shows the current configuration. When arguments are supplied they are assumed to be configuration tokens, which are strings containing no spaces with the following form: + + [.][=] + +## Setting Configuration Values + +You can set configuration values by putting an equal sign (=) into your config key. The key must always be the full `
.` form. + +Example: + +``` +$ qmk config default.keymap=default +default.keymap: None -> default +Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini' +``` + +## Reading Configuration Values + +You can read configuration values for the entire configuration, a single key, or for an entire section. You can also specify multiple keys to display more than one value. + +### Entire Configuration Example + + qmk config + +### Whole Section Example + + qmk config compile + +### Single Key Example + + qmk config compile.keyboard + +### Multiple Keys Example + + qmk config user compile.keyboard compile.keymap + +## Deleting Configuration Values + +You can delete a configuration value by setting it to the special string `None`. + +Example: + +``` +$ qmk config default.keymap=None +default.keymap: default -> None +Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini' +``` + +## Multiple Operations + +You can combine multiple read and write operations into a single command. They will be executed and displayed in order: + +``` +$ qmk config compile default.keymap=default compile.keymap=None +compile.keymap=skully +compile.keyboard=clueboard/66_hotswap/gen1 +default.keymap: None -> default +compile.keymap: skully -> None +Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini' +``` + +# User Configuration Options + +| Key | Default Value | Description | +|-----|---------------|-------------| +| user.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) | +| user.keymap | None | The keymap name (Example: `default`) | +| user.name | None | The user's github username. | + +# All Configuration Options + +| Key | Default Value | Description | +|-----|---------------|-------------| +| compile.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) | +| compile.keymap | None | The keymap name (Example: `default`) | +| hello.name | None | The name to greet when run. | +| new_keyboard.keyboard | None | The keyboard path (Example: `clueboard/66/rev4`) | +| new_keyboard.keymap | None | The keymap name (Example: `default`) | diff --git a/docs/cli_development.md b/docs/cli_development.md new file mode 100644 index 00000000000..f5c7ad139a4 --- /dev/null +++ b/docs/cli_development.md @@ -0,0 +1,175 @@ +# QMK CLI Development + +This document has useful information for developers wishing to write new `qmk` subcommands. + +# Overview + +The QMK CLI operates using the subcommand pattern made famous by git. The main `qmk` script is simply there to setup the environment and pick the correct entrypoint to run. Each subcommand is a self-contained module with an entrypoint (decorated by `@cli.subcommand()`) that performs some action and returns a shell returncode, or None. + +# Subcommands + +[MILC](https://github.com/clueboard/milc) is the CLI framework `qmk` uses to handle argument parsing, configuration, logging, and many other features. It lets you focus on writing your tool without wasting your time writing glue code. + +Subcommands in the local CLI are always found in `qmk_firmware/lib/python/qmk/cli`. + +Let's start by looking at an example subcommand. This is `lib/python/qmk/cli/hello.py`: + +```python +"""QMK Python Hello World + +This is an example QMK CLI script. +""" +from milc import cli + + +@cli.argument('-n', '--name', default='World', help='Name to greet.') +@cli.subcommand('QMK Hello World.') +def hello(cli): + """Log a friendly greeting. + """ + cli.log.info('Hello, %s!', cli.config.hello.name) +``` + +First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function. + +Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator. + +# User Interaction + +MILC and the QMK CLI have several nice tools for interacting with the user. Using these standard tools will allow you to colorize your text for easier interactions, and allow the user to control when and how that information is displayed and stored. + +## Printing Text + +There are two main methods for outputting text in a subcommand- `cli.log` and `cli.echo()`. They operate in similar ways but you should prefer to use `cli.log.info()` for most general purpose printing. + +You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below. + +Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.5/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example. + +You should never use the format operator (`%`) directly, always pass values as arguments. + +### Logging (`cli.log`) + +The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.5/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong. + +The default log level is `INFO`. If the user runs `qmk -v ` the default log level will be set to `DEBUG`. + +| Function | Emoji | +|----------|-------| +| cli.log.critical | `{bg_red}{fg_white}¬_¬{style_reset_all}` | +| cli.log.error | `{fg_red}☒{style_reset_all}` | +| cli.log.warning | `{fg_yellow}⚠{style_reset_all}` | +| cli.log.info | `{fg_blue}Ψ{style_reset_all}` | +| cli.log.debug | `{fg_cyan}☐{style_reset_all}` | +| cli.log.notset | `{style_reset_all}¯\\_(o_o)_/¯` | + +### Printing (`cli.echo`) + +Sometimes you simply need to print text outside of the log system. This is appropriate if you are outputting fixed data or writing out something that should never be logged. Most of the time you should prefer `cli.log.info()` over `cli.echo`. + +### Colorizing Text + +You can colorize the output of your text by including color tokens within text. Use color to highlight, not to convey information. Remember that the user can disable color, and your subcommand should still be usable if they do. + +You should generally avoid setting the background color, unless it's integral to what you are doing. Remember that users have a lot of preferences when it comes to their terminal color, so you should pick colors that work well against both black and white backgrounds. + +Colors prefixed with 'fg' will affect the foreground (text) color. Colors prefixed with 'bg' will affect the background color. + +| Color | Background | Extended Background | Foreground | Extended Foreground| +|-------|------------|---------------------|------------|--------------------| +| Black | {bg_black} | {bg_lightblack_ex} | {fg_black} | {fg_lightblack_ex} | +| Blue | {bg_blue} | {bg_lightblue_ex} | {fg_blue} | {fg_lightblue_ex} | +| Cyan | {bg_cyan} | {bg_lightcyan_ex} | {fg_cyan} | {fg_lightcyan_ex} | +| Green | {bg_green} | {bg_lightgreen_ex} | {fg_green} | {fg_lightgreen_ex} | +| Magenta | {bg_magenta} | {bg_lightmagenta_ex} | {fg_magenta} | {fg_lightmagenta_ex} | +| Red | {bg_red} | {bg_lightred_ex} | {fg_red} | {fg_lightred_ex} | +| White | {bg_white} | {bg_lightwhite_ex} | {fg_white} | {fg_lightwhite_ex} | +| Yellow | {bg_yellow} | {bg_lightyellow_ex} | {fg_yellow} | {fg_lightyellow_ex} | + +There are also control sequences that can be used to change the behavior of +ANSI output: + +| Control Sequences | Description | +|-------------------|-------------| +| {style_bright} | Make the text brighter | +| {style_dim} | Make the text dimmer | +| {style_normal} | Make the text normal (neither `{style_bright}` nor `{style_dim}`) | +| {style_reset_all} | Reset all text attributes to default. (This is automatically added to the end of every string.) | +| {bg_reset} | Reset the background color to the user's default | +| {fg_reset} | Reset the foreground color to the user's default | + +# Arguments and Configuration + +QMK handles the details of argument parsing and configuration for you. When you add a new argument it is automatically incorporated into the config tree based on your subcommand's name and the long name of the argument. You can access this configuration in `cli.config`, using either attribute-style access (`cli.config..`) or dictionary-style access (`cli.config['']['']`). + +Under the hood QMK uses [ConfigParser](https://docs.python.org/3/library/configparser.html) to store configurations. This gives us an easy and straightforward way to represent the configuration in a human-editable way. We have wrapped access to this configuration to provide some nicities that ConfigParser does not normally have. + +## Reading Configuration Values + +You can interact with `cli.config` in all the ways you'd normally expect. For example the `qmk compile` command gets the keyboard name from `cli.config.compile.keyboard`. It does not need to know whether that value came from the command line, an environment variable, or the configuration file. + +Iteration is also supported: + +``` +for section in cli.config: + for key in cli.config[section]: + cli.log.info('%s.%s: %s', section, key, cli.config[section][key]) +``` + +## Setting Configuration Values + +You can set configuration values in the usual ways. + +Dictionary style: + +``` +cli.config['
'][''] = +``` + +Attribute style: + +``` +cli.config.
. = +``` + +## Deleting Configuration Values + +You can delete configuration values in the usual ways. + +Dictionary style: + +``` +del(cli.config['
']['']) +``` + +Attribute style: + +``` +del(cli.config.
.) +``` + +## Writing The Configuration File + +The configuration is not written out when it is changed. Most commands do not need to do this. We prefer to have the user change their configuration deliberitely using `qmk config`. + +You can use `cli.save_config()` to write out the configuration. + +## Excluding Arguments From Configuration + +Some arguments should not be propagated to the configuration file. These can be excluded by adding `arg_only=True` when creating the argument. + +Example: + +``` +@cli.argument('-o', '--output', arg_only=True, help='File to write to') +@cli.argument('filename', arg_only=True, help='Configurator JSON file') +@cli.subcommand('Create a keymap.c from a QMK Configurator export.') +def json_keymap(cli): + pass +``` + +You will only be able to access these arguments using `cli.args`. For example: + +``` +cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.output) +``` diff --git a/docs/python_development.md b/docs/python_development.md deleted file mode 100644 index b976a7c0e80..00000000000 --- a/docs/python_development.md +++ /dev/null @@ -1,45 +0,0 @@ -# Python Development in QMK - -This document gives an overview of how QMK has structured its python code. You should read this before working on any of the python code. - -## Script directories - -There are two places scripts live in QMK: `qmk_firmware/bin` and `qmk_firmware/util`. You should use `bin` for any python scripts that utilize the `qmk` wrapper. Scripts that are standalone and not run very often live in `util`. - -We discourage putting anything into `bin` that does not utilize the `qmk` wrapper. If you think you have a good reason for doing so please talk to us about your use case. - -## Python Modules - -Most of the QMK python modules can be found in `qmk_firmware/lib/python`. This is the path that we append to `sys.path`. - -We have a module hierarchy under that path: - -* `qmk_firmware/lib/python` - * `milc.py` - The CLI library we use. Will be pulled out into its own module in the future. - * `qmk` - Code associated with QMK - * `cli` - Modules that will be imported for CLI commands. - * `errors.py` - Errors that can be raised within QMK apps - * `keymap.py` - Functions for working with keymaps - -## CLI Scripts - -We have a CLI wrapper that you should utilize for any user facing scripts. We think it's pretty easy to use and it gives you a lot of nice things for free. - -To use the wrapper simply place a module into `qmk_firmware/lib/python/qmk/cli`, and create a symlink to `bin/qmk` named after your module. Dashes in command names will be converted into dots so you can use hierarchy to manage commands. - -When `qmk` is run it checks to see how it was invoked. If it was invoked as `qmk` the module name is take from `sys.argv[1]`. If it was invoked as `qmk-` then everything after the first dash is taken as the module name. Dashes and underscores are converted to dots, and then `qmk.cli` is prepended before the module is imported. - -The module uses `@cli.entrypoint()` and `@cli.argument()` decorators to define an entrypoint, which is where execution starts. - -## Example CLI Script - -We have provided a QMK Hello World script you can use as an example. To run it simply run `qmk hello` or `qmk-hello`. The source code is listed below. - -``` -from milc import cli - -@cli.argument('-n', '--name', default='World', help='Name to greet.') -@cli.entrypoint('QMK Python Hello World.') -def main(cli): - cli.echo('Hello, %s!', cli.config.general.name) -``` diff --git a/docs/redirects.json b/docs/redirects.json index 814518f405d..651148c2c12 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -43,6 +43,10 @@ { "from": "unicode.html", "to": "feature_unicode.html" + }, + { + "from": "python_development.html", + "to": "cli_development.html" } ] } diff --git a/lib/python/milc.py b/lib/python/milc.py index c62c1b166c4..1a29bb25c86 100644 --- a/lib/python/milc.py +++ b/lib/python/milc.py @@ -17,6 +17,7 @@ import argparse import logging import os import re +import shlex import sys from decimal import Decimal from tempfile import NamedTemporaryFile @@ -35,6 +36,10 @@ except ImportError: import argcomplete import colorama +from appdirs import user_config_dir + +# Disable logging until we can configure it how the user wants +logging.basicConfig(filename='/dev/null') # Log Level Representations EMOJI_LOGLEVELS = { @@ -47,6 +52,7 @@ EMOJI_LOGLEVELS = { } EMOJI_LOGLEVELS['FATAL'] = EMOJI_LOGLEVELS['CRITICAL'] EMOJI_LOGLEVELS['WARN'] = EMOJI_LOGLEVELS['WARNING'] +UNICODE_SUPPORT = sys.stdout.encoding.lower().startswith('utf') # ANSI Color setup # Regex was gratefully borrowed from kfir on stackoverflow: @@ -97,11 +103,12 @@ class ANSIFormatter(logging.Formatter): class ANSIEmojiLoglevelFormatter(ANSIFormatter): - """A log formatter that makes the loglevel an emoji. + """A log formatter that makes the loglevel an emoji on UTF capable terminals. """ def format(self, record): - record.levelname = EMOJI_LOGLEVELS[record.levelname].format(**ansi_colors) + if UNICODE_SUPPORT: + record.levelname = EMOJI_LOGLEVELS[record.levelname].format(**ansi_colors) return super(ANSIEmojiLoglevelFormatter, self).format(record) @@ -144,13 +151,15 @@ class Configuration(object): def __init__(self, *args, **kwargs): self._config = {} - self.default_container = ConfigurationOption + + def __getattr__(self, key): + return self.__getitem__(key) def __getitem__(self, key): """Returns a config section, creating it if it doesn't exist yet. """ if key not in self._config: - self.__dict__[key] = self._config[key] = ConfigurationOption() + self.__dict__[key] = self._config[key] = ConfigurationSection(self) return self._config[key] @@ -161,30 +170,34 @@ class Configuration(object): def __delitem__(self, key): if key in self.__dict__ and key[0] != '_': del self.__dict__[key] - del self._config[key] + if key in self._config: + del self._config[key] -class ConfigurationOption(Configuration): - def __init__(self, *args, **kwargs): - super(ConfigurationOption, self).__init__(*args, **kwargs) - self.default_container = dict +class ConfigurationSection(Configuration): + def __init__(self, parent, *args, **kwargs): + super(ConfigurationSection, self).__init__(*args, **kwargs) + self.parent = parent def __getitem__(self, key): - """Returns a config section, creating it if it doesn't exist yet. + """Returns a config value, pulling from the `user` section as a fallback. """ - if key not in self._config: - self.__dict__[key] = self._config[key] = None + if key in self._config: + return self._config[key] - return self._config[key] + elif key in self.parent.user: + return self.parent.user[key] + + return None def handle_store_boolean(self, *args, **kwargs): """Does the add_argument for action='store_boolean'. """ - kwargs['add_dest'] = False disabled_args = None disabled_kwargs = kwargs.copy() disabled_kwargs['action'] = 'store_false' + disabled_kwargs['dest'] = self.get_argument_name(*args, **kwargs) disabled_kwargs['help'] = 'Disable ' + kwargs['help'] kwargs['action'] = 'store_true' kwargs['help'] = 'Enable ' + kwargs['help'] @@ -219,11 +232,6 @@ class SubparserWrapper(object): self.subparser.completer = completer def add_argument(self, *args, **kwargs): - if kwargs.get('add_dest', True): - kwargs['dest'] = self.submodule + '_' + self.cli.get_argument_name(*args, **kwargs) - if 'add_dest' in kwargs: - del kwargs['add_dest'] - if 'action' in kwargs and kwargs['action'] == 'store_boolean': return handle_store_boolean(self, *args, **kwargs) @@ -254,12 +262,16 @@ class MILC(object): self._entrypoint = None self._inside_context_manager = False self.ansi = ansi_colors + self.arg_only = [] self.config = Configuration() self.config_file = None - self.prog_name = sys.argv[0][:-3] if sys.argv[0].endswith('.py') else sys.argv[0] self.version = os.environ.get('QMK_VERSION', 'unknown') self.release_lock() + # Figure out our program name + self.prog_name = sys.argv[0][:-3] if sys.argv[0].endswith('.py') else sys.argv[0] + self.prog_name = self.prog_name.split('/')[-1] + # Initialize all the things self.initialize_argparse() self.initialize_logging() @@ -273,7 +285,7 @@ class MILC(object): self._description = self._arg_parser.description = self._arg_defaults.description = value def echo(self, text, *args, **kwargs): - """Print colorized text to stdout, as long as stdout is a tty. + """Print colorized text to stdout. ANSI color strings (such as {fg-blue}) will be converted into ANSI escape sequences, and the ANSI reset sequence will be added to all @@ -284,11 +296,10 @@ class MILC(object): if args and kwargs: raise RuntimeError('You can only specify *args or **kwargs, not both!') - if sys.stdout.isatty(): - args = args or kwargs - text = format_ansi(text) + args = args or kwargs + text = format_ansi(text) - print(text % args) + print(text % args) def initialize_argparse(self): """Prepare to process arguments from sys.argv. @@ -313,21 +324,21 @@ class MILC(object): self.release_lock() def completer(self, completer): - """Add an arpcomplete completer to this subcommand. + """Add an argcomplete completer to this subcommand. """ self._arg_parser.completer = completer def add_argument(self, *args, **kwargs): """Wrapper to add arguments to both the main and the shadow argparser. """ + if 'action' in kwargs and kwargs['action'] == 'store_boolean': + return handle_store_boolean(self, *args, **kwargs) + if kwargs.get('add_dest', True) and args[0][0] == '-': kwargs['dest'] = 'general_' + self.get_argument_name(*args, **kwargs) if 'add_dest' in kwargs: del kwargs['add_dest'] - if 'action' in kwargs and kwargs['action'] == 'store_boolean': - return handle_store_boolean(self, *args, **kwargs) - self.acquire_lock() self._arg_parser.add_argument(*args, **kwargs) @@ -396,7 +407,7 @@ class MILC(object): if self.args and self.args.general_config_file: return self.args.general_config_file - return os.path.abspath(os.path.expanduser('~/.%s.ini' % self.prog_name)) + return os.path.join(user_config_dir(appname='qmk', appauthor='QMK'), '%s.ini' % self.prog_name) def get_argument_name(self, *args, **kwargs): """Takes argparse arguments and returns the dest name. @@ -413,6 +424,11 @@ class MILC(object): raise RuntimeError('You must run this before the with statement!') def argument_function(handler): + if 'arg_only' in kwargs and kwargs['arg_only']: + arg_name = self.get_argument_name(*args, **kwargs) + self.arg_only.append(arg_name) + del kwargs['arg_only'] + if handler is self._entrypoint: self.add_argument(*args, **kwargs) @@ -485,15 +501,20 @@ class MILC(object): if argument in ('subparsers', 'entrypoint'): continue - if '_' not in argument: - continue - - section, option = argument.split('_', 1) - if hasattr(self.args_passed, argument): - self.config[section][option] = getattr(self.args, argument) + if '_' in argument: + section, option = argument.split('_', 1) else: - if option not in self.config[section]: - self.config[section][option] = getattr(self.args, argument) + section = self._entrypoint.__name__ + option = argument + + if option not in self.arg_only: + if hasattr(self.args_passed, argument): + arg_value = getattr(self.args, argument) + if arg_value: + self.config[section][option] = arg_value + else: + if option not in self.config[section]: + self.config[section][option] = getattr(self.args, argument) self.release_lock() @@ -509,6 +530,8 @@ class MILC(object): self.acquire_lock() config = RawConfigParser() + config_dir = os.path.dirname(self.config_file) + for section_name, section in self.config._config.items(): config.add_section(section_name) for option_name, value in section.items(): @@ -517,7 +540,10 @@ class MILC(object): continue config.set(section_name, option_name, str(value)) - with NamedTemporaryFile(mode='w', dir=os.path.dirname(self.config_file), delete=False) as tmpfile: + if not os.path.exists(config_dir): + os.makedirs(config_dir) + + with NamedTemporaryFile(mode='w', dir=config_dir, delete=False) as tmpfile: config.write(tmpfile) # Move the new config file into place atomically @@ -527,6 +553,7 @@ class MILC(object): self.log.warning('Config file saving failed, not replacing %s with %s.', self.config_file, tmpfile.name) self.release_lock() + cli.log.info('Wrote configuration to %s', shlex.quote(self.config_file)) def __call__(self): """Execute the entrypoint function. @@ -602,8 +629,8 @@ class MILC(object): """Called by __enter__() to setup the logging configuration. """ if len(logging.root.handlers) != 0: - # This is not a design decision. This is what I'm doing for now until I can examine and think about this situation in more detail. - raise RuntimeError('MILC should be the only system installing root log handlers!') + # MILC is the only thing that should have root log handlers + logging.root.handlers = [] self.acquire_lock() @@ -648,8 +675,9 @@ class MILC(object): self.read_config() self.setup_logging() - if self.config.general.save_config: + if 'save_config' in self.config.general and self.config.general.save_config: self.save_config() + exit(0) return self @@ -712,4 +740,3 @@ if __name__ == '__main__': cli.goodbye.add_argument('-n', '--name', help='Name to bid farewell to', default='World') cli() # Automatically picks between main(), hello() and goodbye() - print(sorted(ansi_colors.keys())) diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index e69de29bb2d..fb4e0ecb46e 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -0,0 +1,13 @@ +"""QMK CLI Subcommands + +We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup. +""" +from . import cformat +from . import compile +from . import config +from . import doctor +from . import hello +from . import json +from . import new +from . import pyformat +from . import pytest diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 91e650368b3..d2382bdbdea 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -6,9 +6,9 @@ import subprocess from milc import cli -@cli.argument('files', nargs='*', help='Filename(s) to format.') -@cli.entrypoint("Format C code according to QMK's style.") -def main(cli): +@cli.argument('files', nargs='*', arg_only=True, help='Filename(s) to format.') +@cli.subcommand("Format C code according to QMK's style.") +def cformat(cli): """Format C code according to QMK's style. """ clang_format = ['clang-format', '-i'] diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py index 7e14ad8fbf4..6646891b306 100755 --- a/lib/python/qmk/cli/compile.py +++ b/lib/python/qmk/cli/compile.py @@ -14,11 +14,11 @@ import qmk.keymap import qmk.path -@cli.argument('filename', nargs='?', type=FileType('r'), help='The configurator export to compile') +@cli.argument('filename', nargs='?', arg_only=True, type=FileType('r'), help='The configurator export to compile') @cli.argument('-kb', '--keyboard', help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') @cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') -@cli.entrypoint('Compile a QMK Firmware.') -def main(cli): +@cli.subcommand('Compile a QMK Firmware.') +def compile(cli): """Compile a QMK Firmware. If a Configurator export is supplied this command will create a new keymap, overwriting an existing keymap if one exists. @@ -41,9 +41,9 @@ def main(cli): # Compile the keymap command = ['make', ':'.join((user_keymap['keyboard'], user_keymap['keymap']))] - elif cli.config.general.keyboard and cli.config.general.keymap: + elif cli.config.compile.keyboard and cli.config.compile.keymap: # Generate the make command for a specific keyboard/keymap. - command = ['make', ':'.join((cli.config.general.keyboard, cli.config.general.keymap))] + command = ['make', ':'.join((cli.config.compile.keyboard, cli.config.compile.keymap))] else: cli.log.error('You must supply a configurator export or both `--keyboard` and `--keymap`.') diff --git a/lib/python/qmk/cli/config.py b/lib/python/qmk/cli/config.py new file mode 100644 index 00000000000..d6c774e6516 --- /dev/null +++ b/lib/python/qmk/cli/config.py @@ -0,0 +1,96 @@ +"""Read and write configuration settings +""" +import os +import subprocess + +from milc import cli + + +def print_config(section, key): + """Print a single config setting to stdout. + """ + cli.echo('%s.%s{fg_cyan}={fg_reset}%s', section, key, cli.config[section][key]) + + +@cli.argument('-ro', '--read-only', action='store_true', help='Operate in read-only mode.') +@cli.argument('configs', nargs='*', arg_only=True, help='Configuration options to read or write.') +@cli.subcommand("Read and write configuration settings.") +def config(cli): + """Read and write config settings. + + This script iterates over the config_tokens supplied as argument. Each config_token has the following form: + + section[.key][=value] + + If only a section (EG 'compile') is supplied all keys for that section will be displayed. + + If section.key is supplied the value for that single key will be displayed. + + If section.key=value is supplied the value for that single key will be set. + + If section.key=None is supplied the key will be deleted. + + No validation is done to ensure that the supplied section.key is actually used by qmk scripts. + """ + if not cli.args.configs: + # Walk the config tree + for section in cli.config: + for key in cli.config[section]: + print_config(section, key) + + return True + + # Process config_tokens + save_config = False + + for argument in cli.args.configs: + # Split on space in case they quoted multiple config tokens + for config_token in argument.split(' '): + # Extract the section, config_key, and value to write from the supplied config_token. + if '=' in config_token: + key, value = config_token.split('=') + else: + key = config_token + value = None + + if '.' in key: + section, config_key = key.split('.', 1) + else: + section = key + config_key = None + + # Validation + if config_key and '.' in config_key: + cli.log.error('Config keys may not have more than one period! "%s" is not valid.', key) + return False + + # Do what the user wants + if section and config_key and value: + # Write a config key + log_string = '%s.%s{fg_cyan}:{fg_reset} %s {fg_cyan}->{fg_reset} %s' + if cli.args.read_only: + log_string += ' {fg_red}(change not written)' + + cli.echo(log_string, section, config_key, cli.config[section][config_key], value) + + if not cli.args.read_only: + if value == 'None': + del cli.config[section][config_key] + else: + cli.config[section][config_key] = value + save_config = True + + elif section and config_key: + # Display a single key + print_config(section, config_key) + + elif section: + # Display an entire section + for key in cli.config[section]: + print_config(section, key) + + # Ending actions + if save_config: + cli.save_config() + + return True diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 5a713b20f59..3474422a891 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -11,8 +11,8 @@ from glob import glob from milc import cli -@cli.entrypoint('Basic QMK environment checks') -def main(cli): +@cli.subcommand('Basic QMK environment checks') +def doctor(cli): """Basic QMK environment checks. This is currently very simple, it just checks that all the expected binaries are on your system. @@ -36,6 +36,7 @@ def main(cli): else: try: subprocess.run([binary, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, check=True) + cli.log.info('Found {fg_cyan}%s', binary) except subprocess.CalledProcessError: cli.log.error("{fg_red}Can't run `%s --version`", binary) ok = False diff --git a/lib/python/qmk/cli/hello.py b/lib/python/qmk/cli/hello.py index bc0cb6de182..bee28c30133 100755 --- a/lib/python/qmk/cli/hello.py +++ b/lib/python/qmk/cli/hello.py @@ -6,8 +6,8 @@ from milc import cli @cli.argument('-n', '--name', default='World', help='Name to greet.') -@cli.entrypoint('QMK Hello World.') -def main(cli): +@cli.subcommand('QMK Hello World.') +def hello(cli): """Log a friendly greeting. """ - cli.log.info('Hello, %s!', cli.config.general.name) + cli.log.info('Hello, %s!', cli.config.hello.name) diff --git a/lib/python/qmk/cli/json/__init__.py b/lib/python/qmk/cli/json/__init__.py index e69de29bb2d..f4ebfc45b4a 100644 --- a/lib/python/qmk/cli/json/__init__.py +++ b/lib/python/qmk/cli/json/__init__.py @@ -0,0 +1,5 @@ +"""QMK CLI JSON Subcommands + +We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup. +""" +from . import keymap diff --git a/lib/python/qmk/cli/json/keymap.py b/lib/python/qmk/cli/json/keymap.py index e2d0b580936..a65acd61978 100755 --- a/lib/python/qmk/cli/json/keymap.py +++ b/lib/python/qmk/cli/json/keymap.py @@ -9,10 +9,10 @@ from milc import cli import qmk.keymap -@cli.argument('-o', '--output', help='File to write to') -@cli.argument('filename', help='Configurator JSON file') -@cli.entrypoint('Create a keymap.c from a QMK Configurator export.') -def main(cli): +@cli.argument('-o', '--output', arg_only=True, help='File to write to') +@cli.argument('filename', arg_only=True, help='Configurator JSON file') +@cli.subcommand('Create a keymap.c from a QMK Configurator export.') +def json_keymap(cli): """Generate a keymap.c from a configurator export. 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. @@ -28,8 +28,8 @@ def main(cli): exit(1) # Environment processing - if cli.config.general.output == ('-'): - cli.config.general.output = None + if cli.args.output == ('-'): + cli.args.output = None # Parse the configurator json with open(qmk.path.normpath(cli.args.filename), 'r') as fd: @@ -38,17 +38,17 @@ def main(cli): # Generate the keymap keymap_c = qmk.keymap.generate(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers']) - if cli.config.general.output: - output_dir = os.path.dirname(cli.config.general.output) + if cli.args.output: + output_dir = os.path.dirname(cli.args.output) if not os.path.exists(output_dir): os.makedirs(output_dir) - output_file = qmk.path.normpath(cli.config.general.output) + output_file = qmk.path.normpath(cli.args.output) with open(output_file, 'w') as keymap_fd: keymap_fd.write(keymap_c) - cli.log.info('Wrote keymap to %s.', cli.config.general.output) + cli.log.info('Wrote keymap to %s.', cli.args.output) else: print(keymap_c) diff --git a/lib/python/qmk/cli/new/__init__.py b/lib/python/qmk/cli/new/__init__.py index e69de29bb2d..c6a26939b87 100644 --- a/lib/python/qmk/cli/new/__init__.py +++ b/lib/python/qmk/cli/new/__init__.py @@ -0,0 +1 @@ +from . import keymap diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index b378e5ab438..5efb81c93fb 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -6,15 +6,15 @@ import shutil from milc import cli -@cli.argument('-k', '--keyboard', help='Specify keyboard name. Example: 1upkeyboards/1up60hse') -@cli.argument('-u', '--username', help='Specify any name for the new keymap directory') -@cli.entrypoint('Creates a new keymap for the keyboard of your choosing') -def main(cli): +@cli.argument('-kb', '--keyboard', help='Specify keyboard name. Example: 1upkeyboards/1up60hse') +@cli.argument('-km', '--keymap', help='Specify the name for the new keymap directory') +@cli.subcommand('Creates a new keymap for the keyboard of your choosing') +def new_keymap(cli): """Creates a new keymap for the keyboard of your choosing. """ # ask for user input if keyboard or username was not provided in the command line - keyboard = cli.config.general.keyboard if cli.config.general.keyboard else input("Keyboard Name: ") - username = cli.config.general.username if cli.config.general.username else input("Username: ") + keyboard = cli.config.new_keymap.keyboard if cli.config.new_keymap.keyboard else input("Keyboard Name: ") + keymap = cli.config.new_keymap.keymap if cli.config.new_keymap.keymap else input("Keymap Name: ") # generate keymap paths kb_path = os.path.join(os.getcwd(), "keyboards", keyboard) @@ -36,6 +36,5 @@ def main(cli): shutil.copytree(keymap_path_default, keymap_path, symlinks=True) # end message to user - cli.log.info("%s keymap directory created in: %s\n" + - "Compile a firmware file with your new keymap by typing: \n" + - "qmk compile -kb %s -km %s", username, keymap_path, keyboard, username) + cli.log.info("%s keymap directory created in: %s", username, keymap_path) + cli.log.info("Compile a firmware with your new keymap by typing: \n" + "qmk compile -kb %s -km %s", keyboard, username) diff --git a/lib/python/qmk/cli/pyformat.py b/lib/python/qmk/cli/pyformat.py index b1f8c02b281..a53ba40c0a6 100755 --- a/lib/python/qmk/cli/pyformat.py +++ b/lib/python/qmk/cli/pyformat.py @@ -5,12 +5,13 @@ from milc import cli import subprocess -@cli.entrypoint("Format python code according to QMK's style.") -def main(cli): +@cli.subcommand("Format python code according to QMK's style.") +def pyformat(cli): """Format python code according to QMK's style. """ try: subprocess.run(['yapf', '-vv', '-ri', 'bin/qmk', 'lib/python'], check=True) cli.log.info('Successfully formatted the python code in `bin/qmk` and `lib/python`.') + except subprocess.CalledProcessError: cli.log.error('Error formatting python code!') diff --git a/lib/python/qmk/cli/nose2.py b/lib/python/qmk/cli/pytest.py similarity index 75% rename from lib/python/qmk/cli/nose2.py rename to lib/python/qmk/cli/pytest.py index c6c9c67b30a..14613e1d962 100644 --- a/lib/python/qmk/cli/nose2.py +++ b/lib/python/qmk/cli/pytest.py @@ -2,17 +2,19 @@ QMK script to run unit and integration tests against our python code. """ +import sys from milc import cli -@cli.entrypoint('QMK Python Unit Tests') -def main(cli): +@cli.subcommand('QMK Python Unit Tests') +def pytest(cli): """Use nose2 to run unittests """ try: import nose2 + except ImportError: cli.log.error('Could not import nose2! Please install it with {fg_cyan}pip3 install nose2') return False - nose2.discover() + nose2.discover(argv=['nose2', '-v']) diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py index cf087265fbf..2149625cc6f 100644 --- a/lib/python/qmk/path.py +++ b/lib/python/qmk/path.py @@ -2,6 +2,7 @@ """ import logging import os +from pkgutil import walk_packages from qmk.errors import NoSuchKeyboardError diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py new file mode 100644 index 00000000000..2fc6e0f7237 --- /dev/null +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -0,0 +1,39 @@ +import subprocess + + +def check_subcommand(command, *args): + cmd = ['bin/qmk', command] + list(args) + return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + + +def test_cformat(): + assert check_subcommand('cformat', 'tmk_core/common/backlight.c').returncode == 0 + + +def test_compile(): + assert check_subcommand('compile', '-kb', 'handwired/onekey/pytest', '-km', 'default').returncode == 0 + + +def test_config(): + result = check_subcommand('config') + assert result.returncode == 0 + assert 'general.color' in result.stdout + + +def test_doctor(): + result = check_subcommand('doctor') + assert result.returncode == 0 + assert 'QMK Doctor is checking your environment.' in result.stderr + assert 'QMK is ready to go' in result.stderr + + +def test_hello(): + result = check_subcommand('hello') + assert result.returncode == 0 + assert 'Hello,' in result.stderr + + +def test_pyformat(): + result = check_subcommand('pyformat') + assert result.returncode == 0 + assert 'Successfully formatted the python code' in result.stderr diff --git a/requirements.txt b/requirements.txt index 351dc2524e1..f6257e399e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Python requirements # milc FIXME(skullydazed): Included in the repo for now. +appdirs argcomplete colorama -#halo diff --git a/util/travis_build.sh b/util/travis_build.sh index 605b6d5f053..2bc1ccd62f1 100755 --- a/util/travis_build.sh +++ b/util/travis_build.sh @@ -18,11 +18,12 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then exit_code=0 git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} if [ $? -eq 128 ]; then - echo "Making default keymaps for all keyboards" + # We don't know what changed so just build the default keymaps + echo "Making default keymaps for all keyboards (fallback)" eval $MAKE_ALL : $((exit_code = $exit_code + $?)) else - NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | grep -Ev '^(lib/python/)' | grep -Ev '(^bin/qmk)' | wc -l) + NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | grep -Ev '^(lib/python/)' | grep -Ev '^(bin/qmk)' | grep -Ev '^(requirements.txt)' | grep -Ev '^(util/)' | wc -l) BRANCH=$(git rev-parse --abbrev-ref HEAD) # is this branch master or a "non docs, non keyboards" change if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then @@ -56,7 +57,7 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then if [ $PFM -gt 0 -o "$BRANCH" = "master" ]; then echo echo "Running python tests." - docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container bin/qmk nose2 + docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container 'bin/qmk pytest' : $((exit_code = $exit_code + $?)) fi fi From e41feddf57412f1b228c23b1866718cb9c8cd83b Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Sun, 22 Sep 2019 13:50:18 -0700 Subject: [PATCH 44/72] New Default Layout: 65_blocker_ansi (#6782) * initial commit * rename 65_ansi to 65_blocker_ansi * remove one key to account for blocker --- .../65_blocker_ansi/default_65_blocker_ansi/keymap.c | 11 +++++++++++ layouts/default/65_blocker_ansi/layout.json | 6 ++++++ layouts/default/65_blocker_ansi/readme.md | 5 +++++ 3 files changed, 22 insertions(+) create mode 100644 layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c create mode 100644 layouts/default/65_blocker_ansi/layout.json create mode 100644 layouts/default/65_blocker_ansi/readme.md diff --git a/layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c b/layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c new file mode 100644 index 00000000000..37a2270a3f1 --- /dev/null +++ b/layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c @@ -0,0 +1,11 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* layer 0: qwerty */ + [0] = LAYOUT_65_blocker_ansi(\ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT) + }; \ No newline at end of file diff --git a/layouts/default/65_blocker_ansi/layout.json b/layouts/default/65_blocker_ansi/layout.json new file mode 100644 index 00000000000..312ce188a7c --- /dev/null +++ b/layouts/default/65_blocker_ansi/layout.json @@ -0,0 +1,6 @@ +[{a:7},"","","","","","","","","","","","","",{w:2},"",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},"",""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{x:0.5},"","",""] + \ No newline at end of file diff --git a/layouts/default/65_blocker_ansi/readme.md b/layouts/default/65_blocker_ansi/readme.md new file mode 100644 index 00000000000..9e9a5f45411 --- /dev/null +++ b/layouts/default/65_blocker_ansi/readme.md @@ -0,0 +1,5 @@ +# 65_blocker_ansi + + LAYOUT_65_blocker_ansi + +This is the 65% ANSI layout made popular by boards such as the Percent Canoe. \ No newline at end of file From ced8c554e6360badafe3882b69451a33015c265c Mon Sep 17 00:00:00 2001 From: Callum Hart Date: Mon, 23 Sep 2019 23:49:55 +0100 Subject: [PATCH 45/72] [Keyboard] Fix pinout on the copenhagen clickpad (#6788) --- keyboards/copenhagen_click/click_pad_v1/config.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/copenhagen_click/click_pad_v1/config.h b/keyboards/copenhagen_click/click_pad_v1/config.h index 552c73cf120..e459925c844 100755 --- a/keyboards/copenhagen_click/click_pad_v1/config.h +++ b/keyboards/copenhagen_click/click_pad_v1/config.h @@ -41,8 +41,8 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { B5 } -#define MATRIX_COL_PINS { B4 } +#define MATRIX_ROW_PINS { F7 } +#define MATRIX_COL_PINS { F5 } #define UNUSED_PINS /* COL2ROW, ROW2COL*/ @@ -53,7 +53,7 @@ along with this program. If not, see . */ #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 -#define BACKLIGHT_PIN E6 +#define BACKLIGHT_PIN B5 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 From 8eb0aefb60aef8d5a88b8b7789c094be7ec194ee Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Mon, 23 Sep 2019 15:56:24 -0700 Subject: [PATCH 46/72] [Keyboard] 65_ansi_blocker support for Doro67 (#6791) * rename LAYOUT to LAYOUT_65_blocker_ansi * rename LAYOUT macro * enable LAYOUT_65_blocker_ansi community layout support and remove uneeded lines of code * rename LAYOUT to LAYOUT_65_blocker_ansi * rename LAYOUT macro * enable LAYOUT_65_blocker_ansi community layout support * enable LAYOUT_65_blocker_ansi support * fix rename mess up * add QMK Configurator support with the new rename * rename blocker_ansi to ansi_blocker as it rolls off the tongue easier --- keyboards/doro67/multi/info.json | 2 +- .../doro67/multi/keymaps/default/keymap.c | 4 +- keyboards/doro67/multi/multi.h | 2 +- keyboards/doro67/multi/rules.mk | 17 +------ keyboards/doro67/regular/info.json | 2 +- .../doro67/regular/keymaps/default/keymap.c | 4 +- keyboards/doro67/regular/regular.h | 2 +- keyboards/doro67/regular/rules.mk | 50 +------------------ keyboards/doro67/rgb/info.json | 2 +- keyboards/doro67/rgb/keymaps/default/keymap.c | 4 +- keyboards/doro67/rgb/rgb.h | 2 +- keyboards/doro67/rgb/rules.mk | 2 + .../default_65_ansi_blocker}/keymap.c | 2 +- .../layout.json | 0 .../readme.md | 0 15 files changed, 19 insertions(+), 76 deletions(-) rename layouts/default/{65_blocker_ansi/default_65_blocker_ansi => 65_ansi_blocker/default_65_ansi_blocker}/keymap.c (95%) rename layouts/default/{65_blocker_ansi => 65_ansi_blocker}/layout.json (100%) rename layouts/default/{65_blocker_ansi => 65_ansi_blocker}/readme.md (100%) diff --git a/keyboards/doro67/multi/info.json b/keyboards/doro67/multi/info.json index 83f219e7631..747c8ab7b00 100644 --- a/keyboards/doro67/multi/info.json +++ b/keyboards/doro67/multi/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT_ansi": { + "LAYOUT_65_ansi_blocker": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Ins", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] }, "LAYOUT_iso": { diff --git a/keyboards/doro67/multi/keymaps/default/keymap.c b/keyboards/doro67/multi/keymaps/default/keymap.c index bc90eb8b2ee..6140aa27736 100644 --- a/keyboards/doro67/multi/keymaps/default/keymap.c +++ b/keyboards/doro67/multi/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [0] = LAYOUT_ansi( + [0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ │ │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [1] = LAYOUT_ansi( + [1] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG, BL_STEP, BL_DEC, BL_INC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/doro67/multi/multi.h b/keyboards/doro67/multi/multi.h index 636707177ac..8ffb673af00 100644 --- a/keyboards/doro67/multi/multi.h +++ b/keyboards/doro67/multi/multi.h @@ -17,7 +17,7 @@ #include "quantum.h" -#define LAYOUT_ansi( \ +#define LAYOUT_65_ansi_blocker( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \ diff --git a/keyboards/doro67/multi/rules.mk b/keyboards/doro67/multi/rules.mk index 387ce74822c..ef3def96dac 100644 --- a/keyboards/doro67/multi/rules.mk +++ b/keyboards/doro67/multi/rules.mk @@ -1,9 +1,4 @@ MCU = atmega32u4 -F_CPU = 16000000 -ARCH = AVR8 -F_USB = $(F_CPU) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection # Teensy halfkay @@ -15,16 +10,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT BOOTLOADER = atmel-dfu -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # @@ -45,3 +30,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/doro67/regular/info.json b/keyboards/doro67/regular/info.json index 68c9f5dbdf3..ebdfa4db687 100644 --- a/keyboards/doro67/regular/info.json +++ b/keyboards/doro67/regular/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "key_count": 67, "layout": [ {"label":"K00", "x":0, "y":0}, diff --git a/keyboards/doro67/regular/keymaps/default/keymap.c b/keyboards/doro67/regular/keymaps/default/keymap.c index a986a176e9b..6a1e3c3d412 100644 --- a/keyboards/doro67/regular/keymaps/default/keymap.c +++ b/keyboards/doro67/regular/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [0] = LAYOUT( + [0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ │ │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [1] = LAYOUT( + [1] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/doro67/regular/regular.h b/keyboards/doro67/regular/regular.h index 0da9a5cceba..e785bba39f9 100644 --- a/keyboards/doro67/regular/regular.h +++ b/keyboards/doro67/regular/regular.h @@ -17,7 +17,7 @@ #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \ diff --git a/keyboards/doro67/regular/rules.mk b/keyboards/doro67/regular/rules.mk index 360c00813f3..f844f8f9569 100644 --- a/keyboards/doro67/regular/rules.mk +++ b/keyboards/doro67/regular/rules.mk @@ -1,43 +1,6 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina @@ -47,17 +10,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # atmega32a bootloadHID BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # @@ -78,3 +30,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json index 2d9b79a23e1..a87b1d4a677 100644 --- a/keyboards/doro67/rgb/info.json +++ b/keyboards/doro67/rgb/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "key_count": 67, "layout": [ {"label":"K00", "x":0, "y":0}, diff --git a/keyboards/doro67/rgb/keymaps/default/keymap.c b/keyboards/doro67/rgb/keymaps/default/keymap.c index ddf2b7f2ad3..b7742bba9c4 100644 --- a/keyboards/doro67/rgb/keymaps/default/keymap.c +++ b/keyboards/doro67/rgb/keymaps/default/keymap.c @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [0] = LAYOUT( + [0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ │ │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ - [1] = LAYOUT( + [1] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, QMKBEST, QMKURL, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/doro67/rgb/rgb.h b/keyboards/doro67/rgb/rgb.h index 0da9a5cceba..e785bba39f9 100644 --- a/keyboards/doro67/rgb/rgb.h +++ b/keyboards/doro67/rgb/rgb.h @@ -17,7 +17,7 @@ #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \ diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk index 36001da3aca..df77b4311be 100644 --- a/keyboards/doro67/rgb/rules.mk +++ b/keyboards/doro67/rgb/rules.mk @@ -80,3 +80,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c similarity index 95% rename from layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c rename to layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c index 37a2270a3f1..fedcc0c73b9 100644 --- a/layouts/default/65_blocker_ansi/default_65_blocker_ansi/keymap.c +++ b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c @@ -2,7 +2,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* layer 0: qwerty */ - [0] = LAYOUT_65_blocker_ansi(\ + [0] = LAYOUT_65_ansi_blocker(\ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, diff --git a/layouts/default/65_blocker_ansi/layout.json b/layouts/default/65_ansi_blocker/layout.json similarity index 100% rename from layouts/default/65_blocker_ansi/layout.json rename to layouts/default/65_ansi_blocker/layout.json diff --git a/layouts/default/65_blocker_ansi/readme.md b/layouts/default/65_ansi_blocker/readme.md similarity index 100% rename from layouts/default/65_blocker_ansi/readme.md rename to layouts/default/65_ansi_blocker/readme.md From 61b5d0e0c5921d9c3ee1cbbc1f80a9b3dcc6b880 Mon Sep 17 00:00:00 2001 From: mikethetiger <30720424+mikethetiger@users.noreply.github.com> Date: Mon, 23 Sep 2019 20:14:55 -0500 Subject: [PATCH 47/72] [Keymap] mikethetiger's milk keymap (#6611) * Added my Preonic keymap * Update keyboards/preonic/keymaps/mikethetiger/keymap.c Co-Authored-By: mikethetiger <30720424+mikethetiger@users.noreply.github.com> * Update keyboards/preonic/keymaps/mikethetiger/keymap.c Co-Authored-By: mikethetiger <30720424+mikethetiger@users.noreply.github.com> * Added my Preonic keymap * Added my Preonic keymap * mikethetigers lets slpit eh keymap * mikethetiger's milk keymap * Update rules.mk * Update keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c Co-Authored-By: fauxpark * Update rules.mk Better? --- .../2_milk/keymaps/mikethetiger/keymap.c | 8 ++ .../2_milk/keymaps/mikethetiger/readme.md | 1 + .../2_milk/keymaps/mikethetiger/rules.mk | 13 +++ keyboards/2_milk/rules.mk | 2 +- .../minivan/keymaps/mikethetiger/config.h | 3 + .../minivan/keymaps/mikethetiger/keymap.c | 92 +++++++++++++++++++ .../minivan/keymaps/mikethetiger/readme.md | 1 + .../minivan/keymaps/mikethetiger/rules.mk | 18 ++++ 8 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 keyboards/2_milk/keymaps/mikethetiger/keymap.c create mode 100644 keyboards/2_milk/keymaps/mikethetiger/readme.md create mode 100644 keyboards/2_milk/keymaps/mikethetiger/rules.mk create mode 100644 keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/mikethetiger/readme.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk diff --git a/keyboards/2_milk/keymaps/mikethetiger/keymap.c b/keyboards/2_milk/keymaps/mikethetiger/keymap.c new file mode 100644 index 00000000000..66e0bc669b0 --- /dev/null +++ b/keyboards/2_milk/keymaps/mikethetiger/keymap.c @@ -0,0 +1,8 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_VOLU, + KC_VOLD + ) +}; diff --git a/keyboards/2_milk/keymaps/mikethetiger/readme.md b/keyboards/2_milk/keymaps/mikethetiger/readme.md new file mode 100644 index 00000000000..677732b0578 --- /dev/null +++ b/keyboards/2_milk/keymaps/mikethetiger/readme.md @@ -0,0 +1 @@ +# mikethetiger's keymap for 2% Milk diff --git a/keyboards/2_milk/keymaps/mikethetiger/rules.mk b/keyboards/2_milk/keymaps/mikethetiger/rules.mk new file mode 100644 index 00000000000..b5f038ef23f --- /dev/null +++ b/keyboards/2_milk/keymaps/mikethetiger/rules.mk @@ -0,0 +1,13 @@ +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled +AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below +RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port. diff --git a/keyboards/2_milk/rules.mk b/keyboards/2_milk/rules.mk index 73f55f95385..069527c0ccf 100644 --- a/keyboards/2_milk/rules.mk +++ b/keyboards/2_milk/rules.mk @@ -1,4 +1,4 @@ -# MCU name +# MCU name MCU = atmega32u4 # Processor frequency. diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h new file mode 100644 index 00000000000..271f48d0011 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h @@ -0,0 +1,3 @@ +#pragma once + +// place overrides here diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c new file mode 100644 index 00000000000..fec08cea3ea --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/keymap.c @@ -0,0 +1,92 @@ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +#define _QW 0 +#define _DV 1 +#define _CM 2 +#define _L1 3 +#define _L2 4 +#define _L3 5 + +// Curly braces have their own keys. These are defined to make them not mess up +// the grid in layer 2. +#define L_CURBR LSFT(KC_LBRC) +#define R_CURBR LSFT(KC_RBRC) + +enum custom_keycodes { + DVORAK = SAFE_RANGE, + QWERTY, + COLEMAK +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = LAYOUT( /* Qwerty */ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2), + KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3) + ), + [_DV] = LAYOUT( /* Dvorak */ + KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1), + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2), + KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3) + ), + [_CM] = LAYOUT( /* Colemak */ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2), + KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3) + ), + [_L1] = LAYOUT( /* LAYER 1 */ + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______, + _______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT, + _______, KC_LGUI, _______, _______, _______, _______, _______, _______ + ), + [_L2] = LAYOUT( /* LAYER 2 */ + _______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______, + KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT, + _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT( /* LAYER 3 */ + _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, + KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, + KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______ + ) +}; + +void persistent_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case DVORAK: + if (record->event.pressed) { + persistent_default_layer_set(1UL<<_DV); + } + return false; + case QWERTY: + if (record->event.pressed) { + persistent_default_layer_set(1UL<<_QW); + } + return false; + case COLEMAK: + if (record->event.pressed) { + persistent_default_layer_set(1UL<<_CM); + } + return false; + default: + return true; + } + return true; +}; diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/readme.md b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/readme.md new file mode 100644 index 00000000000..3584c8b23f1 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/readme.md @@ -0,0 +1 @@ +# mikethetiger's keymap for tv44 \ No newline at end of file diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk new file mode 100644 index 00000000000..7a331cd530c --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk @@ -0,0 +1,18 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + From efb7f3cc3a5844a8da40ce78c64f7da88e39766c Mon Sep 17 00:00:00 2001 From: QMK Bot Date: Tue, 24 Sep 2019 01:18:18 +0000 Subject: [PATCH 48/72] format code according to conventions [skip ci] --- keyboards/2_milk/keymaps/mikethetiger/keymap.c | 2 +- keyboards/2_milk/rules.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/2_milk/keymaps/mikethetiger/keymap.c b/keyboards/2_milk/keymaps/mikethetiger/keymap.c index 66e0bc669b0..20e2292f08d 100644 --- a/keyboards/2_milk/keymaps/mikethetiger/keymap.c +++ b/keyboards/2_milk/keymaps/mikethetiger/keymap.c @@ -1,4 +1,4 @@ -#include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( diff --git a/keyboards/2_milk/rules.mk b/keyboards/2_milk/rules.mk index 069527c0ccf..73f55f95385 100644 --- a/keyboards/2_milk/rules.mk +++ b/keyboards/2_milk/rules.mk @@ -1,4 +1,4 @@ -# MCU name +# MCU name MCU = atmega32u4 # Processor frequency. From 37b6a2abbd96eaf3d6d724ac09c789d54a67d962 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Mon, 23 Sep 2019 23:34:59 -0700 Subject: [PATCH 49/72] Refactor the KBD67 Mk.II RGB (#6799) * move kbd67mkiirgb into kbd67 directory as mkiirgb * rename files * rename LAYOUT to LAYOUT_65_ansi_blocker * add support for default layout * update readme for new build target * update parent readme with the fourth variant --- .../{kbd67mkiirgb => kbd67/mkiirgb}/config.h | 0 .../{kbd67mkiirgb => kbd67/mkiirgb}/info.json | 2 +- .../mkiirgb}/keymaps/default/keymap.c | 4 ++-- .../kbd67mkiirgb.c => kbd67/mkiirgb/mkiirgb.c} | 2 +- .../kbd67mkiirgb.h => kbd67/mkiirgb/mkiirgb.h} | 2 +- .../{kbd67mkiirgb => kbd67/mkiirgb}/readme.md | 4 ++-- .../{kbd67mkiirgb => kbd67/mkiirgb}/rules.mk | 2 ++ keyboards/kbdfans/kbd67/readme.md | 14 +++++++------- 8 files changed, 16 insertions(+), 14 deletions(-) rename keyboards/kbdfans/{kbd67mkiirgb => kbd67/mkiirgb}/config.h (100%) rename keyboards/kbdfans/{kbd67mkiirgb => kbd67/mkiirgb}/info.json (97%) rename keyboards/kbdfans/{kbd67mkiirgb => kbd67/mkiirgb}/keymaps/default/keymap.c (95%) rename keyboards/kbdfans/{kbd67mkiirgb/kbd67mkiirgb.c => kbd67/mkiirgb/mkiirgb.c} (99%) rename keyboards/kbdfans/{kbd67mkiirgb/kbd67mkiirgb.h => kbd67/mkiirgb/mkiirgb.h} (96%) rename keyboards/kbdfans/{kbd67mkiirgb => kbd67/mkiirgb}/readme.md (90%) rename keyboards/kbdfans/{kbd67mkiirgb => kbd67/mkiirgb}/rules.mk (95%) diff --git a/keyboards/kbdfans/kbd67mkiirgb/config.h b/keyboards/kbdfans/kbd67/mkiirgb/config.h similarity index 100% rename from keyboards/kbdfans/kbd67mkiirgb/config.h rename to keyboards/kbdfans/kbd67/mkiirgb/config.h diff --git a/keyboards/kbdfans/kbd67mkiirgb/info.json b/keyboards/kbdfans/kbd67/mkiirgb/info.json similarity index 97% rename from keyboards/kbdfans/kbd67mkiirgb/info.json rename to keyboards/kbdfans/kbd67/mkiirgb/info.json index d0afaef501a..297a62f9c34 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/info.json +++ b/keyboards/kbdfans/kbd67/mkiirgb/info.json @@ -5,7 +5,7 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2},{"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5},{"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75},{"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } diff --git a/keyboards/kbdfans/kbd67mkiirgb/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c similarity index 95% rename from keyboards/kbdfans/kbd67mkiirgb/keymaps/default/keymap.c rename to keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c index 85738ad4d9c..17bf4ec9914 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c @@ -2,13 +2,13 @@ #define _LAYER0 0 #define _LAYER1 1 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT( /* Base */ + [_LAYER0] = LAYOUT_65_ansi_blocker( /* Base */ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,\ CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,\ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), - [_LAYER1] = LAYOUT( /* FN */ + [_LAYER1] = LAYOUT_65_ansi_blocker( /* FN */ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,\ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,\ CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,\ diff --git a/keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.c b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c similarity index 99% rename from keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.c rename to keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c index 74dbf14a057..430dca9524e 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.c +++ b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c @@ -1,4 +1,4 @@ -#include "kbd67mkiirgb.h" +#include "mkiirgb.h" #ifdef RGB_MATRIX_ENABLE const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { diff --git a/keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.h b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h similarity index 96% rename from keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.h rename to keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h index 22e257955c4..e61ff96839f 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/kbd67mkiirgb.h +++ b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h @@ -1,7 +1,7 @@ #pragma once #define XXX KC_NO #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ diff --git a/keyboards/kbdfans/kbd67mkiirgb/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/readme.md similarity index 90% rename from keyboards/kbdfans/kbd67mkiirgb/readme.md rename to keyboards/kbdfans/kbd67/mkiirgb/readme.md index f9f4049679e..71c2ffad2b2 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/readme.md +++ b/keyboards/kbdfans/kbd67/mkiirgb/readme.md @@ -1,4 +1,4 @@ -# kbd67mkiirgb +# KBD67 Mk.II RGB A customizable 65% RGB keyboard. @@ -9,6 +9,6 @@ Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) Make example for this keyboard (after setting up your build environment): - make kbdfans/kbd67mkiirgb:default + make kbdfans/kbd67/mkiirgb:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kbdfans/kbd67mkiirgb/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/rules.mk similarity index 95% rename from keyboards/kbdfans/kbd67mkiirgb/rules.mk rename to keyboards/kbdfans/kbd67/mkiirgb/rules.mk index 36e8ef27dd3..782d86c1ea7 100644 --- a/keyboards/kbdfans/kbd67mkiirgb/rules.mk +++ b/keyboards/kbdfans/kbd67/mkiirgb/rules.mk @@ -10,3 +10,5 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no RGB_MATRIX_ENABLE = yes # Use RGB matrix + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/kbdfans/kbd67/readme.md b/keyboards/kbdfans/kbd67/readme.md index 1fa2458817b..f1490d5bf14 100644 --- a/keyboards/kbdfans/kbd67/readme.md +++ b/keyboards/kbdfans/kbd67/readme.md @@ -1,16 +1,15 @@ # KBD67 -A 65% keyboard sold in three variants. -1. Rev1: Typical keyboard that had to be soldered together, supporting multiple layouts. +A 65% keyboard sold in four variants. +1. Rev1: Typical keyboard that had to be soldered together, supporting multiple layouts. The rev1 PCB is sold under the name "KBD65". 2. HotSwap: Released in late 2018, Hotswap single layout keyboard. 3. Rev2: Released in April/May 2019, the Rev2 also needs to be soldered together and supports multiple layouts. +4. MKII RGB: Released in September 2019. ARM powered hotswap board. - **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` appropriate for your board. + **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board. -The rev1 PCB is sold under the name "KBD65". - -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: KBD67 rev1, rev2, hotswap +Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [moyi4681](https://github.com/moyi4681) +Hardware Supported: KBD67 rev1, rev2, hotswap, mkiirgb Hardware Availability: KBDFans Make examples for this keyboard (after setting up your build environment): @@ -18,5 +17,6 @@ Make examples for this keyboard (after setting up your build environment): make kbdfans/kbd67/rev1:default make kbdfans/kbd67/rev2:default make kbdfans/kbd67/hotswap:default + make kbdfans/kbd67/mkiirgb:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 237147ca236b0e942fc14e73010479a2785bf764 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Tue, 24 Sep 2019 17:59:17 +1000 Subject: [PATCH 50/72] Cleanup rules.mk for 32U4 keyboards, 0-9 (#6789) --- keyboards/1upkeyboards/1up60hse/rules.mk | 54 +++-------------- keyboards/1upkeyboards/1up60hte/rules.mk | 8 +++ keyboards/1upkeyboards/1up60rgb/rules.mk | 48 +++------------ keyboards/1upkeyboards/super16/rules.mk | 50 +--------------- keyboards/1upkeyboards/sweet16/rules.mk | 48 +++------------ keyboards/2_milk/rules.mk | 24 +++----- keyboards/30wer/rules.mk | 47 +++------------ keyboards/40percentclub/25/rules.mk | 51 +--------------- keyboards/40percentclub/4x4/rules.mk | 49 +-------------- keyboards/40percentclub/5x5/rules.mk | 50 +--------------- keyboards/40percentclub/6lit/rules.mk | 51 +--------------- keyboards/40percentclub/foobar/rules.mk | 51 +--------------- keyboards/40percentclub/gherkin/rules.mk | 50 +--------------- keyboards/40percentclub/half_n_half/rules.mk | 51 +--------------- keyboards/40percentclub/i75/promicro/rules.mk | 50 +--------------- keyboards/40percentclub/i75/teensy2/rules.mk | 50 +--------------- keyboards/40percentclub/luddite/rules.mk | 50 +--------------- .../mf68/keymaps/mf68_ble/rules.mk | 60 +------------------ keyboards/40percentclub/mf68/rules.mk | 50 +--------------- keyboards/40percentclub/nano/rules.mk | 50 +--------------- keyboards/40percentclub/nein/rules.mk | 51 +--------------- keyboards/40percentclub/nori/rules.mk | 51 +--------------- keyboards/40percentclub/tomato/rules.mk | 50 +--------------- keyboards/40percentclub/ut47/rules.mk | 51 +--------------- keyboards/4by3/rules.mk | 14 ++++- keyboards/6ball/keymaps/default/rules.mk | 0 keyboards/6ball/rules.mk | 52 +++------------- keyboards/8pack/rules.mk | 38 +----------- keyboards/9key/rules.mk | 52 +++------------- 29 files changed, 118 insertions(+), 1183 deletions(-) delete mode 100644 keyboards/6ball/keymaps/default/rules.mk diff --git a/keyboards/1upkeyboards/1up60hse/rules.mk b/keyboards/1upkeyboards/1up60hse/rules.mk index 550241948d4..09caf0045a4 100644 --- a/keyboards/1upkeyboards/1up60hse/rules.mk +++ b/keyboards/1upkeyboards/1up60hse/rules.mk @@ -1,51 +1,15 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk index e994785ba86..d2bedea1b65 100644 --- a/keyboards/1upkeyboards/1up60hte/rules.mk +++ b/keyboards/1upkeyboards/1up60hte/rules.mk @@ -1,6 +1,14 @@ # MCU name MCU = atmega32u4 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options diff --git a/keyboards/1upkeyboards/1up60rgb/rules.mk b/keyboards/1upkeyboards/1up60rgb/rules.mk index 8b1cf6667fa..98a1e93a1bd 100644 --- a/keyboards/1upkeyboards/1up60rgb/rules.mk +++ b/keyboards/1upkeyboards/1up60rgb/rules.mk @@ -1,45 +1,15 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. diff --git a/keyboards/1upkeyboards/super16/rules.mk b/keyboards/1upkeyboards/super16/rules.mk index 31042dfb811..07a403cc114 100644 --- a/keyboards/1upkeyboards/super16/rules.mk +++ b/keyboards/1upkeyboards/super16/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - -#EXTRAFLAGS += -flto - # Build Options # change yes to no to disable # diff --git a/keyboards/1upkeyboards/sweet16/rules.mk b/keyboards/1upkeyboards/sweet16/rules.mk index e3436dc3387..6e1a5eec993 100644 --- a/keyboards/1upkeyboards/sweet16/rules.mk +++ b/keyboards/1upkeyboards/sweet16/rules.mk @@ -1,45 +1,15 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina # Build Options # comment out to disable the options. diff --git a/keyboards/2_milk/rules.mk b/keyboards/2_milk/rules.mk index 73f55f95385..57c6d32c81a 100644 --- a/keyboards/2_milk/rules.mk +++ b/keyboards/2_milk/rules.mk @@ -1,24 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -F_USB = $(F_CPU) - -# Bootloader +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Build Options # comment out to disable the options. # diff --git a/keyboards/30wer/rules.mk b/keyboards/30wer/rules.mk index 9d77ec54611..1aeca9a545a 100644 --- a/keyboards/30wer/rules.mk +++ b/keyboards/30wer/rules.mk @@ -1,45 +1,14 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - -# Bootloader -# This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded -# automatically (+60). See bootloader.mk for all options. +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina # Build Options diff --git a/keyboards/40percentclub/25/rules.mk b/keyboards/40percentclub/25/rules.mk index bfcdce7c995..3321a84025b 100644 --- a/keyboards/40percentclub/25/rules.mk +++ b/keyboards/40percentclub/25/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/4x4/rules.mk b/keyboards/40percentclub/4x4/rules.mk index 4ab5e7431c9..c653c6753de 100644 --- a/keyboards/40percentclub/4x4/rules.mk +++ b/keyboards/40percentclub/4x4/rules.mk @@ -1,61 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/5x5/rules.mk b/keyboards/40percentclub/5x5/rules.mk index 237de649770..d8b82248c6b 100644 --- a/keyboards/40percentclub/5x5/rules.mk +++ b/keyboards/40percentclub/5x5/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/6lit/rules.mk b/keyboards/40percentclub/6lit/rules.mk index 3275651650c..db09b6c5f68 100644 --- a/keyboards/40percentclub/6lit/rules.mk +++ b/keyboards/40percentclub/6lit/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/foobar/rules.mk b/keyboards/40percentclub/foobar/rules.mk index 155a7daacb3..4b77d4cdba6 100644 --- a/keyboards/40percentclub/foobar/rules.mk +++ b/keyboards/40percentclub/foobar/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk index 1e0b346417f..190aea355a4 100644 --- a/keyboards/40percentclub/gherkin/rules.mk +++ b/keyboards/40percentclub/gherkin/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # comment out to disable the options. # diff --git a/keyboards/40percentclub/half_n_half/rules.mk b/keyboards/40percentclub/half_n_half/rules.mk index 3b584f84502..62d9e37ada6 100644 --- a/keyboards/40percentclub/half_n_half/rules.mk +++ b/keyboards/40percentclub/half_n_half/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/i75/promicro/rules.mk b/keyboards/40percentclub/i75/promicro/rules.mk index dc6f1962373..e6fef517279 100644 --- a/keyboards/40percentclub/i75/promicro/rules.mk +++ b/keyboards/40percentclub/i75/promicro/rules.mk @@ -1,58 +1,12 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 diff --git a/keyboards/40percentclub/i75/teensy2/rules.mk b/keyboards/40percentclub/i75/teensy2/rules.mk index 3fb7c7e5a7e..ae398e2588c 100644 --- a/keyboards/40percentclub/i75/teensy2/rules.mk +++ b/keyboards/40percentclub/i75/teensy2/rules.mk @@ -1,58 +1,12 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = halfkay - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk index 8dff21f9ab7..02e0abe9a62 100644 --- a/keyboards/40percentclub/luddite/rules.mk +++ b/keyboards/40percentclub/luddite/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # comment out to disable the options. # diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk index 2509d0bf4eb..2a4ff658cf2 100644 --- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk +++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk @@ -1,64 +1,6 @@ -# Overrides for Feather 32u4 Bluefruit -# MCU name -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. +# Processor frequency F_CPU = 8000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# atmega32a bootloadHID -BOOTLOADER = caterina - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/mf68/rules.mk b/keyboards/40percentclub/mf68/rules.mk index 27642d8604f..1113d34a23d 100644 --- a/keyboards/40percentclub/mf68/rules.mk +++ b/keyboards/40percentclub/mf68/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/nano/rules.mk b/keyboards/40percentclub/nano/rules.mk index e3c97e0d442..d55a40889b3 100644 --- a/keyboards/40percentclub/nano/rules.mk +++ b/keyboards/40percentclub/nano/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically diff --git a/keyboards/40percentclub/nein/rules.mk b/keyboards/40percentclub/nein/rules.mk index 1e3748287ce..7805bac1761 100644 --- a/keyboards/40percentclub/nein/rules.mk +++ b/keyboards/40percentclub/nein/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/nori/rules.mk b/keyboards/40percentclub/nori/rules.mk index f52135379af..75aa26e4962 100644 --- a/keyboards/40percentclub/nori/rules.mk +++ b/keyboards/40percentclub/nori/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk index 844ff998277..a3e442e09e8 100644 --- a/keyboards/40percentclub/tomato/rules.mk +++ b/keyboards/40percentclub/tomato/rules.mk @@ -1,62 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # comment out to disable the options. # diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk index 7495f5edda1..043a62906ae 100644 --- a/keyboards/40percentclub/ut47/rules.mk +++ b/keyboards/40percentclub/ut47/rules.mk @@ -1,63 +1,16 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # diff --git a/keyboards/4by3/rules.mk b/keyboards/4by3/rules.mk index 7d22998333e..912449366ad 100644 --- a/keyboards/4by3/rules.mk +++ b/keyboards/4by3/rules.mk @@ -1,5 +1,15 @@ -MCU = atmega32u4 -BOOTLOADER = caterina +# MCU name +MCU = atmega32u4 + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina EXTRAKEY_ENABLE = yes NKRO_ENABLE = yes diff --git a/keyboards/6ball/keymaps/default/rules.mk b/keyboards/6ball/keymaps/default/rules.mk deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/keyboards/6ball/rules.mk b/keyboards/6ball/rules.mk index 89d13248093..05a642e6e9f 100644 --- a/keyboards/6ball/rules.mk +++ b/keyboards/6ball/rules.mk @@ -1,49 +1,15 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in diff --git a/keyboards/8pack/rules.mk b/keyboards/8pack/rules.mk index 97496c8f228..625f8b201f2 100644 --- a/keyboards/8pack/rules.mk +++ b/keyboards/8pack/rules.mk @@ -1,48 +1,14 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - # Bootloader selection # Teensy halfkay # Pro Micro caterina # Atmel DFU atmel-dfu # LUFA DFU lufa-dfu # QMK DFU qmk-dfu -# atmega32a bootloadHID +# ATmega32A bootloadHID +# ATmega328P USBasp BOOTLOADER = caterina # Build Options diff --git a/keyboards/9key/rules.mk b/keyboards/9key/rules.mk index eb82006fbda..5e6e882e9c3 100644 --- a/keyboards/9key/rules.mk +++ b/keyboards/9key/rules.mk @@ -1,49 +1,15 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in From ad8dbd5ca5390ad9e441943b705684fce521bc15 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 24 Sep 2019 15:24:12 +0100 Subject: [PATCH 51/72] ARM split - Add bootmagic/magic keycodes for setting handedness (#6545) * Add docs on bootmagic/magic keycodes for setting handedness * Clang format fixes * Maintain backwards compatibility * Maintain backwards compatibility --- docs/feature_bootmagic.md | 6 ++++ docs/keycodes.md | 58 ++++++++++++++++--------------- quantum/quantum.c | 8 ++++- quantum/quantum_keycodes.h | 2 ++ quantum/split_common/split_util.c | 3 +- tmk_core/common/bootmagic.c | 8 +++++ tmk_core/common/bootmagic.h | 6 ++++ tmk_core/common/eeconfig.c | 19 ++++++++-- tmk_core/common/eeconfig.h | 3 ++ 9 files changed, 80 insertions(+), 33 deletions(-) diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md index fc37a3302b1..ed00d512957 100644 --- a/docs/feature_bootmagic.md +++ b/docs/feature_bootmagic.md @@ -34,6 +34,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug |`X` |Toggle key matrix debugging | |`K` |Toggle keyboard debugging | |`M` |Toggle mouse debugging | +|`L` |Set "Left Hand" for EE_HANDS handedness | +|`R` |Set "Right Hand" for EE_HANDS handedness | |Backspace |Clear the EEPROM | |Caps Lock |Toggle treating Caps Lock as Left Control | |Left Control |Toggle swapping Caps Lock and Left Control | @@ -83,6 +85,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug |`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI | |`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI | |`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI | +|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness | +|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness | ## Configuration @@ -98,6 +102,8 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes |`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging | |`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging | |`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging | +|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness | +|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness | |`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock | |`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control | |`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) | diff --git a/docs/keycodes.md b/docs/keycodes.md index e17fef6fd20..dfbab148b87 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -257,35 +257,37 @@ This is a reference only. Each group of keys links to the page documenting their ## [Bootmagic](feature_bootmagic.md) -|Key |Aliases |Description | -|----------------------------------|---------|------------------------------------| -|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control | -|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control | -|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI | -|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI | -|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI | -|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI | -|`MAGIC_NO_GUI` | |Disable the GUI key | -|`MAGIC_SWAP_GRAVE_ESC` | |Swap ` and Escape | -|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace | -|`MAGIC_HOST_NKRO` | |Force NKRO on | -|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides | +|Key |Aliases |Description | +|----------------------------------|---------|-------------------------------------------| +|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control | +|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control | +|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI | +|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI | +|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI | +|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI | +|`MAGIC_NO_GUI` | |Disable the GUI key | +|`MAGIC_SWAP_GRAVE_ESC` | |Swap ` and Escape | +|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace | +|`MAGIC_HOST_NKRO` | |Force NKRO on | +|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides | |`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)| -|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control | -|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control | -|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI | -|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI | -|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI | -|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI | -|`MAGIC_UNNO_GUI` | |Enable the GUI key | -|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap ` and Escape| -|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace | -|`MAGIC_UNHOST_NKRO` | |Force NKRO off | -|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides | -|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides | -|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides | -|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides | -|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off | +|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control | +|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control | +|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI | +|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI | +|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI | +|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI | +|`MAGIC_UNNO_GUI` | |Enable the GUI key | +|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap ` and Escape | +|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace | +|`MAGIC_UNHOST_NKRO` | |Force NKRO off | +|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides | +|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides | +|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides | +|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides | +|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off | +|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness | +|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness | ## [Bluetooth](feature_bluetooth.md) diff --git a/quantum/quantum.c b/quantum/quantum.c index ec80fa557f9..16922dd011e 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -544,7 +544,7 @@ bool process_record_quantum(keyrecord_t *record) { # endif #endif case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI: - case MAGIC_SWAP_LCTL_LGUI ... MAGIC_TOGGLE_CTL_GUI: + case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT: if (record->event.pressed) { // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { @@ -662,6 +662,12 @@ bool process_record_quantum(keyrecord_t *record) { case MAGIC_TOGGLE_NKRO: keymap_config.nkro = !keymap_config.nkro; break; + case MAGIC_EE_HANDS_LEFT: + eeconfig_update_handedness(true); + break; + case MAGIC_EE_HANDS_RIGHT: + eeconfig_update_handedness(false); + break; default: break; } diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index af984a7cd78..5fac6a5cae8 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -502,6 +502,8 @@ enum quantum_keycodes { MAGIC_SWAP_CTL_GUI, MAGIC_UNSWAP_CTL_GUI, MAGIC_TOGGLE_CTL_GUI, + MAGIC_EE_HANDS_LEFT, + MAGIC_EE_HANDS_RIGHT, // always leave at the end SAFE_RANGE diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 5114b188ec6..d16a989770a 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -7,7 +7,6 @@ #include "quantum.h" #ifdef EE_HANDS -# include "tmk_core/common/eeprom.h" # include "eeconfig.h" #endif @@ -23,7 +22,7 @@ __attribute__((weak)) bool is_keyboard_left(void) { setPinInput(SPLIT_HAND_PIN); return readPin(SPLIT_HAND_PIN); #elif defined(EE_HANDS) - return eeprom_read_byte(EECONFIG_HANDEDNESS); + return eeconfig_read_handedness(); #elif defined(MASTER_RIGHT) return !is_keyboard_master(); #endif diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 09b1664c904..bb2aa0db8cd 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -122,6 +122,14 @@ void bootmagic(void) { default_layer = eeconfig_read_default_layer(); default_layer_set((layer_state_t)default_layer); } + + /* EE_HANDS handedness */ + if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { + eeconfig_update_handedness(true); + } + if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_RIGHT)) { + eeconfig_update_handedness(false); + } } /** \brief Scan Keycode diff --git a/tmk_core/common/bootmagic.h b/tmk_core/common/bootmagic.h index fb764725798..c64dc178584 100644 --- a/tmk_core/common/bootmagic.h +++ b/tmk_core/common/bootmagic.h @@ -36,6 +36,12 @@ #ifndef BOOTMAGIC_KEY_DEBUG_MOUSE # define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M #endif +#ifndef BOOTMAGIC_KEY_EE_HANDS_LEFT +# define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_L +#endif +#ifndef BOOTMAGIC_KEY_EE_HANDS_RIGHT +# define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_R +#endif /* * keymap config diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c index 61aaec20547..933ac42bd2d 100644 --- a/tmk_core/common/eeconfig.c +++ b/tmk_core/common/eeconfig.c @@ -153,8 +153,8 @@ uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD); } * * FIXME: needs doc */ - void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); } + /** \brief eeconfig read user * * FIXME: needs doc @@ -166,9 +166,24 @@ uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER); } */ void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); } +/** \brief eeconfig read haptic + * + * FIXME: needs doc + */ uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); } -/** \brief eeconfig update user +/** \brief eeconfig update haptic * * FIXME: needs doc */ void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); } + +/** \brief eeconfig read split handedness + * + * FIXME: needs doc + */ +bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS); } +/** \brief eeconfig update split handedness + * + * FIXME: needs doc + */ +void eeconfig_update_handedness(bool val) { eeprom_update_byte(EECONFIG_HANDEDNESS, !!val); } diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index aea4eff9f6e..308f865e19f 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -107,4 +107,7 @@ uint32_t eeconfig_read_haptic(void); void eeconfig_update_haptic(uint32_t val); #endif +bool eeconfig_read_handedness(void); +void eeconfig_update_handedness(bool val); + #endif From 494fc518129725b0cc9d62d4d23877ae0ed2e6e7 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Tue, 24 Sep 2019 11:01:40 -0700 Subject: [PATCH 52/72] Merlin's Community Layout Updates (#6798) * readme updates for 60_ansi and split variations * add new community layout for mechmerlin for the new default layout 65_ansi_blocker * change path now that kbd67 has been updated * fix up spacing --- .../60_ansi/mechmerlin-ansi/readme.md | 10 +++--- .../mechmerlin-split/readme.md | 10 +++--- .../65_ansi_blocker/mechmerlin/keymap.c | 36 +++++++++++++++++++ .../65_ansi_blocker/mechmerlin/readme.md | 11 ++++++ .../65_ansi_blocker/mechmerlin/rules.mk | 1 + 5 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 layouts/community/65_ansi_blocker/mechmerlin/keymap.c create mode 100644 layouts/community/65_ansi_blocker/mechmerlin/readme.md create mode 100644 layouts/community/65_ansi_blocker/mechmerlin/rules.mk diff --git a/layouts/community/60_ansi/mechmerlin-ansi/readme.md b/layouts/community/60_ansi/mechmerlin-ansi/readme.md index aefd6a99298..4d3f3d82034 100644 --- a/layouts/community/60_ansi/mechmerlin-ansi/readme.md +++ b/layouts/community/60_ansi/mechmerlin-ansi/readme.md @@ -1,14 +1,12 @@ -MechMerlin's Standard ANSI 60% Layout -====================== +# MechMerlin's Standard ANSI 60% Layout This is the 60% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin) YouTube channel. -It is used on his -[Duck Eagle V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/eagle_viper/v2) -[NPKC KC60](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kc60) +It is used on his [1up60HSE](https://github.com/qmk/qmk_firmware/tree/master/keyboards/1upkeyboards/1up60hse) -[HS60 V1](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hs60/v1) +[dz60rgb-ansi](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz60rgb) +[HS60 V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hs60/v2) ## Keymap Notes - Arrow toggle switch is tapping the `FN` key once. diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md index 855fd5ac9ec..528776011e6 100644 --- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md +++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md @@ -1,13 +1,15 @@ -MechMerlin's Split ANSI 60% Layout -====================== +# MechMerlin's Split ANSI 60% Layout This is the 60% layout with split backspace and right shift used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin) YouTube channel. It is used on his -[Sentraq S60-X RGB](https://github.com/qmk/qmk_firmware/tree/master/keyboards/s60_x) -[Zeal60 Rev4](https://github.com/qmk/qmk_firmware/tree/master/keyboards/zeal60) + [DO60](https://github.com/qmk/qmk_firmware/tree/master/keyboards/do60) +[DP60](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dp60) +[Sentraq S60-X RGB](https://github.com/qmk/qmk_firmware/tree/master/keyboards/s60_x) +[Waldo](https://github.com/qmk/qmk_firmware/tree/master/keyboards/waldo) +[Zeal60 Rev4](https://github.com/qmk/qmk_firmware/tree/master/keyboards/zeal60) ## Keymap Notes - Highly influenced by the KBP V60 and WKL B.Face standard layouts diff --git a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c new file mode 100644 index 00000000000..7ab719ab262 --- /dev/null +++ b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2019 MechMerlin + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "mechmerlin.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CTCP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FL] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), +}; + diff --git a/layouts/community/65_ansi_blocker/mechmerlin/readme.md b/layouts/community/65_ansi_blocker/mechmerlin/readme.md new file mode 100644 index 00000000000..fa69ce3e7db --- /dev/null +++ b/layouts/community/65_ansi_blocker/mechmerlin/readme.md @@ -0,0 +1,11 @@ +# MechMerlin's 65_ansi_blocker layout + +This is the 65% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin) +YouTube channel. + +It is used on his +[RGB Doro67](https://github.com/qmk/qmk_firmware/tree/master/keyboards/doro67/rgb) +[KBD67 mkii](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd67/mkiirgb) + +### Build +To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin`. \ No newline at end of file diff --git a/layouts/community/65_ansi_blocker/mechmerlin/rules.mk b/layouts/community/65_ansi_blocker/mechmerlin/rules.mk new file mode 100644 index 00000000000..e2ce3d7731f --- /dev/null +++ b/layouts/community/65_ansi_blocker/mechmerlin/rules.mk @@ -0,0 +1 @@ +USER_NAME := mechmerlin \ No newline at end of file From 460da06ce4039019765586e7d980e47d18719f30 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Tue, 24 Sep 2019 11:26:17 -0700 Subject: [PATCH 53/72] [Keyboard] KBD67 Mk.II RGB info.json missing a column (#6807) * looks like configurator layout was missing a column * add a key count --- keyboards/kbdfans/kbd67/mkiirgb/info.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/keyboards/kbdfans/kbd67/mkiirgb/info.json b/keyboards/kbdfans/kbd67/mkiirgb/info.json index 297a62f9c34..eac11597128 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/info.json +++ b/keyboards/kbdfans/kbd67/mkiirgb/info.json @@ -1,12 +1,13 @@ { - "keyboard_name": "kbd67mkiirgb", - "url": "", - "maintainer": "moyi4681", - "width": 15, - "height": 5, + "keyboard_name": "kbd67mkiirgb", + "url": "", + "maintainer": "moyi4681", + "width": 16, + "height": 5, "layouts": { - "LAYOUT_65_ansi_blocker": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2},{"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5},{"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75},{"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] - } - } -} + "LAYOUT_65_ansi_blocker": { + "key_count": 67, + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} \ No newline at end of file From df9388fb8acb4fe762befc87bebe6d95efbddcab Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 24 Sep 2019 11:36:23 -0700 Subject: [PATCH 54/72] Bathroom Epiphanies Pegasus Hoof: add LAYOUT_tkl_jis data to QMK Configurator (#6802) * Bathroom Epiphanies Pegasus Hoof: add LAYOUT_tkl_jis data * use normal English labels --- keyboards/bpiphany/pegasushoof/info.json | 95 ++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/keyboards/bpiphany/pegasushoof/info.json b/keyboards/bpiphany/pegasushoof/info.json index c4fa28ac46a..0fb9f4a746c 100644 --- a/keyboards/bpiphany/pegasushoof/info.json +++ b/keyboards/bpiphany/pegasushoof/info.json @@ -187,6 +187,101 @@ {"label":"Down", "x":16.25, "y":5.5}, {"label":"Right", "x":17.25, "y":5.5} ] + }, + "LAYOUT_tkl_jis": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"Print Screen", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"Half-width/Full-width", "x":0, "y":1.5}, + {"label":"1", "x":1, "y":1.5}, + {"label":"2", "x":2, "y":1.5}, + {"label":"3", "x":3, "y":1.5}, + {"label":"4", "x":4, "y":1.5}, + {"label":"5", "x":5, "y":1.5}, + {"label":"6", "x":6, "y":1.5}, + {"label":"7", "x":7, "y":1.5}, + {"label":"8", "x":8, "y":1.5}, + {"label":"9", "x":9, "y":1.5}, + {"label":"0", "x":10, "y":1.5}, + {"label":"-", "x":11, "y":1.5}, + {"label":"^", "x":12, "y":1.5}, + {"label":"Yen", "x":13, "y":1.5}, + {"label":"Backspace", "x":14, "y":1.5}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"Page Up", "x":17.25, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"@", "x":11.5, "y":2.5}, + {"label":"[", "x":12.5, "y":2.5}, + {"label":"Del", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"Page Down", "x":17.25, "y":2.5}, + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":";", "x":10.75, "y":3.5}, + {"label":":", "x":11.75, "y":3.5}, + {"label":"]", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":",", "x":9.25, "y":4.5}, + {"label":".", "x":10.25, "y":4.5}, + {"label":"/", "x":11.25, "y":4.5}, + {"label":"\\", "x":12.25, "y":4.5}, + {"label":"Shift", "x":13.25, "y":4.5, "w":1.75}, + {"label":"Up", "x":16.25, "y":4.5}, + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5.5}, + {"label":"Alt", "x":2.25, "y":5.5, "w":1.25}, + {"label":"Muhenkan", "x":3.5, "y":5.5}, + {"label":"Space", "x":4.5, "y":5.5, "w":4.5}, + {"label":"Henkan", "x":9, "y":5.5, "w":1.25}, + {"label":"Kana", "x":10.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":11.5, "y":5.5, "w":1.25}, + {"label":"Fn", "x":12.75, "y":5.5}, + {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.5}, + {"label":"Down", "x":16.25, "y":5.5}, + {"label":"Right", "x":17.25, "y":5.5} + ] } } } From 6c37798aaca1b950426b7053c79f76c7b435a762 Mon Sep 17 00:00:00 2001 From: Sid Carter Date: Wed, 25 Sep 2019 04:54:32 -0400 Subject: [PATCH 55/72] [Keymap] New keymap for the DZ65RGB (#6792) * new keymap for my chocolate tofu65 with dz65rgb * consistent with a tada68 layout * remove extra layer, add swap keycodes and mouse keycodes * fix the tabs and spaces * fix the left shift --- .../dztech/dz65rgb/keymaps/chocol8/config.h | 3 +++ .../dztech/dz65rgb/keymaps/chocol8/keymap.c | 25 +++++++++++++++++++ .../dztech/dz65rgb/keymaps/chocol8/rules.mk | 6 +++++ 3 files changed, 34 insertions(+) create mode 100644 keyboards/dztech/dz65rgb/keymaps/chocol8/config.h create mode 100644 keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c create mode 100644 keyboards/dztech/dz65rgb/keymaps/chocol8/rules.mk diff --git a/keyboards/dztech/dz65rgb/keymaps/chocol8/config.h b/keyboards/dztech/dz65rgb/keymaps/chocol8/config.h new file mode 100644 index 00000000000..1c801d7e3c1 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/chocol8/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define FORCE_NKRO diff --git a/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c b/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c new file mode 100644 index 00000000000..6afa734cd6f --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H + +enum tofu68_layers { + _QWERTY, + _FNM +}; + +#define FNM MO(_FNM) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \ + KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \ + KC_LCTL, KC_LALT, KC_LCMD, KC_SPC, FNM, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ + ), + [_FNM] = LAYOUT_65_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_MUTE, KC_VOLU, \ + _______, RGB_TOG, RGB_MOD, RGB_HUI ,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, KC_VOLD, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, AG_TOGG, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, _______, \ + _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R \ + ) +}; diff --git a/keyboards/dztech/dz65rgb/keymaps/chocol8/rules.mk b/keyboards/dztech/dz65rgb/keymaps/chocol8/rules.mk new file mode 100644 index 00000000000..626329f811a --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/chocol8/rules.mk @@ -0,0 +1,6 @@ +NKRO_ENABLE = yes # USB Nkey Rollover +VELOCIKEY_ENABLE = yes +# AUTO_SHIFT_ENABLE = yes # Auto Shift + +LINK_TIME_OPTIMIZATION_ENABLE = yes + From acec007dfad0bfc0334a5cff2207f90ddd9b0089 Mon Sep 17 00:00:00 2001 From: Brad Date: Wed, 25 Sep 2019 04:01:58 -0500 Subject: [PATCH 56/72] [Keymap] add keymap broswen for kbd75 (#6814) --- .../kbdfans/kbd75/keymaps/broswen/README.md | 7 ++++++ .../kbdfans/kbd75/keymaps/broswen/keymap.c | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 keyboards/kbdfans/kbd75/keymaps/broswen/README.md create mode 100644 keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c diff --git a/keyboards/kbdfans/kbd75/keymaps/broswen/README.md b/keyboards/kbdfans/kbd75/keymaps/broswen/README.md new file mode 100644 index 00000000000..d95b3f2805f --- /dev/null +++ b/keyboards/kbdfans/kbd75/keymaps/broswen/README.md @@ -0,0 +1,7 @@ +# KBD75 broswen keymap + +Almost default keymap for KBD75. + +- Top right extra keys are media keys. + +- Vim style motion keys on layer 1 diff --git a/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c b/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c new file mode 100644 index 00000000000..3828cb4a1fc --- /dev/null +++ b/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c @@ -0,0 +1,22 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, KC_VOLU, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, MO(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; From 0f9e2659c96370377e36ddab0508498e151bfc62 Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Wed, 25 Sep 2019 09:18:09 -0700 Subject: [PATCH 57/72] [Keyboard] Add additional LAYOUT macros to Noxary 260 (#6815) * add default LAYOUT_60_ansi * add LAYOUT_60_hhkb support * add tsangan_hhkb support * add ISO support and rename LAYOUT to LAYOUT_all * formatting * add community layouts support * remove unneeded code * missed a LAYOUT rename * add link time optimization to reduce firmware size for some people's keymaps --- keyboards/noxary/260/260.h | 59 ++++++++++++++++++- keyboards/noxary/260/info.json | 18 +++++- keyboards/noxary/260/keymaps/default/keymap.c | 6 +- keyboards/noxary/260/rules.mk | 51 +--------------- 4 files changed, 81 insertions(+), 53 deletions(-) diff --git a/keyboards/noxary/260/260.h b/keyboards/noxary/260/260.h index 2c62bd2a54d..c43cdc370f3 100644 --- a/keyboards/noxary/260/260.h +++ b/keyboards/noxary/260/260.h @@ -25,7 +25,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ +#define LAYOUT_all( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ @@ -38,3 +38,60 @@ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \ } + +#define LAYOUT_60_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K406, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, KC_NO, K214 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \ +} + +#define LAYOUT_60_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K406, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \ +} + +#define LAYOUT_60_hhkb( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K401, K402, K406, K411, K412 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, KC_NO, K214 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, K412, KC_NO, KC_NO } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K406, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, KC_NO, K214 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, K412, KC_NO, K414 } \ +} + diff --git a/keyboards/noxary/260/info.json b/keyboards/noxary/260/info.json index e5b449ff36f..c8df665c0f7 100644 --- a/keyboards/noxary/260/info.json +++ b/keyboards/noxary/260/info.json @@ -5,8 +5,24 @@ "width": 15, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + + "LAYOUT_60_ansi": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + + "LAYOUT_60_iso": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + + "LAYOUT_60_hhkb": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}] + }, + + "LAYOUT_60_tsangan_hhkb": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } } \ No newline at end of file diff --git a/keyboards/noxary/260/keymaps/default/keymap.c b/keyboards/noxary/260/keymaps/default/keymap.c index 061e3d24073..3e8c57bd4ed 100644 --- a/keyboards/noxary/260/keymaps/default/keymap.c +++ b/keyboards/noxary/260/keymaps/default/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Win |Alt | Space |Alt |Win |Mo(1) |Ctrl | * `-----------------------------------------------------------' */ - [_BL] = LAYOUT( + [_BL] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | BL_Toggle | | | | |Vol-| | * `----------------------------------------------------------------' */ - [_FL1] = LAYOUT( + [_FL1] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, _______, KC_VOLU, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | * `----------------------------------------------------------------' */ - [_FL2] = LAYOUT( + [_FL2] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/noxary/260/rules.mk b/keyboards/noxary/260/rules.mk index 3a30930de6f..646d38de366 100644 --- a/keyboards/noxary/260/rules.mk +++ b/keyboards/noxary/260/rules.mk @@ -1,43 +1,6 @@ # MCU name MCU = atmega32u4 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - # Bootloader selection # Teensy halfkay # Pro Micro caterina @@ -47,17 +10,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # atmega32a bootloadHID BOOTLOADER = atmel-dfu - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # @@ -78,3 +30,6 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) +EXTRAFLAGS += -flto + +LAYOUTS = 60_ansi 60_iso 60_hhkb 60_tsangan_hhkb \ No newline at end of file From 00abe5d8edf801cad351bf428a24532ed80f652c Mon Sep 17 00:00:00 2001 From: Daniel Shields Date: Wed, 25 Sep 2019 17:21:07 +0100 Subject: [PATCH 58/72] [Keymap] Various enhancements for dshields user space and keymaps. (#6816) - Add oneshot mod/layer unlocking - Fix Planck rev 3 backlight breathing - Fix Planck rev 6 build with arm gcc 9.2.0 - General code clean up --- keyboards/model01/keymaps/dshields/keymap.c | 14 +++---- keyboards/planck/keymaps/dshields/keymap.c | 16 +++----- users/dshields/config.h | 1 + users/dshields/dshields.c | 43 +++++++++++---------- users/dshields/dshields.h | 12 +++++- users/dshields/rules.mk | 15 ++++--- 6 files changed, 54 insertions(+), 47 deletions(-) diff --git a/keyboards/model01/keymaps/dshields/keymap.c b/keyboards/model01/keymaps/dshields/keymap.c index 6b9a5413210..f79ef2c7b04 100644 --- a/keyboards/model01/keymaps/dshields/keymap.c +++ b/keyboards/model01/keymaps/dshields/keymap.c @@ -1,17 +1,13 @@ #include QMK_KEYBOARD_H #include "dshields.h" - -enum { DEF, FUN }; -enum { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; - #include "dynamic_macro.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DEF] = LAYOUT( RESET , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, - KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, DM_PLAY, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, _______, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , KC_PGUP, KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, - KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , _______, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, + KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLAY, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, OSMLCTL, KC_RCTL, KC_BSPC, KC_SPC , KC_LGUI, OSMRALT, @@ -19,10 +15,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { OSL_FUN, OSL_FUN ), [FUN] = LAYOUT( - _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + EEP_RST, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_MOD, DM_STRT, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , - KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, _______, DM_STOP, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, - KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, KC_PIPE, + KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, _______, DM_STOP, _______, _______, _______, _______, KC_BSLS, KC_PIPE, _______, _______, KC_DEL , KC_ENT , _______, _______, diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c index 18b026da443..1c4a00b9650 100644 --- a/keyboards/planck/keymaps/dshields/keymap.c +++ b/keyboards/planck/keymaps/dshields/keymap.c @@ -1,9 +1,5 @@ #include QMK_KEYBOARD_H #include "dshields.h" - -enum planck_layers { DEF, LWR, RSE, FUN }; -enum planck_keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; - #include "dynamic_macro.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -14,21 +10,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { OSMLCTL, KC_LGUI, OSMLALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), [LWR] = LAYOUT_planck_grid( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_DEL, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE, - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), [RSE] = LAYOUT_planck_grid( - KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0 , + KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0 , KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS, - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), [FUN] = LAYOUT_planck_grid( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 , + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, EEP_RST, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 , KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, - LGT_TOG, LGT_MOD, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, + LGT_TOG, LGT_MOD, LGT_BRT, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R ) }; diff --git a/users/dshields/config.h b/users/dshields/config.h index 743f16f9998..17eb98bd4f4 100644 --- a/users/dshields/config.h +++ b/users/dshields/config.h @@ -5,6 +5,7 @@ #define ONESHOT_TAP_TOGGLE 2 #define ONESHOT_TIMEOUT 3000 #define RETRO_TAPPING +#define BACKLIGHT_BREATHING #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_DELAY 0 diff --git a/users/dshields/dshields.c b/users/dshields/dshields.c index 6aff5c6716a..bc88cae561d 100644 --- a/users/dshields/dshields.c +++ b/users/dshields/dshields.c @@ -1,30 +1,31 @@ -extern keymap_config_t keymap_config; +#include "quantum.h" +#include "dshields.h" -/* uncomment to reset -void matrix_init_user(void) { - eeconfig_init(); -}; -*/ +extern bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record); bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (!process_record_dynamic_macro(keycode, record)) { return false; } + if (keycode == KC_ESC && record->event.pressed) { + bool rc = true; + uint8_t mods = 0; + if ((mods = get_oneshot_mods()) && !has_oneshot_mods_timed_out()) { + clear_oneshot_mods(); + unregister_mods(mods); + rc = false; + } + if ((mods = get_oneshot_locked_mods())) { + clear_oneshot_locked_mods(); + unregister_mods(mods); + rc = false; + } + if (is_oneshot_layer_active()) { + layer_clear(); + rc = false; + } + return rc; + } return true; } -// work in progress -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case DEF: - set_all_leds_to(0,0,0); - break; - case FUN: - // TODO light the fn keys - // set_led_to(?, 0, 128, 0); - // set_led_to(?, 0, 128, 0); - break; - } - return state; -} - diff --git a/users/dshields/dshields.h b/users/dshields/dshields.h index c746e74fb5b..a65ccfea004 100644 --- a/users/dshields/dshields.h +++ b/users/dshields/dshields.h @@ -24,8 +24,18 @@ #ifdef KEYBOARD_planck_light #define LGT_TOG RGB_TOG #define LGT_MOD RGB_MOD -#else + #define LGT_BRT _______ +#endif +#ifdef KEYBOARD_planck_rev3 #define LGT_TOG BL_TOGG #define LGT_MOD BL_STEP + #define LGT_BRT BL_BRTG +#endif +#ifdef KEYBOARD_planck_rev6 + #define LGT_TOG _______ + #define LGT_MOD _______ + #define LGT_BRT _______ #endif +enum layers { DEF, LWR, RSE, FUN }; +enum keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; diff --git a/users/dshields/rules.mk b/users/dshields/rules.mk index a2bec433576..06f6e5e9fa7 100644 --- a/users/dshields/rules.mk +++ b/users/dshields/rules.mk @@ -1,9 +1,11 @@ -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -COMMAND_ENABLE = no # Commands for debug and configuration -CONSOLE_ENABLE = no # Console for debug(+400) -EXTRAKEY_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -API_SYSEX_ENABLE = no +SRC += dshields.c + +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +COMMAND_ENABLE = no # Commands for debug and configuration +CONSOLE_ENABLE = no # Console for debug(+400) +EXTRAKEY_ENABLE = no +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +API_SYSEX_ENABLE = no ifeq ($(strip $(KEYBOARD)), planck/rev3) AUDIO_ENABLE = no @@ -11,6 +13,7 @@ ifeq ($(strip $(KEYBOARD)), planck/rev3) RGB_MATRIX_ENABLE = no endif ifeq ($(strip $(KEYBOARD)), planck/rev6) + CFLAGS += -Wno-error=deprecated EXTRALDFLAGS = -Wl,--build-id=none AUDIO_ENABLE = no BACKLIGHT_ENABLE = no From eac4ce972d951855ee168705b46bc9421a4d4deb Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 25 Sep 2019 13:05:48 -0400 Subject: [PATCH 59/72] [Keymap] update personal keymap (#6817) --- keyboards/hadron/ver3/keymaps/ishtob/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c index 51062acc227..0998ad93b7d 100644 --- a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c +++ b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c @@ -5,7 +5,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,------+------+------+------+------+------------------------------------------------. - * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | DEL | + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. * | Tab | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------------------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_wrapper( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \ LT_FN(KC_TAB), _________________QWERTY_L1_________________, KC_P7, KC_P8, KC_P9, _________________QWERTY_R1_________________, KC_BSPC, \ KC_CAPS, _________________QWERTY_L2_________________, KC_P4, KC_P5, KC_P6, _________________QWERTY_R2_________________, CTL_ENT, \ KC_LSFT, _________________QWERTY_L3_________________, KC_P1, KC_P2, KC_P3, _________________QWERTY_R3_________________, LT_RAI(KC_MINS), \ @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Colemak * ,------+------+------+------+------+------------------------------------------------. - * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | 0 | - | + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. * | Tab | Q | W | F | P | G | 7 | 8 | 9 | J | L | U | Y | ; | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------------------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT_wrapper( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \ LT_FN(KC_TAB), _________________COLEMAK_L1________________, KC_P7, KC_P8, KC_P9, _________________COLEMAK_R1________________, KC_BSPC, \ KC_LCTRL, _________________COLEMAK_L2________________, KC_P4, KC_P5, KC_P6, _________________COLEMAK_R2________________, CTL_ENT, \ KC_LSFT, _________________COLEMAK_L3________________, KC_P1, KC_P2, KC_P3, _________________COLEMAK_R3________________, LT_RAI(KC_MINS), \ @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Dvorak * ,------+------+------+------+------+------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. * | Tab | " | , | . | P | Y | 7 | 8 | 9 | F | G | C | R | L | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------------------------------------------------------------------------------------------' */ [_DVORAK] = LAYOUT_wrapper( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \ LT_FN(KC_TAB), _________________DVORAK_L1_________________, KC_P7, KC_P8, KC_P9, _________________DVORAK_R1_________________, KC_BSPC, \ KC_LCTL, _________________DVORAK_L2_________________, KC_P4, KC_P5, KC_P6, _________________DVORAK_R2_________________, CTL_ENT, \ KC_LSFT, _________________DVORAK_L3_________________, KC_P1, KC_P2, KC_P3, _________________DVORAK_R3_________________, LT_RAI(KC_MINS), \ From c61d7d7cb001498e6edf09a9ebc6124c1fe6ed97 Mon Sep 17 00:00:00 2001 From: Yaotian Feng Date: Wed, 25 Sep 2019 14:52:17 -0400 Subject: [PATCH 60/72] [Keyboard] Added support for ErgoDox with STM32 Microcontroller (#5398) * Began Work On STM32 Ergodox Changes to be committed: new file: keyboards/ergodox_stm32/config.h new file: keyboards/ergodox_stm32/rules.mk * test * Now it compile. Not linking thou * Screw this Linker. It links now! * Blinkly Keyboard * bootloader test code * Working on matrix / i2c stuff * Progress (LED Blink) * Progress on MCP_23017 Status Flag * [WIP] * update * Works! Remeber to change back the bootloader address when the new bootloadrer is ready. * Time to go debug the i2c * Finally, it now works with PCB Rev 1.0.2 * updated for rev.2 pcb * minor compilation fix * Why when debugger is enabled then everything works. * Remeber to call init functions. * Update arm i2c driver to support STM32F103 series device. * fix include once header. Replaced with #pragma once. * complication test --- drivers/arm/i2c_master.c | 15 +- .../boards/ERGODOX_STM32_BOARD/board.c | 51 ++ .../boards/ERGODOX_STM32_BOARD/board.h | 142 +++++ .../boards/ERGODOX_STM32_BOARD/board.mk | 5 + keyboards/ergodox_stm32/chconf.h | 524 ++++++++++++++++++ keyboards/ergodox_stm32/config.h | 35 ++ keyboards/ergodox_stm32/ergodox_stm32.c | 65 +++ keyboards/ergodox_stm32/ergodox_stm32.h | 114 ++++ keyboards/ergodox_stm32/halconf.h | 353 ++++++++++++ keyboards/ergodox_stm32/info.json | 104 ++++ .../ergodox_stm32/keymaps/default/keymap.c | 56 ++ .../ergodox_stm32/ld/stm32f103_bootloader.ld | 85 +++ keyboards/ergodox_stm32/matrix.c | 196 +++++++ keyboards/ergodox_stm32/mcuconf.h | 209 +++++++ keyboards/ergodox_stm32/rules.mk | 32 ++ 15 files changed, 1983 insertions(+), 3 deletions(-) create mode 100644 keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.c create mode 100644 keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.h create mode 100644 keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.mk create mode 100644 keyboards/ergodox_stm32/chconf.h create mode 100644 keyboards/ergodox_stm32/config.h create mode 100644 keyboards/ergodox_stm32/ergodox_stm32.c create mode 100644 keyboards/ergodox_stm32/ergodox_stm32.h create mode 100644 keyboards/ergodox_stm32/halconf.h create mode 100644 keyboards/ergodox_stm32/info.json create mode 100644 keyboards/ergodox_stm32/keymaps/default/keymap.c create mode 100644 keyboards/ergodox_stm32/ld/stm32f103_bootloader.ld create mode 100644 keyboards/ergodox_stm32/matrix.c create mode 100644 keyboards/ergodox_stm32/mcuconf.h create mode 100644 keyboards/ergodox_stm32/rules.mk diff --git a/drivers/arm/i2c_master.c b/drivers/arm/i2c_master.c index 18068d3a6dc..fcfe85b5617 100644 --- a/drivers/arm/i2c_master.c +++ b/drivers/arm/i2c_master.c @@ -32,6 +32,17 @@ static uint8_t i2c_address; +// ChibiOS uses two initialization structure for v1 and v2/v3 i2c APIs. +// The F1 series uses the v1 api, which have to initialized this way. +#ifdef STM32F103xB +static const I2CConfig i2cconfig = { + OPMODE_I2C, + 400000, + FAST_DUTY_CYCLE_2, +}; +#else +// This configures the I2C clock to 400khz assuming a 72Mhz clock +// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html static const I2CConfig i2cconfig = { #ifdef USE_I2CV1 I2C1_OPMODE, @@ -41,6 +52,7 @@ static const I2CConfig i2cconfig = { STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 #endif }; +#endif static i2c_status_t chibios_to_qmk(const msg_t* status) { switch (*status) { @@ -60,7 +72,6 @@ __attribute__((weak)) void i2c_init(void) { palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT); chThdSleepMilliseconds(10); - #ifdef USE_I2CV1 palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); @@ -68,8 +79,6 @@ __attribute__((weak)) void i2c_init(void) { palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); #endif - - // i2cInit(); //This is invoked by halInit() so no need to redo it. } i2c_status_t i2c_start(uint8_t address) { diff --git a/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.c b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.c new file mode 100644 index 00000000000..d953d6a1359 --- /dev/null +++ b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.c @@ -0,0 +1,51 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "hal.h" + +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +#if HAL_USE_PAL || defined(__DOXYGEN__) +const PALConfig pal_default_config = +{ + {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH}, + {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH}, + {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH}, + {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH}, + {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH}, +}; +#endif + +/* + * Early initialization code. + * This initialization must be performed just after stack setup and before + * any other initialization. + */ +void __early_init(void) { + + stm32_clock_init(); +} + +/* + * Board-specific initialization code. + */ +void boardInit(void) { + AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; + +} diff --git a/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.h b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.h new file mode 100644 index 00000000000..307a17e3882 --- /dev/null +++ b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.h @@ -0,0 +1,142 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/* + * Board identifier. + */ +#define BOARD_JM60 +#define BOARD_NAME "ErgoDox STM32 Keyboard" + +/* + * Board frequencies. + */ +#define STM32_LSECLK 0 +#define STM32_HSECLK 8000000 + +/* + * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h. + * + * Only xB (128KB Flash) is defined, but it's identical to the + * x8 version (64KB Flash) except for the Flash region size in the + * linker script. For x8 parts use xB here and change to the x8 linker + * script in the project Makefile. + */ +#define STM32F103xB + +/* + * IO pins assignments + * + * numbering is sorted by onboard/connectors, as from the schematics in + * http://www.vcc-gnd.com/read.php?tid=369 + */ + +/* on-board */ +#define GPIOA_USBDM 11 // pin 8 +#define GPIOA_USBDP 12 // pin 9 + +#define GPIOC_OSC32_IN 14 +#define GPIOC_OSC32_OUT 15 + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * + * The digits have the following meaning: + * 0 - Analog input. + * 1 - Push Pull output 10MHz. + * 2 - Push Pull output 2MHz. + * 3 - Push Pull output 50MHz. + * 4 - Digital input. + * 5 - Open Drain output 10MHz. + * 6 - Open Drain output 2MHz. + * 7 - Open Drain output 50MHz. + * 8 - Digital input with PullUp or PullDown resistor depending on ODR. + * 9 - Alternate Push Pull output 10MHz. + * A - Alternate Push Pull output 2MHz. + * B - Alternate Push Pull output 50MHz. + * C - Reserved. + * D - Alternate Open Drain output 10MHz. + * E - Alternate Open Drain output 2MHz. + * F - Alternate Open Drain output 50MHz. + * Please refer to the STM32 Reference Manual for details. + */ + +/* + * Port A setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOACRL 0x88888888 /* PA7...PA0 */ +#define VAL_GPIOACRH 0x88888888 /* PA15...PA8 */ +#define VAL_GPIOAODR 0xFFFFFFFF + +/* + * Port B setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */ +#define VAL_GPIOBCRH 0x88888888 /* PB15...PB8 */ +#define VAL_GPIOBODR 0xFFFFFFFF + +/* + * Port C setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */ +#define VAL_GPIOCCRH 0x88888888 /* PC15...PC8 */ +#define VAL_GPIOCODR 0xFFFFFFFF + +/* + * Port D setup. + * Everything input with pull-up except: + * PD0 - Normal input (XTAL). + * PD1 - Normal input (XTAL). + */ +#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */ +#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */ +#define VAL_GPIODODR 0xFFFFFFFF + +/* + * Port E setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */ +#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */ +#define VAL_GPIOEODR 0xFFFFFFFF + +/* + * USB bus activation macro, required by the USB driver. + */ +#define usb_lld_connect_bus(usbp) /* always connected */ + +/* + * USB bus de-activation macro, required by the USB driver. + */ +#define usb_lld_disconnect_bus(usbp) /* always connected */ + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* _BOARD_H_ */ diff --git a/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.mk b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.mk new file mode 100644 index 00000000000..85ff835ef48 --- /dev/null +++ b/keyboards/ergodox_stm32/boards/ERGODOX_STM32_BOARD/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/ERGODOX_STM32_BOARD/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/ERGODOX_STM32_BOARD diff --git a/keyboards/ergodox_stm32/chconf.h b/keyboards/ergodox_stm32/chconf.h new file mode 100644 index 00000000000..d9114ec858b --- /dev/null +++ b/keyboards/ergodox_stm32/chconf.h @@ -0,0 +1,524 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16 or 32 bits. + */ +#define CH_CFG_ST_RESOLUTION 32 + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#define CH_CFG_ST_FREQUENCY 100000 + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#define CH_CFG_ST_TIMEDELTA 0 + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#define CH_CFG_TIME_QUANTUM 20 + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#define CH_CFG_MEMCORE_SIZE 0 + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#define CH_CFG_NO_IDLE_THREAD FALSE + +/* Use __WFI in the idle thread for waiting. Does lower the power + * consumption. */ +#define CORTEX_ENABLE_WFI_IDLE TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#define CH_CFG_OPTIMIZE_SPEED TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_TM FALSE + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_REGISTRY TRUE + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_WAITEXIT TRUE + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_SEMAPHORES TRUE + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MUTEXES TRUE + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#define CH_CFG_USE_CONDVARS TRUE + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_EVENTS TRUE + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MESSAGES TRUE + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#define CH_CFG_USE_MAILBOXES TRUE + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMCORE TRUE + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#define CH_CFG_USE_HEAP TRUE + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#define CH_CFG_USE_MEMPOOLS TRUE + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#define CH_CFG_USE_DYNAMIC TRUE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_STATISTICS FALSE + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_SYSTEM_STATE_CHECK FALSE + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_CHECKS FALSE + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_ENABLE_ASSERTS FALSE + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#define CH_DBG_TRACE_BUFFER_SIZE 128 + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#define CH_DBG_FILL_THREADS FALSE + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#define CH_DBG_THREADS_PROFILING FALSE + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p chThdInit() API. + * + * @note It is invoked from within @p chThdInit() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/keyboards/ergodox_stm32/config.h b/keyboards/ergodox_stm32/config.h new file mode 100644 index 00000000000..5305655214a --- /dev/null +++ b/keyboards/ergodox_stm32/config.h @@ -0,0 +1,35 @@ +/* +Copyright 2019 Yaotian Feng(Codetector) + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1308 +#define DEVICE_VER 0x101 +#define MANUFACTURER ErgoDox +#define PRODUCT ErgoDox STM +#define DESCRIPTION ErgoDox STM32 Keyboard + +#define MATRIX_ROWS 14 +#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) +#define MATRIX_COLS 6 +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) diff --git a/keyboards/ergodox_stm32/ergodox_stm32.c b/keyboards/ergodox_stm32/ergodox_stm32.c new file mode 100644 index 00000000000..176fb3f43ad --- /dev/null +++ b/keyboards/ergodox_stm32/ergodox_stm32.c @@ -0,0 +1,65 @@ +#include "i2c_master.h" +#include QMK_KEYBOARD_H + +extern inline void ergodox_board_led_1_on(void); +extern inline void ergodox_board_led_2_on(void); +extern inline void ergodox_board_led_3_on(void); +extern inline void ergodox_board_led_1_off(void); +extern inline void ergodox_board_led_2_off(void); +extern inline void ergodox_board_led_3_off(void); +extern inline void ergodox_led_all_off(void); + +volatile int mcp23017_status = 0x20; +uint8_t i2c_initializied = 0; + +void matrix_init_kb(void) +{ + // Init LED Ports + palSetPadMode(GPIOA, 10, PAL_MODE_OUTPUT_PUSHPULL); // LED 1 + palSetPadMode(GPIOA, 9, PAL_MODE_OUTPUT_PUSHPULL); // LED 2 + palSetPadMode(GPIOA, 8, PAL_MODE_OUTPUT_PUSHPULL); // LED 3 + + ergodox_blink_all_leds(); + + matrix_init_user(); +} + +void ergodox_blink_all_leds(void) +{ + ergodox_led_all_off(); + // ergodox_led_all_set(LED_BRIGHTNESS_DEFAULT); + ergodox_board_led_1_on(); + wait_ms(50); + ergodox_board_led_2_on(); + wait_ms(50); + ergodox_board_led_3_on(); + wait_ms(50); + ergodox_board_led_1_off(); + wait_ms(50); + ergodox_board_led_2_off(); + wait_ms(50); + ergodox_board_led_3_off(); +} + +uint8_t init_mcp23017(void) { + if (!i2c_initializied) { + i2c_init(); + i2c_initializied = 1; + } + + uint8_t data[2]; + data[0] = 0x0; + data[1] = 0b00111111; + mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_IODIRA, data, 2, 50000); + if (mcp23017_status) goto out; + data[0] = 0xFFU; + mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPIOA, data, 1, 5000); + if (mcp23017_status) goto out; + mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPPUB, data+1, 1, 2); + if (mcp23017_status) goto out; + + out: + return mcp23017_status; + // i2c_readReg(I2C_ADDR, ); +} + diff --git a/keyboards/ergodox_stm32/ergodox_stm32.h b/keyboards/ergodox_stm32/ergodox_stm32.h new file mode 100644 index 00000000000..be1c2e9c3b0 --- /dev/null +++ b/keyboards/ergodox_stm32/ergodox_stm32.h @@ -0,0 +1,114 @@ +#pragma once + +#include "quantum.h" +#include "action_layer.h" +#include +#include +#include "hal.h" + +// #define I2C_ADDR 0b01000000 +#define I2C_ADDR 0b01000000 +#define I2C_IODIRA 0x0 +#define I2C_IODIRB 0x1 +#define I2C_GPIOA 0x12 +#define I2C_GPIOB 0x13 +#define I2C_OLATA 0x14 +#define I2C_OLATB 0x15 +#define I2C_GPPUA 0x0C +#define I2C_GPPUB 0x0D + +inline void ergodox_board_led_1_on(void) { palSetPad(GPIOA, 10); } +inline void ergodox_board_led_2_on(void) { palSetPad(GPIOA, 9); } +inline void ergodox_board_led_3_on(void) { palSetPad(GPIOA, 8); } +inline void ergodox_board_led_1_off(void) { palClearPad(GPIOA, 10); } +inline void ergodox_board_led_2_off(void) { palClearPad(GPIOA, 9); } +inline void ergodox_board_led_3_off(void) { palClearPad(GPIOA, 8); } +inline void ergodox_led_all_off(void) +{ + palClearPad(GPIOA, 10); + palClearPad(GPIOA, 9); + palClearPad(GPIOA, 8); +} + +extern volatile int mcp23017_status; + +uint8_t init_mcp23017(void); + +void ergodox_blink_all_leds(void); + +/* + * LEFT HAND: LINES 115-122 + * RIGHT HAND: LINES 124-131 + */ +#define LAYOUT_ergodox( \ + \ + k00, k01, k02, k03, k04, k05, k06, \ + k10, k11, k12, k13, k14, k15, k16, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35, k36, \ + k40, k41, k42, k43, k44, \ + k55, k56, \ + k54, \ + k53, k52, k51, \ + \ + k07, k08, k09, k0A, k0B, k0C, k0D, \ + k17, k18, k19, k1A, k1B, k1C, k1D, \ + k28, k29, k2A, k2B, k2C, k2D, \ + k37, k38, k39, k3A, k3B, k3C, k3D, \ + k49, k4A, k4B, k4C, k4D, \ + k57, k58, \ + k59, \ + k5C, k5B, k5A) \ + \ + /* matrix positions */ \ + { \ + {k00, k10, k20, k30, k40, KC_NO}, \ + {k01, k11, k21, k31, k41, k51}, \ + {k02, k12, k22, k32, k42, k52}, \ + {k03, k13, k23, k33, k43, k53}, \ + {k04, k14, k24, k34, k44, k54}, \ + {k05, k15, k25, k35, KC_NO, k55}, \ + {k06, k16, KC_NO, k36, KC_NO, k56}, \ + \ + {k07, k17, KC_NO, k37, KC_NO, k57}, \ + {k08, k18, k28, k38, KC_NO, k58}, \ + {k09, k19, k29, k39, k49, k59}, \ + {k0A, k1A, k2A, k3A, k4A, k5A}, \ + {k0B, k1B, k2B, k3B, k4B, k5B}, \ + {k0C, k1C, k2C, k3C, k4C, k5C}, \ + { \ + k0D, k1D, k2D, k3D, k4D, KC_NO \ + } \ + } + +/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */ +#define LAYOUT_ergodox_pretty( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \ + L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \ + L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \ + L55, L56, R50, R51, \ + L54, R52, \ + L53, L52, L51, R55, R54, R53) \ + \ + /* matrix positions */ \ + { \ + {L00, L10, L20, L30, L40, KC_NO}, \ + {L01, L11, L21, L31, L41, L51}, \ + {L02, L12, L22, L32, L42, L52}, \ + {L03, L13, L23, L33, L43, L53}, \ + {L04, L14, L24, L34, L44, L54}, \ + {L05, L15, L25, L35, KC_NO, L55}, \ + {L06, L16, KC_NO, L36, KC_NO, L56}, \ + \ + {R00, R10, KC_NO, R30, KC_NO, R50}, \ + {R01, R11, R21, R31, KC_NO, R51}, \ + {R02, R12, R22, R32, R42, R52}, \ + {R03, R13, R23, R33, R43, R53}, \ + {R04, R14, R24, R34, R44, R54}, \ + {R05, R15, R25, R35, R45, R55}, \ + { \ + R06, R16, R26, R36, R46, KC_NO \ + } \ + } diff --git a/keyboards/ergodox_stm32/halconf.h b/keyboards/ergodox_stm32/halconf.h new file mode 100644 index 00000000000..b87b0635c47 --- /dev/null +++ b/keyboards/ergodox_stm32/halconf.h @@ -0,0 +1,353 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +#include "mcuconf.h" + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EXT subsystem. + */ +#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__) +#define HAL_USE_EXT FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C TRUE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM FALSE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 16 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 64 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 1 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/keyboards/ergodox_stm32/info.json b/keyboards/ergodox_stm32/info.json new file mode 100644 index 00000000000..627b300fe73 --- /dev/null +++ b/keyboards/ergodox_stm32/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "ErgoDox STM32", + "url": "github.com/codetector1374", + "maintainer": "codetector1374", + "width": 19.5, + "height": 9.375, + + "layouts": { + "LAYOUT_ergodox": { + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + + {"x":6, "y":5}, {"x":7, "y":5}, + {"x":7, "y":6}, + {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, + + + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + + {"x":9, "y":5}, {"x":10, "y":5}, + {"x":9, "y":6}, + {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} + ] + }, + "LAYOUT_ergodox_pretty": { + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, + {"x":7, "y":6}, {"x":9, "y":6}, + {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} + ] + }, + "LAYOUT_ergodox_80": { + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + + {"x":6, "y":5}, {"x":7, "y":5}, + {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, + {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, + + + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + + {"x":9, "y":5}, {"x":10, "y":5}, + {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, + {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} + ] + }, + "LAYOUT_ergodox_pretty_80": { + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, + {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, + {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} + ] + } + } +} diff --git a/keyboards/ergodox_stm32/keymaps/default/keymap.c b/keyboards/ergodox_stm32/keymaps/default/keymap.c new file mode 100644 index 00000000000..d3d4b57228d --- /dev/null +++ b/keyboards/ergodox_stm32/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ergodox(KC_GRAVE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_MINUS,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LPRN,KC_ESCAPE,KC_A,KC_S,KC_D,KC_F,KC_G,KC_LSHIFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_RPRN,KC_LCTRL,KC_LGUI,KC_LALT,KC_LGUI,KC_LALT,KC_INSERT,MO(1),KC_HOME,KC_SPACE,KC_DELETE,KC_END,KC_EQUAL,KC_6,KC_7,KC_8,KC_9,KC_0,KC_BSPACE,KC_LBRACKET,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,KC_SCOLON,KC_QUOTE,KC_RBRACKET,KC_N,KC_M,KC_COMMA,KC_DOT,KC_SLASH,KC_RSHIFT,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,KC_RCTRL,MO(1),TG(2),KC_PGUP,KC_PGDOWN,KC_BSPACE,KC_ENTER), + + [1] = LAYOUT_ergodox(KC_TILD,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_GRAVE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_CAPSLOCK,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(LGUI(KC_Q)),KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP), + + [2] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_NUMLOCK,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_MINUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_7,KC_KP_8,KC_KP_9,KC_KP_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_4,KC_KP_5,KC_KP_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_1,KC_KP_2,KC_KP_3,KC_ENTER,KC_TRANSPARENT,KC_KP_DOT,KC_KP_0,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT), + +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = TT(1) +}; + +uint32_t layer_state_set_user(uint32_t state) { + + uint8_t layer = biton32(state); + + ergodox_led_all_off(); + ergodox_board_led_1_off(); + ergodox_board_led_2_off(); + ergodox_board_led_3_off(); + switch (layer) { + case 1: + ergodox_board_led_1_on(); + break; + case 2: + ergodox_board_led_2_on(); + break; + case 3: + ergodox_board_led_2_on(); + break; + case 4: + ergodox_board_led_1_on(); + ergodox_board_led_2_on(); + break; + case 5: + ergodox_board_led_1_on(); + ergodox_board_led_3_on(); + break; + case 6: + ergodox_board_led_2_on(); + ergodox_board_led_3_on(); + break; + case 7: + ergodox_board_led_1_on(); + ergodox_board_led_2_on(); + ergodox_board_led_3_on(); + break; + default: + break; + } + return state; + +}; diff --git a/keyboards/ergodox_stm32/ld/stm32f103_bootloader.ld b/keyboards/ergodox_stm32/ld/stm32f103_bootloader.ld new file mode 100644 index 00000000000..77100fce381 --- /dev/null +++ b/keyboards/ergodox_stm32/ld/stm32f103_bootloader.ld @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * ST32F103xB memory setup for use with the originaljm60 bootloader. + */ +MEMORY +{ + flash0 : org = 0x08000000, len = 64k /* TODO */ + flash1 : org = 0x00000000, len = 0 + flash2 : org = 0x00000000, len = 0 + flash3 : org = 0x00000000, len = 0 + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x20000000, len = 20k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld diff --git a/keyboards/ergodox_stm32/matrix.c b/keyboards/ergodox_stm32/matrix.c new file mode 100644 index 00000000000..5a280ee17dd --- /dev/null +++ b/keyboards/ergodox_stm32/matrix.c @@ -0,0 +1,196 @@ +#include +#include +#include +#include +#include "timer.h" +#include "wait.h" +#include "print.h" +#include "matrix.h" +#include "i2c_master.h" +#include QMK_KEYBOARD_H + +#ifndef DEBOUNCE +#define DEBOUNCE 10 +#endif + +//#define DEBUG_MATRIX_SCAN_RATE + +//#ifdef DEBUG_MATRIX_SCAN_RATE +//uint32_t matrix_timer; +//uint32_t matrix_scan_count; +//#endif + +static uint8_t mcp23017_reset_loop = 0; + +volatile matrix_row_t matrix[MATRIX_ROWS]; +volatile matrix_row_t raw_matrix[MATRIX_ROWS]; +volatile uint8_t debounce_matrix[MATRIX_ROWS * MATRIX_COLS]; + +static matrix_row_t read_cols(uint8_t row); + +static void init_cols(void); + +static void unselect_rows(void); + +static void select_row(uint8_t row); + +static void init_rows(void); + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +__attribute__((weak)) void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__((weak)) void matrix_scan_kb(void) { + matrix_scan_user(); +} + +void matrix_init(void) { + mcp23017_status = init_mcp23017(); + (void) mcp23017_reset_loop; + init_rows(); + unselect_rows(); + init_cols(); + + + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + raw_matrix[i] = 0; + for (uint8_t j = 0; j < MATRIX_COLS; ++j) { + debounce_matrix[i * MATRIX_COLS + j] = 0; + } + } + matrix_init_quantum(); +} + +void matrix_power_up(void) { + mcp23017_status = init_mcp23017(); + + init_rows(); + unselect_rows(); + init_cols(); + + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +matrix_row_t debounce_mask(matrix_row_t rawcols, uint8_t row) { + matrix_row_t result = 0; + matrix_row_t change = rawcols ^raw_matrix[row]; + raw_matrix[row] = rawcols; + for (uint8_t i = 0; i < MATRIX_COLS; ++i) { + if (debounce_matrix[row * MATRIX_COLS + i]) { + --debounce_matrix[row * MATRIX_COLS + i]; + } else { + result |= (1 << i); + } + if (change & (1 << i)) { + debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE; + } + } + return result; +} + +matrix_row_t debounce_read_cols(uint8_t row) { + // Read the row without debouncing filtering and store it for later usage. + matrix_row_t cols = read_cols(row); + // Get the Debounce mask. + matrix_row_t mask = debounce_mask(cols, row); + // debounce the row and return the result. + return (cols & mask) | (matrix[row] & ~mask);; +} + +uint8_t matrix_scan(void) { + if (mcp23017_status) { + if (++mcp23017_reset_loop == 0) { + mcp23017_status = init_mcp23017(); + if (!mcp23017_status) { + ergodox_blink_all_leds(); + } + } + } + for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { + select_row(i); + select_row(i + MATRIX_ROWS_PER_SIDE); + + matrix[i] = debounce_read_cols(i); + matrix[i + MATRIX_ROWS_PER_SIDE] = debounce_read_cols(i + MATRIX_ROWS_PER_SIDE); + + unselect_rows(); + } + matrix_scan_quantum(); + return 0; +} + +bool matrix_is_modified(void) { + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) { + return (matrix[row] & (1 << col)); +} + +inline +matrix_row_t matrix_get_row(uint8_t row) { + return matrix[row]; +} + +void matrix_print(void) { +} + +static matrix_row_t read_cols(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + uint8_t data = 0xFF; + if (!mcp23017_status) { + uint8_t regAddr = I2C_GPIOB; + mcp23017_status = i2c_readReg(I2C_ADDR, regAddr, &data, 1, 10); + } + if (mcp23017_status) { + return 0; + } + return (~data) & 0x3F; + } else { + uint8_t data_p = (GPIOB -> IDR); + uint8_t data = data_p; + return ((~data) & 0x3f); + } +} + +static void init_cols(void) { + palSetPadMode(GPIOB, 0, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOB, 1, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOB, 2, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOB, 3, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOB, 4, PAL_MODE_INPUT_PULLUP); + palSetPadMode(GPIOB, 5, PAL_MODE_INPUT_PULLUP); +} + +static void init_rows(void) { + palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 9, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 12, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 13, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 14, PAL_MODE_OUTPUT_PUSHPULL); +} + +static void unselect_rows(void) { + GPIOB->BSRR = 0b1111111 << 8; +} + +static void select_row(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + if (!mcp23017_status) { + uint8_t data = (0xFF & ~(1 << row)); + mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPIOA, &data, 1, 10); + } + } else { + GPIOB->BRR = 0x1 << (row+1); + } +} diff --git a/keyboards/ergodox_stm32/mcuconf.h b/keyboards/ergodox_stm32/mcuconf.h new file mode 100644 index 00000000000..0494526e5e3 --- /dev/null +++ b/keyboards/ergodox_stm32/mcuconf.h @@ -0,0 +1,209 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define STM32F103_MCUCONF + +/* + * STM32F103 drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the whole + * driver is enabled in halconf.h. + * + * IRQ priorities: + * 15...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_HSI_ENABLED TRUE +#define STM32_LSI_ENABLED FALSE +#define STM32_HSE_ENABLED TRUE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSE +#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1 +#define STM32_PLLMUL_VALUE 9 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV2 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_USB_CLOCK_REQUIRED TRUE +#define STM32_USBPRE STM32_USBPRE_DIV1P5 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_RTCSEL STM32_RTCSEL_HSEDIV +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_ADC1_IRQ_PRIORITY 6 + +/* + * CAN driver system settings. + */ +#define STM32_CAN_USE_CAN1 FALSE +#define STM32_CAN_CAN1_IRQ_PRIORITY 11 + +/* + * EXT driver system settings. + */ +#define STM32_EXT_EXTI0_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI1_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI2_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI3_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI4_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI16_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI17_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI18_IRQ_PRIORITY 6 +#define STM32_EXT_EXTI19_IRQ_PRIORITY 6 + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM3 FALSE +#define STM32_GPT_USE_TIM4 FALSE +#define STM32_GPT_USE_TIM5 FALSE +#define STM32_GPT_USE_TIM8 FALSE +#define STM32_GPT_TIM1_IRQ_PRIORITY 7 +#define STM32_GPT_TIM2_IRQ_PRIORITY 7 +#define STM32_GPT_TIM3_IRQ_PRIORITY 7 +#define STM32_GPT_TIM4_IRQ_PRIORITY 7 +#define STM32_GPT_TIM5_IRQ_PRIORITY 7 +#define STM32_GPT_TIM8_IRQ_PRIORITY 7 + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 TRUE +#define STM32_I2C_USE_I2C2 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_IRQ_PRIORITY 5 +#define STM32_I2C_I2C2_IRQ_PRIORITY 5 +#define STM32_I2C_I2C1_DMA_PRIORITY 3 +#define STM32_I2C_I2C2_DMA_PRIORITY 3 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM3 FALSE +#define STM32_ICU_USE_TIM4 FALSE +#define STM32_ICU_USE_TIM5 FALSE +#define STM32_ICU_USE_TIM8 FALSE +#define STM32_ICU_TIM1_IRQ_PRIORITY 7 +#define STM32_ICU_TIM2_IRQ_PRIORITY 7 +#define STM32_ICU_TIM3_IRQ_PRIORITY 7 +#define STM32_ICU_TIM4_IRQ_PRIORITY 7 +#define STM32_ICU_TIM5_IRQ_PRIORITY 7 +#define STM32_ICU_TIM8_IRQ_PRIORITY 7 + +/* + * PWM driver system settings. + */ +#define STM32_PWM_USE_ADVANCED FALSE +#define STM32_PWM_USE_TIM1 FALSE +#define STM32_PWM_USE_TIM2 FALSE +#define STM32_PWM_USE_TIM3 FALSE +#define STM32_PWM_USE_TIM4 FALSE +#define STM32_PWM_USE_TIM5 FALSE +#define STM32_PWM_USE_TIM8 FALSE +#define STM32_PWM_TIM1_IRQ_PRIORITY 7 +#define STM32_PWM_TIM2_IRQ_PRIORITY 7 +#define STM32_PWM_TIM3_IRQ_PRIORITY 7 +#define STM32_PWM_TIM4_IRQ_PRIORITY 7 +#define STM32_PWM_TIM5_IRQ_PRIORITY 7 +#define STM32_PWM_TIM8_IRQ_PRIORITY 7 + +/* + * RTC driver system settings. + */ +#define STM32_RTC_IRQ_PRIORITY 15 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_USART3 FALSE +#define STM32_SERIAL_USE_UART4 FALSE +#define STM32_SERIAL_USE_UART5 FALSE +#define STM32_SERIAL_USART1_PRIORITY 12 +#define STM32_SERIAL_USART2_PRIORITY 12 +#define STM32_SERIAL_USART3_PRIORITY 12 +#define STM32_SERIAL_UART4_PRIORITY 12 +#define STM32_SERIAL_UART5_PRIORITY 12 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI2 FALSE +#define STM32_SPI_USE_SPI3 FALSE +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI3_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_IRQ_PRIORITY 10 +#define STM32_SPI_SPI2_IRQ_PRIORITY 10 +#define STM32_SPI_SPI3_IRQ_PRIORITY 10 +#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") + +/* + * ST driver system settings. + */ +#define STM32_ST_IRQ_PRIORITY 8 +#define STM32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USE_USART3 FALSE +#define STM32_UART_USART1_IRQ_PRIORITY 12 +#define STM32_UART_USART2_IRQ_PRIORITY 12 +#define STM32_UART_USART3_IRQ_PRIORITY 12 +#define STM32_UART_USART1_DMA_PRIORITY 0 +#define STM32_UART_USART2_DMA_PRIORITY 0 +#define STM32_UART_USART3_DMA_PRIORITY 0 +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_HP_IRQ_PRIORITY 13 +#define STM32_USB_USB1_LP_IRQ_PRIORITY 14 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk new file mode 100644 index 00000000000..1bf1a742ab8 --- /dev/null +++ b/keyboards/ergodox_stm32/rules.mk @@ -0,0 +1,32 @@ +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c + +CFLAGS += "-Wno-error=deprecated" + +MCU_FAMILY = STM32 +MCU_SERIES = STM32F1xx + +MCU_LDSCRIPT = stm32f103_bootloader + +MCU_STARTUP = stm32f1xx + +BOARD = ERGODOX_STM32_BOARD + +MCU = cortex-m3 + +ARMV = 7 + +OPT_DEFS = + +EXTRAFLAGS=-O0 -g + +BOOTMAGIC_ENABLE = no +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover +CUSTOM_MATRIX = yes # Custom matrix file +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +UNICODE_ENABLE = yes # Unicode From 0850a8cb634febb92314af5a65a11e58b123e86f Mon Sep 17 00:00:00 2001 From: MechMerlin <30334081+mechmerlin@users.noreply.github.com> Date: Wed, 25 Sep 2019 12:55:27 -0700 Subject: [PATCH 61/72] 65 ansi blocker everywhere (everywhere I can find) (#6805) * e6.5 actually already had a 65_ansi_blocker LAYOUT macro, so just had to enable in rules. * Add the 65_ansi_blocker LAYOUT macro and enable in rules.mk * rename LAYOUT macro in .h and in the keymap.c as it was only a default keymap. Also enable in rules.mk * rename but also had to define the existing LAYOUT macro as the new one to prevent breakage of existing keymaps * add 65_ansi_blocker support for vinta * forgot to update the info.json on these * add new default layout 65_ansi_blocker support to alt * add 65_ansi_blocker support * undo changes --- keyboards/exclusive/e65/rules.mk | 2 ++ keyboards/gray_studio/space65/info.json | 2 +- keyboards/gray_studio/space65/rules.mk | 2 ++ keyboards/gray_studio/space65/space65.h | 15 +++++++++++++++ keyboards/kbdfans/kbd67/hotswap/hotswap.h | 1 - keyboards/massdrop/alt/alt.h | 4 +++- keyboards/massdrop/alt/info.json | 2 +- keyboards/massdrop/alt/keymaps/default/keymap.c | 4 ++-- keyboards/massdrop/alt/rules.mk | 2 ++ keyboards/noxary/268_2/268_2.h | 2 +- keyboards/noxary/268_2/info.json | 2 +- keyboards/noxary/268_2/keymaps/default/keymap.c | 4 ++-- keyboards/noxary/268_2/rules.mk | 2 ++ keyboards/percent/canoe/canoe.h | 7 +++---- keyboards/percent/canoe/info.json | 2 +- keyboards/percent/canoe/rules.mk | 2 ++ keyboards/vinta/info.json | 2 +- keyboards/vinta/rules.mk | 2 ++ keyboards/vinta/vinta.h | 2 +- 19 files changed, 44 insertions(+), 17 deletions(-) diff --git a/keyboards/exclusive/e65/rules.mk b/keyboards/exclusive/e65/rules.mk index 68e1748947f..33c015cda5d 100644 --- a/keyboards/exclusive/e65/rules.mk +++ b/keyboards/exclusive/e65/rules.mk @@ -17,3 +17,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: ht BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/gray_studio/space65/info.json b/keyboards/gray_studio/space65/info.json index 9c1d439b417..c45491fecbf 100644 --- a/keyboards/gray_studio/space65/info.json +++ b/keyboards/gray_studio/space65/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk index 10bd7cf0356..261569206aa 100644 --- a/keyboards/gray_studio/space65/rules.mk +++ b/keyboards/gray_studio/space65/rules.mk @@ -78,3 +78,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/gray_studio/space65/space65.h b/keyboards/gray_studio/space65/space65.h index b7d8580c06c..15aa89935ba 100644 --- a/keyboards/gray_studio/space65/space65.h +++ b/keyboards/gray_studio/space65/space65.h @@ -40,3 +40,18 @@ { k40, k41, KC_NO, k43, KC_NO, k45, KC_NO, k47, k48, KC_NO, k4A, k4B, KC_NO, k4D, k4E, k4F }, \ } +#define LAYOUT_65_ansi_blocker( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k41, k43, k47, k4A, k4B, k4D, k4E, k4F \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, KC_NO, k0E, k0F }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E, k3F }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, k4A, k4B, KC_NO, k4D, k4E, k4F }, \ +} + diff --git a/keyboards/kbdfans/kbd67/hotswap/hotswap.h b/keyboards/kbdfans/kbd67/hotswap/hotswap.h index 57220050b62..45cf537cbe4 100644 --- a/keyboards/kbdfans/kbd67/hotswap/hotswap.h +++ b/keyboards/kbdfans/kbd67/hotswap/hotswap.h @@ -40,4 +40,3 @@ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E}, \ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E}, \ } - diff --git a/keyboards/massdrop/alt/alt.h b/keyboards/massdrop/alt/alt.h index 8dfed8d2d6d..f1adcd67c7d 100644 --- a/keyboards/massdrop/alt/alt.h +++ b/keyboards/massdrop/alt/alt.h @@ -9,7 +9,7 @@ #include "usb/udi_cdc.h" #include "usb/usb2422.h" -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \ K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, \ K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, \ @@ -32,3 +32,5 @@ dprintf(name " enabled\r\n"); \ } \ } + +#define LAYOUT LAYOUT_65_ansi_blocker // Ensure that user made existing keymaps do not break. diff --git a/keyboards/massdrop/alt/info.json b/keyboards/massdrop/alt/info.json index 8f85bece212..965b232fcd3 100644 --- a/keyboards/massdrop/alt/info.json +++ b/keyboards/massdrop/alt/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [ {"label":"ESCAPE", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, diff --git a/keyboards/massdrop/alt/keymaps/default/keymap.c b/keyboards/massdrop/alt/keymaps/default/keymap.c index f6f79ad91ef..f1e94003314 100644 --- a/keyboards/massdrop/alt/keymaps/default/keymap.c +++ b/keyboards/massdrop/alt/keymaps/default/keymap.c @@ -15,14 +15,14 @@ enum alt_keycodes { keymap_config_t keymap_config; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \ ), - [1] = LAYOUT( + [1] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk index aa45c68056d..3da2610f68f 100644 --- a/keyboards/massdrop/alt/rules.mk +++ b/keyboards/massdrop/alt/rules.mk @@ -34,3 +34,5 @@ AUTO_SHIFT_ENABLE = no # Auto Shift # Custom RGB matrix handling RGB_MATRIX_ENABLE = custom + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/noxary/268_2/268_2.h b/keyboards/noxary/268_2/268_2.h index 71fd8441724..e69ed88def6 100644 --- a/keyboards/noxary/268_2/268_2.h +++ b/keyboards/noxary/268_2/268_2.h @@ -25,7 +25,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, K215, \ diff --git a/keyboards/noxary/268_2/info.json b/keyboards/noxary/268_2/info.json index b47e2de9805..cef0f302ce6 100644 --- a/keyboards/noxary/268_2/info.json +++ b/keyboards/noxary/268_2/info.json @@ -5,7 +5,7 @@ "width": 16, "height": 5, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/noxary/268_2/keymaps/default/keymap.c b/keyboards/noxary/268_2/keymaps/default/keymap.c index c22ec2b1d63..01d5613cac4 100644 --- a/keyboards/noxary/268_2/keymaps/default/keymap.c +++ b/keyboards/noxary/268_2/keymaps/default/keymap.c @@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │Ctrl│Win │Alt │ Space │Alt │ Fn │ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ */ - [_BL] = LAYOUT( + [_BL] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ │ │ │ BL Toggle │ │ │ │ │Vl-│ │ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ */ - [_FL] = LAYOUT( + [_FL] = LAYOUT_65_ansi_blocker( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, diff --git a/keyboards/noxary/268_2/rules.mk b/keyboards/noxary/268_2/rules.mk index a89c930a143..d1d781ccfa1 100644 --- a/keyboards/noxary/268_2/rules.mk +++ b/keyboards/noxary/268_2/rules.mk @@ -68,3 +68,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/percent/canoe/canoe.h b/keyboards/percent/canoe/canoe.h index 22f2a1f22d1..2f608598f80 100644 --- a/keyboards/percent/canoe/canoe.h +++ b/keyboards/percent/canoe/canoe.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CANOE_H -#define CANOE_H +#pragma once #include "quantum.h" @@ -39,7 +38,7 @@ along with this program. If not, see . { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ } \ } -#define LAYOUT( \ +#define LAYOUT_65_ansi_blocker( \ K0D, K0C, K0B, K0A, K09, K08, K07, K06, K05, K04, K03, K02, K01, K00, K0E, \ K1D, K1C, K1B, K1A, K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, K1E, \ K2D, K2C, K2B, K2A, K29, K28, K27, K26, K25, K24, K23, K22, K21, K2E, \ @@ -56,4 +55,4 @@ along with this program. If not, see . { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ } \ } -#endif +#define LAYOUT LAYOUT_65_ansi_blocker // added to not break existing checked in keymaps diff --git a/keyboards/percent/canoe/info.json b/keyboards/percent/canoe/info.json index 17bdacaa5db..756cd1b37a6 100644 --- a/keyboards/percent/canoe/info.json +++ b/keyboards/percent/canoe/info.json @@ -9,7 +9,7 @@ "key_count": 68, "layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K10", "x":12.75, "y":2}, {"label":"K21", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":1.25}, {"label":"K4A", "x":1.25, "y":3}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}] }, - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "key_count": 67, "layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K10", "x":13.5, "y":1, "w":1.5}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K21", "x":12.75, "y":2, "w":2.25}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":2.25}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}] } diff --git a/keyboards/percent/canoe/rules.mk b/keyboards/percent/canoe/rules.mk index 8cfc810566d..e3269b94db8 100644 --- a/keyboards/percent/canoe/rules.mk +++ b/keyboards/percent/canoe/rules.mk @@ -41,3 +41,5 @@ OPT_DEFS = -DDEBUG_LEVEL=0 # custom matrix setup CUSTOM_MATRIX = yes SRC = matrix.c i2c.c + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/vinta/info.json b/keyboards/vinta/info.json index dd972c895de..5b6b9fa3705 100644 --- a/keyboards/vinta/info.json +++ b/keyboards/vinta/info.json @@ -11,7 +11,7 @@ "LAYOUT_68_tada": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Menu", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] }, - "LAYOUT_67_ansi": { + "LAYOUT_65_ansi_blocker": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } diff --git a/keyboards/vinta/rules.mk b/keyboards/vinta/rules.mk index 3ddb8d5bc0d..90485c4356d 100644 --- a/keyboards/vinta/rules.mk +++ b/keyboards/vinta/rules.mk @@ -46,3 +46,5 @@ CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + +LAYOUTS = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/vinta/vinta.h b/keyboards/vinta/vinta.h index 991c981c971..03a815c0659 100644 --- a/keyboards/vinta/vinta.h +++ b/keyboards/vinta/vinta.h @@ -37,7 +37,7 @@ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, XXX, K4D, K4E, K4F } \ } -#define LAYOUT_67_ansi( \ +#define LAYOUT_65_ansi_blocker( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \ From f8e4f7ea80a1e94a6e205f9bc790fc2f3a4a2ce3 Mon Sep 17 00:00:00 2001 From: "Manassarn \"Noom\" Manoonchai" Date: Thu, 26 Sep 2019 02:57:49 +0700 Subject: [PATCH 62/72] [Keymap] Add Z-layer to narze layouts (#6806) * Revert raise/backspace mod tap to just backspace * Add Dev layer * Use Dev layer on holding z key * Add Dev layer for Ergodox --- .../ergodox_infinity/keymaps/narze/keymap.c | 58 ++++++++++++++++--- keyboards/planck/keymaps/narze/keymap.c | 42 ++++++++++---- 2 files changed, 82 insertions(+), 18 deletions(-) diff --git a/keyboards/ergodox_infinity/keymaps/narze/keymap.c b/keyboards/ergodox_infinity/keymaps/narze/keymap.c index 238fcb8f9ef..4a4e8ab9411 100644 --- a/keyboards/ergodox_infinity/keymaps/narze/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/narze/keymap.c @@ -14,6 +14,7 @@ enum ergodox_layers { _PLOVER, // Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet) _SUPERDUPER, + _DEV, _MOUSE, _ADJUST, _MDIA, @@ -28,6 +29,7 @@ enum ergodox_keycodes { RAISE, PLOVER, SUPERDUPER, + DEV, MOUSE, BACKLIT, EXT_PLV, @@ -60,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Hp/Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | Sft/( | Z/Mo | X | C | V | B | | | | N | M | , | . | SD-/ | Sft/) | + * | Sft/( | Z/Dv | X | C | V | B | | | | N | M | , | . | SD-/ | Sft/) | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse/B| Bksp | Alt | Ctrl | Low/] | * `----------------------------------' `----------------------------------' @@ -77,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SYMB, KC_NO), HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, - SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + SFT_PO, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_ENT, KC_LGUI, KC_HOME, @@ -87,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT @@ -101,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Hp/Esc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | Sft/( | Z/Mo | X | C | V | B | | | | K | M | , | . | SD-/ | Sft/) | + * | Sft/( | Z/Dv | X | C | V | B | | | | K | M | , | . | SD-/ | Sft/) | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse/B| Bksp | Alt | Ctrl | Low/] | * `----------------------------------' `----------------------------------' @@ -118,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO), KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SYMB, KC_NO), HPR_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, - SFT_PO, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + SFT_PO, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_ENT, KC_LGUI, KC_HOME, @@ -128,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, MEH_T(KC_NO),KC_K, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT @@ -149,7 +151,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), CM_Y, CM_U, CM_I, CM_O, CM_P, KC_BSLS, CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT, MEH_T(KC_NO),CM_N, CM_M, CM_COMM,CM_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT @@ -319,6 +321,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______, KC_LSFT ), +/* Dev Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | - | + | ( | ) | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| _ | [ | ] | { | } | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | = | | | < | > | ? | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+--------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `----------------------' + */ +[_DEV] = LAYOUT_ergodox( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______,_______,_______, + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MINS, S(KC_EQL), S(KC_9), S(KC_0), _______, + S(KC_MINS), KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), _______, + _______, KC_EQL, S(KC_BSLASH), S(KC_COMM), S(KC_DOT), S(KC_SLSH), _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______,_______, _______ + ), + /* Mouse * * ,--------------------------------------------------. ,--------------------------------------------------. diff --git a/keyboards/planck/keymaps/narze/keymap.c b/keyboards/planck/keymaps/narze/keymap.c index bfff5d9a1ec..c878cf9e442 100644 --- a/keyboards/planck/keymaps/narze/keymap.c +++ b/keyboards/planck/keymaps/narze/keymap.c @@ -15,6 +15,7 @@ enum planck_layers { _RAISE, _PLOVER, _SUPERDUPER, + _DEV, _MOUSE, _ADJUST }; @@ -25,6 +26,7 @@ enum planck_keycodes { QWOC, PLOVER, SUPERDUPER, + DEV, MOUSE, LOWER, RAISE, @@ -51,42 +53,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Hp/Ec| A | S | D | F | G | H | J | K | L | ; | ' | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Sft/(| Z/Mo | X | C | V | B | N | M | , | . | SD-/ |Sft/Ent| + * | Sft/(| Z/Dv | X | C | V | B | N | M | , | . | SD-/ |Sft/Ent| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Rse/[| Ctrl | Alt | GUI/_|Lower | Space | ^/Bs | Bksp | Alt | Ctrl | Low/]| + * | Rse/[| Ctrl | Alt | GUI/_|Lower | Space | Raise| Bksp | Alt | Ctrl | Low/]| * `-----------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_planck_grid( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - LSFT_LPRN, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, LT(_RAISE, KC_BSPC), KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LSFT_LPRN, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Colemak * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Hp/Ec| A | R | S | T | D | H | N | E | I | O | ' | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Sft/(| Z/Mo | X | C | V | B | K | M | , | . | SD-/ |Sft/Ent| + * | Sft/(| Z/Dv | X | C | V | B | K | M | , | . | SD-/ |Sft/Ent| * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI/_|Lower | Space | ^/Bs | Bksp | Alt | Ctrl | Low/]| + * | Brite| Ctrl | Alt | GUI/_|Lower | Space | Raise| Bksp | Alt | Ctrl | Low/]| * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT_planck_grid( KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, HPR_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - LSFT_LPRN, LT(_MOUSE, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, LT(_RAISE, KC_BSPC), KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LSFT_LPRN, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Qwerty on software Colemak : Useful for gaming with qwerty keymaps! */ [_QWOC] = LAYOUT_planck_grid( KC_TAB, CM_Q, CM_W, CM_E, CM_R, CM_T, CM_Y, CM_U, CM_I, CM_O, CM_P, KC_MINS, HPR_ESC, CM_A, CM_S, CM_D, CM_F, CM_G, CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT, - LSFT_LPRN, LT(_MOUSE, CM_Z), CM_X, CM_C, CM_V, CM_B, CM_N, CM_M, CM_COMM, CM_DOT, LT(_SUPERDUPER, CM_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, LT(_RAISE, KC_BSPC), KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LSFT_LPRN, LT(_DEV, KC_Z), CM_X, CM_C, CM_V, CM_B, CM_N, CM_M, CM_COMM, CM_DOT, LT(_SUPERDUPER, CM_SLSH), SFT_ENT, + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Lower @@ -162,6 +164,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, KC_LSFT, KC_LSFT, _______, _______, _______, _______, _______ ), +/* Dev Layer + * /-----------------------------------------------------------------------------------\ + * | | | | | | | | - | + | ( | ) | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | _ | [ | ] | { | } | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | = | | | < | > | ? | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * \-----------------------------------------------------------------------------------/ + */ +[_DEV] = LAYOUT_planck_grid( + _______, _______, _______, _______, _______, _______, _______, KC_MINS, S(KC_EQL), S(KC_9), S(KC_0), _______, + _______, _______, _______, _______, _______, _______, S(KC_MINS), KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), _______, + _______, _______, _______, _______, _______, _______, KC_EQL, S(KC_BSLASH), S(KC_COMM), S(KC_DOT), S(KC_SLSH), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + /* Mouse * /-----------------------------------------------------------------------------------\ * | | | S↑ | M↑ | S↓ | | | | S↑ | S↓ | | | From a76a79b8275740e218a31e1e45ec22bfeb80d3ba Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 25 Sep 2019 13:00:27 -0700 Subject: [PATCH 63/72] [Keyboard] Rabbit68: Configurator layout support (#6809) --- keyboards/rabbit/rabbit68/info.json | 81 +++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/keyboards/rabbit/rabbit68/info.json b/keyboards/rabbit/rabbit68/info.json index e69de29bb2d..fb24d4d1051 100644 --- a/keyboards/rabbit/rabbit68/info.json +++ b/keyboards/rabbit/rabbit68/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Rabbit68", + "url": "", + "maintainer": "kaiec", + "width": 14, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + {"label":"k13", "x":3, "y":1}, + {"label":"k14", "x":4, "y":1}, + {"label":"k15", "x":5, "y":1}, + {"label":"k16", "x":6, "y":1}, + {"label":"k17", "x":7, "y":1}, + {"label":"k18", "x":8, "y":1}, + {"label":"k19", "x":9, "y":1}, + {"label":"k1a", "x":10, "y":1}, + {"label":"k1b", "x":11, "y":1}, + {"label":"k1c", "x":12, "y":1}, + {"label":"k1d", "x":13, "y":1}, + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k23", "x":3, "y":2}, + {"label":"k24", "x":4, "y":2}, + {"label":"k25", "x":5, "y":2}, + {"label":"k26", "x":6, "y":2}, + {"label":"k27", "x":7, "y":2}, + {"label":"k28", "x":8, "y":2}, + {"label":"k29", "x":9, "y":2}, + {"label":"k2a", "x":10, "y":2}, + {"label":"k2b", "x":11, "y":2}, + {"label":"k2c", "x":12, "y":2}, + {"label":"k2d", "x":13, "y":2}, + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3b", "x":11, "y":3}, + {"label":"k3c", "x":12, "y":3}, + {"label":"k3d", "x":13, "y":3}, + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4, "w":1.25}, + {"label":"k43", "x":3.25, "y":4, "w":1.25}, + {"label":"k45", "x":4.5, "y":4, "w":1.5}, + {"label":"k46", "x":6, "y":4, "w":1.5}, + {"label":"k48", "x":7.5, "y":4, "w":1.25}, + {"label":"k49", "x":8.75, "y":4, "w":1.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4} + ] + } + } +} From 475f832b0f434615b9b32ca3f600c4b770d6e1e5 Mon Sep 17 00:00:00 2001 From: Amber Holly Date: Wed, 25 Sep 2019 21:06:57 +0100 Subject: [PATCH 64/72] [Keyboard] Add Efreet keyboard (#6811) * start wraith firmware * completed initial setup * added amber keymap to wraith * fixed LEDs, wrote readme files * reverted bootloader type after troubleshooting * decapitalised files and directory as per qmk standards * Update Wraith keyboard folder - Add timer keymap with documentation - Remove boilerplate in rules.mk, ready for pull request - Update info.json with ISO and ANSI layouts, ready for QMK Configurator * Add Efreet keyboard * Remove unnecessary keyboard folders * Enable community layout support for Efreet - Rename LAYOUT macro to LAYOUT_ortho_4x12 - Add layout macro named LAYOUT_planck_mit - Remove unnecessary magic key command, as we are using the default - Fix readme.md formatting for GitHub * Fix community layout support for Efreet - Fix 2u spacebar keycodes in LAYOUT_planck_mit to denote absence of switch - Turn on Community Layouts in rules.mk * Update default keymap.c to use community layout --- keyboards/efreet/config.h | 245 +++++++++++++++++++++ keyboards/efreet/efreet.c | 51 +++++ keyboards/efreet/efreet.h | 59 +++++ keyboards/efreet/info.json | 15 ++ keyboards/efreet/keymaps/default/config.h | 19 ++ keyboards/efreet/keymaps/default/keymap.c | 55 +++++ keyboards/efreet/keymaps/default/readme.md | 1 + keyboards/efreet/readme.md | 15 ++ keyboards/efreet/rules.mk | 32 +++ 9 files changed, 492 insertions(+) create mode 100644 keyboards/efreet/config.h create mode 100644 keyboards/efreet/efreet.c create mode 100644 keyboards/efreet/efreet.h create mode 100644 keyboards/efreet/info.json create mode 100644 keyboards/efreet/keymaps/default/config.h create mode 100644 keyboards/efreet/keymaps/default/keymap.c create mode 100644 keyboards/efreet/keymaps/default/readme.md create mode 100644 keyboards/efreet/readme.md create mode 100644 keyboards/efreet/rules.mk diff --git a/keyboards/efreet/config.h b/keyboards/efreet/config.h new file mode 100644 index 00000000000..2a420b248e8 --- /dev/null +++ b/keyboards/efreet/config.h @@ -0,0 +1,245 @@ +/* +Copyright 2019 Amber Holly + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Soran +#define PRODUCT Efreet +#define DESCRIPTION A 40% ortholinear keyboard. + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B0, D6, D5, D4, D3, D2, D1, C2 } +#define MATRIX_COL_PINS { B3, B4, B5, B6, B7, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#define BACKLIGHT_PIN D0 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP H +//#define MAGIC_KEY_HELP_ALT SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER0_ALT GRAVE +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_BOOTLOADER_ALT ESC +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_EEPROM_CLEAR BSPACE +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + +/* + * HD44780 LCD Display Configuration + */ +/* +#define LCD_LINES 2 //< number of visible lines of the display +#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display + +#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode + +#if LCD_IO_MODE +#define LCD_PORT PORTB //< port for the LCD lines +#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 +#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 +#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 +#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 +#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 +#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 +#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 +#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 +#define LCD_RS_PORT LCD_PORT //< port for RS line +#define LCD_RS_PIN 3 //< pin for RS line +#define LCD_RW_PORT LCD_PORT //< port for RW line +#define LCD_RW_PIN 2 //< pin for RW line +#define LCD_E_PORT LCD_PORT //< port for Enable line +#define LCD_E_PIN 1 //< pin for Enable line +#endif +*/ + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/efreet/efreet.c b/keyboards/efreet/efreet.c new file mode 100644 index 00000000000..a05db74a520 --- /dev/null +++ b/keyboards/efreet/efreet.c @@ -0,0 +1,51 @@ +/* Copyright 2019 Amber Holly + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "efreet.h" + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +/* + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + +*/ diff --git a/keyboards/efreet/efreet.h b/keyboards/efreet/efreet.h new file mode 100644 index 00000000000..7ad717f3de5 --- /dev/null +++ b/keyboards/efreet/efreet.h @@ -0,0 +1,59 @@ +/* Copyright 2019 Amber Holly + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + + #define LAYOUT_ortho_4x12( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15,\ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35,\ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55,\ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75\ + ) { \ + { K10, K11, K12, K13, K14, K15 }, \ + { K00, K01, K02, K03, K04, K05 }, \ + { K30, K31, K32, K33, K34, K35 }, \ + { K20, K21, K22, K23, K24, K25 }, \ + { K50, K51, K52, K53, K54, K55 }, \ + { K40, K41, K42, K43, K44, K45 }, \ + { K70, K71, K72, K73, K74, K75 }, \ + { K60, K61, K62, K63, K64, K65 } \ + } + + #define LAYOUT_planck_mit( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15,\ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35,\ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55,\ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75\ + ) { \ + { K10, K11, K12, K13, K14, K15 }, \ + { K00, K01, K02, K03, K04, K05 }, \ + { K30, K31, K32, K33, K34, K35 }, \ + { K20, K21, K22, K23, K24, K25 }, \ + { K50, K51, K52, K53, K54, K55 }, \ + { K40, K41, K42, K43, K44, K45 }, \ + { K70, K71, K72, K73, K74, K75 }, \ + { K60, K61, K62, KC_NO, K64, K65 } \ + } diff --git a/keyboards/efreet/info.json b/keyboards/efreet/info.json new file mode 100644 index 00000000000..25b627d8ceb --- /dev/null +++ b/keyboards/efreet/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "efreet", + "url": "", + "maintainer": "amberstarlight", + "width": 12, + "height": 4, + "layouts": { + "LAYOUT_planck_mit": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3, "w":2}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] + }, + "LAYOUT_ortho_4x12": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] + } + } +} diff --git a/keyboards/efreet/keymaps/default/config.h b/keyboards/efreet/keymaps/default/config.h new file mode 100644 index 00000000000..b825835bb49 --- /dev/null +++ b/keyboards/efreet/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 Amber Holly + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/efreet/keymaps/default/keymap.c b/keyboards/efreet/keymaps/default/keymap.c new file mode 100644 index 00000000000..72443411b3b --- /dev/null +++ b/keyboards/efreet/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2019 Amber Holly + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + BL_TOGG, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [1] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [2] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/efreet/keymaps/default/readme.md b/keyboards/efreet/keymaps/default/readme.md new file mode 100644 index 00000000000..d714acd9427 --- /dev/null +++ b/keyboards/efreet/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for efreet \ No newline at end of file diff --git a/keyboards/efreet/readme.md b/keyboards/efreet/readme.md new file mode 100644 index 00000000000..9310dacf7b0 --- /dev/null +++ b/keyboards/efreet/readme.md @@ -0,0 +1,15 @@ +# Efreet + +![efreet](https://i.imgur.com/Lh6WLuI.jpg) + +Custom PCB for the Efreet (as4x) keyboard. + +Keyboard Maintainer: [Amber Holly](https://github.com/amberstarlight) +Hardware Supported: Efreet PCB +Hardware Availability: private group buy + +Make example for this keyboard (after setting up your build environment): + + make efreet:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/efreet/rules.mk b/keyboards/efreet/rules.mk new file mode 100644 index 00000000000..f3c51f7a6ac --- /dev/null +++ b/keyboards/efreet/rules.mk @@ -0,0 +1,32 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +LAYOUTS = ortho_4x12 planck_mit From dccafb64e65bfe2516eba422609750e9c27775e7 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 25 Sep 2019 13:17:29 -0700 Subject: [PATCH 65/72] [Keyboard] Subatomic refactor (#3194) * Refactor: matrix * New readme file * Configurator support * change info.json to debug linting * use an enum to manage the layers * readme cleanup file header, docs links * use #pragma once in keyboard header file * use new-style OLKB layout macro naming scheme * fix layout macro references in keymap.c * correct Keyboard Maintainer --- keyboards/subatomic/info.json | 233 +++++++++++++++++ keyboards/subatomic/keymaps/default/keymap.c | 255 ++++++++++--------- keyboards/subatomic/readme.md | 15 ++ keyboards/subatomic/subatomic.h | 89 ++++++- 4 files changed, 462 insertions(+), 130 deletions(-) create mode 100644 keyboards/subatomic/info.json create mode 100644 keyboards/subatomic/readme.md diff --git a/keyboards/subatomic/info.json b/keyboards/subatomic/info.json new file mode 100644 index 00000000000..7c09d96002c --- /dev/null +++ b/keyboards/subatomic/info.json @@ -0,0 +1,233 @@ +{ + "keyboard_name": "Subatomic", + "url": "", + "maintainer": "qmk", + "width": 14, + "height": 5, + "layouts": { + "LAYOUT_ortho_5x14": { + "key_count": 70, + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + {"label":"k13", "x":3, "y":1}, + {"label":"k14", "x":4, "y":1}, + {"label":"k15", "x":5, "y":1}, + {"label":"k16", "x":6, "y":1}, + {"label":"k17", "x":7, "y":1}, + {"label":"k18", "x":8, "y":1}, + {"label":"k19", "x":9, "y":1}, + {"label":"k1a", "x":10, "y":1}, + {"label":"k1b", "x":11, "y":1}, + {"label":"k1c", "x":12, "y":1}, + {"label":"k1d", "x":13, "y":1}, + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k23", "x":3, "y":2}, + {"label":"k24", "x":4, "y":2}, + {"label":"k25", "x":5, "y":2}, + {"label":"k26", "x":6, "y":2}, + {"label":"k27", "x":7, "y":2}, + {"label":"k28", "x":8, "y":2}, + {"label":"k29", "x":9, "y":2}, + {"label":"k2a", "x":10, "y":2}, + {"label":"k2b", "x":11, "y":2}, + {"label":"k2c", "x":12, "y":2}, + {"label":"k2d", "x":13, "y":2}, + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3b", "x":11, "y":3}, + {"label":"k3c", "x":12, "y":3}, + {"label":"k3d", "x":13, "y":3}, + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4}, + {"label":"k43", "x":3, "y":4}, + {"label":"k44", "x":4, "y":4}, + {"label":"k45", "x":5, "y":4}, + {"label":"k46", "x":6, "y":4}, + {"label":"k47", "x":7, "y":4}, + {"label":"k48", "x":8, "y":4}, + {"label":"k49", "x":9, "y":4}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4} + ] + }, + + "LAYOUT_ortho_5x14_1x2uC": { + "key_count": 69, + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + {"label":"k13", "x":3, "y":1}, + {"label":"k14", "x":4, "y":1}, + {"label":"k15", "x":5, "y":1}, + {"label":"k16", "x":6, "y":1}, + {"label":"k17", "x":7, "y":1}, + {"label":"k18", "x":8, "y":1}, + {"label":"k19", "x":9, "y":1}, + {"label":"k1a", "x":10, "y":1}, + {"label":"k1b", "x":11, "y":1}, + {"label":"k1c", "x":12, "y":1}, + {"label":"k1d", "x":13, "y":1}, + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k23", "x":3, "y":2}, + {"label":"k24", "x":4, "y":2}, + {"label":"k25", "x":5, "y":2}, + {"label":"k26", "x":6, "y":2}, + {"label":"k27", "x":7, "y":2}, + {"label":"k28", "x":8, "y":2}, + {"label":"k29", "x":9, "y":2}, + {"label":"k2a", "x":10, "y":2}, + {"label":"k2b", "x":11, "y":2}, + {"label":"k2c", "x":12, "y":2}, + {"label":"k2d", "x":13, "y":2}, + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3b", "x":11, "y":3}, + {"label":"k3c", "x":12, "y":3}, + {"label":"k3d", "x":13, "y":3}, + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4}, + {"label":"k43", "x":3, "y":4}, + {"label":"k44", "x":4, "y":4}, + {"label":"k45", "x":5, "y":4}, + {"label":"k46", "x":6, "y":4, "w":2}, + {"label":"k48", "x":8, "y":4}, + {"label":"k49", "x":9, "y":4}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4} + ] + }, + + "LAYOUT_ortho_5x14_2x2u": { + "key_count": 68, + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + {"label":"k13", "x":3, "y":1}, + {"label":"k14", "x":4, "y":1}, + {"label":"k15", "x":5, "y":1}, + {"label":"k16", "x":6, "y":1}, + {"label":"k17", "x":7, "y":1}, + {"label":"k18", "x":8, "y":1}, + {"label":"k19", "x":9, "y":1}, + {"label":"k1a", "x":10, "y":1}, + {"label":"k1b", "x":11, "y":1}, + {"label":"k1c", "x":12, "y":1}, + {"label":"k1d", "x":13, "y":1}, + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k23", "x":3, "y":2}, + {"label":"k24", "x":4, "y":2}, + {"label":"k25", "x":5, "y":2}, + {"label":"k26", "x":6, "y":2}, + {"label":"k27", "x":7, "y":2}, + {"label":"k28", "x":8, "y":2}, + {"label":"k29", "x":9, "y":2}, + {"label":"k2a", "x":10, "y":2}, + {"label":"k2b", "x":11, "y":2}, + {"label":"k2c", "x":12, "y":2}, + {"label":"k2d", "x":13, "y":2}, + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3b", "x":11, "y":3}, + {"label":"k3c", "x":12, "y":3}, + {"label":"k3d", "x":13, "y":3}, + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4}, + {"label":"k43", "x":3, "y":4}, + {"label":"k44", "x":4, "y":4}, + {"label":"k45", "x":5, "y":4, "w":2}, + {"label":"k47", "x":7, "y":4, "w":2}, + {"label":"k49", "x":9, "y":4}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4} + ] + } + } +} diff --git a/keyboards/subatomic/keymaps/default/keymap.c b/keyboards/subatomic/keymaps/default/keymap.c index 8def46961a1..e0fc52b70e4 100644 --- a/keyboards/subatomic/keymaps/default/keymap.c +++ b/keyboards/subatomic/keymaps/default/keymap.c @@ -4,12 +4,14 @@ // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. -#define _QWERTY 0 -#define _COLEMAK 1 -#define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 -#define _ADJUST 16 +enum layer_names { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST, +}; enum subatomic_keycodes { QWERTY = SAFE_RANGE, @@ -22,132 +24,131 @@ enum subatomic_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-------------------------------------------------------------------------------------------------. - * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | = | Esc | A | S | D | F | G | H | J | K | L | ; | " |Enter | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | Pg Up| Shift| Z | X | C | V | B | N | M | , | . | / | Home | End | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | - * `-------------------------------------------------------------------------------------------------' - */ -[_QWERTY] = { - {KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS}, - {KC_TRNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_TRNS}, - {KC_TRNS, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS}, - {KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_TRNS}, - {KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS} -}, + /* Qwerty + * ,-------------------------------------------------------------------------------------------------. + * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | = | Esc | A | S | D | F | G | H | J | K | L | ; | " |Enter | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Pg Up| Shift| Z | X | C | V | B | N | M | , | . | / | Home | End | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | + * `-------------------------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_TRNS, + KC_TRNS, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_TRNS, + KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS + ), -/* Colemak - * ,-------------------------------------------------------------------------------------------------. - * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | - | Tab | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | = | Esc | A | R | S | T | D | H | N | E | I | O | " |Enter | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | Pg Up| Shift| Z | X | C | V | B | K | M | , | . | / | Home | End | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | - * `-------------------------------------------------------------------------------------------------' - */ -[_COLEMAK] = { - {KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS}, - {KC_TRNS, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, KC_TRNS}, - {KC_TRNS, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_TRNS}, - {KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_TRNS}, - {KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS} -}, + /* Colemak + * ,-------------------------------------------------------------------------------------------------. + * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | - | Tab | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | = | Esc | A | R | S | T | D | H | N | E | I | O | " |Enter | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Pg Up| Shift| Z | X | C | V | B | K | M | , | . | / | Home | End | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | + * `-------------------------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, KC_TRNS, + KC_TRNS, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_TRNS, + KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_TRNS, + KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS + ), -/* Dvorak - * ,-------------------------------------------------------------------------------------------------. - * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | [ | Tab | " | , | . | P | Y | F | G | C | R | L | / | = | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | ] | Esc | A | O | E | U | I | D | H | T | N | S | - |Enter | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | Pg Up| Shift| ; | Q | J | K | X | B | M | W | V | Z | Home | End | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | - * `-------------------------------------------------------------------------------------------------' - */ -[_DVORAK] = { - {KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS}, - {KC_TRNS, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, KC_TRNS}, - {KC_TRNS, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_TRNS}, - {KC_TRNS, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, KC_TRNS}, - {KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS} -}, + /* Dvorak + * ,-------------------------------------------------------------------------------------------------. + * | Ins | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | [ | Tab | " | , | . | P | Y | F | G | C | R | L | / | = | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | ] | Esc | A | O | E | U | I | D | H | T | N | S | - |Enter | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Pg Up| Shift| ; | Q | J | K | X | B | M | W | V | Z | Home | End | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Pg Dn| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up | Right| \ | + * `-------------------------------------------------------------------------------------------------' + */ + [_DVORAK] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, KC_TRNS, + KC_TRNS, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_TRNS, + KC_TRNS, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, KC_TRNS, + KC_TRNS, BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS + ), -/* Lower - * ,-------------------------------------------------------------------------------------------------. - * | | ~ | F1 | F3 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | _ | Tab | ! | @ | # | $ | % | ^ | & | * | ( | ) | { | } | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | + | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | | Shift| F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | | - * `-------------------------------------------------------------------------------------------------' - */ -[_LOWER] = { - {KC_TRNS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_TRNS}, - {KC_TRNS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, KC_TRNS}, - {KC_TRNS, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS}, - {KC_TRNS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,KC_TRNS}, - {KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS} -}, + /* Lower + * ,-------------------------------------------------------------------------------------------------. + * | | ~ | F1 | F3 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | _ | Tab | ! | @ | # | $ | % | ^ | & | * | ( | ) | { | } | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | + | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | | Shift| F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | | + * `-------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, KC_TRNS, + KC_TRNS, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, + KC_TRNS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,KC_TRNS, + KC_TRNS, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS + ), -/* Raise - * ,-------------------------------------------------------------------------------------------------. - * | | ~ | F1 | F3 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | _ | Tab | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | { | } | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | + | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | | Shift| F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | | Play | - * `-------------------------------------------------------------------------------------------------' - */ -[_RAISE] = { - {KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS}, - {KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TRNS}, - {KC_TRNS, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS}, - {KC_TRNS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_TRNS}, - {KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS} -}, - -/* Adjust (Lower + Raise) - * ,-------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | Reset| | | | | | | | | | | | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | - * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| - * | | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ -[_ADJUST] = { - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS}, - {KC_TRNS, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_TRNS}, - {KC_TRNS, _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, KC_TRNS}, - {KC_TRNS, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, KC_TRNS}, - {KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS} -} + /* Raise + * ,-------------------------------------------------------------------------------------------------. + * | | ~ | F1 | F3 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | _ | Tab | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | { | } | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | + | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | | | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | | Shift| F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | | Play | + * `-------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TRNS, + KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TRNS, + KC_TRNS, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS, + KC_TRNS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_TRNS, + KC_TRNS, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS + ), + /* Adjust (Lower + Raise) + * ,-------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Reset| | | | | | | | | | | | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | + * |------+------+------+------+------+------+------|------+------+------+------+------+------+------| + * | | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-------------------------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_ortho_5x14_1x2uC( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_TRNS, + KC_TRNS, _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, KC_TRNS, + KC_TRNS, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, KC_TRNS, + KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS + ) }; diff --git a/keyboards/subatomic/readme.md b/keyboards/subatomic/readme.md new file mode 100644 index 00000000000..ca065b29a96 --- /dev/null +++ b/keyboards/subatomic/readme.md @@ -0,0 +1,15 @@ +# Subatomic + +![Subatomic](https://i.imgur.com/EWrY7Bel.png) + +A compact 70% (15x4) ortholinear keyboard kit made and sold by OLKB. [More info on qmk.fm](http://qmk.fm/subatomic/) + +Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) +Hardware Supported: Subatomic PCB +Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make subatomic:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/subatomic/subatomic.h b/keyboards/subatomic/subatomic.h index b23cb8eb19f..5fbc599f836 100644 --- a/keyboards/subatomic/subatomic.h +++ b/keyboards/subatomic/subatomic.h @@ -1,6 +1,89 @@ -#ifndef SUBATOMIC_H -#define SUBATOMIC_H +#pragma once #include "quantum.h" -#endif \ No newline at end of file +#define XXX KC_NO + + +/* Subatomic Grid layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ • │ │ │ • │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ │ │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ + */ +#define LAYOUT_ortho_5x14( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ + ) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d } \ +} + + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ • │ │ │ • │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ + * └───┴───┴───┴───┴───┴───┴───────┴───┴───┴───┴───┴───┴───┘ + */ +#define LAYOUT_ortho_5x14_1x2uC( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k43, k44, k45, k46, k48, k49, k4a, k4b, k4c, k4d \ + ) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, k45, k46, XXX, k48, k49, k4a, k4b, k4c, k4d } \ +} + + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ • │ │ │ • │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│ │ │ │ │ │ │ │ │ │ │▓▓▓│▓▓▓│ + * ├───┼───┼───┼───┼───┼───┴───┼───┴───┼───┼───┼───┼───┼───┤ + * │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ │ │▓▓▓│▓▓▓│▓▓▓│▓▓▓│▓▓▓│ + * └───┴───┴───┴───┴───┴───────┴───────┴───┴───┴───┴───┴───┘ + */ +#define LAYOUT_ortho_5x14_2x2u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k43, k44, k45, k47, k49, k4a, k4b, k4c, k4d \ + ) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \ + { k40, k41, k42, k43, k44, k45, XXX, k47, XXX, k49, k4a, k4b, k4c, k4d } \ +} From 983c93fe81d6379b10867648617e1213a33d05fe Mon Sep 17 00:00:00 2001 From: senseored <39708654+senseored@users.noreply.github.com> Date: Wed, 25 Sep 2019 22:20:33 +0200 Subject: [PATCH 66/72] [Keymap] Added two different Swedish layouts for the Niu Mini 40% and Preonic 50%. (#6793) * added preonic keymap senseored * added niu_mini/tobias * Changed readme's to explain that these are swedish layouts * Apply suggestions from code review Co-Authored-By: Drashna Jaelre * Update keyboards/niu_mini/keymaps/tobias/keymap.c Co-Authored-By: Drashna Jaelre * Made changes according to drashna's suggestions * Changed to tap_code(KC_NLCK) * Added #define RGBLIGHT_SLEEP * Added #define RGBLIGHT_SLEEP * Removed include config.h --- keyboards/niu_mini/keymaps/tobias/config.h | 40 ++ keyboards/niu_mini/keymaps/tobias/keymap.c | 413 +++++++++++++++++ keyboards/niu_mini/keymaps/tobias/readme.md | 2 + keyboards/niu_mini/keymaps/tobias/rules.mk | 2 + keyboards/preonic/keymaps/senseored/config.h | 45 ++ keyboards/preonic/keymaps/senseored/keymap.c | 437 ++++++++++++++++++ keyboards/preonic/keymaps/senseored/readme.md | 1 + keyboards/preonic/keymaps/senseored/rules.mk | 1 + 8 files changed, 941 insertions(+) create mode 100644 keyboards/niu_mini/keymaps/tobias/config.h create mode 100644 keyboards/niu_mini/keymaps/tobias/keymap.c create mode 100644 keyboards/niu_mini/keymaps/tobias/readme.md create mode 100644 keyboards/niu_mini/keymaps/tobias/rules.mk create mode 100644 keyboards/preonic/keymaps/senseored/config.h create mode 100644 keyboards/preonic/keymaps/senseored/keymap.c create mode 100644 keyboards/preonic/keymaps/senseored/readme.md create mode 100644 keyboards/preonic/keymaps/senseored/rules.mk diff --git a/keyboards/niu_mini/keymaps/tobias/config.h b/keyboards/niu_mini/keymaps/tobias/config.h new file mode 100644 index 00000000000..f88b52d1fce --- /dev/null +++ b/keyboards/niu_mini/keymaps/tobias/config.h @@ -0,0 +1,40 @@ +#pragma once + +//#include "../../config.h" + +//#define MUSIC_MASK (keycode != KC_NO) + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#define RGBLIGHT_SLEEP +#define TAPPING_TOGGLE 2 +#define ALT_F4 LALT(KC_F4) +#define CTALDEL LSFT(LCTL(KC_ESC)) +#define NO_DEBUG +#define CTLZ LCTL(KC_Z) +#define CTLX LCTL(KC_X) +#define CTLC LCTL(KC_C) +#define CTLV LCTL(KC_V) + diff --git a/keyboards/niu_mini/keymaps/tobias/keymap.c b/keyboards/niu_mini/keymaps/tobias/keymap.c new file mode 100644 index 00000000000..935dd5c506d --- /dev/null +++ b/keyboards/niu_mini/keymaps/tobias/keymap.c @@ -0,0 +1,413 @@ + /* Copyright 2015-2017 Jack Humbert + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// extern keymap_config_t keymap_config; + +enum layers { + _QWERTY, + _FNL1, + _MOUSE, + _LOWER, + _RAISE, + _FNL2, + _ADJUST, + _GAMEMODE, + _FNL3, _LOWER2, + _RAISE2 +}; + +enum custom_keycodes { + TBMACRO = SAFE_RANGE, + DGRMCRO, + WRKMOD +}; + +bool bnumlock = false; +bool numlock_changed = false; +bool workmode = true; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL1 | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | Bksp |Lower | Space |Raise | Bksp | AltGr| * | Esc | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + TT(_FNL1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, TT(_LOWER), KC_SPC, KC_SPC, TT(_RAISE), KC_BSPC, KC_RALT, KC_NUHS, KC_ESC +), + + +/* FNL1 + * ,-----------------------------------------------------------------------------------. + * |TbMacr| Prev | Play | Next | AltF4| CapsL| Esc | PgUp | Up | PgDn |PrScrn| Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | Home | Left | Down | Right| | Del | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | End | | | | ? | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | ! | | + * `-----------------------------------------------------------------------------------' + */ +[_FNL1] = LAYOUT_ortho_4x12( + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, KC_ESC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_BSPC, + TT(_FNL1), _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL, + KC_LSFT, CTLZ, CTLX, CTLC, CTLV, _______, KC_END, _______, _______, _______, LSFT(KC_MINS), _______, + _______, _______, CTALDEL, _______, _______, _______, _______, TO(_MOUSE), _______, _______, LSFT(KC_1), _______ +), + +[_MOUSE] = { + { KC_TAB, XXXXXXX, XXXXXXX, KC_MS_UP, XXXXXXX, KC_T, XXXXXXX, KC_MS_BTN3, KC_MS_WH_UP, KC_MS_BTN2, XXXXXXX, KC_MS_ACCEL0 }, + {TO(_QWERTY), XXXXXXX, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, XXXXXXX, XXXXXXX, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, XXXXXXX, KC_MS_ACCEL1}, + {_______, KC_Z, KC_X, KC_C, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_ACCEL2}, + {KC_LCTL, TO(_QWERTY), KC_LALT, _______, TO(_QWERTY), KC_MS_BTN1, XXXXXXX, TO(_QWERTY), _______, _______, TO(_QWERTY), TO(_QWERTY)} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | § | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ´ | ` | @ | £ | $ | € | ¨ | { | [ | ] | } | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | < | | | > | ° | | | µ | ¨ | ^ | ~ | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | AltGr| | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_EQL, S(KC_EQL), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_E), KC_RBRC, RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), + KC_LSFT, KC_NUBS, RALT(KC_NUBS), S(KC_NUBS), DGRMCRO, XXXXXXX, XXXXXXX, RALT(KC_M), KC_RBRC, S(KC_RBRC), RALT(KC_RBRC), _______, + _______, _______, KC_RALT, _______,TO(_ADJUST), _______, _______, _______, _______, _______, _______, TO(_QWERTY) +), + + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | Tab | F1 | F2 | F3 | F4 | Esc | Bksp | / | 7 | 8 | 9 | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL2 | F5 | F6 | F7 | F8 |Insert| Home | PgUp | 4 | 5 | 6 | + | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | Del | End | PgDn | 1 | 2 | 3 | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Alt | | | | * | 0 | , | . | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_4x12( + KC_TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_ESC, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + TT(_FNL2), KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, KC_HOME, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_END, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PENT, + _______, _______, KC_LALT, _______, TO(_QWERTY), _______, _______, KC_PAST, KC_P0, KC_PDOT, KC_DOT, TO(_QWERTY) +), + +/* FNL2 + * ,-----------------------------------------------------------------------------------. + * |TbMacr| Prev | Play | Next | AltF4| CapsL| |PrScrn|Insert| Home | PgUp |ScrLck| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | | | Del | End | PgDn | Pause| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | Up | | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Left | Down | Right| BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_FNL2] = LAYOUT_ortho_4x12( + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, _______, KC_PSCR, KC_INS, KC_HOME, KC_PGUP, KC_SLCK, + _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_PAUS, + _______, CTLZ, CTLX, CTLC, CTLV, _______, _______, _______, _______, KC_UP, _______, KC_ENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, TO(_QWERTY) +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | GAME | Reset| | | | | | | | | |LIGHTS| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | |BLtogg|BLstep| | | | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |RGBtog|RGBhui|RGBhud|RGBmod|RGBsai|RGBsad| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | RGB4 | | | | | | | | | NKO | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_ortho_4x12( + TO(_GAMEMODE), RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, WRKMOD, + _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_MOD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_MODE_FORWARD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_R, TO(_QWERTY) +), + +/* Game mode + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL1 | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | 1 | Lower| Bksp | Alt | Space | Raise| Bksp | BAIL | * | Esc | + * `-----------------------------------------------------------------------------------' + */ +[_GAMEMODE] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + TT(_FNL3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_1, MO(_LOWER2), KC_DEL, KC_LALT, KC_SPC, KC_SPC, MO(_RAISE2), KC_BSPC, TO(_QWERTY), KC_NUHS, KC_ESC +), + +/* FNL3 + * ,-----------------------------------------------------------------------------------. + * |TbMacr| Prev | Play | Next | AltF4| CapsL| Esc | PgUp | Up | PgDn |PrScrn| Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | Home | Left | Down | Right| | Del | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | End | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_FNL3] = LAYOUT_ortho_4x12( + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, KC_ESC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_BSPC, + _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL, + KC_LSFT, _______, _______, _______, _______, _______, KC_END, _______, _______, _______, LSFT(KC_MINS), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LSFT(KC_1), _______ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | Tab | F1 | F2 | F3 | F4 | Esc | Bksp | / | 7 | 8 | 9 | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL2 | F5 | F6 | F7 | F8 |Insert| Home | PgUp | 4 | 5 | 6 | + | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | Del | End | PgDn | 1 | 2 | 3 | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Alt | | | | * | 0 | , | . | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER2] = LAYOUT_ortho_4x12( + KC_TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_ESC, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + TT(_FNL2), KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, KC_HOME, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_END, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, KC_PAST, KC_P0, KC_PDOT, KC_DOT, TO(_GAMEMODE) +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | § | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ´ | ` | @ | £ | $ | € | ¨ | { | [ | ] | } | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | < | | | > | ° | | | µ | ¨ | ^ | ~ | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | AltGr| | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE2] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_EQL, S(KC_EQL), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_E), KC_RBRC, RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), + KC_LSFT, KC_NUBS, RALT(KC_NUBS), S(KC_NUBS), DGRMCRO, XXXXXXX, XXXXXXX, RALT(KC_M), KC_RBRC, S(KC_RBRC), RALT(KC_RBRC), _______, + _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAMEMODE) +) + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case TBMACRO: + SEND_STRING(SS_TAP(X_TAB) SS_DOWN(X_LSHIFT) SS_TAP(X_HOME) SS_UP(X_LSHIFT) SS_TAP(X_DELETE)); + return false; + case DGRMCRO: + if(!bnumlock) { + //register_code(KC_NLCK); + //unregister_code(KC_NLCK); + tap_code(KC_NLCK); + bnumlock = true; + } + //SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P6) SS_UP(X_LALT)); + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_KP_0) SS_TAP(X_KP_1) SS_TAP(X_KP_7) SS_TAP(X_KP_6) SS_UP(X_LALT) ); + return false; + case WRKMOD: + if(!workmode) { + workmode = true; + return false; + } + else { + workmode = false; + return false; + } + } + + } + return true; +} + +void rgbflag(uint8_t r, uint8_t g, uint8_t b) { + for(int i = 0; i < RGBLED_NUM; i++){ + switch(i) { + case 0 ... 13: + // rgblight_setrgb_at(r,g,b,i); + led[i].r = r; + led[i].g = g; + led[i].b = b; + break; + /* case 9 ... 11: + // rgblight_setrgb_at(r,g,b,i); + led[i].r = r; + led[i].g = g; + led[i].b = b; + break; */ + default: + // rgblight_setrgb_at(0,0,0,i); + led[i].r = 0; + led[i].g = 0; + led[i].b = 0; + break; + } + } + rgblight_set(); +} + +layer_state_t layer_state_set_user(layer_state_t state) { +// if(rgblight_get_mode() == 1) { + switch (biton32(state)) { + case _QWERTY: + if(!workmode){ + rgblight_mode(9); + } + else if(workmode){ + rgblight_mode(1); + rgbflag(0x00, 0x00, 0x00); + } + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _LOWER: + rgblight_mode(1); + if(!bnumlock) { + tap_code(KC_NLCK); + } + rgbflag(0xFF, 0x00, 0x00); + + break; + case _ADJUST: + rgblight_mode(1); + rgbflag(0xFF, 0xFF, 0xFF); + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _RAISE: + rgblight_mode(1); + rgbflag(0x00, 0xFF, 0x00); + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _FNL1: + rgblight_mode(1); + rgbflag(0x00, 0x00, 0xFF); + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _GAMEMODE: + rgblight_mode(1); + rgbflag(0xFF, 0x00, 0xFF); + break; + case _MOUSE: + rgblight_mode(1); + rgbflag(0x00, 0xFF, 0xFF); + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + default: // for any other layers, or the default layer + rgblight_mode(1); + if(bnumlock) { + tap_code(KC_NLCK); + } + rgbflag(0xFF, 0xFF, 0xFF); + break; + } + // } + return state; +} + +/* void matrix_scan_user(void) { + + //Layer LED indicators + + uint32_t layer = layer_state; + + + if (layer & (1<<2)) { + if(!bnumlock) { + numlock_changed = true; + register_code(KC_NLCK); + unregister_code(KC_NLCK); + bnumlock = true; + } + } +} + */ + + +void led_set_user(uint8_t usb_led) { + + if (usb_led & (1 << USB_LED_NUM_LOCK)) { + bnumlock = true; + + } else { + bnumlock = false; + } + + if (usb_led & (1 << USB_LED_CAPS_LOCK)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_COMPOSE)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_KANA)) { + + } else { + + } + +} \ No newline at end of file diff --git a/keyboards/niu_mini/keymaps/tobias/readme.md b/keyboards/niu_mini/keymaps/tobias/readme.md new file mode 100644 index 00000000000..0a8077884d5 --- /dev/null +++ b/keyboards/niu_mini/keymaps/tobias/readme.md @@ -0,0 +1,2 @@ +# Swedish 40% Layout + diff --git a/keyboards/niu_mini/keymaps/tobias/rules.mk b/keyboards/niu_mini/keymaps/tobias/rules.mk new file mode 100644 index 00000000000..d75595602fc --- /dev/null +++ b/keyboards/niu_mini/keymaps/tobias/rules.mk @@ -0,0 +1,2 @@ +NKRO_ENABLE = YES +MOUSEKEY_ENABLE = yes \ No newline at end of file diff --git a/keyboards/preonic/keymaps/senseored/config.h b/keyboards/preonic/keymaps/senseored/config.h new file mode 100644 index 00000000000..61f3488c669 --- /dev/null +++ b/keyboards/preonic/keymaps/senseored/config.h @@ -0,0 +1,45 @@ +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PREONIC_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#define MUSIC_MASK (keycode != KC_NO) + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC +#define RGBLIGHT_SLEEP +#define TAPPING_TOGGLE 2 +#define ALT_F4 LALT(KC_F4) +#define CTALDEL LSFT(LCTL(KC_ESC)) +#define NO_DEBUG +#define CTLZ LCTL(KC_Z) +#define CTLX LCTL(KC_X) +#define CTLC LCTL(KC_C) +#define CTLV LCTL(KC_V) +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 diff --git a/keyboards/preonic/keymaps/senseored/keymap.c b/keyboards/preonic/keymaps/senseored/keymap.c new file mode 100644 index 00000000000..6ddf289420f --- /dev/null +++ b/keyboards/preonic/keymaps/senseored/keymap.c @@ -0,0 +1,437 @@ +/* Copyright 2015-2017 Jack Humbert + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + +enum preonic_layers { + _QWERTY, + _FNL1, + _LOWER, + _RAISE, + _FNL2, + _ADJUST, + _GAMEMODE, + _FNL3, + _LOWER2, + _RAISE2 +}; + +enum preonic_keycodes { + TBMACRO = SAFE_RANGE, + DGRMCRO, + WRKMOD, + BACKLIT, + RAISE, + LOWER +}; + +bool bnumlock = false; +bool numlock_changed = false; +bool workmode = true; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL1 | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | Bksp |Lower | Space |Raise | Bksp | AltGr| * | Esc | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ + TT(_FNL1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, TT(_LOWER), KC_SPC, KC_SPC, TT(_RAISE), KC_BSPC, KC_RALT, KC_NUHS, KC_ESC \ +), + +/* FNL1 + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |TbMacr| Prev | Play | Next | AltF4| CapsL| Esc | PgUp | Up | PgDn |PrScrn| Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | Home | Left | Down | Right| | Del | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | End | | | | ? | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | ! | | + * `-----------------------------------------------------------------------------------' + */ +[_FNL1] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, KC_ESC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_BSPC, + TT(_FNL1), _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL, + KC_LSFT, CTLZ, CTLX, CTLC, CTLV, _______, KC_END, _______, _______, _______, LSFT(KC_MINS), _______, + _______, _______, CTALDEL, _______, _______, _______, _______, _______, _______, _______, LSFT(KC_1), _______ +), + + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | § | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ´ | ` | @ | £ | $ | € | ¨ | { | [ | ] | } | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | < | | | > | ° | | | µ | ¨ | ^ | ~ | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | AltGr| | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_EQL, S(KC_EQL), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_E), KC_RBRC, RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), + KC_LSFT, KC_NUBS, RALT(KC_NUBS), S(KC_NUBS), DGRMCRO, XXXXXXX, XXXXXXX, RALT(KC_M), KC_RBRC, S(KC_RBRC), RALT(KC_RBRC), _______, + _______, _______, KC_RALT, _______,TO(_ADJUST), _______, _______, _______, _______, _______, _______, TO(_QWERTY) +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | F1 | F2 | F3 | F4 | Esc | Bksp | / | 7 | 8 | 9 | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL2 | F5 | F6 | F7 | F8 |Insert| Home | PgUp | 4 | 5 | 6 | + | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | Del | End | PgDn | 1 | 2 | 3 | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Alt | | | | * | 0 | , | . | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_preonic_grid( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_ESC, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + TT(_FNL2), KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, KC_HOME, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_END, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PENT, + _______, _______, KC_LALT, _______, TO(_QWERTY), _______, _______, KC_PAST, KC_P0, KC_PDOT, KC_DOT, TO(_QWERTY) +), + +/* FNL2 + * ,-----------------------------------------------------------------------------------. + * |TbMacr| Prev | Play | Next | AltF4| CapsL| |PrScrn|Insert| Home | PgUp |ScrLck| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | | | Del | End | PgDn | Pause| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | Up | | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Left | Down | Right| BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_FNL2] = LAYOUT_preonic_grid( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, _______, KC_PSCR, KC_INS, KC_HOME, KC_PGUP, KC_SLCK, + _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_PAUS, + _______, CTLZ, CTLX, CTLC, CTLV, _______, _______, _______, _______, KC_UP, _______, KC_ENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, TO(_QWERTY) +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | GAME | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_preonic_grid( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + TO(_GAMEMODE), RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \ + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \ + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY) \ +), + + +/* Game mode + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL1 | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | 1 | Lower| Bksp | Alt | Space | Raise| Bksp | BAIL | * | Esc | + * `-----------------------------------------------------------------------------------' + */ +[_GAMEMODE] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + TT(_FNL3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_1, MO(_LOWER2), KC_DEL, KC_LALT, KC_SPC, KC_SPC, MO(_RAISE2), KC_BSPC, TO(_QWERTY), KC_NUHS, KC_ESC +), +/* FNL3 + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |TbMacr| Prev | Play | Next | AltF4| CapsL| Esc | PgUp | Up | PgDn |PrScrn| Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Vol- | Vol+ | Mute | NumL | Home | Left | Down | Right| | Del | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | End | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_FNL3] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + TBMACRO, KC_MPRV, KC_MPLY, KC_MNXT, ALT_F4, KC_CAPS, KC_ESC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_BSPC, + _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_NLCK, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL, + KC_LSFT, _______, _______, _______, _______, _______, KC_END, _______, _______, _______, LSFT(KC_MINS), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LSFT(KC_1), _______ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | F1 | F2 | F3 | F4 | Esc | Bksp | / | 7 | 8 | 9 | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FNL2 | F5 | F6 | F7 | F8 |Insert| Home | PgUp | 4 | 5 | 6 | + | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | Del | End | PgDn | 1 | 2 | 3 | Enter| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Alt | | | | * | 0 | , | . | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER2] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_ESC, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + TT(_FNL2), KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, KC_HOME, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_END, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, KC_PAST, KC_P0, KC_PDOT, KC_DOT, TO(_GAMEMODE) +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | § | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ´ | ` | @ | £ | $ | € | ¨ | { | [ | ] | } | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | < | | | > | ° | | | µ | ¨ | ^ | ~ | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | AltGr| | | | | | | | BAIL | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE2] = LAYOUT_preonic_grid( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_EQL, S(KC_EQL), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_E), KC_RBRC, RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), + KC_LSFT, KC_NUBS, RALT(KC_NUBS), S(KC_NUBS), DGRMCRO, XXXXXXX, XXXXXXX, RALT(KC_M), KC_RBRC, S(KC_RBRC), RALT(KC_RBRC), _______, + _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAMEMODE) +) + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case TBMACRO: + SEND_STRING(SS_TAP(X_TAB) SS_DOWN(X_LSHIFT) SS_TAP(X_HOME) SS_UP(X_LSHIFT) SS_TAP(X_DELETE)); + return false; + case DGRMCRO: + if(!bnumlock) { + tap_code(KC_NLCK); + bnumlock = true; + } + //SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P0) SS_TAP(X_P1) SS_TAP(X_P7) SS_TAP(X_P6) SS_UP(X_LALT)); + SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_KP_0) SS_TAP(X_KP_1) SS_TAP(X_KP_7) SS_TAP(X_KP_6) SS_UP(X_LALT) ); + return false; + + if(bnumlock) { + tap_code(KC_NLCK); + bnumlock = false; + } + case WRKMOD: + if(!workmode) { + workmode = true; + return false; + } + else { + workmode = false; + return false; + } + } + + } + return true; + switch (keycode) { + + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef __AVR__ + PORTE &= ~(1<<6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef __AVR__ + PORTE |= (1<<6); + #endif + } + return false; + break; + } + return true; +}; + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + register_code(KC_PGDN); + unregister_code(KC_PGDN); + } else { + register_code(KC_PGUP); + unregister_code(KC_PGUP); + } + } +} + +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if (active) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + + +uint32_t layer_state_set_user(uint32_t state) { +// if(rgblight_get_mode() == 1) { + switch (biton32(state)) { + case _QWERTY: + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _LOWER: + if(!bnumlock) { + tap_code(KC_NLCK); + } + + break; + case _ADJUST: + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _RAISE: + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _FNL1: + if(bnumlock) { + tap_code(KC_NLCK); + } + break; + case _GAMEMODE: + break; + default: // for any other layers, or the default layer + if(bnumlock) { + tap_code(KC_NLCK); + } + + break; + } + // } + return state; +} + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/preonic/keymaps/senseored/readme.md b/keyboards/preonic/keymaps/senseored/readme.md new file mode 100644 index 00000000000..1b286acc89a --- /dev/null +++ b/keyboards/preonic/keymaps/senseored/readme.md @@ -0,0 +1 @@ +# Swedish Preonic layout. Still figuring out what to do with numbers/symbols compared to a Planck-layout. \ No newline at end of file diff --git a/keyboards/preonic/keymaps/senseored/rules.mk b/keyboards/preonic/keymaps/senseored/rules.mk new file mode 100644 index 00000000000..dcf16bef399 --- /dev/null +++ b/keyboards/preonic/keymaps/senseored/rules.mk @@ -0,0 +1 @@ +SRC += muse.c From 2a948e77715f0bd11d4b80315cf84c68890014d4 Mon Sep 17 00:00:00 2001 From: Cody Bender <50554676+cfbender@users.noreply.github.com> Date: Wed, 25 Sep 2019 15:20:20 -0600 Subject: [PATCH 67/72] [Keyboard] Add Crossed Keys/Keyhive Nightmare (#6796) * initial draft of nightmare files * fixed pins * fixed MT keycodes * updated READMEs * updated title in main readme * updated for split space * added OPT_TAB * fixed layer 1 keymap * Add DEL to keymap * Update Bootmagic pins * Update Keymap * Fix missing ) * Update Up arrow on keymap * Add hosted image for Nightmare render * Update info.json for Nightmare layout * Resolve suggestions from drashna * Add split space layout in nightmare.h and info.json --- keyboards/nightmare/config.h | 249 ++++++++ keyboards/nightmare/info.json | 534 ++++++++++++++++++ keyboards/nightmare/keymaps/default/config.h | 19 + keyboards/nightmare/keymaps/default/keymap.c | 38 ++ keyboards/nightmare/keymaps/default/readme.md | 3 + keyboards/nightmare/nightmare.c | 51 ++ keyboards/nightmare/nightmare.h | 51 ++ keyboards/nightmare/readme.md | 15 + keyboards/nightmare/rules.mk | 44 ++ 9 files changed, 1004 insertions(+) create mode 100644 keyboards/nightmare/config.h create mode 100644 keyboards/nightmare/info.json create mode 100644 keyboards/nightmare/keymaps/default/config.h create mode 100644 keyboards/nightmare/keymaps/default/keymap.c create mode 100644 keyboards/nightmare/keymaps/default/readme.md create mode 100644 keyboards/nightmare/nightmare.c create mode 100644 keyboards/nightmare/nightmare.h create mode 100644 keyboards/nightmare/readme.md create mode 100644 keyboards/nightmare/rules.mk diff --git a/keyboards/nightmare/config.h b/keyboards/nightmare/config.h new file mode 100644 index 00000000000..fafba644dd7 --- /dev/null +++ b/keyboards/nightmare/config.h @@ -0,0 +1,249 @@ +/* +Copyright 2019 cfbender + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB00B +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER cfbender +#define PRODUCT nightmare +#define DESCRIPTION A 50% from The Society of the Crossed Keys + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D4, C6, D7, E6 } +#define MATRIX_COL_PINS { B4, B5, D3, D2, D1, D0, F4, F5, F6, F7, B1, B3, B2, B6} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +/* defined by default; to change, uncomment and set to the combination you want */ +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP H +//#define MAGIC_KEY_HELP_ALT SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER0_ALT GRAVE +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_BOOTLOADER_ALT ESC +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_EEPROM_CLEAR BSPACE +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + +/* + * HD44780 LCD Display Configuration + */ +/* +#define LCD_LINES 2 //< number of visible lines of the display +#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display + +#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode + +#if LCD_IO_MODE +#define LCD_PORT PORTB //< port for the LCD lines +#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 +#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 +#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 +#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 +#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 +#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 +#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 +#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 +#define LCD_RS_PORT LCD_PORT //< port for RS line +#define LCD_RS_PIN 3 //< pin for RS line +#define LCD_RW_PORT LCD_PORT //< port for RW line +#define LCD_RW_PIN 2 //< pin for RW line +#define LCD_E_PORT LCD_PORT //< port for Enable line +#define LCD_E_PIN 1 //< pin for Enable line +#endif +*/ + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/nightmare/info.json b/keyboards/nightmare/info.json new file mode 100644 index 00000000000..14e8ac647c3 --- /dev/null +++ b/keyboards/nightmare/info.json @@ -0,0 +1,534 @@ +{ + "keyboard_name": "Nightmare", + "url": "https://keyhive.xyz/shop/nightmare-pcb-and-case", + "maintainer": "cfbender", + "width": 15.25, + "height": 4, + "layouts": { + "LAYOUT_default": { + "layout": [ + { + "label": "Home", + "x": 0, + "y": 0 + }, + { + "label": "`", + "x": 1.25, + "y": 0 + }, + { + "label": "Q", + "x": 2.25, + "y": 0 + }, + { + "label": "W", + "x": 3.25, + "y": 0 + }, + { + "label": "E", + "x": 4.25, + "y": 0 + }, + { + "label": "R", + "x": 5.25, + "y": 0 + }, + { + "label": "T", + "x": 6.25, + "y": 0 + }, + { + "label": "Y", + "x": 7.25, + "y": 0 + }, + { + "label": "U", + "x": 8.25, + "y": 0 + }, + { + "label": "I", + "x": 9.25, + "y": 0 + }, + { + "label": "O", + "x": 10.25, + "y": 0 + }, + { + "label": "P", + "x": 11.25, + "y": 0 + }, + { + "label": "{", + "x": 12.25, + "y": 0 + }, + { + "label": "}", + "x": 13.25, + "y": 0 + }, + { + "label": "Bspc", + "x": 14.25, + "y": 0 + }, + { + "label": "End", + "x": 0, + "y": 1 + }, + { + "label": "Tab", + "x": 1.25, + "y": 1, + "w": 1.25 + }, + { + "label": "A", + "x": 2.5, + "y": 1 + }, + { + "label": "S", + "x": 3.5, + "y": 1 + }, + { + "label": "D", + "x": 4.5, + "y": 1 + }, + { + "label": "F", + "x": 5.5, + "y": 1 + }, + { + "label": "G", + "x": 6.5, + "y": 1 + }, + { + "label": "H", + "x": 7.5, + "y": 1 + }, + { + "label": "J", + "x": 8.5, + "y": 1 + }, + { + "label": "K", + "x": 9.5, + "y": 1 + }, + { + "label": "L", + "x": 10.5, + "y": 1 + }, + { + "label": ":", + "x": 11.5, + "y": 1 + }, + { + "label": "\"", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.5, + "y": 1, + "w": 1.75 + }, + { + "label": "PgUp", + "x": 0, + "y": 2 + }, + { + "label": "Shift", + "x": 1.25, + "y": 2, + "w": 1.75 + }, + { + "label": "Z", + "x": 3, + "y": 2 + }, + { + "label": "X", + "x": 4, + "y": 2 + }, + { + "label": "C", + "x": 5, + "y": 2 + }, + { + "label": "V", + "x": 6, + "y": 2 + }, + { + "label": "B", + "x": 7, + "y": 2 + }, + { + "label": "N", + "x": 8, + "y": 2 + }, + { + "label": "M", + "x": 9, + "y": 2 + }, + { + "label": "<", + "x": 10, + "y": 2 + }, + { + "label": "<", + "x": 11, + "y": 2 + }, + { + "label": "?", + "x": 12, + "y": 2 + }, + { + "label": "Shift", + "x": 13, + "y": 2, + "w": 1.25 + }, + { + "label": "MO(1)", + "x": 14.25, + "y": 2 + }, + { + "label": "PgDn", + "x": 0, + "y": 3 + }, + { + "label": "GUI", + "x": 2.5, + "y": 3 + }, + { + "label": "Ctrl", + "x": 3.5, + "y": 3, + "w": 1.25 + }, + { + "x": 4.75, + "y": 3, + "w": 7 + }, + { + "label": "Ctrl", + "x": 11.75, + "y": 3, + "w": 1.25 + }, + { + "label": "MO(2)", + "x": 13, + "y": 3 + } + ] + }, + "LAYOUT_split": { + "layout": [ + { + "label": "Home", + "x": 0, + "y": 0 + }, + { + "label": "`", + "x": 1.25, + "y": 0 + }, + { + "label": "Q", + "x": 2.25, + "y": 0 + }, + { + "label": "W", + "x": 3.25, + "y": 0 + }, + { + "label": "E", + "x": 4.25, + "y": 0 + }, + { + "label": "R", + "x": 5.25, + "y": 0 + }, + { + "label": "T", + "x": 6.25, + "y": 0 + }, + { + "label": "Y", + "x": 7.25, + "y": 0 + }, + { + "label": "U", + "x": 8.25, + "y": 0 + }, + { + "label": "I", + "x": 9.25, + "y": 0 + }, + { + "label": "O", + "x": 10.25, + "y": 0 + }, + { + "label": "P", + "x": 11.25, + "y": 0 + }, + { + "label": "{", + "x": 12.25, + "y": 0 + }, + { + "label": "}", + "x": 13.25, + "y": 0 + }, + { + "label": "Bspc", + "x": 14.25, + "y": 0 + }, + { + "label": "End", + "x": 0, + "y": 1 + }, + { + "label": "Tab", + "x": 1.25, + "y": 1, + "w": 1.25 + }, + { + "label": "A", + "x": 2.5, + "y": 1 + }, + { + "label": "S", + "x": 3.5, + "y": 1 + }, + { + "label": "D", + "x": 4.5, + "y": 1 + }, + { + "label": "F", + "x": 5.5, + "y": 1 + }, + { + "label": "G", + "x": 6.5, + "y": 1 + }, + { + "label": "H", + "x": 7.5, + "y": 1 + }, + { + "label": "J", + "x": 8.5, + "y": 1 + }, + { + "label": "K", + "x": 9.5, + "y": 1 + }, + { + "label": "L", + "x": 10.5, + "y": 1 + }, + { + "label": ":", + "x": 11.5, + "y": 1 + }, + { + "label": "\"", + "x": 12.5, + "y": 1 + }, + { + "label": "Enter", + "x": 13.5, + "y": 1, + "w": 1.75 + }, + { + "label": "PgUp", + "x": 0, + "y": 2 + }, + { + "label": "Shift", + "x": 1.25, + "y": 2, + "w": 1.75 + }, + { + "label": "Z", + "x": 3, + "y": 2 + }, + { + "label": "X", + "x": 4, + "y": 2 + }, + { + "label": "C", + "x": 5, + "y": 2 + }, + { + "label": "V", + "x": 6, + "y": 2 + }, + { + "label": "B", + "x": 7, + "y": 2 + }, + { + "label": "N", + "x": 8, + "y": 2 + }, + { + "label": "M", + "x": 9, + "y": 2 + }, + { + "label": "<", + "x": 10, + "y": 2 + }, + { + "label": "<", + "x": 11, + "y": 2 + }, + { + "label": "?", + "x": 12, + "y": 2 + }, + { + "label": "Shift", + "x": 13, + "y": 2, + "w": 1.25 + }, + { + "label": "MO(1)", + "x": 14.25, + "y": 2 + }, + { + "label": "PgDn", + "x": 0, + "y": 3 + }, + { + "label": "GUI", + "x": 2.5, + "y": 3 + }, + { + "label": "Ctrl", + "x": 3.5, + "y": 3, + "w": 1.25 + }, + { + "label": "Alt", + "x": 4.75, + "y": 3 + }, + { + "x": 5.75, + "y": 3, + "w": 2.25 + }, + { + "x": 8, + "y": 3, + "w": 2.75 + }, + { + "label": "RGUI", + "x": 10.75, + "y": 3 + }, + { + "label": "Ctrl", + "x": 11.75, + "y": 3, + "w": 1.25 + }, + { + "label": "MO(2)", + "x": 13, + "y": 3 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/nightmare/keymaps/default/config.h b/keyboards/nightmare/keymaps/default/config.h new file mode 100644 index 00000000000..c3addafcc29 --- /dev/null +++ b/keyboards/nightmare/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 cfbender + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/nightmare/keymaps/default/keymap.c b/keyboards/nightmare/keymaps/default/keymap.c new file mode 100644 index 00000000000..dd8896cefcd --- /dev/null +++ b/keyboards/nightmare/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2019 cfbender + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#define OPT_TAB LCTL_T(KC_TAB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split(/* Base */ + KC_HOME, KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_END, OPT_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_ENTER, + KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_PGDN, KC_LGUI, KC_LALT, KC_LALT, KC_SPACE, KC_SPACE, KC_RGUI, KC_RCTL, MO(2)), + + [1] = LAYOUT_split( + KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_split( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; + diff --git a/keyboards/nightmare/keymaps/default/readme.md b/keyboards/nightmare/keymaps/default/readme.md new file mode 100644 index 00000000000..b044730cf57 --- /dev/null +++ b/keyboards/nightmare/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for nightmare + +![Default Layout](https://imgur.com/G0Hh7F3.png) \ No newline at end of file diff --git a/keyboards/nightmare/nightmare.c b/keyboards/nightmare/nightmare.c new file mode 100644 index 00000000000..ee0f5fc2e1c --- /dev/null +++ b/keyboards/nightmare/nightmare.c @@ -0,0 +1,51 @@ +/* Copyright 2019 cfbender + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "nightmare.h" + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +/* + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} + +*/ diff --git a/keyboards/nightmare/nightmare.h b/keyboards/nightmare/nightmare.h new file mode 100644 index 00000000000..017e3494e0a --- /dev/null +++ b/keyboards/nightmare/nightmare.h @@ -0,0 +1,51 @@ +/* Copyright 2019 cfbender + * + * 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 distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_default( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k113, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k313, \ + k300, k301, k302, k307, k311, k312 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \ + { k300, k301, k302, KC_NO, KC_NO, KC_NO, KC_NO, k307, KC_NO, KC_NO, KC_NO, k311, k312, k313 } \ +} + + +#define LAYOUT_split( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k113, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k313, \ + k300, k301, k302, k304, k305, k307, k309, k311, k312 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \ + { k300, k301, k302, KC_NO, k304, k305, KC_NO, k307, KC_NO, k309, KC_NO, k311, k312, k313 } \ +} diff --git a/keyboards/nightmare/readme.md b/keyboards/nightmare/readme.md new file mode 100644 index 00000000000..9e53ac5a927 --- /dev/null +++ b/keyboards/nightmare/readme.md @@ -0,0 +1,15 @@ +# Crossed Keys Nightmare + +![Crossed Keys Nightmare](https://i.imgur.com/JiKtPzL.png) + +A 50% pseudo-TMO50 clone with an adjusted bottom row, designed on the cheap with a Pro Micro and 3D Printed case. + +Keyboard Maintainer: [cfbender](https://github.com/cfbender) +Hardware Supported: Nightmare case and PCB +Hardware Availability: [Github](https://github.com/cfbender/keyboards/tree/master/nightmare) + +Make example for this keyboard (after setting up your build environment): + + make nightmare:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/nightmare/rules.mk b/keyboards/nightmare/rules.mk new file mode 100644 index 00000000000..d33c542a5dc --- /dev/null +++ b/keyboards/nightmare/rules.mk @@ -0,0 +1,44 @@ +# MCU name +MCU = atmega32u4 + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = atmel-dfu + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) From ff854565ce012a325ad04b09a7bcb7c8bb9d43c5 Mon Sep 17 00:00:00 2001 From: Jonas Avellana <14019120+ninjonas@users.noreply.github.com> Date: Wed, 25 Sep 2019 22:28:06 -0600 Subject: [PATCH 68/72] [Keymap] ninjonas keymap for crkbd & ninjonas userspace updates (#6797) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [keymap(crkbd)] introducing crkbd keymap on ninjonas profile * [keymap(crkbd)] introducing crkbd keymap on ninjonas profile * [refactor(crkbd)] reducing file size by selecting RGB animations * [refactor(crkbd)] added shiftit key * [refactor(crkbd)] added shiftit key * [chore(crkbd)] adding SLEEP_LED_ENABLE on rules.mk * [refactor(crkbd)] added keylog & removed static rainbow RGB * [feat(crkbd)] introduced em-dash '—' keymap * [feat(crkbd)] added screenshot functionality * [refactor(lily58,pinky3)] moving media keys * [refactor(lily58)] Added emdash key * [chore] removing NUMBERS & FUNCTIONS layers as they're useless * [chore] removing NUMBERS & FUNCTIONS layers as they're useless * [chore(crkbd,lily48)] Updating README.md * [feat] added K_LAPP & K_RAPP to mimic command + tab * [feat] added K_LAPP & K_RAPP to mimic command + tab * [fix(#6797)] resolving changes requested by @drashna * [fix(#6797)] first cut on using QMK OLED Driver * [fix(#6797)] cleaning up rules.mk * [fix(#6797)] making scrolling logo work * [fix(#6797)] Using OLED Driver for Lily58 * [fix(#6797)] Moved OLED driver implementation to ninjonas userspace * [fix(#6797)] Bringing back crkbd & lily58 logos * [fix(#6797)] Turning off OLED based off @drashna's workaround in #5982 * [fix(#6797)] whoops! forgot to checkin crkbd/config.h * [fix(#6797)] fixing issue with OLED randomly turning on * [fix(#6797)] using default glcdfont.c for lily58 & crkbd * [fix(#6797)] Using LINK_TIME_OPTIMIZATION_ENABLE rather than EXTRAFLAGS as per code review * [fix(#6797)] updating M_MALL macro as per code review by @fauxpark --- keyboards/crkbd/keymaps/ninjonas/README.md | 99 +++++++++++++++++++ keyboards/crkbd/keymaps/ninjonas/config.h | 48 +++++++++ keyboards/crkbd/keymaps/ninjonas/keymap.c | 89 +++++++++++++++++ keyboards/crkbd/keymaps/ninjonas/rgb.c | 27 +++++ keyboards/crkbd/keymaps/ninjonas/rules.mk | 11 +++ keyboards/hotdox/keymaps/ninjonas/keymap.c | 2 +- keyboards/lily58/keymaps/ninjonas/README.md | 6 +- keyboards/lily58/keymaps/ninjonas/config.h | 6 +- keyboards/lily58/keymaps/ninjonas/keymap.c | 26 ++--- .../keymaps/ninjonas/layer_state_reader.c | 37 ------- keyboards/lily58/keymaps/ninjonas/rules.mk | 6 +- keyboards/pinky/3/keymaps/ninjonas/README.md | 43 ++------ keyboards/pinky/3/keymaps/ninjonas/keymap.c | 90 +++++++---------- keyboards/pinky/3/keymaps/ninjonas/rules.mk | 2 + users/ninjonas/README.md | 24 +++-- users/ninjonas/ninjonas.c | 50 +--------- users/ninjonas/ninjonas.h | 16 ++- users/ninjonas/oled.c | 82 +++++++++++++++ users/ninjonas/process_records.c | 16 ++- users/ninjonas/process_records.h | 1 + users/ninjonas/rules.mk | 9 +- 21 files changed, 460 insertions(+), 230 deletions(-) create mode 100644 keyboards/crkbd/keymaps/ninjonas/README.md create mode 100644 keyboards/crkbd/keymaps/ninjonas/config.h create mode 100644 keyboards/crkbd/keymaps/ninjonas/keymap.c create mode 100644 keyboards/crkbd/keymaps/ninjonas/rgb.c create mode 100644 keyboards/crkbd/keymaps/ninjonas/rules.mk delete mode 100644 keyboards/lily58/keymaps/ninjonas/layer_state_reader.c create mode 100644 keyboards/pinky/3/keymaps/ninjonas/rules.mk create mode 100644 users/ninjonas/oled.c diff --git a/keyboards/crkbd/keymaps/ninjonas/README.md b/keyboards/crkbd/keymaps/ninjonas/README.md new file mode 100644 index 00000000000..24889a221d5 --- /dev/null +++ b/keyboards/crkbd/keymaps/ninjonas/README.md @@ -0,0 +1,99 @@ +# ninjonas Keymap for [Corne Keyboard (crkbd)](https://github.com/foostan/crkbd) + +## Keymap +This keymap is designed based off my typing habits and is subject to change. Information about custom user macros and tap dances can be found [here](../../../../users/ninjonas). + +More information about the crkbd keyboard can be found [here](https://thomasbaart.nl/2018/11/26/corne-keyboard-helidox-build-log/) + +### QWERTY +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // Tab, Q, W, E, R, T, Y, U, I, O, P, \ + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // ESC, A, S, D, F, G, H, J, K, L, ;, ' + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // LShift, Z, X, C, V, B, N, M, ,, ., /, = + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , Ctrl, Space, Enter, BackSP, Del + //`---------------------' `---------------------' +``` + +### DVORAK +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // Tab, ', ,, ., P, Y, F, G, C, R, L, \ + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // ESC, A, O, E, U, I, D, H, T, N, S, / + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // LShift, ;, Q, J, K, X, B, M, W, V, Z, = + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , Ctrl, Space, Enter, BackSP, Del + //`---------------------' `---------------------' +``` + +### COLEMAK +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // Tab, Q, W, F, P, G, J, L, U, Y, ;, \ + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // ESC, A, R, S, T, D, H, N, E, I, O, ' + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // LShift, Z, X, C, V, B, K, M, ,, ., /, = + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , Ctrl, Space, Enter, BackSP, Del + //`---------------------' `---------------------' +``` + +### LOWER +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // , , KC_BRIU, Play, Mute, K_CSCN, PgUp, Home, Up, End, , K_MDSH + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , , KC_BRID, Next, VolUp, , PgDn, Left, Down, Right, K_LOCK, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , , , Prev, VolDn, [, ], , , M_CODE, M_ZOOM, M_PYNV, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , , , , , + //`---------------------' `---------------------' +``` + +### RAISE +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // `, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, - + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // ~, !, @, #, $, %, ^, &, *, (, ), _ + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // F11, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F12 + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , , , , , + //`---------------------' `---------------------' +``` + +### ADJUST +```c + //,----------------------------------------------------. ,----------------------------------------------------. + // M_MAKE, EEP_RST, , , , , RGB_TOG, , , COLEMAK, DVORAK, QWERTY, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // M_VRSN, M_MALL, , RGB_SAI, RGB_HUI, RGB_VAI, , , , , , , + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // M_FLSH, , , RGB_SAD, RGB_HUD, RGB_VAD, RGB_M_P, RGB_M_B,RGB_M_SW, , , , + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + // , , , , , + //`---------------------' `---------------------' +``` + + \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h new file mode 100644 index 00000000000..ef7ff6c5568 --- /dev/null +++ b/keyboards/crkbd/keymaps/ninjonas/config.h @@ -0,0 +1,48 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +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 distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define USE_SERIAL_PD2 + +#define TAPPING_FORCE_HOLD + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + #undef RGBLIGHT_ANIMATIONS // https://docs.qmk.fm/#/feature_rgblight?id=effect-and-animation-toggles + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLED_NUM 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" +#define OLED_DISABLE_TIMEOUT \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/ninjonas/keymap.c b/keyboards/crkbd/keymaps/ninjonas/keymap.c new file mode 100644 index 00000000000..6d19345c44e --- /dev/null +++ b/keyboards/crkbd/keymaps/ninjonas/keymap.c @@ -0,0 +1,89 @@ +#include QMK_KEYBOARD_H +#include "ninjonas.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_wrapper( + //,----------------------------------------------------. ,----------------------------------------------------. + _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________QWERTY_L3______________________, _____________________QWERTY_R3______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + T_GUI, KC_LCTL,LT_RAI, LT_LOW,KC_BSPC,KC_DEL + //`---------------------' `---------------------' + ), + + [_DVORAK] = LAYOUT_wrapper( + //,----------------------------------------------------. ,----------------------------------------------------. + _____________________DVORAK_L1______________________, _____________________DVORAK_R1______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________DVORAK_L2______________________, _____________________DVORAK_R2______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________DVORAK_L3______________________, _____________________DVORAK_R3______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + T_GUI, KC_LCTL,LT_RAI, LT_LOW,KC_BSPC,KC_DEL + //`---------------------' `---------------------' + ), + + [_COLEMAK] = LAYOUT_wrapper( + //,----------------------------------------------------. ,----------------------------------------------------. + _____________________COLEMAK_L1_____________________, _____________________COLEMAK_R1_____________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________COLEMAK_L2_____________________, _____________________COLEMAK_R2_____________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________COLEMAK_L3_____________________, _____________________COLEMAK_R3_____________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + T_GUI, KC_LCTL,LT_RAI, LT_LOW,KC_BSPC,KC_DEL + //`---------------------' `---------------------' + ), + + [_LOWER] = LAYOUT_wrapper( + //,----------------------------------------------------. ,----------------------------------------------------. + XXXXXXX, XXXXXXX, _________MEDIA_1_________, K_CSCN, _______________NAV_1______________, XXXXXXX, K_MDSH, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + XXXXXXX, XXXXXXX, _________MEDIA_2_________, XXXXXXX, _______________NAV_2______________, K_LOCK, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _______, M_SHFT, _________MEDIA_3_________, T_LBRC, T_RBRC, _______, XXXXXXX, M_CODE, M_ZOOM, M_PYNV, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _______,_______,_______, _______,_______,_______ + //`---------------------' `---------------------' + ), + + [_RAISE] = LAYOUT_wrapper( \ + //,----------------------------------------------------. ,----------------------------------------------------. + _____________________NUM_LEFT_______________________, _____________________NUM_RIGHT______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________SYM_LEFT_______________________, _____________________SYM_RIGHT______________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _____________________FUNC_LEFT______________________, _____________________FUNC_RIGHT_____________________, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _______,_______,_______, _______,_______,_______ + //`---------------------' `---------------------' + ), + + [_ADJUST] = LAYOUT_wrapper( \ + //,----------------------------------------------------. ,----------------------------------------------------. + M_MAKE, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, COLEMAK, DVORAK, QWERTY, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + M_VRSN, M_MALL, XXXXXXX, RGB_SAI, RGB_HUI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + M_FLSH, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_VAD, RGB_M_P, RGB_M_B,RGB_M_SW, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _______,_______,_______, _______,_______,_______ + //`---------------------' `---------------------' + ), +/* + [_TEMPLATE] = LAYOUT_wrapper( \ + //,----------------------------------------------------. ,----------------------------------------------------. + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| + _______,_______,_______, _______,_______,_______ + //`---------------------' `---------------------' + ), +*/ +}; \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/ninjonas/rgb.c b/keyboards/crkbd/keymaps/ninjonas/rgb.c new file mode 100644 index 00000000000..f9ac3a86109 --- /dev/null +++ b/keyboards/crkbd/keymaps/ninjonas/rgb.c @@ -0,0 +1,27 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +#ifdef RGBLIGHT_ENABLE +//Following line allows macro to read current RGB settings +extern rgblight_config_t rgblight_config; +#endif + +extern uint8_t is_master; + +int RGB_current_mode; + +// Setting ADJUST layer RGB back to default +void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} + +void keyboard_post_init_user(void) { + #ifdef RGBLIGHT_ENABLE + RGB_current_mode = rgblight_config.mode; + #endif +} \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/ninjonas/rules.mk b/keyboards/crkbd/keymaps/ninjonas/rules.mk new file mode 100644 index 00000000000..92e18ed6e2a --- /dev/null +++ b/keyboards/crkbd/keymaps/ninjonas/rules.mk @@ -0,0 +1,11 @@ +RGBLIGHT_ENABLE = yes +MOUSEKEY_ENABLE = no +OLED_DRIVER_ENABLE = yes +LINK_TIME_OPTIMIZATION_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + rgb.c diff --git a/keyboards/hotdox/keymaps/ninjonas/keymap.c b/keyboards/hotdox/keymaps/ninjonas/keymap.c index 603cc4c11ed..248a4320a14 100644 --- a/keyboards/hotdox/keymaps/ninjonas/keymap.c +++ b/keyboards/hotdox/keymaps/ninjonas/keymap.c @@ -277,7 +277,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //LEFT HAND XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - M_VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, // LEFT THUMB diff --git a/keyboards/lily58/keymaps/ninjonas/README.md b/keyboards/lily58/keymaps/ninjonas/README.md index 73f7f9d9425..ef6322db4dd 100644 --- a/keyboards/lily58/keymaps/ninjonas/README.md +++ b/keyboards/lily58/keymaps/ninjonas/README.md @@ -67,11 +67,11 @@ More information about the Lily58 pro keyboard can be found [here](https://yuchi * ,------------------------------------------. ,------------------------------------------. * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 | * |------+------+------+-------+------+------| |------+------+------+------+-------+------| - * | | | |KC_BRIU| Play | Mute | | PgUp | Home | Up | End | | | + * | | |KC_BRIU| Play | Mute | | | PgUp | Home | Up | End | |K_MDSH| * |------+------+------+-------+------+------| |------+------+------+------+-------+------| - * | | | |KC_BRID| Next |VolUp |-------. ,-------| PgDn | Left | Down |Right |K_LOCK | | + * | | |KC_BRID| Next |VolUp | |-------. ,-------| PgDn | Left | Down |Right |K_LOCK | | * |------+------+------+-------+------+------| | | |------+------+------+------+-------+------| - * | |M_SHFT| | | Prev |VolDn |-------| |-------| | | | |M_ZOOM |M_PYNV| + * |M_SHFT| | | Prev |VolDn | |-------| |-------| | | | |M_ZOOM |M_PYNV| * `------------------------------------------/ / \ \------------------------------------------' * | | | | / / \ \ | |M_CODE| | * | | | |/ / \ \ | | | | diff --git a/keyboards/lily58/keymaps/ninjonas/config.h b/keyboards/lily58/keymaps/ninjonas/config.h index 7a5587d5601..19fb5cd92b8 100644 --- a/keyboards/lily58/keymaps/ninjonas/config.h +++ b/keyboards/lily58/keymaps/ninjonas/config.h @@ -26,6 +26,8 @@ along with this program. If not, see . // #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED #define USE_SERIAL_PD2 -#define TAPPING_FORCE_HOLD \ No newline at end of file +#define TAPPING_FORCE_HOLD + +#define OLED_FONT_H "keyboards/lily58/lib/glcdfont.c" +#define OLED_DISABLE_TIMEOUT \ No newline at end of file diff --git a/keyboards/lily58/keymaps/ninjonas/keymap.c b/keyboards/lily58/keymaps/ninjonas/keymap.c index 81436aee3ea..5ef607564e8 100644 --- a/keyboards/lily58/keymaps/ninjonas/keymap.c +++ b/keyboards/lily58/keymaps/ninjonas/keymap.c @@ -88,11 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------------------------------------------. ,------------------------------------------. * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 | * |------+------+------+-------+------+------| |------+------+------+------+-------+------| - * | | | |KC_BRIU| Play | Mute | | PgUp | Home | Up | End | | | + * | | |KC_BRIU| Play | Mute | | | PgUp | Home | Up | End | |K_MDSH| * |------+------+------+-------+------+------| |------+------+------+------+-------+------| - * | | | |KC_BRID| Next |VolUp |-------. ,-------| PgDn | Left | Down |Right |K_LOCK | | + * | | |KC_BRID| Next |VolUp | |-------. ,-------| PgDn | Left | Down |Right |K_LOCK | | * |------+------+------+-------+------+------| | | |------+------+------+------+-------+------| - * |M_SHFT| | | | Prev |VolDn |-------| |-------| | | | |M_ZOOM |M_PYNV| + * |M_SHFT| | | Prev |VolDn | |-------| |-------| | | | |M_ZOOM |M_PYNV| * `------------------------------------------/ / \ \------------------------------------------' * | | | | / / \ \ | |M_CODE| | * | | | |/ / \ \ | | | | @@ -100,9 +100,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = LAYOUT_wrapper( \ _____________________FUNC_LEFT______________________, _____________________FUNC_RIGHT_____________________, \ - _______, _______, _______, _________MEDIA_1_________, _______________NAV_1______________, _______, _______, \ - _______, _______, _______, _________MEDIA_2_________, _______________NAV_2______________, K_LOCK, _______, \ - M_SHFT, _______, _______, _________MEDIA_3_________, _______, _______, _______, _______, _______, _______, M_ZOOM, M_PYNV, \ + _______, _______, _________MEDIA_1_________, _______, _______________NAV_1______________, _______, K_MDSH, \ + _______, _______, _________MEDIA_2_________, _______, _______________NAV_2______________, K_LOCK, _______, \ + M_SHFT, _______, _________MEDIA_3_________, _______, _______, _______, _______, _______, _______, _______, M_ZOOM, M_PYNV, \ __________________________________, _______, _______, M_CODE, _______ \ ), @@ -132,20 +132,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,------------------------------------------. ,-----------------------------------------. * |EEP_RST| | | | | | | | | |COLMAK|DVORAK|QWERTY| * |-------+------+------+------+------+------| |------+------+------+------+------+------| - * | M_MAKE| | | | | | | | | | | | | + * |M_MAKE | | | | | | | | | | | | | * |-------+------+------+------+------+------| |------+------+------+------+------+------| - * | M_VRSN| | | | | |-------. ,-------| | | | | | | + * |M_VRSN |M_MALL| | | | |-------. ,-------| | | | | | | * |-------+------+------+------+------+------| | | |------+------+------+------+------+------| - * | M_FLSH| | | | | |-------| |-------| | | | | | | + * |M_FLSH | | | | | |-------| |-------| | | | | | | * `------------------------------------------/ / \ \-----------------------------------------' - * | | | | / / \ \ | | | | - * | | | |/ / \ \ | | | | - * `----------------------------' '------''--------------------' + * | | | | / / \ \ | | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' */ [_ADJUST] = LAYOUT_wrapper( \ EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, DVORAK, QWERTY, \ M_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - M_VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + M_VRSN, M_MALL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ M_FLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\ __________________________________, __________________________________ \ ), diff --git a/keyboards/lily58/keymaps/ninjonas/layer_state_reader.c b/keyboards/lily58/keymaps/ninjonas/layer_state_reader.c deleted file mode 100644 index 883eaca036e..00000000000 --- a/keyboards/lily58/keymaps/ninjonas/layer_state_reader.c +++ /dev/null @@ -1,37 +0,0 @@ -#include QMK_KEYBOARD_H -#include -#include "lily58.h" -#include "ninjonas.h" - -char layer_state_str[24]; - -const char *read_layer_state(void) { - switch (biton32(layer_state)) - { - case _RAISE: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise"); - break; - case _LOWER: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower"); - break; - case _ADJUST: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust"); - break; - default: - switch (biton32(default_layer_state)) { - case _COLEMAK: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak"); - break; - case _DVORAK: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak"); - break; - case _QWERTY: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty"); - break; - default: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state); - } - } - - return layer_state_str; -} \ No newline at end of file diff --git a/keyboards/lily58/keymaps/ninjonas/rules.mk b/keyboards/lily58/keymaps/ninjonas/rules.mk index 4ea023572f7..c582662134c 100644 --- a/keyboards/lily58/keymaps/ninjonas/rules.mk +++ b/keyboards/lily58/keymaps/ninjonas/rules.mk @@ -1,5 +1 @@ -# If you want to change the display of OLED, you need to change here -SRC += ./lib/glcdfont.c \ - layer_state_reader.c \ - ./lib/logo_reader.c \ - ./lib/keylogger.c \ +OLED_DRIVER_ENABLE = yes diff --git a/keyboards/pinky/3/keymaps/ninjonas/README.md b/keyboards/pinky/3/keymaps/ninjonas/README.md index 8db995d4eba..4546b164c77 100644 --- a/keyboards/pinky/3/keymaps/ninjonas/README.md +++ b/keyboards/pinky/3/keymaps/ninjonas/README.md @@ -15,7 +15,7 @@ More information about the Pinky3 keyboard can be found [here](https://github.co |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| | Shift| Z| X| C| V| B| Spc/RAI| | Ent/LOW| N| M| ,| .| /| =| `---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' - | ALT| | CTRL| Spc/NUM| | Ent/FUNC| BckSpace| Del| LOWER| + | ALT| | CTRL| KC_LAPP| | KC_RAPP| BckSpace| Del| LOWER| `---------------------------------------' `---------------------------------------' */ ``` @@ -30,7 +30,7 @@ More information about the Pinky3 keyboard can be found [here](https://github.co |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| | Shift| ;| Q| J| K| X| Spc/RAI| | Ent/LOW| B| M| W| V| Z| =| `---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' - | ALT| | CTRL| Spc/NUM| | Ent/FUNC| BckSpace| Del| LOWER| + | ALT| | CTRL| KC_LAPP| | KC_RAPP| BckSpace| Del| LOWER| `---------------------------------------' `---------------------------------------' */ ``` @@ -45,7 +45,7 @@ More information about the Pinky3 keyboard can be found [here](https://github.co |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| | Shift| Z| X| C| V| B| Spc/RAI| | Ent/LOW| K| M| ,| .| /| =| `---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' - | ALT| | CTRL| Spc/NUM| | Ent/FUNC| BckSpace| Del| LOWER| + | ALT| | CTRL| KC_LAPP| | KC_RAPP| BckSpace| Del| LOWER| `---------------------------------------' `---------------------------------------' */ ``` @@ -54,7 +54,7 @@ More information about the Pinky3 keyboard can be found [here](https://github.co ```c /* ,---------------------------------------------------------------------. ,---------------------------------------------------------------------. -| | | | BriUp| Play| Mute| K_CSCN| | | PgUp| Home| Up| End| | | +| | | | BriUp| Play| Mute| K_CSCN| | | PgUp| Home| Up| End| | K_MDSH| |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| | | | | BriDn| Next| VolUp| | | | PgDn| Left| Down| Right| K_LOCK| | |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| @@ -69,11 +69,11 @@ More information about the Pinky3 keyboard can be found [here](https://github.co ```c /* ,---------------------------------------------------------------------. ,---------------------------------------------------------------------. -| | | MS_1| MS_U| MS_2| WH_U| | | | | | | | | | +| `| 1| 2| 3| 4| 5| | | | 6| 7| 8| 9| 0| -| |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| | | MS_L| MS_D| MS_R| WH_D| | | | | | | | | | +| ~| !| @| #| $| %| | | | ^| &| *| (| )| _| |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| | | | | | | | | | | | | | | | +| F11| F2| F3| F4| F4| F5| | | | F6| F7| F8| F9| F10| F12| `---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' | | | | | | | | | | `---------------------------------------' `---------------------------------------' @@ -95,35 +95,6 @@ More information about the Pinky3 keyboard can be found [here](https://github.co */ ``` -### NUMBERS -```c -/* -,---------------------------------------------------------------------. ,---------------------------------------------------------------------. -| `| 1| 2| 3| 4| 5| | | | 6| 7| 8| 9| 0| -| -|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| ~| !| @| #| $| %| | | | ^| &| *| (| )| _| -|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| | | | | | | | | | | | | | | | -`---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' - | | | | | | | | | | - `---------------------------------------' `---------------------------------------' -*/ -``` - -### FUNCTIONS -```c -/* -,---------------------------------------------------------------------. ,---------------------------------------------------------------------. -| F11| F2| F3| F4| F4| F5| | | | F6| F7| F8| F9| F10| F12| -|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| | | | | | | | | | | | | | | | -|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| -| | | | | | | | | | | | | | | | -`---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------' - | | | | | | | | | | - `---------------------------------------' `---------------------------------------' -*/ -```