diff options
125 files changed, 1630 insertions, 1867 deletions
| @@ -29,6 +29,13 @@ $(info QMK Firmware $(QMK_VERSION))  endif  endif +# Determine which qmk cli to use +ifeq (,$(shell which qmk)) +    QMK_BIN = bin/qmk +else +    QMK_BIN = qmk +endif +  # avoid 'Entering|Leaving directory' messages  MAKEFLAGS += --no-print-directory @@ -384,7 +391,7 @@ define PARSE_KEYMAP      # Format it in bold      KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)      # Specify the variables that we are passing forward to submake -    MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) +    MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) QMK_BIN=$$(QMK_BIN)      # And the first part of the make command      MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)      # The message to display @@ -501,8 +508,8 @@ endef  %:  	# Check if we have the CMP tool installed  	cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; -	# Ensure that bin/qmk works. -	if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi +	# Ensure that $(QMK_BIN) works. +	if ! $(QMK_BIN) hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi  	# Check if the submodules are dirty, and display a warning if they are  ifndef SKIP_GIT  	if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi @@ -73,8 +73,11 @@ def main():      """      # Change to the root of our checkout      os.environ['ORIG_CWD'] = os.getcwd() +    os.environ['DEPRECATED_BIN_QMK'] = '1'      os.chdir(qmk_dir) +    print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr) +      # Import the subcommands      import qmk.cli  # noqa diff --git a/build_json.mk b/build_json.mk index 6e2f9c4c8f..8822be6a12 100644 --- a/build_json.mk +++ b/build_json.mk @@ -28,4 +28,4 @@ endif  # Generate the keymap.c  $(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) -	bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) +	$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) diff --git a/build_keyboard.mk b/build_keyboard.mk index 366d1f5d2f..74046a0947 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -12,6 +12,9 @@ endif  include common.mk +# Set the qmk cli to use +QMK_BIN ?= qmk +  # Set the filename for the final firmware binary  KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))  TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) @@ -97,7 +100,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)  MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)  # Pull in rules from info.json -INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) +INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)  include $(INFO_RULES_MK)  # Check for keymap.json first, so we can regenerate keymap.c @@ -294,10 +297,10 @@ endif  CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h  $(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES) -	bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h +	$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h  $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES) -	bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h +	$(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h  generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h diff --git a/common_features.mk b/common_features.mk index 8c9d0a90c7..2e2991c648 100644 --- a/common_features.mk +++ b/common_features.mk @@ -223,14 +223,16 @@ VALID_LED_MATRIX_TYPES := IS31FL3731 custom  ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)      ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),) -        $(error LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type) -    else -        BACKLIGHT_ENABLE = yes -        BACKLIGHT_DRIVER = custom -        OPT_DEFS += -DLED_MATRIX_ENABLE -        SRC += $(QUANTUM_DIR)/led_matrix.c -        SRC += $(QUANTUM_DIR)/led_matrix_drivers.c +        $(error "$(LED_MATRIX_DRIVER)" is not a valid matrix type)      endif +    OPT_DEFS += -DLED_MATRIX_ENABLE +ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) +    # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines +    OPT_DEFS += -DLIB8_ATTINY +endif +    SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c +    SRC += $(QUANTUM_DIR)/led_matrix.c +    SRC += $(QUANTUM_DIR)/led_matrix_drivers.c      ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731)          OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE @@ -422,10 +424,6 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes)      OPT_DEFS += -DUSER_PRINT  endif -ifeq ($(strip $(USB_HID_ENABLE)), yes) -    include $(TMK_DIR)/protocol/usb_hid.mk -endif -  ifeq ($(strip $(WPM_ENABLE)), yes)      SRC += $(QUANTUM_DIR)/wpm.c      OPT_DEFS += -DWPM_ENABLE @@ -459,6 +457,23 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)      SRC += $(QUANTUM_DIR)/dip_switch.c  endif +VALID_MAGIC_TYPES := yes full lite +BOOTMAGIC_ENABLE ?= no +ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) +  ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),) +    $(error BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic) +  endif +  ifeq ($(strip $(BOOTMAGIC_ENABLE)), lite) +      OPT_DEFS += -DBOOTMAGIC_LITE +      QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c +  else +    OPT_DEFS += -DBOOTMAGIC_ENABLE +    QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_full.c +  endif +endif +COMMON_VPATH += $(QUANTUM_DIR)/bootmagic +QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c +  VALID_CUSTOM_MATRIX_TYPES:= yes lite no  CUSTOM_MATRIX ?= no diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index ec03a8828b..3034242fd9 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -25,7 +25,7 @@          },          "processor": {              "type": "string", -            "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32G431", "STM32G474", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"] +            "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32G431", "STM32G474", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]          },          "board": {              "type": "string", diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 6917de5ab4..a83e1d2a21 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -441,6 +441,8 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo  #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set  #define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set  #define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature) +#define RGB_MATRIX_SPLIT { X, Y } 	// (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right. +                              		// If RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR  ```  ## EEPROM storage :id=eeprom-storage diff --git a/docs/keycodes.md b/docs/keycodes.md index 9acf8b6839..f3c519b130 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -516,6 +516,9 @@ See also: [One Shot Keys](one_shot_keys.md)  |------------|----------------------------------|  |`OSM(mod)`  |Hold `mod` for one keypress       |  |`OSL(layer)`|Switch to `layer` for one keypress| +|`OS_ON`     |Turns One Shot keys on            | +|`OS_OFF`    |Turns One Shot keys off           | +|`OS_TOGG`   |Toggles One Shot keys status      |  ## Space Cadet :id=space-cadet diff --git a/docs/one_shot_keys.md b/docs/one_shot_keys.md index 9a082d7d6d..9fc5486299 100644 --- a/docs/one_shot_keys.md +++ b/docs/one_shot_keys.md @@ -17,6 +17,9 @@ You can control the behavior of one shot keys by defining these in `config.h`:  * `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap.md), not the `KC_*` codes.  * `OSL(layer)` - momentary switch to *layer*. +* `OS_ON` - Turns on One Shot keys. +* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`. +* `ON_TOGG` - Toggles the one shot key status.  Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.   diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index cca6827ec8..e69400364c 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -77,6 +77,25 @@ Configure the hardware via your config.h:  You must also turn on the SPI feature in your halconf.h and mcuconf.h +#### Circular Buffer Mode +Some boards may flicker while in the normal buffer mode. To fix this issue, circular buffer mode may be used to rectify the issue.  + +By default, the circular buffer mode is disabled. + +To enable this alternative buffer mode, place this into your `config.h` file: +```c +#define WS2812_SPI_USE_CIRCULAR_BUFFER +``` + +#### Setting baudrate with divisor +To adjust the baudrate at which the SPI peripheral is configured, users will need to derive the target baudrate from the clock tree provided by STM32CubeMX. + +Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware. + +|Define              |Default|Description                          | +|--------------------|-------|-------------------------------------| +|`WS2812_SPI_DIVISOR`|`16`   |SPI source clock peripheral divisor  | +  #### Testing Notes  While not an exhaustive list, the following table provides the scenarios that have been partially validated: @@ -102,11 +121,14 @@ Configure the hardware via your config.h:  #define WS2812_PWM_DRIVER PWMD2  // default: PWMD2  #define WS2812_PWM_CHANNEL 2  // default: 2  #define WS2812_PWM_PAL_MODE 2  // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 +//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy).  #define WS2812_DMA_STREAM STM32_DMA1_STREAM2  // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.  #define WS2812_DMA_CHANNEL 2  // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.  #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.  ``` +Note that using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (TIM1, TIM8, TIM20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in mcuconf.h must be set to `TRUE`.  Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations. +  You must also turn on the PWM feature in your halconf.h and mcuconf.h  #### Testing Notes diff --git a/drivers/chibios/ws2812_pwm.c b/drivers/chibios/ws2812_pwm.c index 140120d488..e6af55b6b3 100644 --- a/drivers/chibios/ws2812_pwm.c +++ b/drivers/chibios/ws2812_pwm.c @@ -27,6 +27,15 @@  #    error "please consult your MCU's datasheet and specify in your config.h: #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM?_UP"  #endif +#ifndef WS2812_PWM_COMPLEMENTARY_OUTPUT +#    define WS2812_PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH +#else +#    if !STM32_PWM_USE_ADVANCED +#        error "WS2812_PWM_COMPLEMENTARY_OUTPUT requires STM32_PWM_USE_ADVANCED == TRUE" +#    endif +#    define WS2812_PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH +#endif +  // Push Pull or Open Drain Configuration  // Default Push Pull  #ifndef WS2812_EXTERNAL_PULLUP @@ -247,7 +256,7 @@ void ws2812_init(void) {          .channels =              {                  [0 ... 3]                = {.mode = PWM_OUTPUT_DISABLED, .callback = NULL},     // Channels default to disabled -                [WS2812_PWM_CHANNEL - 1] = {.mode = PWM_OUTPUT_ACTIVE_HIGH, .callback = NULL},  // Turn on the channel we care about +                [WS2812_PWM_CHANNEL - 1] = {.mode = WS2812_PWM_OUTPUT_MODE, .callback = NULL},  // Turn on the channel we care about              },          .cr2  = 0,          .dier = TIM_DIER_UDE,  // DMA on update event for next period diff --git a/drivers/chibios/ws2812_spi.c b/drivers/chibios/ws2812_spi.c index 89df2987b5..e02cbabc02 100644 --- a/drivers/chibios/ws2812_spi.c +++ b/drivers/chibios/ws2812_spi.c @@ -32,6 +32,37 @@  #    endif  #endif +// Define SPI config speed +// baudrate should target 3.2MHz +// F072 fpclk = 48MHz +// 48/16 = 3Mhz +#if WS2812_SPI_DIVISOR == 2 +#    define WS2812_SPI_DIVISOR (0) +#elif WS2812_SPI_DIVISOR == 4 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_0) +#elif WS2812_SPI_DIVISOR == 8 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_1) +#elif WS2812_SPI_DIVISOR == 16  // same as default +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) +#elif WS2812_SPI_DIVISOR == 32 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_2) +#elif WS2812_SPI_DIVISOR == 64 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_0) +#elif WS2812_SPI_DIVISOR == 128 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_1) +#elif WS2812_SPI_DIVISOR == 256 +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) +#else +#    define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0)  // default +#endif + +// Use SPI circular buffer +#ifdef WS2812_SPI_USE_CIRCULAR_BUFFER +#    define WS2812_SPI_BUFFER_MODE 1  // circular buffer +#else +#    define WS2812_SPI_BUFFER_MODE 0  // normal buffer +#endif +  #define BYTES_FOR_LED_BYTE 4  #define NB_COLORS 3  #define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS) @@ -81,14 +112,14 @@ void ws2812_init(void) {      palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE);      // TODO: more dynamic baudrate -    static const SPIConfig spicfg = { -        0, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), -        SPI_CR1_BR_1 | SPI_CR1_BR_0  // baudrate : fpclk / 8 => 1tick is 0.32us (2.25 MHz) -    }; +    static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR};      spiAcquireBus(&WS2812_SPI);     /* Acquire ownership of the bus.    */      spiStart(&WS2812_SPI, &spicfg); /* Setup transfer parameters.       */      spiSelect(&WS2812_SPI);         /* Slave Select assertion.          */ +#ifdef WS2812_SPI_USE_CIRCULAR_BUFFER +    spiStartSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); +#endif  }  void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { @@ -104,9 +135,11 @@ void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {      // Send async - each led takes ~0.03ms, 50 leds ~1.5ms, animations flushing faster than send will cause issues.      // Instead spiSend can be used to send synchronously (or the thread logic can be added back). -#ifdef WS2812_SPI_SYNC +#ifndef WS2812_SPI_USE_CIRCULAR_BUFFER +#    ifdef WS2812_SPI_SYNC      spiSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); -#else +#    else      spiStartSend(&WS2812_SPI, sizeof(txbuf) / sizeof(txbuf[0]), txbuf); +#    endif  #endif  } diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index 72ab21247d..00896f01c2 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h @@ -158,6 +158,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #    define OLED_I2C_TIMEOUT 100  #endif +#if !defined(OLED_UPDATE_INTERVAL) && defined(SPLIT_KEYBOARD) +#    define OLED_UPDATE_INTERVAL 50 +#endif +  typedef struct __attribute__((__packed__)) {      uint8_t *current_element;      uint16_t remaining_element_count; diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h index 541f07ee98..dc1bfb71c2 100644 --- a/keyboards/aeboards/ext65/rev2/config.h +++ b/keyboards/aeboards/ext65/rev2/config.h @@ -74,3 +74,5 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define BACKLIGHT_LEVELS 6  #define BACKLIGHT_BREATHING  #define BREATHING_PERIOD 6 + +#define SLEEP_LED_GPT_DRIVER GPTD1 diff --git a/keyboards/aeboards/ext65/rev2/halconf.h b/keyboards/aeboards/ext65/rev2/halconf.h index 6e2f536400..9fa1eca60b 100644 --- a/keyboards/aeboards/ext65/rev2/halconf.h +++ b/keyboards/aeboards/ext65/rev2/halconf.h @@ -27,5 +27,7 @@  #define HAL_USE_SPI TRUE +#define HAL_USE_GPT TRUE +  #include_next <halconf.h> diff --git a/keyboards/aeboards/ext65/rev2/mcuconf.h b/keyboards/aeboards/ext65/rev2/mcuconf.h index 26ce806150..43d53d4f2d 100644 --- a/keyboards/aeboards/ext65/rev2/mcuconf.h +++ b/keyboards/aeboards/ext65/rev2/mcuconf.h @@ -32,3 +32,5 @@  #undef STM32_SPI_USE_SPI2  #define STM32_SPI_USE_SPI2 TRUE +#undef STM32_GPT_USE_TIM1 +#define STM32_GPT_USE_TIM1 TRUE diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk index 8ed2d0ead7..7309744d1e 100644 --- a/keyboards/cannonkeys/an_c/rules.mk +++ b/keyboards/cannonkeys/an_c/rules.mk @@ -11,7 +11,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk index 4d940da78d..a08f2fa49d 100644 --- a/keyboards/cannonkeys/chimera65/rules.mk +++ b/keyboards/cannonkeys/chimera65/rules.mk @@ -11,7 +11,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk index 0973ad9547..e5ba2903b6 100644 --- a/keyboards/cannonkeys/instant60/rules.mk +++ b/keyboards/cannonkeys/instant60/rules.mk @@ -10,7 +10,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk index 3925458dda..9de75a6149 100644 --- a/keyboards/cannonkeys/iron165/rules.mk +++ b/keyboards/cannonkeys/iron165/rules.mk @@ -9,7 +9,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk index e3abea5463..3861b4849f 100644 --- a/keyboards/cannonkeys/satisfaction75/rules.mk +++ b/keyboards/cannonkeys/satisfaction75/rules.mk @@ -15,7 +15,7 @@ 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 = no  # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  ENCODER_ENABLE = yes diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk index 8e1b984fd4..2454573d2f 100644 --- a/keyboards/cannonkeys/savage65/rules.mk +++ b/keyboards/cannonkeys/savage65/rules.mk @@ -11,7 +11,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk index 9b29e8fd17..294c873eec 100644 --- a/keyboards/cannonkeys/tmov2/rules.mk +++ b/keyboards/cannonkeys/tmov2/rules.mk @@ -11,7 +11,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file  BACKLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk index ce881f1986..4e7791a79f 100644 --- a/keyboards/cannonkeys/tsukuyomi/rules.mk +++ b/keyboards/cannonkeys/tsukuyomi/rules.mk @@ -10,7 +10,7 @@ EXTRAKEY_ENABLE = yes       # Audio control and System control  CONSOLE_ENABLE = yes        # Console for debug  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 = yes      # Breathing sleep LED during USB suspend +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 = yes           # USB Nkey Rollover  BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c index dd399317c1..339bd78d5a 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.c +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -16,8 +16,6 @@  #include "gen1.h"  #ifdef LED_MATRIX_ENABLE -    #include "is31fl3731-simple.h" -  const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {  /* Refer to IS31 manual for these locations   *    driver diff --git a/keyboards/crkbd/rev1/common/config.h b/keyboards/crkbd/rev1/common/config.h index a2c2cde0b7..b468fe3956 100644 --- a/keyboards/crkbd/rev1/common/config.h +++ b/keyboards/crkbd/rev1/common/config.h @@ -23,6 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #ifdef RGB_MATRIX_ENABLE  #    define RGB_MATRIX_SPLIT { 27, 27 } +#    define SPLIT_TRANSPORT_MIRROR  #endif  #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/crkbd/rev1/common/rules.mk b/keyboards/crkbd/rev1/common/rules.mk index 0b8106e3f2..d38a618090 100644 --- a/keyboards/crkbd/rev1/common/rules.mk +++ b/keyboards/crkbd/rev1/common/rules.mk @@ -1,2 +1 @@  SPLIT_KEYBOARD = yes -SPLIT_TRANSPORT = mirror    # for when Split Mirroring drops, it will maintain mirroring functionality diff --git a/keyboards/crkbd/rev1/rev1.c b/keyboards/crkbd/rev1/rev1.c index f2df8942ab..347f981501 100644 --- a/keyboards/crkbd/rev1/rev1.c +++ b/keyboards/crkbd/rev1/rev1.c @@ -87,7 +87,7 @@ led_config_t g_led_config = { {  void matrix_init_kb(void) { -#ifdef RGB_MATRIX_ENABLE +#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_SPLIT)      if (!isLeftHand) {          g_led_config = (led_config_t){ {              {  51,  50,  45,  44,  37,  36 }, diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk index fa34092cd7..768e50069c 100644 --- a/keyboards/daji/seis_cinco/rules.mk +++ b/keyboards/daji/seis_cinco/rules.mk @@ -11,7 +11,7 @@ EXTRAKEY_ENABLE = yes       # Audio control and System control  CONSOLE_ENABLE = no         # Console for debug  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 = yes      # Breathing sleep LED during USB suspend +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 = yes           # USB Nkey Rollover  BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality diff --git a/keyboards/durgod/k320/board.h b/keyboards/durgod/boards/DURGOD_STM32_F070/board.h index 17d08b17f1..2d04bccbd6 100644 --- a/keyboards/durgod/k320/board.h +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/board.h @@ -20,4 +20,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define STM32_HSECLK                12000000U  #include_next <board.h>  #undef STM32_HSE_BYPASS - diff --git a/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk b/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk new file mode 100644 index 0000000000..4791848333 --- /dev/null +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/board.mk @@ -0,0 +1,12 @@ +# List of all the board related files. +BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F070RB/board.c + +# Required include directories +BOARDINC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F070RB + +# Include mcu configuration +EXTRAINCDIRS = $(BOARD_PATH)/boards/DURGOD_STM32_F070 + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC  += $(BOARDINC) diff --git a/keyboards/durgod/k320/bootloader_defs.h b/keyboards/durgod/boards/DURGOD_STM32_F070/bootloader_defs.h index 02c48c4e6d..02c48c4e6d 100644 --- a/keyboards/durgod/k320/bootloader_defs.h +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/bootloader_defs.h diff --git a/keyboards/durgod/k320/chconf.h b/keyboards/durgod/boards/DURGOD_STM32_F070/chconf.h index 374a030039..a7d95c51a9 100644 --- a/keyboards/durgod/k320/chconf.h +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/chconf.h @@ -25,19 +25,4 @@  #define CH_CFG_ST_TIMEDELTA 0 -#define CH_CFG_OPTIMIZE_SPEED FALSE - -#define CH_CFG_USE_REGISTRY TRUE - -#define CH_CFG_USE_WAITEXIT TRUE - -#define CH_CFG_USE_CONDVARS TRUE - -#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE - -#define CH_CFG_USE_MESSAGES TRUE - -#define CH_CFG_USE_MAILBOXES TRUE -  #include_next <chconf.h> - diff --git a/keyboards/durgod/k320/mcuconf.h b/keyboards/durgod/boards/DURGOD_STM32_F070/mcuconf.h index 6d67aa96aa..6d67aa96aa 100644 --- a/keyboards/durgod/k320/mcuconf.h +++ b/keyboards/durgod/boards/DURGOD_STM32_F070/mcuconf.h diff --git a/keyboards/durgod/k320/config.h b/keyboards/durgod/k320/config.h index 70438900ee..323a9ccff9 100644 --- a/keyboards/durgod/k320/config.h +++ b/keyboards/durgod/k320/config.h @@ -1,19 +1,18 @@ -/* -Copyright 2021 kuenhlee and Don Kjer - -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 <http://www.gnu.org/licenses/>. -*/ +/* Copyright 2021 kuenhlee and Don Kjer + * + * 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 <http://www.gnu.org/licenses/>. + */  #pragma once @@ -36,8 +35,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  /* COL2ROW, ROW2COL*/  #define DIODE_DIRECTION ROW2COL +// Dynamic EEPROM +// Something sensible or else VIA may crash +// Users may enable more if they wish +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR  4095 +  /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 7 +#define DEBOUNCE 5  /* Bootmagic Lite key configuration */  #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE @@ -50,4 +54,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define LED_WIN_LOCK_PIN    A9  #define LED_MR_LOCK_PIN     A10  #define LED_PIN_ON_STATE    0 - diff --git a/keyboards/durgod/k320/info.json b/keyboards/durgod/k320/info.json index 5e33d8fcd2..6c67c3d453 100644 --- a/keyboards/durgod/k320/info.json +++ b/keyboards/durgod/k320/info.json @@ -7,913 +7,293 @@      "layouts": {          "LAYOUT_tkl_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.5 -                }, -                { -                    "label": "!", -                    "x": 1, -                    "y": 1.5 -                }, -                { -                    "label": "@", -                    "x": 2, -                    "y": 1.5 -                }, -                { -                    "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": "Backspace", -                    "x": 13, -                    "y": 1.5, -                    "w": 2 -                }, -                { -                    "label": "Insert", -                    "x": 15.25, -                    "y": 1.5 -                }, -                { -                    "label": "Home", -                    "x": 16.25, -                    "y": 1.5 -                }, -                { -                    "label": "PgUp", -                    "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": "|", -                    "x": 13.5, -                    "y": 2.5, -                    "w": 1.5 -                }, -                { -                    "label": "Delete", -                    "x": 15.25, -                    "y": 2.5 -                }, -                { -                    "label": "End", -                    "x": 16.25, -                    "y": 2.5 -                }, -                { -                    "label": "PgDn", -                    "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": "Enter", -                    "x": 12.75, -                    "y": 3.5, -                    "w": 2.25 -                }, -                { -                    "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": "Shift", -                    "x": 12.25, -                    "y": 4.5, -                    "w": 2.75 -                }, -                { -                    "label": "\u2191", -                    "x": 16.25, -                    "y": 4.5 -                }, -                { -                    "label": "Ctrl", -                    "x": 0, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Win", -                    "x": 1.25, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Alt", -                    "x": 2.5, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "x": 3.75, -                    "y": 5.5, -                    "w": 6.25 -                }, -                { -                    "label": "Alt", -                    "x": 10, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Fn", -                    "x": 11.25, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Menu", -                    "x": 12.5, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Ctrl", -                    "x": 13.75, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "\u2190", -                    "x": 15.25, -                    "y": 5.5 -                }, -                { -                    "label": "\u2193", -                    "x": 16.25, -                    "y": 5.5 -                }, -                { -                    "label": "\u2192", -                    "x": 17.25, -                    "y": 5.5 -                } +                { "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.5 }, +                { "label": "!", "x": 1, "y": 1.5 }, +                { "label": "@", "x": 2, "y": 1.5 }, +                { "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": "Backspace", "x": 13, "y": 1.5, "w": 2 }, +                { "label": "Insert", "x": 15.25, "y": 1.5 }, +                { "label": "Home", "x": 16.25, "y": 1.5 }, +                { "label": "PgUp", "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": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, +                { "label": "Delete", "x": 15.25, "y": 2.5 }, +                { "label": "End", "x": 16.25, "y": 2.5 }, +                { "label": "PgDn", "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": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 }, + +                { "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, +                { "label": "\u2191", "x": 16.25, "y": 4.5 }, + +                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, +                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, +                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, +                { "x": 3.75, "y": 5.5, "w": 6.25 }, +                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, +                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, +                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, +                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, +                { "label": "\u2190", "x": 15.25, "y": 5.5 }, +                { "label": "\u2193", "x": 16.25, "y": 5.5 }, +                { "label": "\u2192", "x": 17.25, "y": 5.5 }              ]          },          "LAYOUT_tkl_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.5 -                }, -                { -                    "label": "!", -                    "x": 1, -                    "y": 1.5 -                }, -                { -                    "label": "@", -                    "x": 2, -                    "y": 1.5 -                }, -                { -                    "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": "Backspace", -                    "x": 13, -                    "y": 1.5, -                    "w": 2 -                }, -                { -                    "label": "Insert", -                    "x": 15.25, -                    "y": 1.5 -                }, -                { -                    "label": "Home", -                    "x": 16.25, -                    "y": 1.5 -                }, -                { -                    "label": "PgUp", -                    "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": "Enter", -                    "x": 13.75, -                    "y": 2.5, -                    "w": 1.25, -                    "h": 2 -                }, -                { -                    "label": "Delete", -                    "x": 15.25, -                    "y": 2.5 -                }, -                { -                    "label": "End", -                    "x": 16.25, -                    "y": 2.5 -                }, -                { -                    "label": "PgDn", -                    "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": "Shift", -                    "x": 0, -                    "y": 4.5, -                    "w": 1.25 -                }, -                { -                    "label": "\\", -                    "x": 1.25, -                    "y": 4.5 -                }, -                { -                    "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": "Shift", -                    "x": 12.25, -                    "y": 4.5, -                    "w": 2.75 -                }, -                { -                    "label": "\u2191", -                    "x": 16.25, -                    "y": 4.5 -                }, -                { -                    "label": "Ctrl", -                    "x": 0, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Win", -                    "x": 1.25, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Alt", -                    "x": 2.5, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "x": 3.75, -                    "y": 5.5, -                    "w": 6.25 -                }, -                { -                    "label": "Alt", -                    "x": 10, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Fn", -                    "x": 11.25, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Menu", -                    "x": 12.5, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "Ctrl", -                    "x": 13.75, -                    "y": 5.5, -                    "w": 1.25 -                }, -                { -                    "label": "\u2190", -                    "x": 15.25, -                    "y": 5.5 -                }, -                { -                    "label": "\u2193", -                    "x": 16.25, -                    "y": 5.5 -                }, -                { -                    "label": "\u2192", -                    "x": 17.25, -                    "y": 5.5 -                } +                { "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.5 }, +                { "label": "!", "x": 1, "y": 1.5 }, +                { "label": "@", "x": 2, "y": 1.5 }, +                { "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": "Backspace", "x": 13, "y": 1.5, "w": 2 }, +                { "label": "Insert", "x": 15.25, "y": 1.5 }, +                { "label": "Home", "x": 16.25, "y": 1.5 }, +                { "label": "PgUp", "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": "Delete", "x": 15.25, "y": 2.5 }, +                { "label": "End", "x": 16.25, "y": 2.5 }, +                { "label": "PgDn", "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": 1.25 }, +                { "label": "\\", "x": 1.25, "y": 4.5 }, +                { "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, +                { "label": "\u2191", "x": 16.25, "y": 4.5 }, + +                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, +                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, +                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, +                { "x": 3.75, "y": 5.5, "w": 6.25 }, +                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, +                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, +                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, +                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, +                { "label": "\u2190", "x": 15.25, "y": 5.5 }, +                { "label": "\u2193", "x": 16.25, "y": 5.5 }, +                { "label": "\u2192", "x": 17.25, "y": 5.5 } +            ] +        }, +        "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 }, + +                { "label": "~", "x": 0, "y": 1.5 }, +                { "label": "!", "x": 1, "y": 1.5 }, +                { "label": "@", "x": 2, "y": 1.5 }, +                { "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": "Backspace", "x": 13, "y": 1.5, "w": 2 }, +                { "label": "Insert", "x": 15.25, "y": 1.5 }, +                { "label": "Home", "x": 16.25, "y": 1.5 }, +                { "label": "PgUp", "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": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, +                { "label": "Delete", "x": 15.25, "y": 2.5 }, +                { "label": "End", "x": 16.25, "y": 2.5 }, +                { "label": "PgDn", "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": 3.5, "w": 1.25 }, + +                { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, +                { "label": "\\", "x": 1.25, "y": 4.5 }, +                { "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, +                { "label": "\u2191", "x": 16.25, "y": 4.5 }, + +                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, +                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, +                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, +                { "x": 3.75, "y": 5.5, "w": 6.25 }, +                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, +                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, +                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, +                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, +                { "label": "\u2190", "x": 15.25, "y": 5.5 }, +                { "label": "\u2193", "x": 16.25, "y": 5.5 }, +                { "label": "\u2192", "x": 17.25, "y": 5.5 }              ]          }      } diff --git a/keyboards/durgod/k320/k320.c b/keyboards/durgod/k320/k320.c index f5500ea830..42091f36cd 100644 --- a/keyboards/durgod/k320/k320.c +++ b/keyboards/durgod/k320/k320.c @@ -40,3 +40,23 @@ void led_init_ports(void) {      off_all_leds();  } + +#ifndef WINLOCK_DISABLED +static bool win_key_locked = false; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { +    switch (keycode) { +        case KC_TGUI: +            if (record->event.pressed) { +                // Toggle GUI lock on key press +                win_key_locked = !win_key_locked; +                writePin(LED_WIN_LOCK_PIN, !win_key_locked); +            } +            break; +        case KC_LGUI: +            if (win_key_locked) { return false; } +            break; +    } +    return process_record_user(keycode, record); +} +#endif /* WINLOCK_DISABLED */ diff --git a/keyboards/durgod/k320/k320.h b/keyboards/durgod/k320/k320.h index 48da048410..c504f5a2bb 100644 --- a/keyboards/durgod/k320/k320.h +++ b/keyboards/durgod/k320/k320.h @@ -17,6 +17,17 @@  #include "quantum.h" +#ifndef WINLOCK_DISABLED +// Define the TGUI key here so it is available in QMK configurator +enum K320_keycodes { +    KC_TGUI = SAFE_RANGE,   // Toggle between GUI Lock or Unlock +    NEW_SAFE_RANGE +}; + +#undef SAFE_RANGE +#define SAFE_RANGE NEW_SAFE_RANGE +#endif /* WINLOCK_DISABLED */ +  /* Function Prototype */  void off_all_leds(void);  void on_all_leds(void); @@ -26,12 +37,12 @@ void on_all_leds(void);  // This a shortcut to help you visually see your layout.  #define LAYOUT_tkl_ansi( \ -      K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,            K0D,  K0E,  K0F, \ -      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F, \ -      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F, \ -      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K4E, \ -      K40,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,  K4D,                   K4F, \ -      K50,  K51,  K52,              K56,                    K5A,  K5B,  K5C,  K5D,       K5E,  K5F,  K6F \ +      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \ +      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,  \ +      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,  \ +      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,        K4E,                        \ +      K40,        K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,        \ +      K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F   \  ) { \      { K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E,  K0F },  \      { K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  XXX,  K1E,  K1F },  \ @@ -45,10 +56,10 @@ void on_all_leds(void);  // This a shortcut to help you visually see your layout.  #define LAYOUT_tkl_iso( \ -      K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,            K0D,  K0E,  K0F,  \ +      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \        K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,  \ -      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K4E,      K3D,  K3E,  K3F,  \ -      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,                              \ +      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,            K3D,  K3E,  K3F,  \ +      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K4E,                        \        K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,        \        K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F   \  ) { \ @@ -64,7 +75,7 @@ void on_all_leds(void);  // This a shortcut to help you visually see your layout.  #define LAYOUT_all( \ -      K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,            K0D,  K0E,  K0F,  \ +      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \        K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,  \        K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,  \        K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K4E,                        \ diff --git a/keyboards/durgod/k320/keymaps/default/keymap.c b/keyboards/durgod/k320/keymaps/default/keymap.c deleted file mode 100644 index 49a14ec299..0000000000 --- a/keyboards/durgod/k320/keymaps/default/keymap.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * 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 <http://www.gnu.org/licenses/>. - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -enum _layer { -    _BASE, -    _FUNC -}; - -static bool win_key_locked = false; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { -    KC_TGUI = SAFE_RANGE   // Toggle between GUI Lock or Unlock -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -  /* Keymap _BASE: Base Layer (Default Layer) -   * ,-----------------------------------------------------------.  ,--------------. -   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| -   * |-----------------------------------------------------------|  |--------------| -   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| -   * |-----------------------------------------------------------|  |--------------| -   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn| -   * |-----------------------------------------------------------|  `--------------' -   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | -   * |-----------------------------------------------------------|        ,----. -   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | -   * |-----------------------------------------------------------|   ,-------------. -   * |Ctrl|Gui |Alt |      Space            |Alt |Func |App |Ctrl|   |Lft| Dn |Rig | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_BASE] = LAYOUT_tkl_ansi( /* Base Layer */ -      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_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_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_END,   KC_PGDN, -      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(_FUNC),KC_APP,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT -  ), -  /* Keymap _FUNC: Function Layer -   * ,-----------------------------------------------------------.  ,--------------. -   * |   |Play|Stop|Prev|Next| |Mute|Vol+|Vol-|    | |  |  |  |  |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    | -   * |-----------------------------------------------------------|  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |       | -   * |-----------------------------------------------------------|        ,----. -   * |        |   |   |   |   |   |   |   |   |   |   |          |        |    | -   * |-----------------------------------------------------------|   ,-------------. -   * |    |Lock|    |                       |    |Func |    |    |   |   |    |    | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */ -      _______,  KC_MPLY,  KC_MSTP,  KC_MRWD,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,            _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______, -      _______,  KC_TGUI,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______,   _______ -  ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { -    switch (keycode) { -        case KC_TGUI: -            if (!record->event.pressed) { -                // Toggle GUI lock on key release -                win_key_locked = !win_key_locked; -                writePin(LED_WIN_LOCK_PIN, !win_key_locked); -            } -            break; -        case KC_LGUI: -            if (win_key_locked) { return false; } -            break; -    } -    return true; -} - diff --git a/keyboards/durgod/k320/keymaps/default/keymap.json b/keyboards/durgod/k320/keymaps/default/keymap.json new file mode 100644 index 0000000000..d8242ae764 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ +  "keyboard": "durgod/k320", +  "keymap": "default", +  "layout": "LAYOUT_all", +  "layers": [ +    [ +      "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_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_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_END",  "KC_PGDN", +      "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_LSFT", "KC_NUBS", "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(1)",   "KC_APP",  "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT" +    ], +    [ +      "KC_TRNS",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "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", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",               "KC_TRNS", +      "KC_TRNS", "KC_TGUI", "KC_TRNS",                                  "KC_TRNS",                                  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS",  "KC_TRNS" +    ] +  ], +  "author":"dkjer", +  "notes":"", +  "version":1 +} diff --git a/keyboards/durgod/k320/keymaps/default/readme.md b/keyboards/durgod/k320/keymaps/default/readme.md index e26c79c8ae..c94943a837 100644 --- a/keyboards/durgod/k320/keymaps/default/readme.md +++ b/keyboards/durgod/k320/keymaps/default/readme.md @@ -1,6 +1,8 @@  # The default keymap for Durgod Taurus K320. -Layer 0 : Standard ANSI 87 Keys TKL layout (Windows) +Supports both ANSI and ISO layouts. + +Layer 0 : Standard 87/88 keys TKL layout (Windows)  Layer 1 : Media control and Windows lock key  - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/default_iso/keymap.c b/keyboards/durgod/k320/keymaps/default_iso/keymap.c deleted file mode 100644 index 559b6fe715..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso/keymap.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * 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 <http://www.gnu.org/licenses/>. - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -enum _layer { -    _BASE, -    _FUNC -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -  /* Keymap _BASE: Base Layer (Default Layer) -   * ,-----------------------------------------------------------.  ,--------------. -   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| -   * |-----------------------------------------------------------|  |--------------| -   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| -   * |-----------------------------------------------------------|  |--------------| -   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     |  | Del| End|PgDn| -   * |------------------------------------------------------ Ret |  `--------------' -   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|    | -   * |-----------------------------------------------------------|        ,----. -   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | -   * |-----------------------------------------------------------|   ,-------------. -   * |Ctrl|Gui |Alt |      Space            |Alt | Fn  |App |Ctrl|   |Lft| Dn |Rig | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_BASE] = LAYOUT_tkl_iso( /* Base Layer */ -      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_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_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_ENT,   KC_DEL,   KC_END,   KC_PGDN,   -      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_LSFT,  KC_NUBS,  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(_FUNC),KC_APP,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT -  ), -  /* Keymap _FUNC: Function Layer -   * ,-----------------------------------------------------------.  ,--------------. -   * |   |Play|Stop|Prev|Next| |Mute|Vol+|Vol-|    | |  |  |  |  |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    | -   * |-------------------------------------------------------    |  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    | -   * |-----------------------------------------------------------|        ,----. -   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    | -   * |-----------------------------------------------------------|   ,-------------. -   * |    |    |    |                       |    |Func |    |    |   |   |    |    | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_FUNC] = LAYOUT_tkl_iso( /* Function Layer */ -      _______,  KC_MPLY,  KC_MSTP,  KC_MRWD,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,                _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______, -      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______ -  ) -}; - diff --git a/keyboards/durgod/k320/keymaps/default_iso/readme.md b/keyboards/durgod/k320/keymaps/default_iso/readme.md deleted file mode 100644 index a7d1d5f1d3..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# The ISO keymap for Durgod Taurus K320. - -Layer 0 : Standard ISO 88 Keys TKL layout (Windows) - -Layer 1 : Media control and Windows lock key -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 - diff --git a/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c b/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c deleted file mode 100644 index 783fc45f1b..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso_mac/keymap.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * 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 <http://www.gnu.org/licenses/>. - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -enum _layer { -    _BASE, -    _FUNC -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -  /* Keymap _BASE: Base Layer (Default Layer) -   * ,-----------------------------------------------------------.  ,--------------. -   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus| -   * |-----------------------------------------------------------|  |--------------| -   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp| -   * |-----------------------------------------------------------|  |--------------| -   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     |  | Del| End|PgDn| -   * |------------------------------------------------------ Ret |  `--------------' -   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|    | -   * |-----------------------------------------------------------|        ,----. -   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | -   * |-----------------------------------------------------------|   ,-------------. -   * |Ctrl|Alt |Gui |      Space            |Alt | Fn  |App |Ctrl|   |Lft| Dn |Rig | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_BASE] = LAYOUT_tkl_iso( /* Base Layer */ -      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_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_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_ENT,   KC_DEL,   KC_END,   KC_PGDN, -      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_LSFT,  KC_NUBS,  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,                                 KC_RALT,  MO(_FUNC),KC_APP,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT -  ), -  /* Keymap _FUNC: Function Layer -   * ,-----------------------------------------------------------.  ,--------------. -   * |   |Play|Stop|Prev|Next| |Mute|Vol+|Vol-|    | |  |  |  |  |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    | -   * |-----------------------------------------------------------|  |--------------| -   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    | -   * |-------------------------------------------------------    |  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    | -   * |-----------------------------------------------------------|        ,----. -   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    | -   * |-----------------------------------------------------------|   ,-------------. -   * |    |    |    |                       |    |Func |    |    |   |   |    |    | -   * `-----------------------------------------------------------'   `-------------' -   */ -  [_FUNC] = LAYOUT_tkl_iso( /* Function Layer */ -      _______,  KC_MPLY,  KC_MSTP,  KC_MRWD,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,                _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______, -      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______ -  ) -}; diff --git a/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md b/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md deleted file mode 100644 index 354f7b4cba..0000000000 --- a/keyboards/durgod/k320/keymaps/default_iso_mac/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -# The ISO (Mac) keymap for Durgod Taurus K320. - -Layer 0 : Standard ISO 88 Keys TKL layout (Mac) - -Layer 1 : Media control -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/default_mac/keymap.json b/keyboards/durgod/k320/keymaps/default_mac/keymap.json new file mode 100644 index 0000000000..dc5d3d3fd5 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_mac/keymap.json @@ -0,0 +1,26 @@ +{ +  "keyboard": "durgod/k320", +  "keymap": "default_mac", +  "layout": "LAYOUT_all", +  "layers": [ +    [ +      "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_F13",  "KC_F14",  "KC_F15", +      "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_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_END",  "KC_PGDN", +      "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_LSFT", "KC_NUBS", "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",                                   "KC_RGUI", "KC_RALT", "MO(1)",   "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT" +    ], +    [ +      "KC_TRNS",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "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", "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" +    ] +  ], +  "author":"AlCutter", +  "notes":"", +  "version":1 +} diff --git a/keyboards/durgod/k320/keymaps/default_mac/readme.md b/keyboards/durgod/k320/keymaps/default_mac/readme.md new file mode 100644 index 0000000000..2765f14f90 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_mac/readme.md @@ -0,0 +1,8 @@ +# The default (Mac) keymap for Durgod Taurus K320. + +Supports both ANSI and ISO layouts. + +Layer 0 : Standard 87/88 keys TKL layout (Mac) + +Layer 1 : Media control +- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c index 834d2ca55e..8494fbe039 100644 --- a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c @@ -59,20 +59,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|     * |-----------------------------------------------------------|  `--------------' -   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | +   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|Ret |     * |-----------------------------------------------------------|        ,----. -   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | +   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |     * |-----------------------------------------------------------|   ,-------------.     * |Ctrl|Gui |Alt |      Space            |Alt |Func |App|Ctrl |   |Lft| Dn |Rig |     * `-----------------------------------------------------------'   `-------------'     */ -  [_WBL] = LAYOUT_tkl_ansi( /* Windows Base Layer */ -      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_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_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_END,   KC_PGDN, -      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,  KC_WFN,   KC_APP,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT +  [_WBL] = LAYOUT_all( /* Windows Base Layer */ +      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_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_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_END,   KC_PGDN, +      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_LSFT,  KC_NUBS,  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,  KC_WFN,   KC_APP,   KC_RCTL,     KC_LEFT,  KC_DOWN,  KC_RGHT    ),    /* Keymap _WFL: Windows Function Layer     * ,-----------------------------------------------------------.  ,--------------. @@ -82,20 +82,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |     * |-----------------------------------------------------------|  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |       | +   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |     * |-----------------------------------------------------------|        ,----. -   * |        |   |   |   |   |   |   |   |   |   |   |          |        |    | +   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |     * |-----------------------------------------------------------|   ,-------------.     * |    |Lock|    |                       |    |Func |Sys|     |   |   |    |    |     * `-----------------------------------------------------------'   `-------------'     */ -  [_WFL] = LAYOUT_tkl_ansi( /* Windows First Layer */ -      _______,  KC_MPLY,  KC_MSTP,  KC_MRWD,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,            _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______, -      _______,  KC_TGUI,  _______,                                _______,                                _______,  _______,  MO_WSL,   _______,  _______,  _______,  _______ +  [_WFL] = LAYOUT_all( /* Windows First Layer */ +      _______,            KC_MPLY,  KC_MSTP,  KC_MPRV,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,               _______, +      _______,  KC_TGUI,  _______,                                _______,                                _______,  _______,  MO_WSL,   _______,     _______,  _______,  _______    ),    /* Keymap _WSL: Windows System Layer     * ,-----------------------------------------------------------.  ,--------------. @@ -105,20 +105,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |     * |-----------------------------------------------------------|  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |       | +   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |     * |-----------------------------------------------------------|        ,----. -   * |        |   |   |   |   |   |   |   |   |   |   |          |        |    | +   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |     * |-----------------------------------------------------------|   ,-------------.     * |    |    |    |                       |    |Func |Sys|     |   |   |    |    |     * `-----------------------------------------------------------'   `-------------'     */ -  [_WSL] = LAYOUT_tkl_ansi( /* Windows Second / System Layer */ -      RESET,    KC_SLEP,  XXXXXXX,  XXXXXXX,  KC_PWR,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_W2MBL,           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,  XXXXXXX, -      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    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 +  [_WSL] = LAYOUT_all( /* Windows Second / System Layer */ +      RESET,              KC_SLEP,  XXXXXXX,  XXXXXXX,  KC_PWR,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_W2MBL,    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,  XXXXXXX, +      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    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    ),    /* Keymap _MBL: Mac Base Layer (Alternate Layout) @@ -129,20 +129,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|     * |-----------------------------------------------------------|  `--------------' -   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return | +   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|Ret |     * |-----------------------------------------------------------|        ,----. -   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up | +   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |     * |-----------------------------------------------------------|   ,-------------.     * |Ctrl|Alt |Gui |      Space            |Gui |Alt|Func |Ctrl |   |Lft| Dn |Rig |     * `-----------------------------------------------------------'   `-------------'     */ -  [_MBL] = LAYOUT_tkl_ansi( /* Mac Base Layer */ -      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_F13,   KC_F14,   KC_F15, -      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_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_END,   KC_PGDN, -      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_LALT,  KC_LGUI,                                KC_SPC,                                 KC_RGUI,  KC_RALT,  KC_MFN,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT +  [_MBL] = LAYOUT_all( /* Mac Base Layer */ +      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_F13,   KC_F14,   KC_F15, +      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_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_END,   KC_PGDN, +      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_LSFT,  KC_NUBS,  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,                                 KC_RGUI,  KC_RALT,  KC_MFN,   KC_RCTL,     KC_LEFT,  KC_DOWN,  KC_RGHT    ),    /* Keymap _MFL: Mac Function Layer     * ,-----------------------------------------------------------.  ,--------------. @@ -152,20 +152,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |     * |-----------------------------------------------------------|  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |       | +   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |     * |-----------------------------------------------------------|        ,----. -   * |        |   |   |   |   |   |   |   |   |   |   |          |        |    | +   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |     * |-----------------------------------------------------------|   ,-------------.     * |    |    |    |                       |    |Sys|Func |     |   |   |    |    |     * `-----------------------------------------------------------'   `-------------'     */ -  [_MFL] = LAYOUT_tkl_ansi( /* Mac First Layer */ -      _______,  KC_BRID,  KC_BRIU,  _______,  _______,  _______,  _______,  KC_MRWD,  KC_MPLY,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,            KC_TMED,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, -      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______, -      _______,  _______,  _______,                                _______,                                _______,  MO_MSL,   _______,  _______,  _______,  _______,  _______ +  [_MFL] = LAYOUT_all( /* Mac First Layer */ +      _______,            KC_BRID,  KC_BRIU,  _______,  _______,  _______,  _______,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,     KC_TMED,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,               _______, +      _______,  _______,  _______,                                _______,                                _______,  MO_MSL,   _______,  _______,     _______,  _______,  _______    ),    /* Keymap _MSL: Mac System Layer     * ,-----------------------------------------------------------.  ,--------------. @@ -175,20 +175,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * |-----------------------------------------------------------|  |--------------|     * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |     * |-----------------------------------------------------------|  `--------------' -   * |       |   |   |   |   |   |   |   |   |   |   |   |       | +   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |     * |-----------------------------------------------------------|        ,----. -   * |        |   |   |   |   |   |   |   |   |   |   |          |        |    | +   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |     * |-----------------------------------------------------------|   ,-------------.     * |    |    |    |                       |    |Sys|Func |     |   |   |    |    |     * `-----------------------------------------------------------'   `-------------'     */ -  [_MSL] = LAYOUT_tkl_ansi( /* Mac Second / System Layer */ -      RESET,    XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_SLEP,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_M2WBL,           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,  XXXXXXX, -      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    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 +  [_MSL] = LAYOUT_all( /* Mac Second / System Layer */ +      RESET,              XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_SLEP,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_M2WBL,    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,  XXXXXXX, +      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    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    )  }; diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md index 821c8b26a2..0eef77fd45 100644 --- a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md @@ -1,6 +1,8 @@  # A keymap for Durgod Taurus K320 that supports toggling between Mac and Windows -Layer 0 : Standard ANSI 87 Keys TKL layout (Windows) +Supports both ANSI and ISO layouts. + +Layer 0 : Standard 87/88 keys TKL layout (Windows)  Layer 1 : Media control and Windows lock key (Windows)  - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 @@ -12,7 +14,7 @@ Layer 2 : System layer (Windows)  - Fn + Menu + F4  : Turning Off System  - Fn + Menu + F12 : Switch to Mac layout -Layer 3 : Mac 87 Keys TKL layout +Layer 3 : Mac 87/88 keys TKL layout  Layer 4 : Media control and Media lock key (Mac)   - Standard Mac Media keys for Fn + F1 ~ Fn + F12. @@ -61,4 +63,3 @@ For repeating Flashing you have two options with this keymap:  2. Use key combination if using default keymap  - Hold down Fn + Menu (Windows Layout) or Fn + Right-Alt (Mac layout)  (These are the same physical keys)  - Press Esc.  Keyboard should go into booloader state. - diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk new file mode 100644 index 0000000000..19843e8a20 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk @@ -0,0 +1 @@ +OPT_DEFS += -DWINLOCK_DISABLED diff --git a/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c b/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c index bf79f24dba..866e522fc9 100644 --- a/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c +++ b/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c @@ -35,11 +35,6 @@  #define KC_STOP LCTL(LSFT(KC_HOME))   // Select from Cursor to Home  #define KC_SEND LCTL(LSFT(KC_END))    // Select from Cursor to End -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { -  KC_TGUI = SAFE_RANGE  // Toggle between GUI Lock or Unlock -}; -  // °±²³µ©ΩθΩ√∞∆≈≠→↓←↑≡■□●○∴«»÷≤≥Σ  // Defines the Enumeration for Unicode Map  enum unicode_names { diff --git a/keyboards/durgod/k320/keymaps/via/keymap.c b/keyboards/durgod/k320/keymaps/via/keymap.c index 9a4d9ff38c..fc46e3860f 100644 --- a/keyboards/durgod/k320/keymaps/via/keymap.c +++ b/keyboards/durgod/k320/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 kuenhlee and Don Kjer +/* Copyright 2021 Maxime Coirault   *   * 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 @@ -19,7 +19,8 @@  enum _layer {      _BASE,      _FUNC, -    _LAYER3 +    _LAYER3, +    _LAYER4  };  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -39,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * `-----------------------------------------------------------'   `-------------'     */    [_BASE] = LAYOUT_all( /* Base Layer */ -      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_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_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_END,   KC_PGDN, +      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_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_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_END,   KC_PGDN,        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_LSFT,  KC_NUBS,  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(_FUNC),KC_APP,   KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT +      KC_LSFT,  KC_NUBS,  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(_FUNC),KC_APP,   KC_RCTL,      KC_LEFT,  KC_DOWN,  KC_RGHT    ),    /* Keymap _FUNC: Function Layer     * ,-----------------------------------------------------------.  ,--------------. @@ -62,20 +63,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * `-----------------------------------------------------------'   `-------------'     */    [_FUNC] = LAYOUT_all( /* Function Layer */ -      _______,  KC_MPLY,  KC_MSTP,  KC_MRWD,  KC_MFFD,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,                _______,  _______,  _______, +      _______,            KC_MPLY,  KC_MSTP,  KC_MPRV,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______,        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______    ), -  [_LAYER3] = LAYOUT_all( /* Function Layer */ -      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                _______,  _______,  _______, +  [_LAYER3] = LAYOUT_all( /* Layer 3 */ +      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______,        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______    ), +  [_LAYER4] = LAYOUT_all( /* Layer 4 */ +      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, +      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______, +      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______ +  )  }; diff --git a/keyboards/durgod/k320/keymaps/via/readme.md b/keyboards/durgod/k320/keymaps/via/readme.md index 1ed99238c6..d1b2ac191d 100644 --- a/keyboards/durgod/k320/keymaps/via/readme.md +++ b/keyboards/durgod/k320/keymaps/via/readme.md @@ -1,6 +1,6 @@  # The default keymap for Durgod Taurus K320. -Layer 0 : Standard Keys TKL layout +Layer 0 : Standard 87/88 keys TKL layout  Layer 1 : Media control  - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k320/keymaps/via/rules.mk b/keyboards/durgod/k320/keymaps/via/rules.mk index 36b7ba9cbc..8815b6a0a6 100644 --- a/keyboards/durgod/k320/keymaps/via/rules.mk +++ b/keyboards/durgod/k320/keymaps/via/rules.mk @@ -1,2 +1,4 @@ +OPT_DEFS += -DWINLOCK_DISABLED +  VIA_ENABLE = yes  LTO_ENABLE = yes diff --git a/keyboards/durgod/k320/readme.md b/keyboards/durgod/k320/readme.md index 1150294354..551a292824 100644 --- a/keyboards/durgod/k320/readme.md +++ b/keyboards/durgod/k320/readme.md @@ -1,6 +1,6 @@  # K320 -This is a standard fixed ANSI TKL from off the shelf Durgod Taurus K320 without Backlight. +This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key) keyboard without backlight.  * Keyboard Maintainer: [dkjer](https://github.com/dkjer)  * Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6 @@ -30,7 +30,7 @@ For first Flashing from initial Stock's Firmware  - Plug In USB  - Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image:    - Using DFUseDemo.exe from ST's STSW-STM32080: https://www.st.com/en/development-tools/stsw-stm32080.html -  - Using dfu-util (thanks to [tylert](https://github.com/tylert) for instructions!): +  - Using dfu-util:          dfu-util --list          dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN} @@ -55,4 +55,3 @@ For repeating Flashing you can use BootMagic:  - Unplug USB Cable  - Holding Esc Button   - Plug in USB Cable, Keyboard should be in ST-Bootloader state - diff --git a/keyboards/durgod/k320/rules.mk b/keyboards/durgod/k320/rules.mk index 040ea2dc88..7e910174f9 100644 --- a/keyboards/durgod/k320/rules.mk +++ b/keyboards/durgod/k320/rules.mk @@ -2,7 +2,7 @@  # Actually F070, but close enough  MCU = STM32F072 -BOARD = ST_NUCLEO64_F070RB +BOARD = DURGOD_STM32_F070  # Do not put the microcontroller into power saving mode  OPT_DEFS += -DNO_SUSPEND_POWER_DOWN diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk index 0709f341bf..e5785270bd 100644 --- a/keyboards/handwired/ck4x4/rules.mk +++ b/keyboards/handwired/ck4x4/rules.mk @@ -10,7 +10,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = no # Custom matrix file diff --git a/keyboards/handwired/onekey/rules.mk b/keyboards/handwired/onekey/rules.mk index 259050d553..df2ec1ecf4 100644 --- a/keyboards/handwired/onekey/rules.mk +++ b/keyboards/handwired/onekey/rules.mk @@ -7,9 +7,9 @@ EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)  CONSOLE_ENABLE = yes        # 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 = yes       # Breathing sleep LED during USB suspend +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 = yes            # USB Nkey Rollover +NKRO_ENABLE = yes           # 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) diff --git a/keyboards/projectkb/alice/config.h b/keyboards/projectkb/alice/config.h new file mode 100644 index 0000000000..95fb682e17 --- /dev/null +++ b/keyboards/projectkb/alice/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define SLEEP_LED_GPT_DRIVER GPTD1 diff --git a/keyboards/projectkb/alice/halconf.h b/keyboards/projectkb/alice/halconf.h index b17808ffeb..0016e53ba8 100644 --- a/keyboards/projectkb/alice/halconf.h +++ b/keyboards/projectkb/alice/halconf.h @@ -27,5 +27,7 @@  #define HAL_USE_SPI TRUE +#define HAL_USE_GPT TRUE +  #include_next <halconf.h> diff --git a/keyboards/projectkb/alice/mcuconf.h b/keyboards/projectkb/alice/mcuconf.h index 4bfc7f9465..6e0f1a50d8 100644 --- a/keyboards/projectkb/alice/mcuconf.h +++ b/keyboards/projectkb/alice/mcuconf.h @@ -32,3 +32,5 @@  #undef STM32_SPI_USE_SPI2  #define STM32_SPI_USE_SPI2 TRUE +#undef STM32_GPT_USE_TIM1 +#define STM32_GPT_USE_TIM1 TRUE diff --git a/keyboards/projectkb/signature87/rules.mk b/keyboards/projectkb/signature87/rules.mk index fe0d976d11..caad4c83c2 100644 --- a/keyboards/projectkb/signature87/rules.mk +++ b/keyboards/projectkb/signature87/rules.mk @@ -9,7 +9,7 @@ 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 +SLEEP_LED_ENABLE = no   # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  BACKLIGHT_ENABLE = no diff --git a/keyboards/ramonimbao/wete/config.h b/keyboards/ramonimbao/wete/config.h index 5d68a7efd7..3d89550090 100644 --- a/keyboards/ramonimbao/wete/config.h +++ b/keyboards/ramonimbao/wete/config.h @@ -46,6 +46,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define RGBLED_NUM 24  #define RGBLIGHT_ANIMATIONS +#define SLEEP_LED_GPT_DRIVER GPTD1 +  /* define if matrix has ghost */  //#define MATRIX_HAS_GHOST diff --git a/keyboards/ramonimbao/wete/halconf.h b/keyboards/ramonimbao/wete/halconf.h index c43440a459..b3de873be1 100644 --- a/keyboards/ramonimbao/wete/halconf.h +++ b/keyboards/ramonimbao/wete/halconf.h @@ -23,5 +23,7 @@  #define HAL_USE_PWM TRUE +#define HAL_USE_GPT TRUE +  #include_next <halconf.h> diff --git a/keyboards/ramonimbao/wete/mcuconf.h b/keyboards/ramonimbao/wete/mcuconf.h index b7f2c481c6..7a2e877763 100644 --- a/keyboards/ramonimbao/wete/mcuconf.h +++ b/keyboards/ramonimbao/wete/mcuconf.h @@ -35,3 +35,5 @@  #undef STM32_SPI_USE_SPI2  #define STM32_SPI_USE_SPI2 TRUE +#undef STM32_GPT_USE_TIM1 +#define STM32_GPT_USE_TIM1 TRUE diff --git a/keyboards/readme.md b/keyboards/readme.md index 6b7b92e0cf..a23d0845b2 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -63,4 +63,4 @@ These keyboards are part of the QMK repository, but their manufacturers are not  * [Vision Division](/keyboards/vision_division) — Full Size / Split Linear Keyboard by IBNobody.  * [XD004](/keyboards/xd004) — 1x4 macro keyboard sold by KPrepublic.  * [XD75](/keyboards/xd75) — 15x5 ortholinear keyboard by XIUDI. -* [YMDK NP21](/keyboards/ymdk_np21) — ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress.  +* [YMDK NP21](/keyboards/ymdk_np21) — ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress. diff --git a/keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk b/keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk index 78969ad7a4..d7d50e1378 100644 --- a/keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk +++ b/keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk @@ -8,11 +8,13 @@ EXTRAKEY_ENABLE = yes       # Audio control and System control  CONSOLE_ENABLE = no         # Console for debug  COMMAND_ENABLE = no         # Commands for debug and configuration  NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = yes       # Enable global lighting effects. Do not enable with RGB Matrix -RGBLIGHT_ANIMATIONS = yes   # LED animations -RGBLIGHT_SPLIT_ENABLE = yes # Split RGBLight Support -RGB_MATRIX_ENABLE = no      # Enable per-key coordinate based RGB effects. Do not enable with RGBlight +RGBLIGHT_ENABLE = no        # Enable global lighting effects. Do not enable with RGB Matrix +RGBLIGHT_ANIMATIONS = no    # LED animations +RGBLIGHT_SPLIT_ENABLE = no  # Split RGBLight Support +RGB_MATRIX_ENABLE = yes  	# Enable per-key coordinate based RGB effects. Do not enable with RGBlight +RGB_MATRIX_DRIVER = WS2812  RGB_MATRIX_KEYPRESSES = no  # Enable reactive per-key effects. +SPLIT_RGB_MATRIX_ENABLE = yes # For split RGB Matrix support  RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port  UNICODE_ENABLE = no         # Unicode  SWAP_HANDS_ENABLE = no      # Enable one-hand typing @@ -40,3 +42,7 @@ endif  ifeq ($(strip $(RGBLIGHT_SPLIT_ENABLE)), yes)      OPT_DEFS += -DRGBLIGHT_SPLIT_ENABLE  endif + +ifeq ($(strip $(SPLIT_RGB_MATRIX_ENABLE)), yes) +    OPT_DEFS += -DSPLIT_TRANSPORT_MIRROR +endif diff --git a/keyboards/rgbkb/zygomorph/rev1/config.h b/keyboards/rgbkb/zygomorph/rev1/config.h index 667b68f731..190a8bbe3e 100644 --- a/keyboards/rgbkb/zygomorph/rev1/config.h +++ b/keyboards/rgbkb/zygomorph/rev1/config.h @@ -55,7 +55,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.      #define RGBLED_NUM 60      #define RGBLED_SPLIT { 30, 30 }  #endif -#define DRIVER_LED_TOTAL 30 + +#define DRIVER_LED_TOTAL 60 +#define RGB_MATRIX_SPLIT { 30, 30 }  #ifdef IOS_DEVICE_ENABLE    #define RGBLIGHT_LIMIT_VAL 40 diff --git a/keyboards/rgbkb/zygomorph/rev1/rev1.c b/keyboards/rgbkb/zygomorph/rev1/rev1.c index 3edf48c5d5..1fb1716a09 100644 --- a/keyboards/rgbkb/zygomorph/rev1/rev1.c +++ b/keyboards/rgbkb/zygomorph/rev1/rev1.c @@ -2,72 +2,42 @@  #ifdef RGB_MATRIX_ENABLE -#define RGB_LEFT_HAND    { { 0 | ( 5 << 4) }, { 102,  0 }, 4}, \ -    { { 0 | ( 4 << 4) }, {  81,  0 }, 4}, \ -    { { 0 | ( 3 << 4) }, {  61,  0 }, 4}, \ -    { { 0 | ( 2 << 4) }, {  41,  0 }, 4}, \ -    { { 0 | ( 1 << 4) }, {  20,  0 }, 4}, \ -    { { 0 | ( 0 << 4) }, {   0,  0 }, 1}, \ -    { { 1 | ( 5 << 4) }, { 102, 16 }, 4}, \ -    { { 1 | ( 4 << 4) }, {  81, 16 }, 4}, \ -    { { 1 | ( 3 << 4) }, {  61, 16 }, 4}, \ -    { { 1 | ( 2 << 4) }, {  41, 16 }, 4}, \ -    { { 1 | ( 1 << 4) }, {  20, 16 }, 4}, \ -    { { 1 | ( 0 << 4) }, {   0, 16 }, 1}, \ -    { { 2 | ( 5 << 4) }, { 102, 32 }, 4}, \ -    { { 2 | ( 4 << 4) }, {  81, 32 }, 4}, \ -    { { 2 | ( 3 << 4) }, {  61, 32 }, 4}, \ -    { { 2 | ( 2 << 4) }, {  41, 32 }, 4}, \ -    { { 2 | ( 1 << 4) }, {  20, 32 }, 4}, \ -    { { 2 | ( 0 << 4) }, {   0, 32 }, 1}, \ -    { { 3 | ( 5 << 4) }, { 102, 48 }, 4}, \ -    { { 3 | ( 4 << 4) }, {  81, 48 }, 4}, \ -    { { 3 | ( 3 << 4) }, {  61, 48 }, 4}, \ -    { { 3 | ( 2 << 4) }, {  41, 48 }, 4}, \ -    { { 3 | ( 1 << 4) }, {  20, 48 }, 4}, \ -    { { 3 | ( 0 << 4) }, {   0, 48 }, 1}, \ -    { { 4 | ( 5 << 4) }, { 102, 64 }, 1}, \ -    { { 4 | ( 4 << 4) }, {  81, 64 }, 1}, \ -    { { 4 | ( 3 << 4) }, {  61, 64 }, 1}, \ -    { { 4 | ( 2 << 4) }, {  41, 64 }, 1}, \ -    { { 4 | ( 1 << 4) }, {  20, 64 }, 1}, \ -    { { 4 | ( 0 << 4) }, {   0, 64 }, 1} - -#define RGB_RIGHT_HAND    { { 0 | (11 << 4) }, { 224,  0 }, 1}, \ -    { { 0 | (10 << 4) }, { 204,  0 }, 4}, \ -    { { 0 | ( 9 << 4) }, { 183,  0 }, 4}, \ -    { { 0 | ( 8 << 4) }, { 163,  0 }, 4}, \ -    { { 0 | ( 7 << 4) }, { 143,  0 }, 4}, \ -    { { 0 | ( 6 << 4) }, { 122,  0 }, 4}, \ -    { { 1 | (11 << 4) }, { 224, 16 }, 1}, \ -    { { 1 | (10 << 4) }, { 204, 16 }, 4}, \ -    { { 1 | ( 9 << 4) }, { 183, 16 }, 4}, \ -    { { 1 | ( 8 << 4) }, { 163, 16 }, 4}, \ -    { { 1 | ( 7 << 4) }, { 143, 16 }, 4}, \ -    { { 1 | ( 6 << 4) }, { 122, 16 }, 4}, \ -    { { 2 | (11 << 4) }, { 224, 32 }, 1}, \ -    { { 2 | (10 << 4) }, { 204, 32 }, 4}, \ -    { { 2 | ( 9 << 4) }, { 183, 32 }, 4}, \ -    { { 2 | ( 8 << 4) }, { 163, 32 }, 4}, \ -    { { 2 | ( 7 << 4) }, { 143, 32 }, 4}, \ -    { { 2 | ( 6 << 4) }, { 122, 32 }, 4}, \ -    { { 3 | (11 << 4) }, { 224, 48 }, 1}, \ -    { { 3 | (10 << 4) }, { 204, 48 }, 4}, \ -    { { 3 | ( 9 << 4) }, { 183, 48 }, 4}, \ -    { { 3 | ( 8 << 4) }, { 163, 48 }, 4}, \ -    { { 3 | ( 7 << 4) }, { 143, 48 }, 4}, \ -    { { 3 | ( 6 << 4) }, { 122, 48 }, 4}, \ -    { { 4 | (11 << 4) }, { 224, 64 }, 1}, \ -    { { 4 | (10 << 4) }, { 204, 64 }, 1}, \ -    { { 4 | ( 9 << 4) }, { 183, 64 }, 1}, \ -    { { 4 | ( 8 << 4) }, { 163, 64 }, 1}, \ -    { { 4 | ( 7 << 4) }, { 143, 64 }, 1}, \ -    { { 4 | ( 6 << 4) }, { 122, 64 }, 1} - -rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { +led_config_t g_led_config = { { +    {      5,      4,      3,      2,      1,      0 }, +    {     11,     10,      9,      8,      7,      6 }, +    {     17,     16,     15,     14,     13,     12 }, +    {     23,     22,     21,     20,     19,     18 }, +    {     29,     28,     27,     26,     25,     24 }, +    {     35,     34,     33,     32,     31,     30 }, +    {     41,     40,     39,     38,     37,     36 }, +    {     47,     46,     45,     44,     43,     42 }, +    {     53,     52,     51,     50,     49,     48 }, +    {     59,     58,     57,     56,     55,     54 } +}, { +// Left Hand +    { 102,   0 }, {  81,   0 }, {  61,   0 }, {  41,   0 }, {  20,   0 }, {   0,   0 }, +    { 102,  16 }, {  81,  16 }, {  61,  16 }, {  41,  16 }, {  20,  16 }, {   0,  16 }, +    { 102,  32 }, {  81,  32 }, {  61,  32 }, {  41,  32 }, {  20,  32 }, {   0,  32 }, +    { 102,  48 }, {  81,  48 }, {  61,  48 }, {  41,  48 }, {  20,  48 }, {   0,  48 }, +    { 102,  64 }, {  81,  64 }, {  61,  64 }, {  41,  64 }, {  20,  64 }, {   0,  64 }, +// Right Hand +    { 224,   0 }, { 204,   0 }, { 183,   0 }, { 163,   0 }, { 143,   0 }, { 122,   0 }, +    { 224,  16 }, { 204,  16 }, { 183,  16 }, { 163,  16 }, { 143,  16 }, { 122,  16 }, +    { 224,  32 }, { 204,  32 }, { 183,  32 }, { 163,  32 }, { 143,  32 }, { 122,  32 }, +    { 224,  48 }, { 204,  48 }, { 183,  48 }, { 163,  48 }, { 143,  48 }, { 122,  48 }, +    { 224,  64 }, { 204,  64 }, { 183,  64 }, { 163,  64 }, { 143,  64 }, { 122,  64 } +}, {  // Left Hand -RGB_LEFT_HAND +    4, 4, 4, 4, 4, 1, +    4, 4, 4, 4, 4, 1, +    4, 4, 4, 4, 4, 1, +    4, 4, 4, 4, 4, 1, +    1, 1, 1, 1, 1, 1,  // Right Hand -//RGB_RIGHT_HAND -}; +    4, 4, 4, 4, 4, 4, +    1, 4, 4, 4, 4, 4, +    1, 4, 4, 4, 4, 4, +    1, 4, 4, 4, 4, 4, +    1, 1, 1, 1, 1, 1 +} };  #endif diff --git a/keyboards/terrazzo/terrazzo.c b/keyboards/terrazzo/terrazzo.c index f079ded4d7..2afda085b3 100644 --- a/keyboards/terrazzo/terrazzo.c +++ b/keyboards/terrazzo/terrazzo.c @@ -17,7 +17,6 @@  #include "terrazzo.h"  #ifdef LED_MATRIX_ENABLE -    #include "is31fl3731-simple.h"      #include <math.h>      #include "print.h"      #include "quantum.h" diff --git a/keyboards/westfoxtrot/prophet/config.h b/keyboards/westfoxtrot/prophet/config.h index 4f447e4ca0..0f2ddc1dc1 100644 --- a/keyboards/westfoxtrot/prophet/config.h +++ b/keyboards/westfoxtrot/prophet/config.h @@ -30,3 +30,5 @@  #define LOCKING_SUPPORT_ENABLE  /* Locking resynchronize hack */  #define LOCKING_RESYNC_ENABLE + +#define SLEEP_LED_GPT_DRIVER GPTD1 diff --git a/keyboards/westfoxtrot/prophet/halconf.h b/keyboards/westfoxtrot/prophet/halconf.h new file mode 100644 index 0000000000..cbfd1307f1 --- /dev/null +++ b/keyboards/westfoxtrot/prophet/halconf.h @@ -0,0 +1,27 @@ +/* Copyright 2020 QMK + * + * 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 <http://www.gnu.org/licenses/>. + */ + +/* + * This file was auto-generated by: + *    `qmk chibios-confmigrate -i keyboards/projectkb/alice/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_GPT TRUE + +#include_next <halconf.h> + diff --git a/keyboards/westfoxtrot/prophet/mcuconf.h b/keyboards/westfoxtrot/prophet/mcuconf.h index 2665f9c9e4..550141af6b 100644 --- a/keyboards/westfoxtrot/prophet/mcuconf.h +++ b/keyboards/westfoxtrot/prophet/mcuconf.h @@ -23,6 +23,5 @@  #include_next <mcuconf.h> -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 TRUE - +#undef STM32_GPT_USE_TIM1 +#define STM32_GPT_USE_TIM1 TRUE diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 6a57c1ff5d..4809365af3 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -180,6 +180,7 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va          f'VERBOSE={verbose}',          f'COLOR={color}',          'SILENT=false', +        f'QMK_BIN={"bin/qmk" if "DEPRECATED_BIN_QMK" in os.environ else "qmk"}',      ])      return make_command diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py index 3ed69f3bf9..b5cdaf6a60 100644 --- a/lib/python/qmk/constants.py +++ b/lib/python/qmk/constants.py @@ -10,7 +10,7 @@ QMK_FIRMWARE = Path.cwd()  MAX_KEYBOARD_SUBFOLDERS = 5  # Supported processor types -CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F411', 'STM32G431', 'STM32G474' +CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66F18', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F411', 'STM32G431', 'STM32G474'  LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None  VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85' diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index 82c42a20e8..bfecebdd78 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -8,7 +8,7 @@ is_windows = 'windows' in platform.platform().lower()  def check_subcommand(command, *args): -    cmd = ['bin/qmk', command, *args] +    cmd = ['qmk', command, *args]      result = run(cmd, stdout=PIPE, stderr=STDOUT, universal_newlines=True)      return result @@ -17,7 +17,7 @@ def check_subcommand_stdin(file_to_read, command, *args):      """Pipe content of a file to a command and return output.      """      with open(file_to_read, encoding='utf-8') as my_file: -        cmd = ['bin/qmk', command, *args] +        cmd = ['qmk', command, *args]          result = run(cmd, stdin=my_file, stdout=PIPE, stderr=STDOUT, universal_newlines=True)      return result diff --git a/quantum/bootmagic/bootmagic.h b/quantum/bootmagic/bootmagic.h new file mode 100644 index 0000000000..959750178d --- /dev/null +++ b/quantum/bootmagic/bootmagic.h @@ -0,0 +1,24 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#if defined(BOOTMAGIC_ENABLE) +#    include "bootmagic_full.h" +#elif defined(BOOTMAGIC_LITE) +#    include "bootmagic_lite.h" +#endif + +void bootmagic(void); diff --git a/tmk_core/common/bootmagic.c b/quantum/bootmagic/bootmagic_full.c index c1b3adf94d..a7a0dcfcb2 100644 --- a/tmk_core/common/bootmagic.c +++ b/quantum/bootmagic/bootmagic_full.c @@ -1,3 +1,18 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */  #include <stdint.h>  #include <stdbool.h>  #include "wait.h" @@ -10,18 +25,35 @@  #include "eeconfig.h"  #include "bootmagic.h" -keymap_config_t keymap_config; - -/** \brief Bootmagic +/** \brief Scan Keycode   *   * FIXME: needs doc   */ -void bootmagic(void) { -    /* check signature */ -    if (!eeconfig_is_enabled()) { -        eeconfig_init(); +static bool scan_keycode(uint8_t keycode) { +    for (uint8_t r = 0; r < MATRIX_ROWS; r++) { +        matrix_row_t matrix_row = matrix_get_row(r); +        for (uint8_t c = 0; c < MATRIX_COLS; c++) { +            if (matrix_row & ((matrix_row_t)1 << c)) { +                if (keycode == keymap_key_to_keycode(0, (keypos_t){.row = r, .col = c})) { +                    return true; +                } +            } +        }      } +    return false; +} + +/** \brief Bootmagic Scan Keycode + * + * FIXME: needs doc + */ +static bool bootmagic_scan_keycode(uint8_t keycode) { +    if (!scan_keycode(BOOTMAGIC_KEY_SALT)) return false; + +    return scan_keycode(keycode); +} +void bootmagic(void) {      /* do scans in case of bounce */      print("bootmagic scan: ... ");      uint8_t scan = 100; @@ -46,8 +78,6 @@ void bootmagic(void) {          bootloader_jump();      } -    /* debug enable */ -    debug_config.raw = eeconfig_read_debug();      if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_ENABLE)) {          if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_MATRIX)) {              debug_config.matrix = !debug_config.matrix; @@ -61,8 +91,6 @@ void bootmagic(void) {      }      eeconfig_update_debug(debug_config.raw); -    /* keymap config */ -    keymap_config.raw = eeconfig_read_keymap();      if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK)) {          keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;      } @@ -93,71 +121,27 @@ void bootmagic(void) {      uint8_t default_layer = 0;      if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_0)) {          default_layer |= (1 << 0); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_1)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_1)) {          default_layer |= (1 << 1); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_2)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_2)) {          default_layer |= (1 << 2); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_3)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_3)) {          default_layer |= (1 << 3); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_4)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_4)) {          default_layer |= (1 << 4); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_5)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_5)) {          default_layer |= (1 << 5); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_6)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_6)) {          default_layer |= (1 << 6); -    } -    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) {          default_layer |= (1 << 7);      } -    if (default_layer) { -        eeconfig_update_default_layer(default_layer); -        default_layer_set((layer_state_t)default_layer); -    } else { -        default_layer = eeconfig_read_default_layer(); -        default_layer_set((layer_state_t)default_layer); -    } -    /* Also initialize layer state to trigger callback functions for layer_state */ -    layer_state_set_kb((layer_state_t)layer_state); +    eeconfig_update_default_layer(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)) { +    } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_RIGHT)) {          eeconfig_update_handedness(false);      }  } - -/** \brief Scan Keycode - * - * FIXME: needs doc - */ -static bool scan_keycode(uint8_t keycode) { -    for (uint8_t r = 0; r < MATRIX_ROWS; r++) { -        matrix_row_t matrix_row = matrix_get_row(r); -        for (uint8_t c = 0; c < MATRIX_COLS; c++) { -            if (matrix_row & ((matrix_row_t)1 << c)) { -                if (keycode == keymap_key_to_keycode(0, (keypos_t){.row = r, .col = c})) { -                    return true; -                } -            } -        } -    } -    return false; -} - -/** \brief Bootmagic Scan Keycode - * - * FIXME: needs doc - */ -bool bootmagic_scan_keycode(uint8_t keycode) { -    if (!scan_keycode(BOOTMAGIC_KEY_SALT)) return false; - -    return scan_keycode(keycode); -} diff --git a/tmk_core/common/bootmagic.h b/quantum/bootmagic/bootmagic_full.h index 8209d0194f..28f914c1b6 100644 --- a/tmk_core/common/bootmagic.h +++ b/quantum/bootmagic/bootmagic_full.h @@ -1,3 +1,19 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +  #pragma once  /* FIXME: Add special doxygen comments for defines here. */ @@ -96,7 +112,4 @@  #endif  #ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_7  #    define BOOTMAGIC_KEY_DEFAULT_LAYER_7 KC_7 -#endif - -void bootmagic(void); -bool bootmagic_scan_keycode(uint8_t keycode); +#endif
\ No newline at end of file diff --git a/tmk_core/common/bootmagic_lite.c b/quantum/bootmagic/bootmagic_lite.c index cbf756a175..9cbdcb0bbd 100644 --- a/tmk_core/common/bootmagic_lite.c +++ b/quantum/bootmagic/bootmagic_lite.c @@ -1,3 +1,18 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */  #include "quantum.h"  /** \brief Reset eeprom @@ -47,3 +62,5 @@ __attribute__((weak)) void bootmagic_lite(void) {          bootloader_jump();      }  } + +void bootmagic(void) { bootmagic_lite(); } diff --git a/quantum/bootmagic/bootmagic_lite.h b/quantum/bootmagic/bootmagic_lite.h new file mode 100644 index 0000000000..17777e6b4a --- /dev/null +++ b/quantum/bootmagic/bootmagic_lite.h @@ -0,0 +1,25 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#ifndef BOOTMAGIC_LITE_COLUMN +#    define BOOTMAGIC_LITE_COLUMN 0 +#endif +#ifndef BOOTMAGIC_LITE_ROW +#    define BOOTMAGIC_LITE_ROW 0 +#endif + +void bootmagic_lite(void); diff --git a/quantum/bootmagic/magic.c b/quantum/bootmagic/magic.c new file mode 100644 index 0000000000..f1cb11c395 --- /dev/null +++ b/quantum/bootmagic/magic.c @@ -0,0 +1,54 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#include <stdint.h> +#include <stdbool.h> +#include "wait.h" +#include "matrix.h" +#include "bootloader.h" +#include "debug.h" +#include "keymap.h" +#include "host.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "bootmagic.h" + +keymap_config_t keymap_config; + +__attribute__((weak)) void bootmagic(void) {} + +/** \brief Magic + * + * FIXME: Needs doc + */ +void magic(void) { +    /* check signature */ +    if (!eeconfig_is_enabled()) { +        eeconfig_init(); +    } + +    /* init globals */ +    debug_config.raw  = eeconfig_read_debug(); +    keymap_config.raw = eeconfig_read_keymap(); + +    bootmagic(); + +    /* read here just incase bootmagic process changed its value */ +    layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer(); +    default_layer_set(default_layer); + +    /* Also initialize layer state to trigger callback functions for layer_state */ +    layer_state_set_kb((layer_state_t)layer_state); +} diff --git a/keyboards/durgod/k320/keymaps/via/config.h b/quantum/bootmagic/magic.h index 2ae6fca9d9..2c3969b85c 100644 --- a/keyboards/durgod/k320/keymaps/via/config.h +++ b/quantum/bootmagic/magic.h @@ -1,9 +1,8 @@ -/* - * Copyright 2021 Maxime Coirault +/* Copyright 2021 QMK   *   * 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 + * the Free Software Foundation, either version 3 of the License, or   * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, @@ -14,7 +13,6 @@   * You should have received a copy of the GNU General Public License   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ -  #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +void magic(void); diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index f878168c5f..d7e334fdc8 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h @@ -37,6 +37,7 @@ typedef union {          bool nkro : 1;          bool swap_lctl_lgui : 1;          bool swap_rctl_rgui : 1; +        bool oneshot_disable : 1;      };  } keymap_config_t; diff --git a/quantum/led_matrix.c b/quantum/led_matrix.c index 4f1f06c7ac..1cbd908c7a 100644 --- a/quantum/led_matrix.c +++ b/quantum/led_matrix.c @@ -17,9 +17,6 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ -#include <stdint.h> -#include <stdbool.h> -#include "quantum.h"  #include "led_matrix.h"  #include "progmem.h"  #include "config.h" @@ -45,10 +42,6 @@ led_eeconfig_t led_matrix_eeconfig;  #    define LED_DISABLE_WHEN_USB_SUSPENDED false  #endif -#ifndef EECONFIG_LED_MATRIX -#    define EECONFIG_LED_MATRIX EECONFIG_RGBLIGHT -#endif -  #if !defined(LED_MATRIX_MAXIMUM_BRIGHTNESS) || LED_MATRIX_MAXIMUM_BRIGHTNESS > 255  #    define LED_MATRIX_MAXIMUM_BRIGHTNESS 255  #endif @@ -135,7 +128,7 @@ void led_matrix_set_suspend_state(bool state) { g_suspend_state = state; }  void led_matrix_all_off(void) { led_matrix_set_index_value_all(0); }  // Uniform brightness -void led_matrix_uniform_brightness(void) { led_matrix_set_index_value_all(LED_MATRIX_MAXIMUM_BRIGHTNESS / BACKLIGHT_LEVELS * led_matrix_eeconfig.val); } +void led_matrix_uniform_brightness(void) { led_matrix_set_index_value_all(led_matrix_eeconfig.val); }  void led_matrix_custom(void) {} @@ -344,5 +337,3 @@ void led_matrix_set_value(uint8_t val) {      led_matrix_set_value_noeeprom(val);      eeconfig_update_led_matrix(led_matrix_eeconfig.raw);  } - -void backlight_set(uint8_t val) { led_matrix_set_value(val); } diff --git a/quantum/led_matrix.h b/quantum/led_matrix.h index 85bae43c15..e4322a1509 100644 --- a/quantum/led_matrix.h +++ b/quantum/led_matrix.h @@ -19,10 +19,13 @@  #pragma once +#include <stdint.h> +#include <stdbool.h>  #include "led_matrix_types.h" +#include "quantum.h" -#ifndef BACKLIGHT_ENABLE -#    error You must define BACKLIGHT_ENABLE with LED_MATRIX_ENABLE +#ifdef IS31FL3731 +#    include "is31fl3731-simple.h"  #endif  enum led_matrix_effects { diff --git a/quantum/led_matrix_drivers.c b/quantum/led_matrix_drivers.c index eddf3f2863..370c5e6853 100644 --- a/quantum/led_matrix_drivers.c +++ b/quantum/led_matrix_drivers.c @@ -15,9 +15,6 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ -#include <stdint.h> -#include <stdbool.h> -#include "quantum.h"  #include "led_matrix.h"  /* Each driver needs to define a struct: @@ -30,10 +27,6 @@  #if defined(IS31FL3731) || defined(IS31FL3733) -#    if defined(IS31FL3731) -#        include "is31fl3731-simple.h" -#    endif -  #    include "i2c_master.h"  static void init(void) { diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk index f7329fc4d9..53e03a8054 100644 --- a/quantum/mcu_selection.mk +++ b/quantum/mcu_selection.mk @@ -81,6 +81,33 @@ ifneq ($(findstring MK20DX256, $(MCU)),)    BOARD ?= PJRC_TEENSY_3_1  endif +ifneq ($(findstring MK66F18, $(MCU)),) +  # Cortex version +  MCU = cortex-m4 + +  # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +  ARMV = 7 + +  ## chip/board settings +  # - the next two should match the directories in +  #   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +  MCU_FAMILY = KINETIS +  MCU_SERIES = MK66F18 + +  # Linker script to use +  # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ +  #   or <keyboard_dir>/ld/ +  MCU_LDSCRIPT ?= MK66FX1M0 + +  # Startup code to use +  #  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ +  MCU_STARTUP ?= MK66F18 + +  # Board: it should exist either in <chibios>/os/hal/boards/, +  # <keyboard_dir>/boards/, or drivers/boards/ +  BOARD ?= PJRC_TEENSY_3_6 +endif +  ifneq ($(findstring STM32F042, $(MCU)),)    # Cortex version    MCU = cortex-m0 diff --git a/quantum/process_keycode/process_backlight.c b/quantum/process_keycode/process_backlight.c index 4d12f6813a..8b70339a55 100644 --- a/quantum/process_keycode/process_backlight.c +++ b/quantum/process_keycode/process_backlight.c @@ -16,11 +16,35 @@  #include "process_backlight.h" -#include "backlight.h" +#ifdef LED_MATRIX_ENABLE +#    include "led_matrix.h" +#else +#    include "backlight.h" +#endif  bool process_backlight(uint16_t keycode, keyrecord_t *record) {      if (record->event.pressed) {          switch (keycode) { +#ifdef LED_MATRIX_ENABLE +            case BL_ON: +                led_matrix_enable(); +                return false; +            case BL_OFF: +                led_matrix_disable(); +                return false; +            case BL_DEC: +                led_matrix_decrease_val(); +                return false; +            case BL_INC: +                led_matrix_increase_val(); +                return false; +            case BL_TOGG: +                led_matrix_toggle(); +                return false; +            case BL_STEP: +                led_matrix_step(); +                return false; +#else              case BL_ON:                  backlight_level(BACKLIGHT_LEVELS);                  return false; @@ -39,10 +63,11 @@ bool process_backlight(uint16_t keycode, keyrecord_t *record) {              case BL_STEP:                  backlight_step();                  return false; -#ifdef BACKLIGHT_BREATHING +#    ifdef BACKLIGHT_BREATHING              case BL_BRTG:                  backlight_toggle_breathing();                  return false; +#    endif  #endif          }      } diff --git a/quantum/quantum.c b/quantum/quantum.c index b40b40544a..8ccdb774bd 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -15,6 +15,7 @@   */  #include "quantum.h" +#include "magic.h"  #ifdef BLUETOOTH_ENABLE  #    include "outputselect.h" @@ -233,7 +234,7 @@ bool process_record_quantum(keyrecord_t *record) {  #ifdef AUDIO_ENABLE              process_audio(keycode, record) &&  #endif -#ifdef BACKLIGHT_ENABLE +#if defined(BACKLIGHT_ENABLE) || defined(LED_MATRIX_ENABLE)              process_backlight(keycode, record) &&  #endif  #ifdef STENO_ENABLE @@ -318,6 +319,17 @@ bool process_record_quantum(keyrecord_t *record) {                  set_output(OUTPUT_BLUETOOTH);                  return false;  #endif +#ifndef NO_ACTION_ONESHOT +            case ONESHOT_TOGGLE: +                oneshot_toggle(); +                break; +            case ONESHOT_ENABLE: +                oneshot_enable(); +                break; +            case ONESHOT_DISABLE: +                oneshot_disable(); +                break; +#endif          }      } @@ -341,26 +353,20 @@ layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_  void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { layer_state_set(update_tri_layer_state(layer_state, layer1, layer2, layer3)); }  void matrix_init_quantum() { -#ifdef BOOTMAGIC_LITE -    bootmagic_lite(); -#endif -    if (!eeconfig_is_enabled()) { -        eeconfig_init(); -    } +    magic();  #if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN)      // TODO: remove calls to led_init_ports from keyboards and remove ifdef      led_init_ports();  #endif  #ifdef BACKLIGHT_ENABLE -#    ifdef LED_MATRIX_ENABLE -    led_matrix_init(); -#    else      backlight_init_ports(); -#    endif  #endif  #ifdef AUDIO_ENABLE      audio_init();  #endif +#ifdef LED_MATRIX_ENABLE +    led_matrix_init(); +#endif  #ifdef RGB_MATRIX_ENABLE      rgb_matrix_init();  #endif diff --git a/quantum/quantum.h b/quantum/quantum.h index e24a4c43a3..fe6bf310aa 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -30,11 +30,11 @@  #include "keymap.h"  #ifdef BACKLIGHT_ENABLE -#    ifdef LED_MATRIX_ENABLE -#        include "led_matrix.h" -#    else -#        include "backlight.h" -#    endif +#    include "backlight.h" +#endif + +#ifdef LED_MATRIX_ENABLE +#    include "led_matrix.h"  #endif  #if defined(RGBLIGHT_ENABLE) @@ -52,6 +52,7 @@  #include "action_layer.h"  #include "eeconfig.h"  #include "bootloader.h" +#include "bootmagic.h"  #include "timer.h"  #include "sync_timer.h"  #include "config_common.h" @@ -97,7 +98,7 @@ extern layer_state_t layer_state;  #    include "process_music.h"  #endif -#ifdef BACKLIGHT_ENABLE +#if defined(BACKLIGHT_ENABLE) || defined(LED_MATRIX_ENABLE)  #    include "process_backlight.h"  #endif @@ -199,39 +200,6 @@ extern layer_state_t layer_state;  #    include "usbpd.h"  #endif -// Function substitutions to ease GPIO manipulation -#if defined(__AVR__) - -/*   The AVR series GPIOs have a one clock read delay for changes in the digital input signal. - *   But here's more margin to make it two clocks. */ -#    if !defined(GPIO_INPUT_PIN_DELAY) -#        define GPIO_INPUT_PIN_DELAY 2 -#    endif -#    define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) - -#elif defined(__ARMEL__) || defined(__ARMEB__) - -/* For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus - * to which the GPIO is connected. - * The connected buses differ depending on the various series of MCUs. - * And since the instruction execution clock of the CPU and the bus clock of GPIO are different, - * there is a delay of several clocks to read the change of the input signal. - * - * Define this delay with the GPIO_INPUT_PIN_DELAY macro. - * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used. - * (A fairly large value of 0.25 microseconds is set.) - */ -#    if !defined(GPIO_INPUT_PIN_DELAY) -#        if defined(STM32_SYSCLK) -#            define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4) -#        elif defined(KINETIS_SYSCLK_FREQUENCY) -#            define GPIO_INPUT_PIN_DELAY (KINETIS_SYSCLK_FREQUENCY / 1000000L / 4) -#        endif -#    endif -#    define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) - -#endif -  // For tri-layer  void          update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3);  layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3); @@ -256,15 +224,6 @@ bool     process_record_user(uint16_t keycode, keyrecord_t *record);  void     post_process_record_kb(uint16_t keycode, keyrecord_t *record);  void     post_process_record_user(uint16_t keycode, keyrecord_t *record); -#ifndef BOOTMAGIC_LITE_COLUMN -#    define BOOTMAGIC_LITE_COLUMN 0 -#endif -#ifndef BOOTMAGIC_LITE_ROW -#    define BOOTMAGIC_LITE_ROW 0 -#endif - -void bootmagic_lite(void); -  void reset_keyboard(void);  void startup_user(void); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index e49f8dcdaa..0361e4cf9c 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -573,6 +573,10 @@ enum quantum_keycodes {  #endif +    ONESHOT_ENABLE, +    ONESHOT_DISABLE, +    ONESHOT_TOGGLE, +      // always leave at the end      SAFE_RANGE  }; @@ -680,16 +684,13 @@ enum quantum_keycodes {  #define KC_DELT KC_DELETE  // Del key (four letter code) -// Alias for function layers than expand past FN31 -#define FUNC(kc) (QK_FUNCTION | (kc)) -  // Aliases  #define C(kc) LCTL(kc)  #define S(kc) LSFT(kc)  #define A(kc) LALT(kc)  #define G(kc) LGUI(kc) -#define F(kc) FUNC(kc) +#define F(kc) (QK_FUNCTION | (kc))  #define M(kc) (QK_MACRO | (kc))  #define MACROTAP(kc) (QK_MACRO | (FUNC_TAP << 8) | (kc)) @@ -874,3 +875,8 @@ enum quantum_keycodes {  #define DM_RSTP DYN_REC_STOP  #define DM_PLY1 DYN_MACRO_PLAY1  #define DM_PLY2 DYN_MACRO_PLAY2 + +// One Shot toggle +#define OS_TOGG ONESHOT_TOGGLE +#define OS_ON ONESHOT_ENABLE +#define OS_OFF ONESHOT_DISABLE diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c index ec17b4d72c..8aae486034 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix.c @@ -131,7 +131,7 @@ last_hit_t g_last_hit_tracker;  // internals  static uint8_t         rgb_last_enable   = UINT8_MAX;  static uint8_t         rgb_last_effect   = UINT8_MAX; -static effect_params_t rgb_effect_params = {0, 0xFF}; +static effect_params_t rgb_effect_params = {0, LED_FLAG_ALL, false};  static rgb_task_states rgb_task_state    = SYNCING;  #if RGB_DISABLE_TIMEOUT > 0  static uint32_t rgb_anykey_timer; @@ -143,6 +143,11 @@ static uint32_t rgb_timer_buffer;  static last_hit_t last_hit_buffer;  #endif  // RGB_MATRIX_KEYREACTIVE_ENABLED +// split rgb matrix +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; +#endif +  void eeconfig_read_rgb_matrix(void) { eeprom_read_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config)); }  void eeconfig_update_rgb_matrix(void) { eeprom_update_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config)); } @@ -153,6 +158,7 @@ void eeconfig_update_rgb_matrix_default(void) {      rgb_matrix_config.mode   = RGB_MATRIX_STARTUP_MODE;      rgb_matrix_config.hsv    = (HSV){RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL};      rgb_matrix_config.speed  = RGB_MATRIX_STARTUP_SPD; +    rgb_matrix_config.flags  = LED_FLAG_ALL;      eeconfig_update_rgb_matrix();  } @@ -164,6 +170,7 @@ void eeconfig_debug_rgb_matrix(void) {      dprintf("rgb_matrix_config.hsv.s = %d\n", rgb_matrix_config.hsv.s);      dprintf("rgb_matrix_config.hsv.v = %d\n", rgb_matrix_config.hsv.v);      dprintf("rgb_matrix_config.speed = %d\n", rgb_matrix_config.speed); +    dprintf("rgb_matrix_config.flags = %d\n", rgb_matrix_config.flags);  }  __attribute__((weak)) uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) { return 0; } @@ -180,9 +187,22 @@ uint8_t rgb_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *l  void rgb_matrix_update_pwm_buffers(void) { rgb_matrix_driver.flush(); } -void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color(index, red, green, blue); } +void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    if (!is_keyboard_left() && index >= k_rgb_matrix_split[0]) +        rgb_matrix_driver.set_color(index - k_rgb_matrix_split[0], red, green, blue); +    else if (is_keyboard_left() && index < k_rgb_matrix_split[0]) +#endif +        rgb_matrix_driver.set_color(index, red, green, blue); +} -void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color_all(red, green, blue); } +void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) rgb_matrix_set_color(i, red, green, blue); +#else +    rgb_matrix_driver.set_color_all(red, green, blue); +#endif +}  void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) {  #ifndef RGB_MATRIX_SPLIT @@ -315,6 +335,10 @@ static void rgb_task_start(void) {  static void rgb_task_render(uint8_t effect) {      bool rendering         = false;      rgb_effect_params.init = (effect != rgb_last_effect) || (rgb_matrix_config.enable != rgb_last_enable); +    if (rgb_effect_params.flags != rgb_matrix_config.flags) { +        rgb_effect_params.flags = rgb_matrix_config.flags; +        rgb_matrix_set_color_all(0, 0, 0); +    }      // each effect can opt to do calculations      // and/or request PWM buffer updates. @@ -618,6 +642,6 @@ void rgb_matrix_decrease_speed_helper(bool write_to_eeprom) { rgb_matrix_set_spe  void rgb_matrix_decrease_speed_noeeprom(void) { rgb_matrix_decrease_speed_helper(false); }  void rgb_matrix_decrease_speed(void) { rgb_matrix_decrease_speed_helper(true); } -led_flags_t rgb_matrix_get_flags(void) { return rgb_effect_params.flags; } +led_flags_t rgb_matrix_get_flags(void) { return rgb_matrix_config.flags; } -void rgb_matrix_set_flags(led_flags_t flags) { rgb_effect_params.flags = flags; } +void rgb_matrix_set_flags(led_flags_t flags) { rgb_matrix_config.flags = flags; } diff --git a/quantum/rgb_matrix_types.h b/quantum/rgb_matrix_types.h index 7b8171fb23..1a37922af9 100644 --- a/quantum/rgb_matrix_types.h +++ b/quantum/rgb_matrix_types.h @@ -85,10 +85,11 @@ typedef struct PACKED {  typedef union {      uint32_t raw;      struct PACKED { -        uint8_t enable : 2; -        uint8_t mode : 6; -        HSV     hsv; -        uint8_t speed;  // EECONFIG needs to be increased to support this +        uint8_t     enable : 2; +        uint8_t     mode : 6; +        HSV         hsv; +        uint8_t     speed;  // EECONFIG needs to be increased to support this +        led_flags_t flags;      };  } rgb_config_t; diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 2ae44e6e15..9e75e19ce0 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -1,3 +1,18 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */  #include "split_util.h"  #include "matrix.h"  #include "keyboard.h" @@ -6,14 +21,7 @@  #include "transport.h"  #include "quantum.h"  #include "wait.h" - -#ifdef PROTOCOL_LUFA -#    include <LUFA/Drivers/USB/USB.h> -#endif - -#ifdef PROTOCOL_VUSB -#    include <usbdrv/usbdrv.h> -#endif +#include "usb_util.h"  #ifdef EE_HANDS  #    include "eeconfig.h" @@ -31,56 +39,21 @@  #    define SPLIT_USB_TIMEOUT_POLL 10  #endif -#ifdef PROTOCOL_CHIBIOS -#    define SPLIT_USB_DETECT  // Force this on for now -#endif -  volatile bool isLeftHand = true;  #if defined(SPLIT_USB_DETECT) -#    if defined(PROTOCOL_LUFA) -static inline bool usbHasActiveConnection(void) { return USB_Device_IsAddressSet(); } -static inline void usbDisable(void) { -    USB_Disable(); -    USB_DeviceState = DEVICE_STATE_Unattached; -} -#    elif defined(PROTOCOL_CHIBIOS) -static inline bool usbHasActiveConnection(void) { return usbGetDriverStateI(&USBD1) == USB_ACTIVE; } -static inline void usbDisable(void) { usbStop(&USBD1); } -#    elif defined(PROTOCOL_VUSB) -static inline bool usbHasActiveConnection(void) { -    usbPoll(); -    return usbConfiguration; -} -static inline void usbDisable(void) { usbDeviceDisconnect(); } -#    else -static inline bool usbHasActiveConnection(void) { return true; } -static inline void usbDisable(void) {} -#    endif - -bool usbIsActive(void) { +static bool usbIsActive(void) {      for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) {          // This will return true if a USB connection has been established -        if (usbHasActiveConnection()) { +        if (usb_connected_state()) {              return true;          }          wait_ms(SPLIT_USB_TIMEOUT_POLL);      } - -    // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow -    usbDisable(); -      return false;  } -#elif defined(PROTOCOL_LUFA) && defined(OTGPADE) -static inline bool usbIsActive(void) { -    USB_OTGPAD_On();  // enables VBUS pad -    wait_us(5); - -    return USB_VBUS_GetStatus();  // checks state of VBUS -}  #else -static inline bool usbIsActive(void) { return true; } +static inline bool usbIsActive(void) { return usb_vbus_state(); }  #endif  #ifdef SPLIT_HAND_MATRIX_GRID @@ -126,6 +99,11 @@ __attribute__((weak)) bool is_keyboard_master(void) {      // only check once, as this is called often      if (usbstate == UNKNOWN) {          usbstate = usbIsActive() ? MASTER : SLAVE; + +        // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow +        if (usbstate == SLAVE) { +            usb_disable(); +        }      }      return (usbstate == MASTER); diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c index 61b61ea08c..27a1c0d3a4 100644 --- a/quantum/split_common/transport.c +++ b/quantum/split_common/transport.c @@ -22,6 +22,10 @@ static pin_t encoders_pad[] = ENCODERS_PAD_A;  #    define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t))  #endif +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +#    include "rgb_matrix.h" +#endif +  #if defined(USE_I2C)  #    include "i2c_master.h" @@ -54,6 +58,10 @@ typedef struct _I2C_slave_buffer_t {  #    ifdef WPM_ENABLE      uint8_t current_wpm;  #    endif +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    rgb_config_t rgb_matrix; +    bool         rgb_suspend_state; +#    endif  } I2C_slave_buffer_t;  static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; @@ -68,6 +76,8 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re  #    define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)  #    define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)  #    define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) +#    define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix) +#    define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state)  #    define TIMEOUT 100 @@ -141,6 +151,11 @@ bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[])  #        endif  #    endif +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT); +    i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)g_suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT); +#    endif +  #    ifndef DISABLE_SYNC_TIMER      i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET;      i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT); @@ -186,6 +201,11 @@ void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[])      set_oneshot_mods(i2c_buffer->oneshot_mods);  #        endif  #    endif + +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix)); +    memcpy((void *)i2c_buffer->rgb_suspend_state, (void *)g_suspend_state, sizeof(i2c_buffer->rgb_suspend_state)); +#    endif  }  void transport_master_init(void) { i2c_init(); } @@ -226,6 +246,10 @@ typedef struct _Serial_m2s_buffer_t {  #    ifdef WPM_ENABLE      uint8_t      current_wpm;  #    endif +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    rgb_config_t rgb_matrix; +    bool         rgb_suspend_state; +#    endif  } Serial_m2s_buffer_t;  #    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) @@ -333,18 +357,24 @@ bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[])  #    ifdef WPM_ENABLE      // Write wpm to slave -    serial_m2s_buffer.current_wpm  = get_current_wpm(); +    serial_m2s_buffer.current_wpm       = get_current_wpm();  #    endif  #    ifdef SPLIT_MODS_ENABLE -    serial_m2s_buffer.real_mods    = get_mods(); -    serial_m2s_buffer.weak_mods    = get_weak_mods(); +    serial_m2s_buffer.real_mods         = get_mods(); +    serial_m2s_buffer.weak_mods         = get_weak_mods();  #        ifndef NO_ACTION_ONESHOT -    serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); +    serial_m2s_buffer.oneshot_mods      = get_oneshot_mods();  #        endif  #    endif + +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    serial_m2s_buffer.rgb_matrix        = rgb_matrix_config; +    serial_m2s_buffer.rgb_suspend_state = g_suspend_state; +#    endif +  #    ifndef DISABLE_SYNC_TIMER -    serial_m2s_buffer.sync_timer   = sync_timer_read32() + SYNC_TIMER_OFFSET; +    serial_m2s_buffer.sync_timer        = sync_timer_read32() + SYNC_TIMER_OFFSET;  #    endif      return true;  } @@ -381,6 +411,11 @@ void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[])      set_oneshot_mods(serial_m2s_buffer.oneshot_mods);  #        endif  #    endif + +#    if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +    rgb_matrix_config = serial_m2s_buffer.rgb_matrix; +    g_suspend_state   = serial_m2s_buffer.rgb_suspend_state; +#    endif  }  #endif @@ -9,6 +9,12 @@  This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR and ARM controllers, and more specifically, the [OLKB product line](https://olkb.com), the [ErgoDox EZ](https://ergodox-ez.com) keyboard, and the [Clueboard product line](https://clueboard.co). +# THIS IS THE DEVELOP BRANCH + +Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information. + +# Original readme continues +  ## Documentation  * [See the official documentation on docs.qmk.fm](https://docs.qmk.fm) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 238b3c69fd..2f8f81126a 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -12,6 +12,7 @@ TMK_COMMON_SRC +=	$(COMMON_DIR)/host.c \  	$(COMMON_DIR)/sendchar_null.c \  	$(COMMON_DIR)/eeconfig.c \  	$(COMMON_DIR)/report.c \ +	$(COMMON_DIR)/usb_util.c \  	$(PLATFORM_COMMON_DIR)/suspend.c \  	$(PLATFORM_COMMON_DIR)/timer.c \  	$(COMMON_DIR)/sync_timer.c \ @@ -24,28 +25,6 @@ else      include $(TMK_PATH)/$(COMMON_DIR)/lib_printf.mk  endif -# Option modules -BOOTMAGIC_ENABLE ?= no -VALID_MAGIC_TYPES := yes full lite -ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) -  ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),) -    $(error BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic) -  endif -  ifeq ($(strip $(BOOTMAGIC_ENABLE)), lite) -      TMK_COMMON_DEFS += -DBOOTMAGIC_LITE -      TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic_lite.c - -      TMK_COMMON_DEFS += -DMAGIC_ENABLE -      TMK_COMMON_SRC += $(COMMON_DIR)/magic.c -  else -    TMK_COMMON_DEFS += -DBOOTMAGIC_ENABLE -    TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic.c -  endif -else -    TMK_COMMON_DEFS += -DMAGIC_ENABLE -    TMK_COMMON_SRC += $(COMMON_DIR)/magic.c -endif -  SHARED_EP_ENABLE = no  MOUSE_SHARED_EP ?= yes  ifeq ($(strip $(KEYBOARD_SHARED_EP)), yes) diff --git a/tmk_core/common/action_util.c b/tmk_core/common/action_util.c index 000503b082..a57c8bf66a 100644 --- a/tmk_core/common/action_util.c +++ b/tmk_core/common/action_util.c @@ -147,12 +147,16 @@ void clear_oneshot_swaphands(void) {   * FIXME: needs doc   */  void set_oneshot_layer(uint8_t layer, uint8_t state) { -    oneshot_layer_data = layer << 3 | state; -    layer_on(layer); +    if (!keymap_config.oneshot_disable) { +        oneshot_layer_data = layer << 3 | state; +        layer_on(layer);  #    if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) -    oneshot_layer_time = timer_read(); +        oneshot_layer_time = timer_read();  #    endif -    oneshot_layer_changed_kb(get_oneshot_layer()); +        oneshot_layer_changed_kb(get_oneshot_layer()); +    } else { +        layer_on(layer); +    }  }  /** \brief Reset oneshot layer   * @@ -172,7 +176,7 @@ void reset_oneshot_layer(void) {  void clear_oneshot_layer_state(oneshot_fullfillment_t state) {      uint8_t start_state = oneshot_layer_data;      oneshot_layer_data &= ~state; -    if (!get_oneshot_layer_state() && start_state != oneshot_layer_data) { +    if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) || keymap_config.oneshot_disable) {          layer_off(get_oneshot_layer());          reset_oneshot_layer();      } @@ -182,6 +186,39 @@ void clear_oneshot_layer_state(oneshot_fullfillment_t state) {   * FIXME: needs doc   */  bool is_oneshot_layer_active(void) { return get_oneshot_layer_state(); } + +/** \brief set oneshot + * + * FIXME: needs doc + */ +void oneshot_set(bool active) { +    if (keymap_config.oneshot_disable != active) { +        keymap_config.oneshot_disable = active; +        eeconfig_update_keymap(keymap_config.raw); +        dprintf("Oneshot: active: %d\n", active); +    } +} + +/** \brief toggle oneshot + * + * FIXME: needs doc + */ +void oneshot_toggle(void) { oneshot_set(!keymap_config.oneshot_disable); } + +/** \brief enable oneshot + * + * FIXME: needs doc + */ +void oneshot_enable(void) { oneshot_set(true); } + +/** \brief disable oneshot + * + * FIXME: needs doc + */ +void oneshot_disable(void) { oneshot_set(false); } + +bool is_oneshot_enabled(void) { return keymap_config.oneshot_disable; } +  #endif  /** \brief Send keyboard report @@ -321,14 +358,17 @@ void del_oneshot_mods(uint8_t mods) {   * FIXME: needs doc   */  void set_oneshot_mods(uint8_t mods) { -    if (oneshot_mods != mods) { +    if (!keymap_config.oneshot_disable) { +        if (oneshot_mods != mods) {  #    if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) -        oneshot_time = timer_read(); +            oneshot_time = timer_read();  #    endif -        oneshot_mods = mods; -        oneshot_mods_changed_kb(mods); +            oneshot_mods = mods; +            oneshot_mods_changed_kb(mods); +        }      }  } +  /** \brief clear oneshot mods   *   * FIXME: needs doc diff --git a/tmk_core/common/action_util.h b/tmk_core/common/action_util.h index ff29f79b09..f2b3897ae5 100644 --- a/tmk_core/common/action_util.h +++ b/tmk_core/common/action_util.h @@ -85,6 +85,11 @@ void oneshot_mods_changed_kb(uint8_t mods);  void oneshot_layer_changed_user(uint8_t layer);  void oneshot_layer_changed_kb(uint8_t layer); +void oneshot_toggle(void); +void oneshot_enable(void); +void oneshot_disable(void); +bool is_oneshot_enabled(void); +  /* inspect */  uint8_t has_anymod(void); diff --git a/tmk_core/common/arm_atsam/_wait.h b/tmk_core/common/arm_atsam/_wait.h new file mode 100644 index 0000000000..41b686b56c --- /dev/null +++ b/tmk_core/common/arm_atsam/_wait.h @@ -0,0 +1,22 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include "clks.h" + +#define wait_ms(ms) CLK_delay_ms(ms) +#define wait_us(us) CLK_delay_us(us) +#define waitInputPinDelay() diff --git a/tmk_core/common/avr/_wait.h b/tmk_core/common/avr/_wait.h new file mode 100644 index 0000000000..56eb316faf --- /dev/null +++ b/tmk_core/common/avr/_wait.h @@ -0,0 +1,29 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <util/delay.h> + +#define wait_ms(ms) _delay_ms(ms) +#define wait_us(us) _delay_us(us) + +/* The AVR series GPIOs have a one clock read delay for changes in the digital input signal. + * But here's more margin to make it two clocks. */ +#ifndef GPIO_INPUT_PIN_DELAY +#    define GPIO_INPUT_PIN_DELAY 2 +#endif + +#define waitInputPinDelay() __builtin_avr_delay_cycles(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 47a82a2eec..d52c8ac410 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -28,6 +28,10 @@  #    include "rgblight.h"  #endif +#ifdef RGB_MATRIX_ENABLE +#    include "rgb_matrix.h" +#endif +  /** \brief Suspend idle   *   * FIXME: needs doc diff --git a/tmk_core/common/chibios/_wait.h b/tmk_core/common/chibios/_wait.h new file mode 100644 index 0000000000..5bface53e1 --- /dev/null +++ b/tmk_core/common/chibios/_wait.h @@ -0,0 +1,55 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <ch.h> + +/* chThdSleepX of zero maps to infinite - so we map to a tiny delay to still yield */ +#define wait_ms(ms)                     \ +    do {                                \ +        if (ms != 0) {                  \ +            chThdSleepMilliseconds(ms); \ +        } else {                        \ +            chThdSleepMicroseconds(1);  \ +        }                               \ +    } while (0) +#define wait_us(us)                     \ +    do {                                \ +        if (us != 0) {                  \ +            chThdSleepMicroseconds(us); \ +        } else {                        \ +            chThdSleepMicroseconds(1);  \ +        }                               \ +    } while (0) + +/* For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus + * to which the GPIO is connected. + * The connected buses differ depending on the various series of MCUs. + * And since the instruction execution clock of the CPU and the bus clock of GPIO are different, + * there is a delay of several clocks to read the change of the input signal. + * + * Define this delay with the GPIO_INPUT_PIN_DELAY macro. + * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used. + * (A fairly large value of 0.25 microseconds is set.) + */ + +#include "wait.c" + +#ifndef GPIO_INPUT_PIN_DELAY +#    define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4) +#endif + +#define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c index 6cabcc4b81..4a175a6283 100644 --- a/tmk_core/common/chibios/bootloader.c +++ b/tmk_core/common/chibios/bootloader.c @@ -79,7 +79,7 @@ void enter_bootloader_mode_if_requested(void) {      }  } -#elif defined(KL2x) || defined(K20x)  // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS +#elif defined(KL2x) || defined(K20x) || defined(MK66F18)  // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS  /* Kinetis */  #    if defined(BOOTLOADER_KIIBOHD) diff --git a/tmk_core/common/chibios/chibios_config.h b/tmk_core/common/chibios/chibios_config.h index b4d96465d1..1d8ace4955 100644 --- a/tmk_core/common/chibios/chibios_config.h +++ b/tmk_core/common/chibios/chibios_config.h @@ -15,6 +15,8 @@   */  #pragma once +#define SPLIT_USB_DETECT  // Force this on for now +  #if defined(STM32F1XX)  #    define USE_GPIOV1  #endif @@ -28,4 +30,9 @@  #    define USE_I2CV1  #    define USE_I2CV1_CONTRIB  // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed  #    define USE_GPIOV1 +#    define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY +#endif + +#if defined(MK66F18) +#    define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY  #endif diff --git a/tmk_core/common/chibios/sleep_led.c b/tmk_core/common/chibios/sleep_led.c index 5595eec0e5..477056a454 100644 --- a/tmk_core/common/chibios/sleep_led.c +++ b/tmk_core/common/chibios/sleep_led.c @@ -9,21 +9,13 @@   * Use LP timer on Kinetises, TIM14 on STM32F0.   */ -#if defined(KL2x) || defined(K20x) - -/* Use Low Power Timer (LPTMR) */ -#    define TIMER_INTERRUPT_VECTOR KINETIS_LPTMR0_IRQ_VECTOR -#    define RESET_COUNTER LPTMR0->CSR |= LPTMRx_CSR_TCF - -#elif defined(STM32F0XX) - -/* Use TIM14 manually */ -#    define TIMER_INTERRUPT_VECTOR STM32_TIM14_HANDLER -#    define RESET_COUNTER STM32_TIM14->SR &= ~STM32_TIM_SR_UIF - +#ifndef SLEEP_LED_GPT_DRIVER +#    if defined(STM32F0XX) +#        define SLEEP_LED_GPT_DRIVER GPTD14 +#    endif  #endif -#if defined(KL2x) || defined(K20x) || defined(STM32F0XX) /* common parts for timers/interrupts */ +#if defined(KL2x) || defined(K20x) || defined(SLEEP_LED_GPT_DRIVER) /* common parts for timers/interrupts */  /* Breathing Sleep LED brighness(PWM On period) table   * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle @@ -33,10 +25,7 @@   */  static const uint8_t breathing_table[64] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -/* interrupt handler */ -OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) { -    OSAL_IRQ_PROLOGUE(); - +void sleep_led_timer_callback(void) {      /* Software PWM       * timer:1111 1111 1111 1111       *       \_____/\/ \_______/____  count(0-255) @@ -64,17 +53,16 @@ OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {      if (timer.pwm.count == breathing_table[timer.pwm.index]) {          led_set(0);      } - -    /* Reset the counter */ -    RESET_COUNTER; - -    OSAL_IRQ_EPILOGUE();  }  #endif /* common parts for known platforms */  #if defined(KL2x) || defined(K20x) /* platform selection: familiar Kinetis chips */ +/* Use Low Power Timer (LPTMR) */ +#    define TIMER_INTERRUPT_VECTOR KINETIS_LPTMR0_IRQ_VECTOR +#    define RESET_COUNTER LPTMR0->CSR |= LPTMRx_CSR_TCF +  /* LPTMR clock options */  #    define LPTMR_CLOCK_MCGIRCLK 0 /* 4MHz clock */  #    define LPTMR_CLOCK_LPO 1      /* 1kHz clock */ @@ -86,6 +74,18 @@ OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) {  #        define SIM_SCGC5_LPTMR SIM_SCGC5_LPTIMER  #    endif +/* interrupt handler */ +OSAL_IRQ_HANDLER(TIMER_INTERRUPT_VECTOR) { +    OSAL_IRQ_PROLOGUE(); + +    sleep_led_timer_callback(); + +    /* Reset the counter */ +    RESET_COUNTER; + +    OSAL_IRQ_EPILOGUE(); +} +  /* Initialise the timer */  void sleep_led_init(void) {      /* Make sure the clock to the LPTMR is enabled */ @@ -159,45 +159,23 @@ void sleep_led_toggle(void) {      LPTMR0->CSR ^= LPTMRx_CSR_TEN;  } -#elif defined(STM32F0XX) /* platform selection: STM32F0XX */ - -/* Initialise the timer */ -void sleep_led_init(void) { -    /* enable clock */ -    rccEnableTIM14(FALSE); /* low power enable = FALSE */ -    rccResetTIM14(); - -    /* prescale */ -    /* Assuming 48MHz internal clock */ -    /* getting cca 65484 irqs/sec */ -    STM32_TIM14->PSC = 733; +#elif defined(SLEEP_LED_GPT_DRIVER) -    /* auto-reload */ -    /* 0 => interrupt every time */ -    STM32_TIM14->ARR = 3; +static void gptTimerCallback(GPTDriver *gptp) { +    (void)gptp; +    sleep_led_timer_callback(); +} -    /* enable counter update event interrupt */ -    STM32_TIM14->DIER |= STM32_TIM_DIER_UIE; +static const GPTConfig gptcfg = {1000000, gptTimerCallback, 0, 0}; -    /* register interrupt vector */ -    nvicEnableVector(STM32_TIM14_NUMBER, 2); /* vector, priority */ -} +/* Initialise the timer */ +void sleep_led_init(void) { gptStart(&SLEEP_LED_GPT_DRIVER, &gptcfg); } -void sleep_led_enable(void) { -    /* Enable the timer */ -    STM32_TIM14->CR1 = STM32_TIM_CR1_CEN | STM32_TIM_CR1_URS; -    /* URS => update event only on overflow; setting UG bit disabled */ -} +void sleep_led_enable(void) { gptStartContinuous(&SLEEP_LED_GPT_DRIVER, gptcfg.frequency / 0xFFFF); } -void sleep_led_disable(void) { -    /* Disable the timer */ -    STM32_TIM14->CR1 = 0; -} +void sleep_led_disable(void) { gptStopTimer(&SLEEP_LED_GPT_DRIVER); } -void sleep_led_toggle(void) { -    /* Toggle the timer */ -    STM32_TIM14->CR1 ^= STM32_TIM_CR1_CEN; -} +void sleep_led_toggle(void) { (SLEEP_LED_GPT_DRIVER.state == GPT_READY) ? sleep_led_enable() : sleep_led_disable(); }  #else /* platform selection: not on familiar chips */ diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c index 49e20641fb..17f024caba 100644 --- a/tmk_core/common/chibios/suspend.c +++ b/tmk_core/common/chibios/suspend.c @@ -24,6 +24,10 @@  #    include "rgblight.h"  #endif +#ifdef RGB_MATRIX_ENABLE +#    include "rgb_matrix.h" +#endif +  /** \brief suspend idle   *   * FIXME: needs doc @@ -53,6 +57,10 @@ void suspend_power_down(void) {      backlight_set(0);  #endif +#ifdef RGB_MATRIX_ENABLE +    rgb_matrix_task(); +#endif +      // Turn off LED indicators      uint8_t leds_off = 0;  #if defined(BACKLIGHT_CAPS_LOCK) && defined(BACKLIGHT_ENABLE) diff --git a/tmk_core/common/chibios/wait.c b/tmk_core/common/chibios/wait.c new file mode 100644 index 0000000000..c6270fd95e --- /dev/null +++ b/tmk_core/common/chibios/wait.c @@ -0,0 +1,89 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef __OPTIMIZE__ +#    pragma message "Compiler optimizations disabled; wait_cpuclock() won't work as designed" +#endif + +#define CLOCK_DELAY_NOP8 "nop\n\t nop\n\t nop\n\t nop\n\t   nop\n\t nop\n\t nop\n\t nop\n\t" + +__attribute__((always_inline)) static inline void wait_cpuclock(unsigned int n) { /* n: 1..135 */ +    /* The argument n must be a constant expression. +     * That way, compiler optimization will remove unnecessary code. */ +    if (n < 1) { +        return; +    } +    if (n > 8) { +        unsigned int n8 = n / 8; +        n               = n - n8 * 8; +        switch (n8) { +            case 16: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 15: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 14: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 13: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 12: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 11: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 10: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 9: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 8: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 7: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 6: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 5: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 4: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 3: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 2: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 1: +                asm volatile(CLOCK_DELAY_NOP8::: "memory"); +            case 0: +                break; +        } +    } +    switch (n) { +        case 8: +            asm volatile("nop" ::: "memory"); +        case 7: +            asm volatile("nop" ::: "memory"); +        case 6: +            asm volatile("nop" ::: "memory"); +        case 5: +            asm volatile("nop" ::: "memory"); +        case 4: +            asm volatile("nop" ::: "memory"); +        case 3: +            asm volatile("nop" ::: "memory"); +        case 2: +            asm volatile("nop" ::: "memory"); +        case 1: +            asm volatile("nop" ::: "memory"); +        case 0: +            break; +    } +}
\ No newline at end of file diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c index 5e3ebe6ee6..92a5092176 100644 --- a/tmk_core/common/eeconfig.c +++ b/tmk_core/common/eeconfig.c @@ -57,7 +57,7 @@ void eeconfig_init_quantum(void) {      eeprom_update_dword(EECONFIG_HAPTIC, 0);      eeprom_update_byte(EECONFIG_VELOCIKEY, 0);      eeprom_update_dword(EECONFIG_RGB_MATRIX, 0); -    eeprom_update_byte(EECONFIG_RGB_MATRIX_SPEED, 0); +    eeprom_update_word(EECONFIG_RGB_MATRIX_EXTENDED, 0);      // TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS      //        within the emulated eeprom via dfu-util or another tool diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index 86b9e6f99b..9e18fd4e15 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -21,7 +21,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include <stdbool.h>  #ifndef EECONFIG_MAGIC_NUMBER -#    define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEEB  // When changing, decrement this value to avoid future re-init issues +#    define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEEA  // When changing, decrement this value to avoid future re-init issues  #endif  #define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF @@ -43,12 +43,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define EECONFIG_VELOCIKEY (uint8_t *)23  #define EECONFIG_HAPTIC (uint32_t *)24 + +// Mutually exclusive +#define EECONFIG_LED_MATRIX (uint32_t *)28  #define EECONFIG_RGB_MATRIX (uint32_t *)28 -#define EECONFIG_RGB_MATRIX_SPEED (uint8_t *)32 +// Speed & Flags +#define EECONFIG_LED_MATRIX_EXTENDED (uint16_t *)32 +#define EECONFIG_RGB_MATRIX_EXTENDED (uint16_t *)32 +  // TODO: Combine these into a single word and single block of EEPROM -#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)33 +#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)34  // Size of EEPROM being used, other code can refer to this for available EEPROM -#define EECONFIG_SIZE 34 +#define EECONFIG_SIZE 35  /* debug bit */  #define EECONFIG_DEBUG_ENABLE (1 << 0)  #define EECONFIG_DEBUG_MATRIX (1 << 1) diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index ce3255c069..65d9e00c7a 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -34,11 +34,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #ifdef BACKLIGHT_ENABLE  #    include "backlight.h"  #endif -#ifdef BOOTMAGIC_ENABLE -#    include "bootmagic.h" -#else -#    include "magic.h" -#endif  #ifdef MOUSEKEY_ENABLE  #    include "mousekey.h"  #endif @@ -296,11 +291,6 @@ void keyboard_init(void) {  #ifdef ADB_MOUSE_ENABLE      adb_mouse_init();  #endif -#ifdef BOOTMAGIC_ENABLE -    bootmagic(); -#else -    magic(); -#endif  #ifdef BACKLIGHT_ENABLE      backlight_init();  #endif diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c deleted file mode 100644 index e14994164e..0000000000 --- a/tmk_core/common/magic.c +++ /dev/null @@ -1,39 +0,0 @@ -#include <stdint.h> -#include <stdbool.h> -#if defined(__AVR__) -#    include <util/delay.h> -#endif -#include "matrix.h" -#include "bootloader.h" -#include "debug.h" -#include "keymap.h" -#include "host.h" -#include "action_layer.h" -#include "eeconfig.h" -#include "magic.h" - -keymap_config_t keymap_config; - -/** \brief Magic - * - * FIXME: Needs doc - */ -void magic(void) { -    /* check signature */ -    if (!eeconfig_is_enabled()) { -        eeconfig_init(); -    } - -    /* debug enable */ -    debug_config.raw = eeconfig_read_debug(); - -    /* keymap config */ -    keymap_config.raw = eeconfig_read_keymap(); - -    uint8_t default_layer = 0; -    default_layer         = eeconfig_read_default_layer(); -    default_layer_set((layer_state_t)default_layer); - -    /* Also initialize layer state to trigger callback functions for layer_state */ -    layer_state_set_kb((layer_state_t)layer_state); -} diff --git a/tmk_core/common/magic.h b/tmk_core/common/magic.h deleted file mode 100644 index a6552c04dc..0000000000 --- a/tmk_core/common/magic.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void magic(void); diff --git a/tmk_core/common/test/_wait.h b/tmk_core/common/test/_wait.h new file mode 100644 index 0000000000..4e22f593b7 --- /dev/null +++ b/tmk_core/common/test/_wait.h @@ -0,0 +1,22 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <inttypes.h> + +void wait_ms(uint32_t ms); +#define wait_us(us) wait_ms(us / 1000) +#define waitInputPinDelay() diff --git a/tmk_core/common/usb_util.c b/tmk_core/common/usb_util.c new file mode 100644 index 0000000000..e4c50fcb10 --- /dev/null +++ b/tmk_core/common/usb_util.c @@ -0,0 +1,29 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#include "usb_util.h" +#include "wait.h" + +__attribute__((weak)) void usb_disable(void) {} +__attribute__((weak)) bool usb_connected_state(void) { return true; } +__attribute__((weak)) bool usb_vbus_state(void) { +#ifdef USB_VBUS_PIN +    setPinInput(USB_VBUS_PIN); +    wait_us(5); +    return readPin(USB_VBUS_PIN); +#else +    return true; +#endif +} diff --git a/tmk_core/common/usb_util.h b/tmk_core/common/usb_util.h new file mode 100644 index 0000000000..4ebedb1e71 --- /dev/null +++ b/tmk_core/common/usb_util.h @@ -0,0 +1,22 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <stdbool.h> + +void usb_disable(void); +bool usb_connected_state(void); +bool usb_vbus_state(void); diff --git a/tmk_core/common/wait.h b/tmk_core/common/wait.h index 28224fe3aa..cf7180fb07 100644 --- a/tmk_core/common/wait.h +++ b/tmk_core/common/wait.h @@ -1,3 +1,18 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */  #pragma once  #include <inttypes.h> @@ -6,114 +21,8 @@  extern "C" {  #endif -#if defined(__ARMEL__) || defined(__ARMEB__) -#    ifndef __OPTIMIZE__ -#        pragma message "Compiler optimizations disabled; wait_cpuclock() won't work as designed" -#    endif - -#    define wait_cpuclock(x) wait_cpuclock_allnop(x) - -#    define CLOCK_DELAY_NOP8 "nop\n\t nop\n\t nop\n\t nop\n\t   nop\n\t nop\n\t nop\n\t nop\n\t" - -__attribute__((always_inline)) static inline void wait_cpuclock_allnop(unsigned int n) { /* n: 1..135 */ -    /* The argument n must be a constant expression. -     * That way, compiler optimization will remove unnecessary code. */ -    if (n < 1) { -        return; -    } -    if (n > 8) { -        unsigned int n8 = n / 8; -        n               = n - n8 * 8; -        switch (n8) { -            case 16: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 15: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 14: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 13: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 12: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 11: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 10: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 9: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 8: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 7: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 6: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 5: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 4: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 3: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 2: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 1: -                asm volatile(CLOCK_DELAY_NOP8::: "memory"); -            case 0: -                break; -        } -    } -    switch (n) { -        case 8: -            asm volatile("nop" ::: "memory"); -        case 7: -            asm volatile("nop" ::: "memory"); -        case 6: -            asm volatile("nop" ::: "memory"); -        case 5: -            asm volatile("nop" ::: "memory"); -        case 4: -            asm volatile("nop" ::: "memory"); -        case 3: -            asm volatile("nop" ::: "memory"); -        case 2: -            asm volatile("nop" ::: "memory"); -        case 1: -            asm volatile("nop" ::: "memory"); -        case 0: -            break; -    } -} -#endif - -#if defined(__AVR__) -#    include <util/delay.h> -#    define wait_ms(ms) _delay_ms(ms) -#    define wait_us(us) _delay_us(us) -#    define wait_cpuclock(x) __builtin_avr_delay_cycles(x) -#elif defined PROTOCOL_CHIBIOS -#    include <ch.h> -#    define wait_ms(ms)                     \ -        do {                                \ -            if (ms != 0) {                  \ -                chThdSleepMilliseconds(ms); \ -            } else {                        \ -                chThdSleepMicroseconds(1);  \ -            }                               \ -        } while (0) -#    define wait_us(us)                     \ -        do {                                \ -            if (us != 0) {                  \ -                chThdSleepMicroseconds(us); \ -            } else {                        \ -                chThdSleepMicroseconds(1);  \ -            }                               \ -        } while (0) -#elif defined PROTOCOL_ARM_ATSAM -#    include "clks.h" -#    define wait_ms(ms) CLK_delay_ms(ms) -#    define wait_us(us) CLK_delay_us(us) -#else  // Unit tests -void wait_ms(uint32_t ms); -#    define wait_us(us) wait_ms(us / 1000) +#if __has_include_next("_wait.h") +#    include_next "_wait.h" /* Include the platforms _wait.h */  #endif  #ifdef __cplusplus diff --git a/tmk_core/protocol.mk b/tmk_core/protocol.mk index 0c41642b9b..cc87e83478 100644 --- a/tmk_core/protocol.mk +++ b/tmk_core/protocol.mk @@ -54,5 +54,9 @@ ifeq ($(strip $(XT_ENABLE)), yes)      OPT_DEFS += -DXT_ENABLE  endif +ifeq ($(strip $(USB_HID_ENABLE)), yes) +    include $(TMK_DIR)/protocol/usb_hid.mk +endif +  # Search Path  VPATH += $(TMK_DIR)/protocol diff --git a/tmk_core/protocol/chibios.mk b/tmk_core/protocol/chibios.mk index 80554abb32..d01697835b 100644 --- a/tmk_core/protocol/chibios.mk +++ b/tmk_core/protocol/chibios.mk @@ -6,6 +6,7 @@ SRC += $(CHIBIOS_DIR)/usb_main.c  SRC += $(CHIBIOS_DIR)/main.c  SRC += usb_descriptor.c  SRC += $(CHIBIOS_DIR)/usb_driver.c +SRC += $(CHIBIOS_DIR)/usb_util.c  SRC += $(LIBSRC)  VPATH += $(TMK_PATH)/$(PROTOCOL_DIR) diff --git a/tmk_core/protocol/chibios/usb_util.c b/tmk_core/protocol/chibios/usb_util.c new file mode 100644 index 0000000000..5945e8a8de --- /dev/null +++ b/tmk_core/protocol/chibios/usb_util.c @@ -0,0 +1,21 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#include <hal.h> +#include "usb_util.h" + +void usb_disable(void) { usbStop(&USBD1); } + +bool usb_connected_state(void) { return usbGetDriverStateI(&USBD1) == USB_ACTIVE; } diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 1cc1fa04e5..9d9fb728b1 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -44,6 +44,7 @@ ifeq ($(strip $(VIRTSER_ENABLE)), yes)  endif  SRC += $(LUFA_SRC) +SRC += $(LUFA_DIR)/usb_util.c  # Search Path  VPATH += $(TMK_PATH)/$(LUFA_DIR) diff --git a/tmk_core/protocol/lufa/usb_util.c b/tmk_core/protocol/lufa/usb_util.c new file mode 100644 index 0000000000..9e943a21b9 --- /dev/null +++ b/tmk_core/protocol/lufa/usb_util.c @@ -0,0 +1,34 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#include <LUFA/Drivers/USB/USB.h> +#include "usb_util.h" +#include "wait.h" + +void usb_disable(void) { +    USB_Disable(); +    USB_DeviceState = DEVICE_STATE_Unattached; +} + +bool usb_connected_state(void) { return USB_Device_IsAddressSet(); } + +#if defined(OTGPADE) +bool usb_vbus_state(void) { +    USB_OTGPAD_On();  // enables VBUS pad +    wait_us(5); + +    return USB_VBUS_GetStatus();  // checks state of VBUS +} +#endif diff --git a/tmk_core/protocol/vusb.mk b/tmk_core/protocol/vusb.mk index 1de6003089..e4d013b38d 100644 --- a/tmk_core/protocol/vusb.mk +++ b/tmk_core/protocol/vusb.mk @@ -5,6 +5,7 @@ VUSB_PATH = $(LIB_PATH)/vusb  SRC += $(VUSB_DIR)/main.c \  	$(VUSB_DIR)/vusb.c \ +	$(VUSB_DIR)/usb_util.c \  	$(VUSB_PATH)/usbdrv/usbdrv.c \  	$(VUSB_PATH)/usbdrv/usbdrvasm.S \  	$(VUSB_PATH)/usbdrv/oddebug.c diff --git a/tmk_core/protocol/vusb/usb_util.c b/tmk_core/protocol/vusb/usb_util.c new file mode 100644 index 0000000000..602854dbe6 --- /dev/null +++ b/tmk_core/protocol/vusb/usb_util.c @@ -0,0 +1,24 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is 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 <http://www.gnu.org/licenses/>. + */ +#include <usbdrv/usbdrv.h> +#include "usb_util.h" + +void usb_disable(void) { usbDeviceDisconnect(); } + +bool usb_connected_state(void) { +    usbPoll(); +    return usbConfiguration; +} | 
