Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bfac351ed | ||
|
|
2c0bc5ed6b | ||
|
|
4aaa4b3428 | ||
|
|
90046af17f | ||
|
|
27b512d9f5 | ||
|
|
9153ff59d4 | ||
|
|
ac7a9e3c66 | ||
|
|
ea47be936b | ||
|
|
5b5f452bf9 | ||
|
|
be666b2d8a | ||
|
|
d6cc90d027 | ||
|
|
3527efcbd2 | ||
|
|
3e45bc775e | ||
|
|
aff5c49ee9 | ||
|
|
7f4f0f7685 | ||
|
|
b1ed855871 | ||
|
|
563ce3f225 | ||
|
|
38e01a7480 | ||
|
|
54b572159f | ||
|
|
6f80217958 | ||
|
|
e76bf17d36 | ||
|
|
6cb2d7ba6d | ||
|
|
526bc4c7cc | ||
|
|
484c85bd0d | ||
|
|
a7b1b146d1 | ||
|
|
7b5fa4b13e | ||
|
|
c71c078dff | ||
|
|
134a69f4ad | ||
|
|
40383089d0 | ||
|
|
7f0def77a2 | ||
|
|
b7688590b8 | ||
|
|
0c0e208a36 | ||
|
|
3ddec14eb8 | ||
|
|
46b4b4407f | ||
|
|
c2390bf321 | ||
|
|
c043edd138 | ||
|
|
cc7bf108a9 | ||
|
|
bb1b441325 | ||
|
|
e2f60eba2f | ||
|
|
8443481aea | ||
|
|
d9abb833e5 | ||
|
|
2c6c483096 | ||
|
|
6b46c06018 | ||
|
|
c0859ac096 | ||
|
|
93b004c943 | ||
|
|
fbcbf44926 | ||
|
|
3744a2b641 | ||
|
|
cfba216541 | ||
|
|
0c1256e60a | ||
|
|
b7d2a9f980 | ||
|
|
ee1be3e5b5 | ||
|
|
8e0444618f | ||
|
|
de78d9e1ff | ||
|
|
08e9fc142c | ||
|
|
41dee98ec4 | ||
|
|
72d4e4bfd7 | ||
|
|
2149f3b588 | ||
|
|
33483b440c | ||
|
|
fc921a9c54 | ||
|
|
7e56c4bcb1 | ||
|
|
2c3706611f |
No files matched your search
+2
-1
@@ -19,6 +19,7 @@ install:
|
|||||||
before_script:
|
before_script:
|
||||||
- avr-gcc --version
|
- avr-gcc --version
|
||||||
script:
|
script:
|
||||||
|
- git rev-parse --short HEAD
|
||||||
- make test:all AUTOGEN=false
|
- make test:all AUTOGEN=false
|
||||||
- bash util/travis_build.sh
|
- bash util/travis_build.sh
|
||||||
- bash util/travis_docs.sh
|
- bash util/travis_docs.sh
|
||||||
@@ -33,7 +34,7 @@ addons:
|
|||||||
- diffutils
|
- diffutils
|
||||||
- dos2unix
|
- dos2unix
|
||||||
- doxygen
|
- doxygen
|
||||||
after_success:
|
after_success:
|
||||||
bash util/travis_compiled_push.sh
|
bash util/travis_compiled_push.sh
|
||||||
notifications:
|
notifications:
|
||||||
webhooks:
|
webhooks:
|
||||||
|
|||||||
@@ -21,5 +21,4 @@ COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
|
|||||||
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/api
|
COMMON_VPATH += $(QUANTUM_PATH)/api
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/split_common
|
|
||||||
COMMON_VPATH += $(DRIVER_PATH)
|
COMMON_VPATH += $(DRIVER_PATH)
|
||||||
+1
-5
@@ -263,14 +263,10 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
||||||
SERIAL_BACKWARD_COMPAT := $(wildcard $(QUANTUM_DIR)/split_common/serial_backward_compatibility.h)
|
|
||||||
ifneq ($(SERIAL_BACKWARD_COMPAT),)
|
|
||||||
CONFIG_H += $(SERIAL_BACKWARD_COMPAT)
|
|
||||||
# $(info CONFIG_H=$(CONFIG_H))
|
|
||||||
endif
|
|
||||||
OPT_DEFS += -DSPLIT_KEYBOARD
|
OPT_DEFS += -DSPLIT_KEYBOARD
|
||||||
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
|
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
|
||||||
$(QUANTUM_DIR)/split_common/split_util.c
|
$(QUANTUM_DIR)/split_common/split_util.c
|
||||||
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/i2c.c
|
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/i2c.c
|
||||||
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c
|
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c
|
||||||
|
COMMON_VPATH += $(QUANTUM_PATH)/split_common
|
||||||
endif
|
endif
|
||||||
+35
-2
@@ -197,8 +197,27 @@ If you define these options you will enable the associated feature, which may in
|
|||||||
|
|
||||||
Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk
|
Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk
|
||||||
|
|
||||||
* `#define SPLIT_HAND_PIN B7`
|
### Setting Handedness
|
||||||
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace 'B7' with the pin you are using. This is optional and you can still use the EEHANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
|
|
||||||
|
One thing to remember, the side that the USB port is plugged into is always the master half. The side not plugged into USB is the slave.
|
||||||
|
|
||||||
|
There are a few different ways to set handedness for split keyboards (listed in order of precedence):
|
||||||
|
|
||||||
|
1. Set `SPLIT_HAND_PIN`: Reads a pin to determine handedness. If pin is high, it's the left side, if low, the half is determined to be the right side
|
||||||
|
2. Set `EE_HANDS` and flash `eeprom-lefthand.eep`/`eeprom-righthand.eep` to each half
|
||||||
|
3. Set `MASTER_RIGHT`: Half that is plugged into the USB port is determined to be the master and right half (inverse of the default)
|
||||||
|
4. Default: The side that is plugged into the USB port is the master half and is assumed to be the left half. The slave side is the right half
|
||||||
|
|
||||||
|
* `#define SPLIT_HAND_PIN B7`
|
||||||
|
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace `B7` with the pin you are using. This is optional, and if you leave `SPLIT_HAND_PIN` undefined, then you can still use the EE_HANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
|
||||||
|
|
||||||
|
* `#define EE_HANDS` (only works if `SPLIT_HAND_PIN` is not defined)
|
||||||
|
* Reads the handedness value stored in the EEPROM after `eeprom-lefthand.eep`/`eeprom-righthand.eep` has been flashed to their respective halves.
|
||||||
|
|
||||||
|
* `#define MASTER_RIGHT`
|
||||||
|
* Master half is defined to be the right half.
|
||||||
|
|
||||||
|
### Other Options
|
||||||
|
|
||||||
* `#define USE_I2C`
|
* `#define USE_I2C`
|
||||||
* For using I2C instead of Serial (defaults to serial)
|
* For using I2C instead of Serial (defaults to serial)
|
||||||
@@ -206,6 +225,20 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
|
|||||||
* `#define SOFT_SERIAL_PIN D0`
|
* `#define SOFT_SERIAL_PIN D0`
|
||||||
* When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
|
* When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
|
||||||
|
|
||||||
|
* `#define MATRIX_ROW_PINS_RIGHT { <row pins> }`
|
||||||
|
* `#define MATRIX_COL_PINS_RIGHT { <col pins> }`
|
||||||
|
* If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns.
|
||||||
|
|
||||||
|
* `#define SELECT_SOFT_SERIAL_SPEED <speed>` (default speed is 1)
|
||||||
|
* Sets the protocol speed when using serial communication
|
||||||
|
* Speeds:
|
||||||
|
* 0: about 189kbps (Experimental only)
|
||||||
|
* 1: about 137kbps (default)
|
||||||
|
* 2: about 75kbps
|
||||||
|
* 3: about 39kbps
|
||||||
|
* 4: about 26kbps
|
||||||
|
* 5: about 20kbps
|
||||||
|
|
||||||
# The `rules.mk` File
|
# The `rules.mk` File
|
||||||
|
|
||||||
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
|
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Additionally, if at least one right-handed modifier is specified in a Mod Tap or
|
|||||||
|
|
||||||
# Switching and Toggling Layers
|
# Switching and Toggling Layers
|
||||||
|
|
||||||
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers)
|
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers) When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
|
||||||
|
|
||||||
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
|
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
|
||||||
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
|
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
|
||||||
|
|||||||
@@ -24,10 +24,10 @@
|
|||||||
#include "wait.h"
|
#include "wait.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "is31fl3733.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
#include "progmem.h"
|
#include "progmem.h"
|
||||||
#include "rgb_matrix.h"
|
|
||||||
|
|
||||||
// This is a 7-bit address, that gets left-shifted and bit 0
|
// This is a 7-bit address, that gets left-shifted and bit 0
|
||||||
// set to 0 for write, 1 for read (as per I2C protocol)
|
// set to 0 for write, 1 for read (as per I2C protocol)
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -10,6 +10,3 @@ AUDIO_ENABLE ?= no
|
|||||||
RGBLIGHT_ENABLE ?= yes
|
RGBLIGHT_ENABLE ?= yes
|
||||||
UNICODE_ENABLE ?= yes
|
UNICODE_ENABLE ?= yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -18,7 +18,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -13,6 +13,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file has been automatically generated using ChibiStudio board
|
||||||
|
* generator plugin. Do not edit manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "hal.h"
|
||||||
|
|
||||||
|
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief PAL setup.
|
||||||
|
* @details Digital I/O ports static configuration as defined in @p board.h.
|
||||||
|
* This variable is used by the HAL when initializing the PAL driver.
|
||||||
|
*/
|
||||||
|
const PALConfig pal_default_config = {
|
||||||
|
#if STM32_HAS_GPIOA
|
||||||
|
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
||||||
|
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOB
|
||||||
|
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
||||||
|
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOC
|
||||||
|
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
||||||
|
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOD
|
||||||
|
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
||||||
|
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOE
|
||||||
|
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
||||||
|
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOF
|
||||||
|
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
||||||
|
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOG
|
||||||
|
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
||||||
|
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOH
|
||||||
|
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
||||||
|
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOI
|
||||||
|
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
||||||
|
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void enter_bootloader_mode_if_requested(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Early initialization code.
|
||||||
|
* @details This initialization must be performed just after stack setup
|
||||||
|
* and before any other initialization.
|
||||||
|
*/
|
||||||
|
void __early_init(void) {
|
||||||
|
enter_bootloader_mode_if_requested();
|
||||||
|
stm32_clock_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief MMC_SPI card detection.
|
||||||
|
*/
|
||||||
|
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
||||||
|
|
||||||
|
(void)mmcp;
|
||||||
|
/* TODO: Fill the implementation.*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief MMC_SPI card write protection detection.
|
||||||
|
*/
|
||||||
|
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
||||||
|
|
||||||
|
(void)mmcp;
|
||||||
|
/* TODO: Fill the implementation.*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Board-specific initialization code.
|
||||||
|
* @todo Add your board-specific code, if any.
|
||||||
|
*/
|
||||||
|
void boardInit(void) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,923 @@
|
|||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file has been automatically generated using ChibiStudio board
|
||||||
|
* generator plugin. Do not edit manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOARD_H
|
||||||
|
#define BOARD_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setup for ST STM32F072B-Discovery board.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board identifier.
|
||||||
|
*/
|
||||||
|
#define BOARD_ST_STM32F072B_DISCOVERY
|
||||||
|
#define BOARD_NAME "ST STM32F072B-Discovery"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board oscillators-related settings.
|
||||||
|
* NOTE: LSE not fitted.
|
||||||
|
* NOTE: HSE not fitted.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_LSECLK)
|
||||||
|
#define STM32_LSECLK 0U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STM32_LSEDRV (3U << 3U)
|
||||||
|
|
||||||
|
#if !defined(STM32_HSECLK)
|
||||||
|
#define STM32_HSECLK 0U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STM32_HSE_BYPASS
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MCU type as defined in the ST header.
|
||||||
|
*/
|
||||||
|
#define STM32F072xB
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IO pins assignments.
|
||||||
|
*/
|
||||||
|
#define GPIOA_BUTTON 0U
|
||||||
|
#define GPIOA_PIN1 1U
|
||||||
|
#define GPIOA_PIN2 2U
|
||||||
|
#define GPIOA_PIN3 3U
|
||||||
|
#define GPIOA_PIN4 4U
|
||||||
|
#define GPIOA_PIN5 5U
|
||||||
|
#define GPIOA_PIN6 6U
|
||||||
|
#define GPIOA_PIN7 7U
|
||||||
|
#define GPIOA_PIN8 8U
|
||||||
|
#define GPIOA_PIN9 9U
|
||||||
|
#define GPIOA_PIN10 10U
|
||||||
|
#define GPIOA_USB_DM 11U
|
||||||
|
#define GPIOA_USB_DP 12U
|
||||||
|
#define GPIOA_SWDIO 13U
|
||||||
|
#define GPIOA_SWCLK 14U
|
||||||
|
#define GPIOA_PIN15 15U
|
||||||
|
|
||||||
|
#define GPIOB_PIN0 0U
|
||||||
|
#define GPIOB_PIN1 1U
|
||||||
|
#define GPIOB_PIN2 2U
|
||||||
|
#define GPIOB_PIN3 3U
|
||||||
|
#define GPIOB_PIN4 4U
|
||||||
|
#define GPIOB_PIN5 5U
|
||||||
|
#define GPIOB_PIN6 6U
|
||||||
|
#define GPIOB_PIN7 7U
|
||||||
|
#define GPIOB_PIN8 8U
|
||||||
|
#define GPIOB_PIN9 9U
|
||||||
|
#define GPIOB_PIN10 10U
|
||||||
|
#define GPIOB_PIN11 11U
|
||||||
|
#define GPIOB_PIN12 12U
|
||||||
|
#define GPIOB_SPI2_SCK 13U
|
||||||
|
#define GPIOB_SPI2_MISO 14U
|
||||||
|
#define GPIOB_SPI2_MOSI 15U
|
||||||
|
|
||||||
|
#define GPIOC_MEMS_CS 0U
|
||||||
|
#define GPIOC_PIN1 1U
|
||||||
|
#define GPIOC_PIN2 2U
|
||||||
|
#define GPIOC_PIN3 3U
|
||||||
|
#define GPIOC_PIN4 4U
|
||||||
|
#define GPIOC_PIN5 5U
|
||||||
|
#define GPIOC_LED_RED 6U
|
||||||
|
#define GPIOC_LED_BLUE 7U
|
||||||
|
#define GPIOC_LED_ORANGE 8U
|
||||||
|
#define GPIOC_LED_GREEN 9U
|
||||||
|
#define GPIOC_PIN10 10U
|
||||||
|
#define GPIOC_PIN11 11U
|
||||||
|
#define GPIOC_PIN12 12U
|
||||||
|
#define GPIOC_PIN13 13U
|
||||||
|
#define GPIOC_OSC32_IN 14U
|
||||||
|
#define GPIOC_OSC32_OUT 15U
|
||||||
|
|
||||||
|
#define GPIOD_PIN0 0U
|
||||||
|
#define GPIOD_PIN1 1U
|
||||||
|
#define GPIOD_PIN2 2U
|
||||||
|
#define GPIOD_PIN3 3U
|
||||||
|
#define GPIOD_PIN4 4U
|
||||||
|
#define GPIOD_PIN5 5U
|
||||||
|
#define GPIOD_PIN6 6U
|
||||||
|
#define GPIOD_PIN7 7U
|
||||||
|
#define GPIOD_PIN8 8U
|
||||||
|
#define GPIOD_PIN9 9U
|
||||||
|
#define GPIOD_PIN10 10U
|
||||||
|
#define GPIOD_PIN11 11U
|
||||||
|
#define GPIOD_PIN12 12U
|
||||||
|
#define GPIOD_PIN13 13U
|
||||||
|
#define GPIOD_PIN14 14U
|
||||||
|
#define GPIOD_PIN15 15U
|
||||||
|
|
||||||
|
#define GPIOE_PIN0 0U
|
||||||
|
#define GPIOE_PIN1 1U
|
||||||
|
#define GPIOE_PIN2 2U
|
||||||
|
#define GPIOE_PIN3 3U
|
||||||
|
#define GPIOE_PIN4 4U
|
||||||
|
#define GPIOE_PIN5 5U
|
||||||
|
#define GPIOE_PIN6 6U
|
||||||
|
#define GPIOE_PIN7 7U
|
||||||
|
#define GPIOE_PIN8 8U
|
||||||
|
#define GPIOE_PIN9 9U
|
||||||
|
#define GPIOE_PIN10 10U
|
||||||
|
#define GPIOE_PIN11 11U
|
||||||
|
#define GPIOE_PIN12 12U
|
||||||
|
#define GPIOE_PIN13 13U
|
||||||
|
#define GPIOE_PIN14 14U
|
||||||
|
#define GPIOE_PIN15 15U
|
||||||
|
|
||||||
|
#define GPIOF_OSC_IN 0U
|
||||||
|
#define GPIOF_OSC_OUT 1U
|
||||||
|
#define GPIOF_PIN2 2U
|
||||||
|
#define GPIOF_PIN3 3U
|
||||||
|
#define GPIOF_PIN4 4U
|
||||||
|
#define GPIOF_PIN5 5U
|
||||||
|
#define GPIOF_PIN6 6U
|
||||||
|
#define GPIOF_PIN7 7U
|
||||||
|
#define GPIOF_PIN8 8U
|
||||||
|
#define GPIOF_PIN9 9U
|
||||||
|
#define GPIOF_PIN10 10U
|
||||||
|
#define GPIOF_PIN11 11U
|
||||||
|
#define GPIOF_PIN12 12U
|
||||||
|
#define GPIOF_PIN13 13U
|
||||||
|
#define GPIOF_PIN14 14U
|
||||||
|
#define GPIOF_PIN15 15U
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IO lines assignments.
|
||||||
|
*/
|
||||||
|
#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
|
||||||
|
#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
|
||||||
|
#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
|
||||||
|
#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
|
||||||
|
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
|
||||||
|
|
||||||
|
#define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
|
||||||
|
#define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
|
||||||
|
#define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
|
||||||
|
|
||||||
|
#define LINE_MEMS_CS PAL_LINE(GPIOC, 0U)
|
||||||
|
#define LINE_LED_RED PAL_LINE(GPIOC, 6U)
|
||||||
|
#define LINE_LED_BLUE PAL_LINE(GPIOC, 7U)
|
||||||
|
#define LINE_LED_ORANGE PAL_LINE(GPIOC, 8U)
|
||||||
|
#define LINE_LED_GREEN PAL_LINE(GPIOC, 9U)
|
||||||
|
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
|
||||||
|
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
|
||||||
|
#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* I/O ports initial setup, this configuration is established soon after reset
|
||||||
|
* in the initialization code.
|
||||||
|
* Please refer to the STM32 Reference Manual for details.
|
||||||
|
*/
|
||||||
|
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
|
||||||
|
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
|
||||||
|
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
|
||||||
|
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
|
||||||
|
#define PIN_ODR_LOW(n) (0U << (n))
|
||||||
|
#define PIN_ODR_HIGH(n) (1U << (n))
|
||||||
|
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
|
||||||
|
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
|
||||||
|
#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
|
||||||
|
#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
|
||||||
|
#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
|
||||||
|
#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
|
||||||
|
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
|
||||||
|
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
|
||||||
|
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
|
||||||
|
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOA setup:
|
||||||
|
*
|
||||||
|
* PA0 - BUTTON (input floating).
|
||||||
|
* PA1 - PIN1 (input pullup).
|
||||||
|
* PA2 - PIN2 (input pullup).
|
||||||
|
* PA3 - PIN3 (input pullup).
|
||||||
|
* PA4 - PIN4 (input pullup).
|
||||||
|
* PA5 - PIN5 (input pullup).
|
||||||
|
* PA6 - PIN6 (input pullup).
|
||||||
|
* PA7 - PIN7 (input pullup).
|
||||||
|
* PA8 - PIN8 (input pullup).
|
||||||
|
* PA9 - PIN9 (input pullup).
|
||||||
|
* PA10 - PIN10 (input pullup).
|
||||||
|
* PA11 - USB_DM (input floating).
|
||||||
|
* PA12 - USB_DP (input floating).
|
||||||
|
* PA13 - SWDIO (alternate 0).
|
||||||
|
* PA14 - SWCLK (alternate 0).
|
||||||
|
* PA15 - PIN15 (input pullup).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN1) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN5) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN6) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN7) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN8) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN9) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_USB_DM) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_USB_DP) | \
|
||||||
|
PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
|
||||||
|
PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
|
||||||
|
PIN_MODE_INPUT(GPIOA_PIN15))
|
||||||
|
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
|
||||||
|
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_USB_DM) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOA_USB_DP) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOA_SWDIO) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOA_PIN15))
|
||||||
|
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
|
||||||
|
PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOA_PIN15))
|
||||||
|
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN1) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN5) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN6) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN7) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN8) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN9) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_USB_DM) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_USB_DP) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_SWDIO) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_SWCLK) | \
|
||||||
|
PIN_ODR_HIGH(GPIOA_PIN15))
|
||||||
|
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN1, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN6, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN7, 0U))
|
||||||
|
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN9, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_USB_DM, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_USB_DP, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOA_PIN15, 0U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOB setup:
|
||||||
|
*
|
||||||
|
* PB0 - PIN0 (input pullup).
|
||||||
|
* PB1 - PIN1 (input pullup).
|
||||||
|
* PB2 - PIN2 (input pullup).
|
||||||
|
* PB3 - PIN3 (input pullup).
|
||||||
|
* PB4 - PIN4 (input pullup).
|
||||||
|
* PB5 - PIN5 (input pullup).
|
||||||
|
* PB6 - PIN6 (input pullup).
|
||||||
|
* PB7 - PIN7 (input pullup).
|
||||||
|
* PB8 - PIN8 (input pullup).
|
||||||
|
* PB9 - PIN9 (input pullup).
|
||||||
|
* PB10 - PIN10 (input pullup).
|
||||||
|
* PB11 - PIN11 (input pullup).
|
||||||
|
* PB12 - PIN12 (input pullup).
|
||||||
|
* PB13 - SPI2_SCK (alternate 0).
|
||||||
|
* PB14 - SPI2_MISO (alternate 0).
|
||||||
|
* PB15 - SPI2_MOSI (alternate 0).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN1) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN5) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN6) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN7) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN8) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN9) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN11) | \
|
||||||
|
PIN_MODE_INPUT(GPIOB_PIN12) | \
|
||||||
|
PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \
|
||||||
|
PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \
|
||||||
|
PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
|
||||||
|
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
|
||||||
|
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOB_PIN2) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOB_PIN3) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOB_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_SPI2_SCK) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MISO) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOB_SPI2_MOSI))
|
||||||
|
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
|
||||||
|
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN1) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN5) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN6) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN7) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN8) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN9) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN11) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_PIN12) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \
|
||||||
|
PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
|
||||||
|
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN1, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN6, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN7, 0U))
|
||||||
|
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN9, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN11, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_PIN12, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_SPI2_SCK, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_SPI2_MISO, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOB_SPI2_MOSI, 0U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOC setup:
|
||||||
|
*
|
||||||
|
* PC0 - MEMS_CS (output pushpull maximum).
|
||||||
|
* PC1 - PIN1 (input pullup).
|
||||||
|
* PC2 - PIN2 (input pullup).
|
||||||
|
* PC3 - PIN3 (input pullup).
|
||||||
|
* PC4 - PIN4 (input pullup).
|
||||||
|
* PC5 - PIN5 (input pullup).
|
||||||
|
* PC6 - LED_RED (output pushpull maximum).
|
||||||
|
* PC7 - LED_BLUE (output pushpull maximum).
|
||||||
|
* PC8 - LED_ORANGE (output pushpull maximum).
|
||||||
|
* PC9 - LED_GREEN (output pushpull maximum).
|
||||||
|
* PC10 - PIN10 (input pullup).
|
||||||
|
* PC11 - PIN11 (input pullup).
|
||||||
|
* PC12 - PIN12 (input pullup).
|
||||||
|
* PC13 - PIN13 (input pullup).
|
||||||
|
* PC14 - OSC32_IN (input floating).
|
||||||
|
* PC15 - OSC32_OUT (input floating).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_MEMS_CS) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN1) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN5) | \
|
||||||
|
PIN_MODE_OUTPUT(GPIOC_LED_RED) | \
|
||||||
|
PIN_MODE_OUTPUT(GPIOC_LED_BLUE) | \
|
||||||
|
PIN_MODE_OUTPUT(GPIOC_LED_ORANGE) | \
|
||||||
|
PIN_MODE_OUTPUT(GPIOC_LED_GREEN) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN11) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN12) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_PIN13) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
|
||||||
|
PIN_MODE_INPUT(GPIOC_OSC32_OUT))
|
||||||
|
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_MEMS_CS) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_LED_RED) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_LED_BLUE) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_LED_ORANGE) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_LED_GREEN) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
|
||||||
|
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_HIGH(GPIOC_MEMS_CS) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_LED_RED) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_LED_BLUE) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_LED_ORANGE) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_LED_GREEN) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \
|
||||||
|
PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
|
||||||
|
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_MEMS_CS) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_LED_RED) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_LED_BLUE) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_LED_ORANGE) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_LED_GREEN) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
|
||||||
|
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_MEMS_CS) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN1) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN5) | \
|
||||||
|
PIN_ODR_LOW(GPIOC_LED_RED) | \
|
||||||
|
PIN_ODR_LOW(GPIOC_LED_BLUE) | \
|
||||||
|
PIN_ODR_LOW(GPIOC_LED_ORANGE) | \
|
||||||
|
PIN_ODR_LOW(GPIOC_LED_GREEN) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN11) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN12) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_PIN13) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
|
||||||
|
PIN_ODR_HIGH(GPIOC_OSC32_OUT))
|
||||||
|
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_MEMS_CS, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN1, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_LED_RED, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_LED_BLUE, 0U))
|
||||||
|
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED_ORANGE, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_LED_GREEN, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN11, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN12, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_PIN13, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOD setup:
|
||||||
|
*
|
||||||
|
* PD0 - PIN0 (input pullup).
|
||||||
|
* PD1 - PIN1 (input pullup).
|
||||||
|
* PD2 - PIN2 (input pullup).
|
||||||
|
* PD3 - PIN3 (input pullup).
|
||||||
|
* PD4 - PIN4 (input pullup).
|
||||||
|
* PD5 - PIN5 (input pullup).
|
||||||
|
* PD6 - PIN6 (input pullup).
|
||||||
|
* PD7 - PIN7 (input pullup).
|
||||||
|
* PD8 - PIN8 (input pullup).
|
||||||
|
* PD9 - PIN9 (input pullup).
|
||||||
|
* PD10 - PIN10 (input pullup).
|
||||||
|
* PD11 - PIN11 (input pullup).
|
||||||
|
* PD12 - PIN12 (input pullup).
|
||||||
|
* PD13 - PIN13 (input pullup).
|
||||||
|
* PD14 - PIN14 (input pullup).
|
||||||
|
* PD15 - PIN15 (input pullup).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN1) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN5) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN6) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN7) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN8) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN9) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN11) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN12) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN13) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN14) | \
|
||||||
|
PIN_MODE_INPUT(GPIOD_PIN15))
|
||||||
|
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
|
||||||
|
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOD_PIN15))
|
||||||
|
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOD_PIN15))
|
||||||
|
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN1) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN5) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN6) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN7) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN8) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN9) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN11) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN12) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN13) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN14) | \
|
||||||
|
PIN_ODR_HIGH(GPIOD_PIN15))
|
||||||
|
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN1, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN6, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN7, 0U))
|
||||||
|
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN9, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN11, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN12, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN13, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN14, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOD_PIN15, 0U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOE setup:
|
||||||
|
*
|
||||||
|
* PE0 - PIN0 (input pullup).
|
||||||
|
* PE1 - PIN1 (input pullup).
|
||||||
|
* PE2 - PIN2 (input pullup).
|
||||||
|
* PE3 - PIN3 (input pullup).
|
||||||
|
* PE4 - PIN4 (input pullup).
|
||||||
|
* PE5 - PIN5 (input pullup).
|
||||||
|
* PE6 - PIN6 (input pullup).
|
||||||
|
* PE7 - PIN7 (input pullup).
|
||||||
|
* PE8 - PIN8 (input pullup).
|
||||||
|
* PE9 - PIN9 (input pullup).
|
||||||
|
* PE10 - PIN10 (input pullup).
|
||||||
|
* PE11 - PIN11 (input pullup).
|
||||||
|
* PE12 - PIN12 (input pullup).
|
||||||
|
* PE13 - PIN13 (input pullup).
|
||||||
|
* PE14 - PIN14 (input pullup).
|
||||||
|
* PE15 - PIN15 (input pullup).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN1) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN5) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN6) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN7) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN8) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN9) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN11) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN12) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN13) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN14) | \
|
||||||
|
PIN_MODE_INPUT(GPIOE_PIN15))
|
||||||
|
#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOE_PIN15))
|
||||||
|
#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOE_PIN0) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN1) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN2) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN3) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN5) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN6) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN7) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN8) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN9) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN11) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN12) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN13) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN14) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOE_PIN15))
|
||||||
|
#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN1) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN5) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN6) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN7) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN8) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN9) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN10) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN11) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN12) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN13) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN14) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOE_PIN15))
|
||||||
|
#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN1) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN5) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN6) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN7) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN8) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN9) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN11) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN12) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN13) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN14) | \
|
||||||
|
PIN_ODR_HIGH(GPIOE_PIN15))
|
||||||
|
#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN1, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN6, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN7, 0U))
|
||||||
|
#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN9, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN11, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN12, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN13, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN14, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOE_PIN15, 0U))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIOF setup:
|
||||||
|
*
|
||||||
|
* PF0 - OSC_IN (input floating).
|
||||||
|
* PF1 - OSC_OUT (input floating).
|
||||||
|
* PF2 - PIN2 (input pullup).
|
||||||
|
* PF3 - PIN3 (input pullup).
|
||||||
|
* PF4 - PIN4 (input pullup).
|
||||||
|
* PF5 - PIN5 (input pullup).
|
||||||
|
* PF6 - PIN6 (input pullup).
|
||||||
|
* PF7 - PIN7 (input pullup).
|
||||||
|
* PF8 - PIN8 (input pullup).
|
||||||
|
* PF9 - PIN9 (input pullup).
|
||||||
|
* PF10 - PIN10 (input pullup).
|
||||||
|
* PF11 - PIN11 (input pullup).
|
||||||
|
* PF12 - PIN12 (input pullup).
|
||||||
|
* PF13 - PIN13 (input pullup).
|
||||||
|
* PF14 - PIN14 (input pullup).
|
||||||
|
* PF15 - PIN15 (input pullup).
|
||||||
|
*/
|
||||||
|
#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_OSC_OUT) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN2) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN3) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN4) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN5) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN6) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN7) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN8) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN9) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN10) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN11) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN12) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN13) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN14) | \
|
||||||
|
PIN_MODE_INPUT(GPIOF_PIN15))
|
||||||
|
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
|
||||||
|
PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
|
||||||
|
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOF_OSC_IN) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_OSC_OUT) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
|
||||||
|
PIN_OSPEED_VERYLOW(GPIOF_PIN15))
|
||||||
|
#define VAL_GPIOF_PUPDR (PIN_PUPDR_FLOATING(GPIOF_OSC_IN) | \
|
||||||
|
PIN_PUPDR_FLOATING(GPIOF_OSC_OUT) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
|
||||||
|
PIN_PUPDR_PULLUP(GPIOF_PIN15))
|
||||||
|
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_OSC_OUT) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN2) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN3) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN4) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN5) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN6) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN7) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN8) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN9) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN10) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN11) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN12) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN13) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN14) | \
|
||||||
|
PIN_ODR_HIGH(GPIOF_PIN15))
|
||||||
|
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_OSC_OUT, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN2, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN3, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN4, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN5, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN6, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN7, 0U))
|
||||||
|
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN9, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN10, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN11, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN12, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN13, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN14, 0U) | \
|
||||||
|
PIN_AFIO_AF(GPIOF_PIN15, 0U))
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(_FROM_ASM_)
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void boardInit(void);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* _FROM_ASM_ */
|
||||||
|
|
||||||
|
#endif /* BOARD_H */
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# List of all the board related files.
|
||||||
|
BOARDSRC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY/board.c
|
||||||
|
|
||||||
|
# Required include directories
|
||||||
|
BOARDINC = $(BOARD_PATH)/boards/ST_STM32F072B_DISCOVERY
|
||||||
@@ -1,5 +1,2 @@
|
|||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,5 +1,2 @@
|
|||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -44,6 +44,3 @@
|
|||||||
#
|
#
|
||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -4,19 +4,11 @@ void uart_init(void) {
|
|||||||
SERIAL_UART_INIT();
|
SERIAL_UART_INIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
void led_init(void) {
|
|
||||||
DDRD |= (1<<1);
|
|
||||||
PORTD |= (1<<1);
|
|
||||||
DDRF |= (1<<4) | (1<<5);
|
|
||||||
PORTF |= (1<<4) | (1<<5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
// put your keyboard start-up code here
|
// put your keyboard start-up code here
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
uart_init();
|
uart_init();
|
||||||
led_init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
|
|||||||
@@ -6,46 +6,6 @@
|
|||||||
#include "backlight.h"
|
#include "backlight.h"
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#define red_led_off PORTF |= (1<<5)
|
|
||||||
#define red_led_on PORTF &= ~(1<<5)
|
|
||||||
#define blu_led_off PORTF |= (1<<4)
|
|
||||||
#define blu_led_on PORTF &= ~(1<<4)
|
|
||||||
#define grn_led_off PORTD |= (1<<1)
|
|
||||||
#define grn_led_on PORTD &= ~(1<<1)
|
|
||||||
|
|
||||||
#define set_led_off red_led_off; grn_led_off; blu_led_off
|
|
||||||
#define set_led_red red_led_on; grn_led_off; blu_led_off
|
|
||||||
#define set_led_blue red_led_off; grn_led_off; blu_led_on
|
|
||||||
#define set_led_green red_led_off; grn_led_on; blu_led_off
|
|
||||||
#define set_led_yellow red_led_on; grn_led_on; blu_led_off
|
|
||||||
#define set_led_magenta red_led_on; grn_led_off; blu_led_on
|
|
||||||
#define set_led_cyan red_led_off; grn_led_on; blu_led_on
|
|
||||||
#define set_led_white red_led_on; grn_led_on; blu_led_on
|
|
||||||
|
|
||||||
/*
|
|
||||||
#define LED_B 5
|
|
||||||
#define LED_R 6
|
|
||||||
#define LED_G 7
|
|
||||||
|
|
||||||
#define all_leds_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
|
|
||||||
|
|
||||||
#define red_led_on PORTF |= (1<<LED_R)
|
|
||||||
#define red_led_off PORTF &= ~(1<<LED_R)
|
|
||||||
#define grn_led_on PORTF |= (1<<LED_G)
|
|
||||||
#define grn_led_off PORTF &= ~(1<<LED_G)
|
|
||||||
#define blu_led_on PORTF |= (1<<LED_B)
|
|
||||||
#define blu_led_off PORTF &= ~(1<<LED_B)
|
|
||||||
|
|
||||||
#define set_led_off PORTF &= ~(1<<LED_B) & ~(1<<LED_R) & ~(1<<LED_G)
|
|
||||||
#define set_led_red PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_G) | (1<<LED_R)
|
|
||||||
#define set_led_blue PORTF = PORTF & ~(1<<LED_G) & ~(1<<LED_R) | (1<<LED_B)
|
|
||||||
#define set_led_green PORTF = PORTF & ~(1<<LED_B) & ~(1<<LED_R) | (1<<LED_G)
|
|
||||||
#define set_led_yellow PORTF = PORTF & ~(1<<LED_B) | (1<<LED_R) | (1<<LED_G)
|
|
||||||
#define set_led_magenta PORTF = PORTF & ~(1<<LED_G) | (1<<LED_R) | (1<<LED_B)
|
|
||||||
#define set_led_cyan PORTF = PORTF & ~(1<<LED_R) | (1<<LED_B) | (1<<LED_G)
|
|
||||||
#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This a shortcut to help you visually see your layout.
|
// This a shortcut to help you visually see your layout.
|
||||||
// The first section contains all of the arguements
|
// The first section contains all of the arguements
|
||||||
// The second converts the arguments into a two-dimensional array
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
|||||||
@@ -41,12 +41,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define ONESHOT_TIMEOUT 500
|
#define ONESHOT_TIMEOUT 500
|
||||||
|
|
||||||
|
|
||||||
/* key combination for command */
|
|
||||||
#define IS_COMMAND() ( \
|
|
||||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
|
||||||
)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Feature disable options
|
* Feature disable options
|
||||||
* These options are also useful to firmware size reduction.
|
* These options are also useful to firmware size reduction.
|
||||||
@@ -65,6 +59,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//#define NO_ACTION_MACRO
|
//#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
// Define masks for modifiers
|
||||||
|
#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||||
|
#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
|
||||||
|
#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))
|
||||||
|
|
||||||
//UART settings for communication with the RF microcontroller
|
//UART settings for communication with the RF microcontroller
|
||||||
#define SERIAL_UART_BAUD 1000000
|
#define SERIAL_UART_BAUD 1000000
|
||||||
#define SERIAL_UART_DATA UDR1
|
#define SERIAL_UART_DATA UDR1
|
||||||
|
|||||||
@@ -0,0 +1,162 @@
|
|||||||
|
#include <util/twi.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <avr/interrupt.h>
|
||||||
|
#include <util/twi.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include "i2c.h"
|
||||||
|
|
||||||
|
#ifdef USE_I2C
|
||||||
|
|
||||||
|
// Limits the amount of we wait for any one i2c transaction.
|
||||||
|
// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
|
||||||
|
// 9 bits, a single transaction will take around 90μs to complete.
|
||||||
|
//
|
||||||
|
// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
|
||||||
|
// poll loop takes at least 8 clock cycles to execute
|
||||||
|
#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
|
||||||
|
|
||||||
|
#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
|
||||||
|
|
||||||
|
volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
|
||||||
|
|
||||||
|
static volatile uint8_t slave_buffer_pos;
|
||||||
|
static volatile bool slave_has_register_set = false;
|
||||||
|
|
||||||
|
// Wait for an i2c operation to finish
|
||||||
|
inline static
|
||||||
|
void i2c_delay(void) {
|
||||||
|
uint16_t lim = 0;
|
||||||
|
while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
|
||||||
|
lim++;
|
||||||
|
|
||||||
|
// easier way, but will wait slightly longer
|
||||||
|
// _delay_us(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup twi to run at 100kHz or 400kHz (see ./i2c.h SCL_CLOCK)
|
||||||
|
void i2c_master_init(void) {
|
||||||
|
// no prescaler
|
||||||
|
TWSR = 0;
|
||||||
|
// Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
|
||||||
|
// Check datasheets for more info.
|
||||||
|
TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start a transaction with the given i2c slave address. The direction of the
|
||||||
|
// transfer is set with I2C_READ and I2C_WRITE.
|
||||||
|
// returns: 0 => success
|
||||||
|
// 1 => error
|
||||||
|
uint8_t i2c_master_start(uint8_t address) {
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
|
||||||
|
|
||||||
|
i2c_delay();
|
||||||
|
|
||||||
|
// check that we started successfully
|
||||||
|
if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
TWDR = address;
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
|
||||||
|
i2c_delay();
|
||||||
|
|
||||||
|
if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
|
||||||
|
return 1; // slave did not acknowledge
|
||||||
|
else
|
||||||
|
return 0; // success
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Finish the i2c transaction.
|
||||||
|
void i2c_master_stop(void) {
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
|
||||||
|
|
||||||
|
uint16_t lim = 0;
|
||||||
|
while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
|
||||||
|
lim++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write one byte to the i2c slave.
|
||||||
|
// returns 0 => slave ACK
|
||||||
|
// 1 => slave NACK
|
||||||
|
uint8_t i2c_master_write(uint8_t data) {
|
||||||
|
TWDR = data;
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
|
||||||
|
i2c_delay();
|
||||||
|
|
||||||
|
// check if the slave acknowledged us
|
||||||
|
return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
|
||||||
|
// if ack=0 the acknowledge bit is not set.
|
||||||
|
// returns: byte read from i2c device
|
||||||
|
uint8_t i2c_master_read(int ack) {
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
|
||||||
|
|
||||||
|
i2c_delay();
|
||||||
|
return TWDR;
|
||||||
|
}
|
||||||
|
|
||||||
|
void i2c_reset_state(void) {
|
||||||
|
TWCR = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void i2c_slave_init(uint8_t address) {
|
||||||
|
TWAR = address << 0; // slave i2c address
|
||||||
|
// TWEN - twi enable
|
||||||
|
// TWEA - enable address acknowledgement
|
||||||
|
// TWINT - twi interrupt flag
|
||||||
|
// TWIE - enable the twi interrupt
|
||||||
|
TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
ISR(TWI_vect);
|
||||||
|
|
||||||
|
ISR(TWI_vect) {
|
||||||
|
uint8_t ack = 1;
|
||||||
|
switch(TW_STATUS) {
|
||||||
|
case TW_SR_SLA_ACK:
|
||||||
|
// this device has been addressed as a slave receiver
|
||||||
|
slave_has_register_set = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TW_SR_DATA_ACK:
|
||||||
|
// this device has received data as a slave receiver
|
||||||
|
// The first byte that we receive in this transaction sets the location
|
||||||
|
// of the read/write location of the slaves memory that it exposes over
|
||||||
|
// i2c. After that, bytes will be written at slave_buffer_pos, incrementing
|
||||||
|
// slave_buffer_pos after each write.
|
||||||
|
if(!slave_has_register_set) {
|
||||||
|
slave_buffer_pos = TWDR;
|
||||||
|
// don't acknowledge the master if this memory loctaion is out of bounds
|
||||||
|
if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
|
||||||
|
ack = 0;
|
||||||
|
slave_buffer_pos = 0;
|
||||||
|
}
|
||||||
|
slave_has_register_set = true;
|
||||||
|
} else {
|
||||||
|
i2c_slave_buffer[slave_buffer_pos] = TWDR;
|
||||||
|
BUFFER_POS_INC();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TW_ST_SLA_ACK:
|
||||||
|
case TW_ST_DATA_ACK:
|
||||||
|
// master has addressed this device as a slave transmitter and is
|
||||||
|
// requesting data.
|
||||||
|
TWDR = i2c_slave_buffer[slave_buffer_pos];
|
||||||
|
BUFFER_POS_INC();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TW_BUS_ERROR: // something went wrong, reset twi state
|
||||||
|
TWCR = 0;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Reset everything, so we are ready for the next TWI interrupt
|
||||||
|
TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#ifndef I2C_H
|
||||||
|
#define I2C_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef F_CPU
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define I2C_READ 1
|
||||||
|
#define I2C_WRITE 0
|
||||||
|
|
||||||
|
#define I2C_ACK 1
|
||||||
|
#define I2C_NACK 0
|
||||||
|
|
||||||
|
#define SLAVE_BUFFER_SIZE 0x10
|
||||||
|
|
||||||
|
// i2c SCL clock frequency 400kHz
|
||||||
|
#define SCL_CLOCK 400000L
|
||||||
|
|
||||||
|
extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
|
||||||
|
|
||||||
|
void i2c_master_init(void);
|
||||||
|
uint8_t i2c_master_start(uint8_t address);
|
||||||
|
void i2c_master_stop(void);
|
||||||
|
uint8_t i2c_master_write(uint8_t data);
|
||||||
|
uint8_t i2c_master_read(int);
|
||||||
|
void i2c_reset_state(void);
|
||||||
|
void i2c_slave_init(uint8_t address);
|
||||||
|
|
||||||
|
|
||||||
|
static inline unsigned char i2c_start_read(unsigned char addr) {
|
||||||
|
return i2c_master_start((addr << 1) | I2C_READ);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned char i2c_start_write(unsigned char addr) {
|
||||||
|
return i2c_master_start((addr << 1) | I2C_WRITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// from SSD1306 scrips
|
||||||
|
extern unsigned char i2c_rep_start(unsigned char addr);
|
||||||
|
extern void i2c_start_wait(unsigned char addr);
|
||||||
|
extern unsigned char i2c_readAck(void);
|
||||||
|
extern unsigned char i2c_readNak(void);
|
||||||
|
extern unsigned char i2c_read(unsigned char ack);
|
||||||
|
|
||||||
|
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
// this is the style you want to emulate.
|
||||||
|
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
enum comet46_layers
|
||||||
|
{
|
||||||
|
_QWERTY,
|
||||||
|
_COLEMAK,
|
||||||
|
_DVORAK,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
COLEMAK,
|
||||||
|
DVORAK,
|
||||||
|
LOWER,
|
||||||
|
RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fillers to make layering more clear
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Ctl | A | S | D | F | G | Esc | | Del | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | { | | } | N | M | , | . | / | Shift|
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ESC, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Colemak
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Ctl | A | R | S | T | D | Esc | | Del | H | N | E | I | O | " |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | { | | } | K | M | , | . | / | Shift|
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_ESC, KC_DEL, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Dvorak
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Ctl | A | O | E | U | I | Esc | | Del | D | H | T | N | S | / |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Shift| ; | Q | J | K | X | { | | } | B | M | W | V | Z | Shift|
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_DVORAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_ESC, KC_DEL, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCBR, KC_RCBR, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
|
||||||
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | ` | \ | - | = | [ | ] | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | ~ | | | _ | + | { | } | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | | | | | | | |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | PgDn | PgUp | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | | | | | | | |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | |Qwerty| |Colemk| | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | |Reset | |Dvorak| | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | | | | | | | |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, RESET, DVORAK, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
// settings for LED on receiver
|
||||||
|
void led_init(void) {
|
||||||
|
DDRD |= (1<<1);
|
||||||
|
PORTD |= (1<<1);
|
||||||
|
DDRF |= (1<<4) | (1<<5);
|
||||||
|
PORTF |= (1<<4) | (1<<5);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define red_led_off PORTF |= (1<<5)
|
||||||
|
#define red_led_on PORTF &= ~(1<<5)
|
||||||
|
#define blu_led_off PORTF |= (1<<4)
|
||||||
|
#define blu_led_on PORTF &= ~(1<<4)
|
||||||
|
#define grn_led_off PORTD |= (1<<1)
|
||||||
|
#define grn_led_on PORTD &= ~(1<<1)
|
||||||
|
|
||||||
|
#define set_led_off red_led_off; grn_led_off; blu_led_off
|
||||||
|
#define set_led_red red_led_on; grn_led_off; blu_led_off
|
||||||
|
#define set_led_blue red_led_off; grn_led_off; blu_led_on
|
||||||
|
#define set_led_green red_led_off; grn_led_on; blu_led_off
|
||||||
|
#define set_led_yellow red_led_on; grn_led_on; blu_led_off
|
||||||
|
#define set_led_magenta red_led_on; grn_led_off; blu_led_on
|
||||||
|
#define set_led_cyan red_led_off; grn_led_on; blu_led_on
|
||||||
|
#define set_led_white red_led_on; grn_led_on; blu_led_on
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
led_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
uint8_t default_layer = biton32(eeconfig_read_default_layer());
|
||||||
|
switch (layer) {
|
||||||
|
case _LOWER:
|
||||||
|
set_led_red;
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
set_led_blue;
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
set_led_magenta;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
switch (default_layer) {
|
||||||
|
case _COLEMAK:
|
||||||
|
set_led_white;
|
||||||
|
break;
|
||||||
|
case _DVORAK:
|
||||||
|
set_led_yellow;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
set_led_green;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_COLEMAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_DVORAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## default-led
|
||||||
|
|
||||||
|
A keymap that is compatible with mitosis-type receivers, which use RGB LED for layer indication.
|
||||||
+8
-2
@@ -18,8 +18,14 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
// #include "../../config.h"
|
||||||
|
|
||||||
// place overrides here
|
/* Use I2C or Serial */
|
||||||
|
|
||||||
|
#define USE_I2C
|
||||||
|
#define SSD1306OLED
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -2,6 +2,10 @@
|
|||||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
#include "ssd1306.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
@@ -9,13 +13,18 @@
|
|||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
enum comet46_layers
|
enum comet46_layers
|
||||||
{
|
{
|
||||||
_QWERTY,
|
_QWERTY,
|
||||||
_LOWER,
|
_COLEMAK,
|
||||||
_RAISE,
|
_DVORAK,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum custom_keycodes {
|
enum custom_keycodes {
|
||||||
QWERTY = SAFE_RANGE,
|
QWERTY = SAFE_RANGE,
|
||||||
|
COLEMAK,
|
||||||
|
DVORAK,
|
||||||
LOWER,
|
LOWER,
|
||||||
RAISE,
|
RAISE,
|
||||||
};
|
};
|
||||||
@@ -46,6 +55,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
),
|
),
|
||||||
|
|
||||||
|
/* Colemak
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Ctl | A | R | S | T | D | Esc | | Del | H | N | E | I | O | " |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | { | | } | K | M | , | . | / | Shift|
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_ESC, KC_DEL, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Dvorak
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Ctl | A | O | E | U | I | Esc | | Del | D | H | T | N | S | / |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | Shift| ; | Q | J | K | X | { | | } | B | M | W | V | Z | Shift|
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | GUI | Lower| Space| | Enter| Raise| Alt |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_DVORAK] = LAYOUT(
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||||
|
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_ESC, KC_DEL, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCBR, KC_RCBR, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
|
||||||
|
KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_LALT
|
||||||
|
),
|
||||||
|
|
||||||
/* Lower
|
/* Lower
|
||||||
* ,-----------------------------------------+ +-----------------------------------------.
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||||
@@ -70,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | |
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | End | |
|
||||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | | | | | |
|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | | PgDn | PgUp | | | |
|
||||||
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* +--------------------/ \--------------------+
|
* +--------------------/ \--------------------+
|
||||||
@@ -78,26 +123,134 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
[_RAISE] = LAYOUT(
|
[_RAISE] = LAYOUT(
|
||||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______,
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, _______,
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust
|
||||||
|
* ,-----------------------------------------+ +-----------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | |Qwerty| |Colemk| | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | |Reset | |Dvorak| | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+ +------+------+------+------+------+-------------|
|
||||||
|
* | | | | | | | |
|
||||||
|
* +--------------------/ \--------------------+
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, RESET, DVORAK, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
|
||||||
|
// You need to add source files to SRC in rules.mk when using OLED display functions
|
||||||
|
void set_keylog(uint16_t keycode);
|
||||||
|
const char *read_keylog(void);
|
||||||
|
const char *read_modifier_state(void);
|
||||||
|
const char *read_host_led_state(void);
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
iota_gfx_init(false); // turns on the display
|
||||||
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_user(void) {
|
||||||
uint8_t layer = biton32(layer_state);
|
iota_gfx_task(); // this is what updates the display continuously
|
||||||
switch (layer) {
|
}
|
||||||
case _QWERTY:
|
|
||||||
set_led_green;
|
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||||
break;
|
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||||
case _RAISE:
|
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||||
set_led_blue;
|
dest->dirty = true;
|
||||||
break;
|
}
|
||||||
case _LOWER:
|
}
|
||||||
set_led_red;
|
|
||||||
break;
|
void render_status(struct CharacterMatrix *matrix) {
|
||||||
|
// Layer state
|
||||||
|
char layer_str[22];
|
||||||
|
matrix_write(matrix, "Layer: ");
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
uint8_t default_layer = biton32(eeconfig_read_default_layer());
|
||||||
|
switch (layer) {
|
||||||
|
case _QWERTY:
|
||||||
|
switch (default_layer) {
|
||||||
|
case _QWERTY:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Qwerty");
|
||||||
|
break;
|
||||||
|
case _COLEMAK:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Colemak");
|
||||||
|
break;
|
||||||
|
case _DVORAK:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Dvorak");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
set_led_green;
|
snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Raise");
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Lower");
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Adjust");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
|
||||||
|
}
|
||||||
|
matrix_write_ln(matrix, layer_str);
|
||||||
|
// Last entered keycode
|
||||||
|
matrix_write_ln(matrix, read_keylog());
|
||||||
|
// Modifier state
|
||||||
|
matrix_write_ln(matrix, read_modifier_state());
|
||||||
|
// Host Keyboard LED Status
|
||||||
|
matrix_write(matrix, read_host_led_state());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void iota_gfx_task_user(void) {
|
||||||
|
struct CharacterMatrix matrix;
|
||||||
|
matrix_clear(&matrix);
|
||||||
|
render_status(&matrix);
|
||||||
|
matrix_update(&display, &matrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif//SSD1306OLED
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_keylog(keycode);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_COLEMAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_DVORAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## default-oled-display
|
||||||
|
|
||||||
|
A keymap that is compatible with receivers with an OLED display.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# If you want to change display settings of the OLED, you need to change the following lines
|
||||||
|
SRC += ./lib/glcdfont.c \
|
||||||
|
./lib/keylogger.c \
|
||||||
|
./lib/modifier_state_reader.c \
|
||||||
|
./lib/host_led_state_reader.c
|
||||||
@@ -10,133 +10,133 @@ static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE];
|
|||||||
* Memo: Using other layer keymap to get keycode
|
* Memo: Using other layer keymap to get keycode
|
||||||
*/
|
*/
|
||||||
void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) {
|
void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) {
|
||||||
uint8_t prev_shift;
|
uint8_t prev_shift;
|
||||||
uint16_t keycode;
|
uint16_t keycode;
|
||||||
uint16_t pseudo_keycode;
|
uint16_t pseudo_keycode;
|
||||||
|
|
||||||
/* get keycode from keymap you specified */
|
/* get keycode from keymap you specified */
|
||||||
keycode = keymap_key_to_keycode(base_keymap_id, record->event.key);
|
keycode = keymap_key_to_keycode(base_keymap_id, record->event.key);
|
||||||
|
|
||||||
prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
|
prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT));
|
||||||
|
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
/* when magic commands entered, keycode does not converted */
|
/* when magic commands entered, keycode does not converted */
|
||||||
if (IS_COMMAND()) {
|
if (IS_COMMAND()) {
|
||||||
if (prev_shift) {
|
if (prev_shift) {
|
||||||
add_shift_bit(keycode);
|
add_shift_bit(keycode);
|
||||||
}
|
}
|
||||||
register_code(keycode);
|
register_code(keycode);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if (prev_shift) {
|
|
||||||
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
|
||||||
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
|
||||||
add_shift_bit(keycode);
|
|
||||||
|
|
||||||
if (IS_LSFT(pseudo_keycode)) {
|
|
||||||
register_code(QK_LSFT ^ pseudo_keycode);
|
|
||||||
} else {
|
|
||||||
/* delete shift mod temporarily */
|
|
||||||
del_mods(prev_shift);
|
|
||||||
send_keyboard_report();
|
|
||||||
register_code(pseudo_keycode);
|
|
||||||
add_mods(prev_shift);
|
|
||||||
send_keyboard_report();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
|
||||||
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
|
||||||
|
|
||||||
if (IS_LSFT(pseudo_keycode)) {
|
|
||||||
add_weak_mods(MOD_BIT(KC_LSFT));
|
|
||||||
send_keyboard_report();
|
|
||||||
register_code(QK_LSFT ^ pseudo_keycode);
|
|
||||||
/* on Windows, prevent key repeat to avoid unintended output */
|
|
||||||
unregister_code(QK_LSFT ^ pseudo_keycode);
|
|
||||||
del_weak_mods(MOD_BIT(KC_LSFT));
|
|
||||||
send_keyboard_report();
|
|
||||||
} else {
|
|
||||||
register_code(pseudo_keycode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (get_shift_bit(keycode)) {
|
|
||||||
del_shift_bit(keycode);
|
|
||||||
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
|
||||||
} else {
|
|
||||||
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
|
||||||
}
|
|
||||||
dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
|
||||||
|
|
||||||
if (IS_LSFT(pseudo_keycode)) {
|
|
||||||
unregister_code(QK_LSFT ^ pseudo_keycode);
|
|
||||||
} else {
|
|
||||||
unregister_code(pseudo_keycode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prev_shift) {
|
||||||
|
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
||||||
|
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||||
|
add_shift_bit(keycode);
|
||||||
|
|
||||||
|
if (IS_LSFT(pseudo_keycode)) {
|
||||||
|
register_code(QK_LSFT ^ pseudo_keycode);
|
||||||
|
} else {
|
||||||
|
/* delete shift mod temporarily */
|
||||||
|
del_mods(prev_shift);
|
||||||
|
send_keyboard_report();
|
||||||
|
register_code(pseudo_keycode);
|
||||||
|
add_mods(prev_shift);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
||||||
|
dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||||
|
|
||||||
|
if (IS_LSFT(pseudo_keycode)) {
|
||||||
|
add_weak_mods(MOD_BIT(KC_LSFT));
|
||||||
|
send_keyboard_report();
|
||||||
|
register_code(QK_LSFT ^ pseudo_keycode);
|
||||||
|
/* on Windows, prevent key repeat to avoid unintended output */
|
||||||
|
unregister_code(QK_LSFT ^ pseudo_keycode);
|
||||||
|
del_weak_mods(MOD_BIT(KC_LSFT));
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
register_code(pseudo_keycode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (get_shift_bit(keycode)) {
|
||||||
|
del_shift_bit(keycode);
|
||||||
|
pseudo_keycode = convert_keycode(keymap, keycode, true);
|
||||||
|
} else {
|
||||||
|
pseudo_keycode = convert_keycode(keymap, keycode, false);
|
||||||
|
}
|
||||||
|
dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode);
|
||||||
|
|
||||||
|
if (IS_LSFT(pseudo_keycode)) {
|
||||||
|
unregister_code(QK_LSFT ^ pseudo_keycode);
|
||||||
|
} else {
|
||||||
|
unregister_code(pseudo_keycode);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded)
|
uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded)
|
||||||
{
|
{
|
||||||
uint16_t pseudo_keycode;
|
uint16_t pseudo_keycode;
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case KC_A ... KC_CAPSLOCK:
|
case KC_A ... KC_CAPSLOCK:
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
if (shift_modded) {
|
if (shift_modded) {
|
||||||
pseudo_keycode = pgm_read_word(&keymap[keycode][1]);
|
pseudo_keycode = pgm_read_word(&keymap[keycode][1]);
|
||||||
} else {
|
} else {
|
||||||
pseudo_keycode = pgm_read_word(&keymap[keycode][0]);
|
pseudo_keycode = pgm_read_word(&keymap[keycode][0]);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (shift_modded) {
|
if (shift_modded) {
|
||||||
pseudo_keycode = keymap[keycode][1];
|
pseudo_keycode = keymap[keycode][1];
|
||||||
} else {
|
} else {
|
||||||
pseudo_keycode = keymap[keycode][0];
|
pseudo_keycode = keymap[keycode][0];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* if undefined, use got keycode as it is */
|
/* if undefined, use got keycode as it is */
|
||||||
if (pseudo_keycode == 0x00) {
|
if (pseudo_keycode == 0x00) {
|
||||||
if (shift_modded) {
|
if (shift_modded) {
|
||||||
pseudo_keycode = S(keycode);
|
pseudo_keycode = S(keycode);
|
||||||
} else {
|
} else {
|
||||||
pseudo_keycode = keycode;
|
pseudo_keycode = keycode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (shift_modded) {
|
if (shift_modded) {
|
||||||
pseudo_keycode = S(keycode);
|
pseudo_keycode = S(keycode);
|
||||||
} else {
|
} else {
|
||||||
pseudo_keycode = keycode;
|
pseudo_keycode = keycode;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return pseudo_keycode;
|
return pseudo_keycode;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t get_shift_bit(uint16_t keycode) {
|
uint8_t get_shift_bit(uint16_t keycode) {
|
||||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||||
return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7));
|
return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7));
|
||||||
} else {
|
} else {
|
||||||
dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode);
|
dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_shift_bit(uint16_t keycode) {
|
void add_shift_bit(uint16_t keycode) {
|
||||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||||
send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7));
|
send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7));
|
||||||
} else {
|
} else {
|
||||||
dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode);
|
dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void del_shift_bit(uint16_t keycode) {
|
void del_shift_bit(uint16_t keycode) {
|
||||||
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
if ((keycode >> 3) < SHIFT_BIT_SIZE) {
|
||||||
send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7));
|
send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7));
|
||||||
} else {
|
} else {
|
||||||
dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode);
|
dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
This is the c configuration file for the keymap
|
||||||
|
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
Copyright 2015 Jack Humbert
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/* Use I2C or Serial */
|
||||||
|
|
||||||
|
#define USE_I2C
|
||||||
|
#define SSD1306OLED
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -4,64 +4,96 @@
|
|||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "keymap_jis2us.h"
|
#include "keymap_jis2us.h"
|
||||||
#include "action_pseudo_lut.h"
|
#include "action_pseudo_lut.h"
|
||||||
|
#include "keymap_jp.h"
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
#include "ssd1306.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
enum comet46_layers {
|
enum comet46_layers {
|
||||||
_QWERTY,
|
_QWERTY,
|
||||||
_LOWER,
|
_LOWER,
|
||||||
_RAISE,
|
_RAISE,
|
||||||
_PSEUDO_US,
|
_PSEUDO_US,
|
||||||
_PSEUDO_US_LOWER,
|
_PSEUDO_US_LOWER,
|
||||||
_PSEUDO_US_RAISE,
|
_PSEUDO_US_RAISE,
|
||||||
_ADJUST
|
_ADJUST
|
||||||
};
|
};
|
||||||
|
|
||||||
enum custom_keycodes {
|
enum custom_keycodes {
|
||||||
QWERTY = SAFE_RANGE,
|
QWERTY = SAFE_RANGE,
|
||||||
PSEUDO_US,
|
PSEUDO_US,
|
||||||
|
JIS2US,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define KC_LWR MO(_LOWER)
|
// JIS keycodes
|
||||||
#define KC_RSE MO(_RAISE)
|
#define KC_JZHT JP_ZHTG // hankaku/zenkaku|kanzi
|
||||||
|
#define KC_JCIR JP_CIRC // ^, ~
|
||||||
|
#define KC_JAT JP_AT // @, `
|
||||||
|
#define KC_JLBR JP_LBRC // [, {
|
||||||
|
#define KC_JCOL JP_COLN // :, *
|
||||||
|
#define KC_JRBR JP_RBRC // ], }
|
||||||
|
#define KC_JBSL JP_BSLS // \, _
|
||||||
|
#define KC_JMHE JP_MHEN // muhenkan
|
||||||
|
#define KC_JHEN JP_HENK // henkan
|
||||||
|
#define KC_JKAN JP_KANA // katakana/hiragana|ro-mazi
|
||||||
|
#define KC_JMKA JP_MKANA //kana on MacOSX
|
||||||
|
#define KC_JMEI JP_MEISU //eisu on MacOSX
|
||||||
|
#define KC_JAMP JP_AMPR // &
|
||||||
|
#define KC_JQUO JP_QUOT // '
|
||||||
|
#define KC_JLPR JP_LPRN // (
|
||||||
|
#define KC_JRPR JP_RPRN // )
|
||||||
|
#define KC_JEQL JP_EQL // =
|
||||||
|
#define KC_JTIL JP_TILD // ~
|
||||||
|
#define KC_JPIP JP_PIPE // |
|
||||||
|
#define KC_JGRV JP_GRV // `
|
||||||
|
#define KC_JLCB JP_LCBR // {
|
||||||
|
#define KC_JPLU JP_PLUS // +
|
||||||
|
#define KC_JAST JP_ASTR // *
|
||||||
|
#define KC_JRCB JP_RCBR // }
|
||||||
|
#define KC_JUND JP_UNDS // _
|
||||||
|
|
||||||
|
// Layer related keycodes
|
||||||
|
#define KC_LWR MO(_LOWER)
|
||||||
|
#define KC_RSE MO(_RAISE)
|
||||||
#define KC_P_LW MO(_PSEUDO_US_LOWER)
|
#define KC_P_LW MO(_PSEUDO_US_LOWER)
|
||||||
#define KC_P_RS MO(_PSEUDO_US_RAISE)
|
#define KC_P_RS MO(_PSEUDO_US_RAISE)
|
||||||
#define KC_QWRT QWERTY
|
#define KC_QWRT QWERTY
|
||||||
#define KC_P_US PSEUDO_US
|
#define KC_P_US PSEUDO_US
|
||||||
|
#define KC_J2US JIS2US
|
||||||
|
|
||||||
|
// Special keycodes
|
||||||
#define KC_SPCT CTL_T(KC_SPC)
|
#define KC_SPCT CTL_T(KC_SPC)
|
||||||
#define KC_ENSF SFT_T(KC_ENT)
|
#define KC_ENSF SFT_T(KC_ENT)
|
||||||
#define KC_SFTA SFT_T(KC_A)
|
#define KC_CAEC MT(MOD_LCTL | MOD_LALT, KC_ESC)
|
||||||
#define KC_CTSF S(KC_LCTL)
|
#define KC_CSTB C_S_T(KC_TAB)
|
||||||
#define KC_IMON ALT_T(KC_F13)
|
#define KC_IMON ALT_T(KC_F13)
|
||||||
#define KC_IMOF GUI_T(KC_F14)
|
#define KC_IMOF GUI_T(KC_F14)
|
||||||
#define KC_SRO S(KC_RO)
|
|
||||||
#define KC_SYEN S(KC_JYEN)
|
|
||||||
#define KC_CAD LCA(KC_DEL)
|
#define KC_CAD LCA(KC_DEL)
|
||||||
#define KC_RST RESET
|
#define KC_RST RESET
|
||||||
|
|
||||||
#define LONGPRESS_DELAY 150
|
|
||||||
|
|
||||||
// Fillers to make layering more clear
|
// Fillers to make layering more clear
|
||||||
#define KC_ KC_TRNS
|
#define KC_ KC_TRNS
|
||||||
#define KC_XXXX KC_NO
|
#define KC_XXXX KC_NO
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[_QWERTY] = LAYOUT_kc(
|
[_QWERTY] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
TAB ,SFTA, S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC,
|
CSTB, A , S , D , F , G ,LPRN, RPRN, H , J , K , L ,SCLN,BSPC,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
CTSF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT,
|
LSFT, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,QUOT,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
IMOF,LWR ,SPCT, ENSF,RSE ,IMON
|
IMOF,LWR ,SPCT, ENSF,RSE ,IMON
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
[_LOWER] = LAYOUT_kc(
|
[_LOWER] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
|
,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
@@ -69,60 +101,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, ,
|
, F7 , F8 , F9 , F10, F11, F12, TILD,PIPE,UNDS,PLUS,LCBR,RCBR, ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , ,
|
, , , , ,
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
[_RAISE] = LAYOUT_kc(
|
[_RAISE] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
, , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
, , , , , , , XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, ,
|
, , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , ,
|
, , , , ,
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
[_PSEUDO_US] = LAYOUT_kc(
|
[_PSEUDO_US] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
ESC , Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
CAEC, Q , W , E , R , T , Y , U , I , O , P ,DEL ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
TAB ,SFTA, S , D , F , G ,ASTR, LPRN, H , J , K , L ,FN0 ,BSPC,
|
CSTB, A , S , D , F , G ,JLPR, JRPR, H , J , K , L ,J2US,BSPC,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
CTSF, Z , X , C , V , B ,FN0 , FN0 , N , M ,COMM,DOT ,SLSH,FN0 ,
|
LSFT, Z , X , C , V , B ,J2US, J2US, N , M ,COMM,DOT ,SLSH,J2US,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
IMOF,P_LW,SPCT, ENSF,P_RS,IMON
|
IMOF,P_LW,SPCT, ENSF,P_RS,IMON
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
[_PSEUDO_US_LOWER] = LAYOUT_kc(
|
[_PSEUDO_US_LOWER] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
,EXLM,LBRC,HASH,DLR ,PERC, EQL ,CIRC, DQT,ASTR,LPRN, ,
|
,EXLM,JAT ,HASH,DLR ,PERC, JCIR,JAMP,JAST,JLPR,JRPR, ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
, F1 , F2 , F3 , F4 , F5 , F6 , LCBR,JYEN,MINS,UNDS,RBRC,BSLS, ,
|
, F1 , F2 , F3 , F4 , F5 , F6 , JGRV,JBSL,MINS,JEQL,JLBR,JRBR, ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, F7 , F8 , F9 , F10, F11, F12, PLUS,SYEN,SRO ,COLN,RCBR,PIPE, ,
|
, F7 , F8 , F9 , F10, F11, F12, JTIL,JPIP,JUND,JPLU,JLCB,JRCB, ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , ,
|
, , , , ,
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
[_PSEUDO_US_RAISE] = LAYOUT_kc(
|
[_PSEUDO_US_RAISE] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
, , , , , , GRV, XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
, , , , , ,JZHT, XXXX,LEFT,DOWN, UP ,RGHT,END , ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , , , , HOME,XXXX,XXXX,XXXX,XXXX,XXXX, ,
|
, , , , , , , HOME,XXXX,PGDN,PGUP,XXXX,XXXX, ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , ,
|
, , , , ,
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
),
|
),
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT_kc(
|
[_ADJUST] = LAYOUT_kc(
|
||||||
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
//,----+----+----+----+----+----+ +----+----+----+----+----+----.
|
||||||
, , , , , , , , , , , ,
|
, , , , , , , , , , , ,
|
||||||
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----+ +----+----+----+----+----+----+----|
|
||||||
@@ -130,69 +162,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , , ,RST , P_US, , , , , , ,
|
, , , , , ,RST , P_US, , , , , , ,
|
||||||
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
|
||||||
, , , , ,
|
, , , , ,
|
||||||
// +----+----+---/ \---+----+----+
|
// +----+----+---/ \---+----+----+
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* user defined action function
|
|
||||||
*/
|
|
||||||
enum function_id {
|
|
||||||
PSEUDO_US_FUNCTION,
|
|
||||||
};
|
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case PSEUDO_US_FUNCTION:
|
|
||||||
action_pseudo_lut(record, _QWERTY, keymap_jis2us);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Fn action definition
|
|
||||||
*/
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[0] = ACTION_FUNCTION(PSEUDO_US_FUNCTION),
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
uint8_t layer = biton32(layer_state);
|
|
||||||
switch (layer) {
|
|
||||||
case _LOWER:
|
|
||||||
set_led_red;
|
|
||||||
break;
|
|
||||||
case _RAISE:
|
|
||||||
set_led_blue;
|
|
||||||
break;
|
|
||||||
case _PSEUDO_US_LOWER:
|
|
||||||
set_led_yellow;
|
|
||||||
break;
|
|
||||||
case _PSEUDO_US_RAISE:
|
|
||||||
set_led_cyan;
|
|
||||||
break;
|
|
||||||
case _ADJUST:
|
|
||||||
set_led_magenta;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
set_led_green;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t layer_state_set_user(uint32_t state) {
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
switch (biton32(state)) {
|
switch (biton32(state)) {
|
||||||
case _PSEUDO_US:
|
|
||||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
|
||||||
break;
|
|
||||||
case _PSEUDO_US_LOWER:
|
case _PSEUDO_US_LOWER:
|
||||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
case _PSEUDO_US_RAISE:
|
||||||
break;
|
|
||||||
case _PSEUDO_US_RAISE:
|
|
||||||
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -201,19 +180,112 @@ uint32_t layer_state_set_user(uint32_t state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
|
||||||
|
// You need to add source files to SRC in rules.mk when using OLED display functions
|
||||||
|
void set_keylog(uint16_t keycode);
|
||||||
|
const char *read_keylog(void);
|
||||||
|
const char *read_modifier_state(void);
|
||||||
|
const char *read_host_led_state(void);
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
iota_gfx_init(false); // turns on the display
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
iota_gfx_task(); // this is what updates the display continuously
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||||
|
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||||
|
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||||
|
dest->dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_status(struct CharacterMatrix *matrix) {
|
||||||
|
// Layer state
|
||||||
|
char layer_str[22];
|
||||||
|
matrix_write(matrix, "Layer: ");
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
uint8_t default_layer = biton32(eeconfig_read_default_layer());
|
||||||
|
switch (layer) {
|
||||||
|
case _QWERTY:
|
||||||
|
switch (default_layer) {
|
||||||
|
case _QWERTY:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Qwerty");
|
||||||
|
break;
|
||||||
|
case _PSEUDO_US:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Psuedo_US");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Raise");
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Lower");
|
||||||
|
break;
|
||||||
|
case _PSEUDO_US_RAISE:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "P_US_Raise");
|
||||||
|
break;
|
||||||
|
case _PSEUDO_US_LOWER:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "P_US_Lower");
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Adjust");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
|
||||||
|
}
|
||||||
|
matrix_write_ln(matrix, layer_str);
|
||||||
|
// Last entered keycode
|
||||||
|
matrix_write_ln(matrix, read_keylog());
|
||||||
|
// Modifier state
|
||||||
|
matrix_write_ln(matrix, read_modifier_state());
|
||||||
|
// Host Keyboard LED Status
|
||||||
|
matrix_write(matrix, read_host_led_state());
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_task_user(void) {
|
||||||
|
struct CharacterMatrix matrix;
|
||||||
|
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
if (debug_enable) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
matrix_clear(&matrix);
|
||||||
|
render_status(&matrix);
|
||||||
|
matrix_update(&display, &matrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif//SSD1306OLED
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_keylog(keycode);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case QWERTY:
|
case QWERTY:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
set_single_persistent_default_layer(_QWERTY);
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
break;
|
break;
|
||||||
case PSEUDO_US:
|
case PSEUDO_US:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
set_single_persistent_default_layer(_PSEUDO_US);
|
set_single_persistent_default_layer(_PSEUDO_US);
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
|
case JIS2US:
|
||||||
|
action_pseudo_lut(record, _QWERTY, keymap_jis2us);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -3,30 +3,30 @@
|
|||||||
|
|
||||||
/* keymap for convert from JIS to US */
|
/* keymap for convert from JIS to US */
|
||||||
const uint16_t PROGMEM keymap_jis2us[][2] = {
|
const uint16_t PROGMEM keymap_jis2us[][2] = {
|
||||||
[KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */
|
[KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */
|
||||||
|
|
||||||
[KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */
|
[KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */
|
||||||
[KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */
|
[KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */
|
||||||
[KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */
|
[KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */
|
||||||
[KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */
|
[KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */
|
||||||
[KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */
|
[KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */
|
||||||
[KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */
|
[KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */
|
||||||
[KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */
|
[KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */
|
||||||
[KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */
|
[KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */
|
||||||
[KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */
|
[KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */
|
||||||
[KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */
|
[KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */
|
||||||
[KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */
|
[KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */
|
||||||
[KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */
|
[KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */
|
||||||
[KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */
|
[KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */
|
||||||
[KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */
|
[KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */
|
||||||
[KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */
|
[KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */
|
||||||
[KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */
|
[KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */
|
||||||
[KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */
|
[KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */
|
||||||
[KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */
|
[KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */
|
||||||
[KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */
|
[KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */
|
||||||
[KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */
|
[KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */
|
||||||
[KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */
|
[KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */
|
||||||
[KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */
|
[KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -1,26 +1,8 @@
|
|||||||
SRC += action_pseudo_lut.c
|
SRC += action_pseudo_lut.c
|
||||||
|
|
||||||
# Build Options
|
# If you want to change display settings of the OLED, you need to change the following lines
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
SRC += ./lib/glcdfont.c \
|
||||||
# the appropriate keymap folder that will get included automatically
|
./lib/keylogger.c \
|
||||||
#
|
./lib/modifier_state_reader.c \
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
./lib/host_led_state_reader.c
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
|
||||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|
||||||
ONEHAND_ENABLE = no # Enable one-hand typing
|
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
||||||
|
// See gfxfont.h for newer custom bitmap font info.
|
||||||
|
|
||||||
|
#ifndef FONT5X7_H
|
||||||
|
#define FONT5X7_H
|
||||||
|
|
||||||
|
#ifdef __AVR__
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#elif defined(ESP8266)
|
||||||
|
#include <pgmspace.h>
|
||||||
|
#else
|
||||||
|
#define PROGMEM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Standard ASCII 5x7 font
|
||||||
|
|
||||||
|
const unsigned char font[] PROGMEM = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
||||||
|
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
||||||
|
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
||||||
|
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
||||||
|
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
||||||
|
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
||||||
|
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
||||||
|
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
||||||
|
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
||||||
|
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
||||||
|
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
||||||
|
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
||||||
|
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
||||||
|
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
||||||
|
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
||||||
|
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
||||||
|
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
||||||
|
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
||||||
|
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
||||||
|
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
||||||
|
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
||||||
|
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
||||||
|
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
||||||
|
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
||||||
|
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
||||||
|
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
||||||
|
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
||||||
|
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
||||||
|
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
||||||
|
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
||||||
|
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
||||||
|
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
||||||
|
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
||||||
|
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
||||||
|
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
||||||
|
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
||||||
|
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
||||||
|
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
||||||
|
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
||||||
|
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
||||||
|
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
||||||
|
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
||||||
|
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
||||||
|
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
||||||
|
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
||||||
|
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
||||||
|
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
||||||
|
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
||||||
|
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
||||||
|
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
||||||
|
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
||||||
|
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
||||||
|
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
||||||
|
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
||||||
|
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
||||||
|
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
||||||
|
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
||||||
|
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
||||||
|
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
||||||
|
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
||||||
|
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
||||||
|
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
||||||
|
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
||||||
|
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
|
||||||
|
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
|
||||||
|
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
|
||||||
|
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
|
||||||
|
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
|
||||||
|
0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
|
||||||
|
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
|
||||||
|
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
|
||||||
|
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
|
||||||
|
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
|
||||||
|
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
|
||||||
|
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
|
||||||
|
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
|
||||||
|
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
|
||||||
|
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
|
||||||
|
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
|
||||||
|
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
|
||||||
|
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
||||||
|
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
||||||
|
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00
|
||||||
|
};
|
||||||
|
#endif // FONT5X7_H
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "comet46.h"
|
||||||
|
|
||||||
|
char host_led_state_str[22];
|
||||||
|
|
||||||
|
const char *read_host_led_state(void) {
|
||||||
|
uint8_t leds = host_keyboard_leds();
|
||||||
|
|
||||||
|
snprintf(host_led_state_str, sizeof(host_led_state_str), "Lock: %s%s%s",
|
||||||
|
(leds & (1 << USB_LED_CAPS_LOCK)) ? "CAPL " : "",
|
||||||
|
(leds & (1 << USB_LED_SCROLL_LOCK)) ? "SCRL " : "",
|
||||||
|
(leds & (1 << USB_LED_NUM_LOCK)) ? "NUML" : "");
|
||||||
|
|
||||||
|
return host_led_state_str;
|
||||||
|
}
|
||||||
@@ -0,0 +1,294 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifdef __AVR__
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#else
|
||||||
|
#define PROGMEM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NUM_USB_HID_KEYCODES 255
|
||||||
|
#define LEN_KEYCODE_STR 4
|
||||||
|
|
||||||
|
char keylog[22] = {"KC: ID: "};
|
||||||
|
|
||||||
|
// Quick and dirty way to display USB HID keycodes used in QMK
|
||||||
|
// USB HID keycodes from 0x0000 to 0x00FF are stored in a 4x256+1 length char
|
||||||
|
const char code_to_name[] PROGMEM = {
|
||||||
|
"NO " //0x00
|
||||||
|
"TRNS"
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"A "
|
||||||
|
"B "
|
||||||
|
"C "
|
||||||
|
"D "
|
||||||
|
"E "
|
||||||
|
"F "
|
||||||
|
"G "
|
||||||
|
"H "
|
||||||
|
"I "
|
||||||
|
"J "
|
||||||
|
"K "
|
||||||
|
"L "
|
||||||
|
"M " //0x10
|
||||||
|
"N "
|
||||||
|
"O "
|
||||||
|
"P "
|
||||||
|
"Q "
|
||||||
|
"R "
|
||||||
|
"S "
|
||||||
|
"T "
|
||||||
|
"U "
|
||||||
|
"V "
|
||||||
|
"W "
|
||||||
|
"X "
|
||||||
|
"Y "
|
||||||
|
"Z "
|
||||||
|
"1 "
|
||||||
|
"2 "
|
||||||
|
"3 " //0x20
|
||||||
|
"4 "
|
||||||
|
"5 "
|
||||||
|
"6 "
|
||||||
|
"7 "
|
||||||
|
"8 "
|
||||||
|
"9 "
|
||||||
|
"0 "
|
||||||
|
"ENT "
|
||||||
|
"ESC "
|
||||||
|
"BSPC"
|
||||||
|
"TAB "
|
||||||
|
"SPC "
|
||||||
|
"MINS"
|
||||||
|
"EQL "
|
||||||
|
"LBRC"
|
||||||
|
"RBRC" //0x30
|
||||||
|
"BSLS"
|
||||||
|
"NUHS"
|
||||||
|
"SCLN"
|
||||||
|
"QUOT"
|
||||||
|
"GRV "
|
||||||
|
"COMM"
|
||||||
|
"DOT "
|
||||||
|
"SLSH"
|
||||||
|
"CAPS"
|
||||||
|
"F1 "
|
||||||
|
"F2 "
|
||||||
|
"F3 "
|
||||||
|
"F4 "
|
||||||
|
"F5 "
|
||||||
|
"F6 "
|
||||||
|
"F7 " //0x40
|
||||||
|
"F8 "
|
||||||
|
"F9 "
|
||||||
|
"F10 "
|
||||||
|
"F11 "
|
||||||
|
"F12 "
|
||||||
|
"PSCR"
|
||||||
|
"SLCK"
|
||||||
|
"PAUS"
|
||||||
|
"INS "
|
||||||
|
"HOME"
|
||||||
|
"PGUP"
|
||||||
|
"DEL "
|
||||||
|
"END "
|
||||||
|
"PGDN"
|
||||||
|
"RGHT"
|
||||||
|
"LEFT" //0x50
|
||||||
|
"DOWN"
|
||||||
|
"UP "
|
||||||
|
"NLCK"
|
||||||
|
"PSLS"
|
||||||
|
"PAST"
|
||||||
|
"PMNS"
|
||||||
|
"PPLS"
|
||||||
|
"PENT"
|
||||||
|
"P1 "
|
||||||
|
"P2 "
|
||||||
|
"P3 "
|
||||||
|
"P4 "
|
||||||
|
"P5 "
|
||||||
|
"P6 "
|
||||||
|
"P7 "
|
||||||
|
"P8 " //0x60
|
||||||
|
"P9 "
|
||||||
|
"P0 "
|
||||||
|
"PDOT"
|
||||||
|
"NUBS"
|
||||||
|
"APP "
|
||||||
|
"POW "
|
||||||
|
"PEQL"
|
||||||
|
"F13 "
|
||||||
|
"F14 "
|
||||||
|
"F15 "
|
||||||
|
"F16 "
|
||||||
|
"F17 "
|
||||||
|
"F18 "
|
||||||
|
"F19 "
|
||||||
|
"F20 "
|
||||||
|
"F21 " //0x70
|
||||||
|
"F22 "
|
||||||
|
"F23 "
|
||||||
|
"F24 "
|
||||||
|
"EXEC"
|
||||||
|
"HELP"
|
||||||
|
"MENU"
|
||||||
|
"SLCT"
|
||||||
|
"STOP"
|
||||||
|
"AGIN"
|
||||||
|
"UNDO"
|
||||||
|
"CUT "
|
||||||
|
"COPY"
|
||||||
|
"PSTE"
|
||||||
|
"FIND"
|
||||||
|
"_MUT"
|
||||||
|
"_VUP" //0x80
|
||||||
|
"_VDN"
|
||||||
|
"LCAP"
|
||||||
|
"LNUM"
|
||||||
|
"LSCR"
|
||||||
|
"PCMM"
|
||||||
|
"PEQA"
|
||||||
|
"INT1"
|
||||||
|
"INT2"
|
||||||
|
"INT3"
|
||||||
|
"INT4"
|
||||||
|
"INT5"
|
||||||
|
"INT6"
|
||||||
|
"INT7"
|
||||||
|
"INT8"
|
||||||
|
"INT9"
|
||||||
|
"LAN1" //0x90
|
||||||
|
"LAN2"
|
||||||
|
"LAN3"
|
||||||
|
"LAN4"
|
||||||
|
"LAN5"
|
||||||
|
"LAN6"
|
||||||
|
"LAN7"
|
||||||
|
"LAN8"
|
||||||
|
"LAN9"
|
||||||
|
"ERAS"
|
||||||
|
"SYSR"
|
||||||
|
"CNCL"
|
||||||
|
"CLR "
|
||||||
|
"PRIR"
|
||||||
|
"RTRN"
|
||||||
|
"SEP "
|
||||||
|
"OUT " //0xA0
|
||||||
|
"OPER"
|
||||||
|
"CLRA"
|
||||||
|
"CSEL"
|
||||||
|
"ESEL"
|
||||||
|
"PWR " //0xA5
|
||||||
|
"SLEP"
|
||||||
|
"WAKE"
|
||||||
|
"MUTE"
|
||||||
|
"VOLU"
|
||||||
|
"VOLD"
|
||||||
|
"MNXT"
|
||||||
|
"MPRV"
|
||||||
|
"MSTP"
|
||||||
|
"MPLY"
|
||||||
|
"MSEL"
|
||||||
|
"EJCT" //0xB0
|
||||||
|
"MAIL"
|
||||||
|
"CALC"
|
||||||
|
"MYCM"
|
||||||
|
"WSCH"
|
||||||
|
"WHOM"
|
||||||
|
"WBAK"
|
||||||
|
"WFWD"
|
||||||
|
"WSTP"
|
||||||
|
"WREF"
|
||||||
|
"WFAV"
|
||||||
|
"MFFD"
|
||||||
|
"MRWD"
|
||||||
|
"BRIU"
|
||||||
|
"BRID"
|
||||||
|
"? "
|
||||||
|
"FN0 " //0xC0
|
||||||
|
"FN1 "
|
||||||
|
"FN2 "
|
||||||
|
"FN3 "
|
||||||
|
"FN4 "
|
||||||
|
"FN5 "
|
||||||
|
"FN6 "
|
||||||
|
"FN7 "
|
||||||
|
"FN8 "
|
||||||
|
"FN9 "
|
||||||
|
"FN10"
|
||||||
|
"FN11"
|
||||||
|
"FN12"
|
||||||
|
"FN13"
|
||||||
|
"FN14"
|
||||||
|
"FN15"
|
||||||
|
"FN16" //0xD0
|
||||||
|
"FN17"
|
||||||
|
"FN18"
|
||||||
|
"FN19"
|
||||||
|
"FN20"
|
||||||
|
"FN21"
|
||||||
|
"FN22"
|
||||||
|
"FN23"
|
||||||
|
"FN24"
|
||||||
|
"FN25"
|
||||||
|
"FN26"
|
||||||
|
"FN27"
|
||||||
|
"FN28"
|
||||||
|
"FN29"
|
||||||
|
"FN30"
|
||||||
|
"FN31"
|
||||||
|
"LCTL" //0xE0
|
||||||
|
"LSFT"
|
||||||
|
"LALT"
|
||||||
|
"LGUI"
|
||||||
|
"RCTL"
|
||||||
|
"RSFT"
|
||||||
|
"RALT"
|
||||||
|
"RGUI"
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"? "
|
||||||
|
"MS_U" //0xF0
|
||||||
|
"MS_D"
|
||||||
|
"MS_L"
|
||||||
|
"MS_R"
|
||||||
|
"BTN1"
|
||||||
|
"BTN2"
|
||||||
|
"BTN3"
|
||||||
|
"BTN4"
|
||||||
|
"BTN5"
|
||||||
|
"WH_U"
|
||||||
|
"WH_D"
|
||||||
|
"WH_L"
|
||||||
|
"WH_R"
|
||||||
|
"ACL0"
|
||||||
|
"ACL1"
|
||||||
|
"ACL2"
|
||||||
|
};
|
||||||
|
|
||||||
|
void set_keylog(uint16_t keycode)
|
||||||
|
{
|
||||||
|
char name[LEN_KEYCODE_STR+1] = "? ";
|
||||||
|
|
||||||
|
if (keycode <= NUM_USB_HID_KEYCODES) {
|
||||||
|
for (uint8_t k = 0; k < LEN_KEYCODE_STR; k++) {
|
||||||
|
name[k] = pgm_read_byte_near(code_to_name + keycode * LEN_KEYCODE_STR + k);
|
||||||
|
}
|
||||||
|
} else if (keycode > NUM_USB_HID_KEYCODES) {
|
||||||
|
snprintf(name, sizeof(name), "QMK ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// update keylog
|
||||||
|
snprintf(keylog, sizeof(keylog), "KC: %s ID: %d", name, keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *read_keylog(void) {
|
||||||
|
return keylog;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "comet46.h"
|
||||||
|
|
||||||
|
char modifier_state_str[22];
|
||||||
|
|
||||||
|
const char *read_modifier_state(void) {
|
||||||
|
uint8_t modifiers = get_mods();
|
||||||
|
uint8_t one_shot = get_oneshot_mods();
|
||||||
|
|
||||||
|
snprintf(modifier_state_str, sizeof(modifier_state_str), "Mod: %s%s%s%s",
|
||||||
|
(modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) ? "CTL " : "",
|
||||||
|
(modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK) ? "GUI " : "",
|
||||||
|
(modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) ? "ALT " : "",
|
||||||
|
(modifiers & MODS_SHIFT_MASK || one_shot & MODS_SHIFT_MASK) ? "SFT" : ""
|
||||||
|
);
|
||||||
|
|
||||||
|
return modifier_state_str;
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Comet46
|
# Comet46
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A split wireless 40% column-staggered keyboard
|
A split wireless 40% column-staggered keyboard
|
||||||
|
|
||||||
@@ -13,4 +13,5 @@ Make example for this keyboard (after setting up your build environment):
|
|||||||
|
|
||||||
make comet46:default
|
make comet46:default
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
|
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
||||||
|
|
||||||
@@ -1,12 +1,8 @@
|
|||||||
|
|
||||||
OPT_DEFS += -DCOMET46_ORTHO_===PROMICRO
|
|
||||||
COMET46_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
|
||||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
|
||||||
|
|
||||||
# # project specific files
|
# # project specific files
|
||||||
SRC = matrix.c
|
SRC += matrix.c \
|
||||||
|
i2c.c \
|
||||||
|
ssd1306.c
|
||||||
|
|
||||||
# MCU name
|
# MCU name
|
||||||
#MCU = at90usb1287
|
#MCU = at90usb1287
|
||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
@@ -24,8 +20,6 @@ MCU = atmega32u4
|
|||||||
# software delays.
|
# software delays.
|
||||||
F_CPU = 16000000
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# LUFA specific
|
# LUFA specific
|
||||||
#
|
#
|
||||||
# Target architecture (see library "Board Types" documentation).
|
# Target architecture (see library "Board Types" documentation).
|
||||||
@@ -48,7 +42,7 @@ F_USB = $(F_CPU)
|
|||||||
# This definition is optional, and if your keyboard supports multiple bootloaders of
|
# This definition is optional, and if your keyboard supports multiple bootloaders of
|
||||||
# different sizes, comment this out, and the correct address will be loaded
|
# different sizes, comment this out, and the correct address will be loaded
|
||||||
# automatically (+60). See bootloader.mk for all options.
|
# automatically (+60). See bootloader.mk for all options.
|
||||||
BOOTLOADER = caterina
|
# BOOTLOADER = caterina
|
||||||
|
|
||||||
# Interrupt driven control endpoint task(+60)
|
# Interrupt driven control endpoint task(+60)
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|||||||
@@ -0,0 +1,344 @@
|
|||||||
|
#ifdef SSD1306OLED
|
||||||
|
|
||||||
|
#include "ssd1306.h"
|
||||||
|
#include "i2c.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include "print.h"
|
||||||
|
#ifdef ADAFRUIT_BLE_ENABLE
|
||||||
|
#include "adafruit_ble.h"
|
||||||
|
#endif
|
||||||
|
#ifdef PROTOCOL_LUFA
|
||||||
|
#include "lufa.h"
|
||||||
|
#endif
|
||||||
|
#include "sendchar.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
static const unsigned char font[] PROGMEM;
|
||||||
|
|
||||||
|
// Set this to 1 to help diagnose early startup problems
|
||||||
|
// when testing power-on with ble. Turn it off otherwise,
|
||||||
|
// as the latency of printing most of the debug info messes
|
||||||
|
// with the matrix scan, causing keys to drop.
|
||||||
|
#define DEBUG_TO_SCREEN 0
|
||||||
|
|
||||||
|
//static uint16_t last_battery_update;
|
||||||
|
//static uint32_t vbat;
|
||||||
|
//#define BatteryUpdateInterval 10000 /* milliseconds */
|
||||||
|
|
||||||
|
// 'last_flush' is declared as uint16_t,
|
||||||
|
// so this must be less than 65535
|
||||||
|
#define ScreenOffInterval 60000 /* milliseconds */
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
static uint8_t displaying;
|
||||||
|
#endif
|
||||||
|
static uint16_t last_flush;
|
||||||
|
|
||||||
|
static bool force_dirty = true;
|
||||||
|
|
||||||
|
// Write command sequence.
|
||||||
|
// Returns true on success.
|
||||||
|
static inline bool _send_cmd1(uint8_t cmd) {
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
|
if (i2c_start_write(SSD1306_ADDRESS)) {
|
||||||
|
xprintf("failed to start write to %d\n", SSD1306_ADDRESS);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i2c_master_write(0x0 /* command byte follows */)) {
|
||||||
|
print("failed to write control byte\n");
|
||||||
|
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i2c_master_write(cmd)) {
|
||||||
|
xprintf("failed to write command %d\n", cmd);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
res = true;
|
||||||
|
done:
|
||||||
|
i2c_master_stop();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write 2-byte command sequence.
|
||||||
|
// Returns true on success
|
||||||
|
static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
|
||||||
|
if (!_send_cmd1(cmd)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _send_cmd1(opr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write 3-byte command sequence.
|
||||||
|
// Returns true on success
|
||||||
|
static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
|
||||||
|
if (!_send_cmd1(cmd)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!_send_cmd1(opr1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _send_cmd1(opr2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
|
||||||
|
#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
|
||||||
|
#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
|
||||||
|
|
||||||
|
static void clear_display(void) {
|
||||||
|
matrix_clear(&display);
|
||||||
|
|
||||||
|
// Clear all of the display bits (there can be random noise
|
||||||
|
// in the RAM on startup)
|
||||||
|
send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
|
||||||
|
send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
|
||||||
|
|
||||||
|
if (i2c_start_write(SSD1306_ADDRESS)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
if (i2c_master_write(0x40)) {
|
||||||
|
// Data mode
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
for (uint8_t row = 0; row < MatrixRows; ++row) {
|
||||||
|
for (uint8_t col = 0; col < DisplayWidth; ++col) {
|
||||||
|
i2c_master_write(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
display.dirty = false;
|
||||||
|
|
||||||
|
done:
|
||||||
|
i2c_master_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
#undef sendchar
|
||||||
|
static int8_t capture_sendchar(uint8_t c) {
|
||||||
|
sendchar(c);
|
||||||
|
iota_gfx_write_char(c);
|
||||||
|
|
||||||
|
if (!displaying) {
|
||||||
|
iota_gfx_flush();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool iota_gfx_init(bool rotate) {
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
|
i2c_master_init();
|
||||||
|
send_cmd1(DisplayOff);
|
||||||
|
send_cmd2(SetDisplayClockDiv, 0x80);
|
||||||
|
send_cmd2(SetMultiPlex, DisplayHeight - 1);
|
||||||
|
|
||||||
|
send_cmd2(SetDisplayOffset, 0);
|
||||||
|
|
||||||
|
|
||||||
|
send_cmd1(SetStartLine | 0x0);
|
||||||
|
send_cmd2(SetChargePump, 0x14 /* Enable */);
|
||||||
|
send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
|
||||||
|
|
||||||
|
if(rotate){
|
||||||
|
// the following Flip the display orientation 180 degrees
|
||||||
|
send_cmd1(SegRemap);
|
||||||
|
send_cmd1(ComScanInc);
|
||||||
|
}else{
|
||||||
|
// Flips the display orientation 0 degrees
|
||||||
|
send_cmd1(SegRemap | 0x1);
|
||||||
|
send_cmd1(ComScanDec);
|
||||||
|
}
|
||||||
|
|
||||||
|
send_cmd2(SetComPins, 0x2);
|
||||||
|
send_cmd2(SetContrast, 0x8f);
|
||||||
|
send_cmd2(SetPreCharge, 0xf1);
|
||||||
|
send_cmd2(SetVComDetect, 0x40);
|
||||||
|
send_cmd1(DisplayAllOnResume);
|
||||||
|
send_cmd1(NormalDisplay);
|
||||||
|
send_cmd1(DeActivateScroll);
|
||||||
|
send_cmd1(DisplayOn);
|
||||||
|
|
||||||
|
send_cmd2(SetContrast, 0); // Dim
|
||||||
|
|
||||||
|
clear_display();
|
||||||
|
|
||||||
|
success = true;
|
||||||
|
|
||||||
|
iota_gfx_flush();
|
||||||
|
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
print_set_sendchar(capture_sendchar);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
done:
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool iota_gfx_off(void) {
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
|
send_cmd1(DisplayOff);
|
||||||
|
success = true;
|
||||||
|
|
||||||
|
done:
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool iota_gfx_on(void) {
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
|
send_cmd1(DisplayOn);
|
||||||
|
success = true;
|
||||||
|
|
||||||
|
done:
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
|
||||||
|
*matrix->cursor = c;
|
||||||
|
++matrix->cursor;
|
||||||
|
|
||||||
|
if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
|
||||||
|
// We went off the end; scroll the display upwards by one line
|
||||||
|
memmove(&matrix->display[0], &matrix->display[1],
|
||||||
|
MatrixCols * (MatrixRows - 1));
|
||||||
|
matrix->cursor = &matrix->display[MatrixRows - 1][0];
|
||||||
|
memset(matrix->cursor, ' ', MatrixCols);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
|
||||||
|
matrix->dirty = true;
|
||||||
|
|
||||||
|
if (c == '\n') {
|
||||||
|
// Clear to end of line from the cursor and then move to the
|
||||||
|
// start of the next line
|
||||||
|
uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
|
||||||
|
|
||||||
|
while (cursor_col++ < MatrixCols) {
|
||||||
|
matrix_write_char_inner(matrix, ' ');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix_write_char_inner(matrix, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_write_char(uint8_t c) {
|
||||||
|
matrix_write_char(&display, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_write(struct CharacterMatrix *matrix, const char *data) {
|
||||||
|
const char *end = data + strlen(data);
|
||||||
|
while (data < end) {
|
||||||
|
matrix_write_char(matrix, *data);
|
||||||
|
++data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) {
|
||||||
|
char data_ln[strlen(data)+2];
|
||||||
|
snprintf(data_ln, sizeof(data_ln), "%s\n", data);
|
||||||
|
matrix_write(matrix, data_ln);
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_write(const char *data) {
|
||||||
|
matrix_write(&display, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
|
||||||
|
while (true) {
|
||||||
|
uint8_t c = pgm_read_byte(data);
|
||||||
|
if (c == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
matrix_write_char(matrix, c);
|
||||||
|
++data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_write_P(const char *data) {
|
||||||
|
matrix_write_P(&display, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_clear(struct CharacterMatrix *matrix) {
|
||||||
|
memset(matrix->display, ' ', sizeof(matrix->display));
|
||||||
|
matrix->cursor = &matrix->display[0][0];
|
||||||
|
matrix->dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_clear_screen(void) {
|
||||||
|
matrix_clear(&display);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_render(struct CharacterMatrix *matrix) {
|
||||||
|
last_flush = timer_read();
|
||||||
|
iota_gfx_on();
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
++displaying;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Move to the home position
|
||||||
|
send_cmd3(PageAddr, 0, MatrixRows - 1);
|
||||||
|
send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
|
||||||
|
|
||||||
|
if (i2c_start_write(SSD1306_ADDRESS)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
if (i2c_master_write(0x40)) {
|
||||||
|
// Data mode
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t row = 0; row < MatrixRows; ++row) {
|
||||||
|
for (uint8_t col = 0; col < MatrixCols; ++col) {
|
||||||
|
const uint8_t *glyph = font + (matrix->display[row][col] * FontWidth);
|
||||||
|
|
||||||
|
for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) {
|
||||||
|
uint8_t colBits = pgm_read_byte(glyph + glyphCol);
|
||||||
|
i2c_master_write(colBits);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1 column of space between chars (it's not included in the glyph)
|
||||||
|
//i2c_master_write(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix->dirty = false;
|
||||||
|
|
||||||
|
done:
|
||||||
|
i2c_master_stop();
|
||||||
|
#if DEBUG_TO_SCREEN
|
||||||
|
--displaying;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_flush(void) {
|
||||||
|
matrix_render(&display);
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void iota_gfx_task_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void iota_gfx_task(void) {
|
||||||
|
iota_gfx_task_user();
|
||||||
|
|
||||||
|
if (display.dirty|| force_dirty) {
|
||||||
|
iota_gfx_flush();
|
||||||
|
force_dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timer_elapsed(last_flush) > ScreenOffInterval) {
|
||||||
|
iota_gfx_off();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
force_dirty = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "pincontrol.h"
|
||||||
|
#include "action.h"
|
||||||
|
|
||||||
|
enum ssd1306_cmds {
|
||||||
|
DisplayOff = 0xAE,
|
||||||
|
DisplayOn = 0xAF,
|
||||||
|
|
||||||
|
SetContrast = 0x81,
|
||||||
|
DisplayAllOnResume = 0xA4,
|
||||||
|
|
||||||
|
DisplayAllOn = 0xA5,
|
||||||
|
NormalDisplay = 0xA6,
|
||||||
|
InvertDisplay = 0xA7,
|
||||||
|
SetDisplayOffset = 0xD3,
|
||||||
|
SetComPins = 0xda,
|
||||||
|
SetVComDetect = 0xdb,
|
||||||
|
SetDisplayClockDiv = 0xD5,
|
||||||
|
SetPreCharge = 0xd9,
|
||||||
|
SetMultiPlex = 0xa8,
|
||||||
|
SetLowColumn = 0x00,
|
||||||
|
SetHighColumn = 0x10,
|
||||||
|
SetStartLine = 0x40,
|
||||||
|
|
||||||
|
SetMemoryMode = 0x20,
|
||||||
|
ColumnAddr = 0x21,
|
||||||
|
PageAddr = 0x22,
|
||||||
|
|
||||||
|
ComScanInc = 0xc0,
|
||||||
|
ComScanDec = 0xc8,
|
||||||
|
SegRemap = 0xa0,
|
||||||
|
SetChargePump = 0x8d,
|
||||||
|
ExternalVcc = 0x01,
|
||||||
|
SwitchCapVcc = 0x02,
|
||||||
|
|
||||||
|
ActivateScroll = 0x2f,
|
||||||
|
DeActivateScroll = 0x2e,
|
||||||
|
SetVerticalScrollArea = 0xa3,
|
||||||
|
RightHorizontalScroll = 0x26,
|
||||||
|
LeftHorizontalScroll = 0x27,
|
||||||
|
VerticalAndRightHorizontalScroll = 0x29,
|
||||||
|
VerticalAndLeftHorizontalScroll = 0x2a,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Controls the SSD1306 128x32 OLED display via i2c
|
||||||
|
|
||||||
|
#ifndef SSD1306_ADDRESS
|
||||||
|
#define SSD1306_ADDRESS 0x3C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DisplayHeight 32
|
||||||
|
#define DisplayWidth 128
|
||||||
|
|
||||||
|
#define FontHeight 8
|
||||||
|
#define FontWidth 6
|
||||||
|
|
||||||
|
#define MatrixRows (DisplayHeight / FontHeight)
|
||||||
|
#define MatrixCols (DisplayWidth / FontWidth)
|
||||||
|
|
||||||
|
struct CharacterMatrix {
|
||||||
|
uint8_t display[MatrixRows][MatrixCols];
|
||||||
|
uint8_t *cursor;
|
||||||
|
bool dirty;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CharacterMatrix display;
|
||||||
|
|
||||||
|
bool iota_gfx_init(bool rotate);
|
||||||
|
void iota_gfx_task(void);
|
||||||
|
bool iota_gfx_off(void);
|
||||||
|
bool iota_gfx_on(void);
|
||||||
|
void iota_gfx_flush(void);
|
||||||
|
void iota_gfx_write_char(uint8_t c);
|
||||||
|
void iota_gfx_write(const char *data);
|
||||||
|
void iota_gfx_write_P(const char *data);
|
||||||
|
void iota_gfx_clear_screen(void);
|
||||||
|
|
||||||
|
void iota_gfx_task_user(void);
|
||||||
|
|
||||||
|
void matrix_clear(struct CharacterMatrix *matrix);
|
||||||
|
void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c);
|
||||||
|
void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
|
||||||
|
void matrix_write(struct CharacterMatrix *matrix, const char *data);
|
||||||
|
void matrix_write_ln(struct CharacterMatrix *matrix, const char *data);
|
||||||
|
void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
|
||||||
|
void matrix_render(struct CharacterMatrix *matrix);
|
||||||
|
|
||||||
|
bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
|
||||||
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -12,6 +12,3 @@ MIDI_ENABLE = no # MIDI controls
|
|||||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
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 = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -127,11 +127,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
return true;
|
return true;
|
||||||
case NR_L3:
|
case NR_L3:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
register_code(DE_ALGR);
|
register_code(KC_ALGR);
|
||||||
layer_on(_NUMROW_L3);
|
layer_on(_NUMROW_L3);
|
||||||
} else {
|
} else {
|
||||||
layer_off(_NUMROW_L3);
|
layer_off(_NUMROW_L3);
|
||||||
unregister_code(DE_ALGR);
|
unregister_code(KC_ALGR);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -9,6 +9,3 @@ MOUSEKEY_ENABLE = no
|
|||||||
CONSOLE_ENABLE = no # yes
|
CONSOLE_ENABLE = no # yes
|
||||||
COMMAND_ENABLE = no
|
COMMAND_ENABLE = no
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -88,16 +88,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void matrix_init_keymap(void) {
|
void matrix_init_keymap(void) {
|
||||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||||
#ifdef SSD1306OLED
|
#ifdef SSD1306OLED
|
||||||
iota_gfx_init(!has_usb()); // turns on the display
|
iota_gfx_init(!has_usb()); // turns on the display
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DDRD &= ~(1<<5);
|
#ifndef CONVERT_TO_PROTON_C
|
||||||
PORTD &= ~(1<<5);
|
setPinOutput(D5);
|
||||||
|
writePinHigh(D5);
|
||||||
|
|
||||||
DDRB &= ~(1<<0);
|
setPinOutput(B0);
|
||||||
PORTB &= ~(1<<0);
|
writePinHigh(B0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||||
@@ -126,10 +128,10 @@ const char code_to_name[60] = {
|
|||||||
|
|
||||||
void set_keylog(uint16_t keycode, keyrecord_t *record) {
|
void set_keylog(uint16_t keycode, keyrecord_t *record) {
|
||||||
char name = ' ';
|
char name = ' ';
|
||||||
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
|
||||||
if (keycode < 60) {
|
if (keycode < 60) {
|
||||||
name = code_to_name[keycode];
|
name = code_to_name[keycode];
|
||||||
}
|
}
|
||||||
|
|
||||||
// update keylog
|
// update keylog
|
||||||
snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
|
snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
|
||||||
record->event.key.row, record->event.key.col,
|
record->event.key.row, record->event.key.col,
|
||||||
|
|||||||
@@ -23,10 +23,6 @@ ISSI_ENABLE = yes # If the I2C pullup resistors aren't install thi
|
|||||||
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
|
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
|
||||||
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
||||||
TMK_COMMON_DEFS += -DISSI_ENABLE
|
TMK_COMMON_DEFS += -DISSI_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -23,10 +23,6 @@ ISSI_ENABLE = no # If the I2C pullup resistors aren't install this
|
|||||||
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
|
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
|
||||||
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
ifeq ($(strip $(ISSI_ENABLE)), yes)
|
||||||
TMK_COMMON_DEFS += -DISSI_ENABLE
|
TMK_COMMON_DEFS += -DISSI_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
/* Copyright 2018 'mechmerlin'
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// Defines the keycodes used by our macros in process_record_user
|
|
||||||
enum custom_keycodes {
|
|
||||||
QMKBEST = SAFE_RANGE,
|
|
||||||
QMKURL
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT(
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN,
|
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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, MO(1), KC_0, KC_UP,
|
|
||||||
KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_ENT, KC_DOWN),
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case QMKBEST:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// when keycode QMKBEST is pressed
|
|
||||||
SEND_STRING("QMK is the best thing ever!");
|
|
||||||
} else {
|
|
||||||
// when keycode QMKBEST is released
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case QMKURL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// when keycode QMKURL is pressed
|
|
||||||
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
|
|
||||||
} else {
|
|
||||||
// when keycode QMKURL is released
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_set_user(uint8_t usb_led) {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
|||||||
AUDIO_ENABLE = no # Audio disabled while using RGB underlight.
|
AUDIO_ENABLE = no # Audio disabled while using RGB underlight.
|
||||||
EXTRAKEY_ENABLE = yes
|
EXTRAKEY_ENABLE = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"height": 6,
|
"height": 6,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}]
|
"layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k42", "x":2, "y":5}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}, {"label":"k49", "x":10, "y":5}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,11 +23,9 @@ void led_init_ports(void) {
|
|||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
void led_set_kb(uint8_t usb_led) {
|
||||||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
DDRB |= (1 << 2);
|
|
||||||
PORTB &= ~(1 << 2);
|
PORTB &= ~(1 << 2);
|
||||||
} else {
|
} else {
|
||||||
DDRB &= ~(1 << 2);
|
PORTB |= (1 << 2);
|
||||||
PORTB &= ~(1 << 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
led_set_user(usb_led);
|
led_set_user(usb_led);
|
||||||
|
|||||||
@@ -332,6 +332,33 @@
|
|||||||
{ k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \
|
{ k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* LAYOUT_60_tsangan
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │ 0e │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||||
|
* │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
|
||||||
|
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
|
||||||
|
* │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │
|
||||||
|
* ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
|
||||||
|
* │40 │41 │43 │46 (7u) │4b │4d │4e │
|
||||||
|
* └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||||
|
*/
|
||||||
|
#define LAYOUT_60_tsangan( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
|
||||||
|
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
|
||||||
|
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
|
||||||
|
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
|
||||||
|
k40, k41, k43, k46, k4b, k4d, k4e \
|
||||||
|
) { \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e }, \
|
||||||
|
{ k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
|
||||||
|
{ k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \
|
||||||
|
{ k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e }, \
|
||||||
|
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO, k4b, KC_NO, k4d, k4e } \
|
||||||
|
}
|
||||||
|
|
||||||
/* LAYOUT_60_tsangan_hhkb
|
/* LAYOUT_60_tsangan_hhkb
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||||
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
|
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
|
||||||
|
|||||||
@@ -53,6 +53,10 @@
|
|||||||
"key_count": 67,
|
"key_count": 67,
|
||||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"x":13, "y":0}, {"label":"Back Space", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"[", "x":11.5, "y":1}, {"label":"]", "x":12.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":";", "x":10.75, "y":2}, {"label":"'", "x":11.75, "y":2}, {"label":"#", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"\\", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":",", "x":9.25, "y":3}, {"label":".", "x":10.25, "y":3}, {"label":"Shift", "x":11.25, "y":3, "w":1.75}, {"label":"Up", "x":13, "y":3}, {"label":"Del", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":2.25}, {"label":"Space", "x":6, "y":4, "w":1.25}, {"label":"Space", "x":7.25, "y":4, "w":2.75}, {"label":"AltGr", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Left", "x":12, "y":4}, {"label":"Down", "x":13, "y":4}, {"label":"Right", "x":14, "y":4}]
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"x":13, "y":0}, {"label":"Back Space", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"[", "x":11.5, "y":1}, {"label":"]", "x":12.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":";", "x":10.75, "y":2}, {"label":"'", "x":11.75, "y":2}, {"label":"#", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"\\", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":",", "x":9.25, "y":3}, {"label":".", "x":10.25, "y":3}, {"label":"Shift", "x":11.25, "y":3, "w":1.75}, {"label":"Up", "x":13, "y":3}, {"label":"Del", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":2.25}, {"label":"Space", "x":6, "y":4, "w":1.25}, {"label":"Space", "x":7.25, "y":4, "w":2.75}, {"label":"AltGr", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Left", "x":12, "y":4}, {"label":"Down", "x":13, "y":4}, {"label":"Right", "x":14, "y":4}]
|
||||||
},
|
},
|
||||||
|
"LAYOUT_60_tsangan": {
|
||||||
|
"keycount": 61,
|
||||||
|
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||||
|
},
|
||||||
"LAYOUT_60_tsangan_hhkb": {
|
"LAYOUT_60_tsangan_hhkb": {
|
||||||
"key_count": 62,
|
"key_count": 62,
|
||||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Win", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Win", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum keyboard_layers {
|
||||||
|
_BL = 0, // Base Layer
|
||||||
|
_FL, // Function Layer
|
||||||
|
_CL // Control Layer
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BL] = LAYOUT_60_tsangan(
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
KC_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, MO(_FL),
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||||
|
),
|
||||||
|
[_FL] = LAYOUT_60_tsangan(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||||
|
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
|
||||||
|
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, MO(_CL), _______
|
||||||
|
),
|
||||||
|
[_CL] = LAYOUT_60_tsangan(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -30,6 +30,3 @@ KEYMAP_BRANCH = $(shell \
|
|||||||
|
|
||||||
OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"
|
OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA,
|
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA,
|
||||||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE),
|
KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), LT(SYMB, NO_AE),
|
||||||
KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC,
|
KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, NO_MINS, KC_RSPC,
|
||||||
KC_SPC, KC_BSPC, NO_ALGR, NO_ASTR, CTL_T(NO_TILD),
|
KC_SPC, KC_BSPC, KC_ALGR, NO_ASTR, CTL_T(NO_TILD),
|
||||||
KC_HOME, NO_CIRC,
|
KC_HOME, NO_CIRC,
|
||||||
KC_PGUP, KC_UP, KC_DOWN,
|
KC_PGUP, KC_UP, KC_DOWN,
|
||||||
KC_LGUI, ALT_T(KC_ESC), CTL_T(KC_ENT)
|
KC_LGUI, ALT_T(KC_ESC), CTL_T(KC_ENT)
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
/* Copyright 2018 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#define _BL 0 //Base layer
|
||||||
|
#define _FN1 1 //Function layer
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* BL
|
||||||
|
____________________________________________________________________________________________________________________________________________________________________________
|
||||||
|
| | | | | | | | | | | | | | | | | | | |
|
||||||
|
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL | PRT SC | SCR LK | PAUSE | P UP | P DOWN |
|
||||||
|
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
||||||
|
| | | | | | | | | | | | | | BACK | NUM | | | |
|
||||||
|
| ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | SPACE | LOCK | / | * | - |
|
||||||
|
|________|________|________|________|________|________|________|________|________|________|________|________|________|_________________|________|________|________|________|
|
||||||
|
| | | | | | | | | | | | [ | ] | | | | | |
|
||||||
|
| TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | | \ | 7 | 8 | 9 | |
|
||||||
|
|____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________| + |
|
||||||
|
| | | | | | | | | | | ; | ' | | | | | |
|
||||||
|
| CAPS LOCK | A | S | D | F | G | H | J | K | L | : | " | ENTER | 4 | 5 | 6 | |
|
||||||
|
|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
|
||||||
|
| | | | | | | | | , | . | / | | | | | | |
|
||||||
|
| SHIFT | Z | X | C | V | B | N | M | < | > | ? | SHIFT | UP | 1 | 2 | 3 | |
|
||||||
|
|__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________| ENTER |
|
||||||
|
| | | | | | | MO | | | | | | |
|
||||||
|
| CTRL | LGUI | L ALT | SPACE | VOL Dn | VOL Up | _FN | LEFT | DOWN | RIGHT | 0 | . | |
|
||||||
|
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_BL] = LAYOUT_default(
|
||||||
|
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_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, \
|
||||||
|
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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
|
||||||
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_VOLD, KC_VOLU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FN_1
|
||||||
|
____________________________________________________________________________________________________________________________________________________________________________
|
||||||
|
| | | | | | | | | | | | | | | VOL | VOL | NEXT | | |
|
||||||
|
| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|
||||||
|
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
||||||
|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
|
||||||
|
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
|
||||||
|
|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
|
||||||
|
| | BACK | BACK | | | | | | | | | | | | | | | |
|
||||||
|
| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
|
||||||
|
|____________| TOGGLE |INCREASE|DECREASE|________|________|________|________|________|________|________|________|________|_____________|________|________|________| |
|
||||||
|
| | | | | | | | | | | | | | | | | |
|
||||||
|
| | | | | | | | | | | | | | | | | |
|
||||||
|
|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
|
||||||
|
| | | | | | | | | | | | | | | | | |
|
||||||
|
| | | | | | | | | | | | | | | | | |
|
||||||
|
|__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________| |
|
||||||
|
| | | | | | | | | | | | | |
|
||||||
|
| | | | | | | | | | | | | |
|
||||||
|
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_FN1] = LAYOUT_default(
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
|
||||||
|
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
|
||||||
|
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
#ifndef FRACTAL_H
|
#pragma once
|
||||||
#define FRACTAL_H
|
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
@@ -30,7 +29,3 @@
|
|||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 }, \
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 }, \
|
||||||
{ K400, K401, K402, K403, K404, KC_NO, K406, K407, K408, K409, K410, K411 } \
|
{ K400, K401, K402, K403, K404, KC_NO, K406, K407, K408, K409, K410, K411 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define KEYMAP LAYOUT_preonic_mit
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -11,4 +11,4 @@ Make example for this keyboard (after setting up your build environment):
|
|||||||
|
|
||||||
make fractal:default
|
make fractal:default
|
||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -57,5 +57,5 @@ UNICODE_ENABLE = no # Unicode
|
|||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
LAYOUTS = preonic_mit ortho_5x12
|
LAYOUTS = ortho_5x12 # preonic_mit
|
||||||
LAYOUTS_HAS_RGB = no
|
LAYOUTS_HAS_RGB = no
|
||||||
@@ -106,7 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: htt
|
|||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
@@ -106,6 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: htt
|
|||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = no # Enable RGB Underglow
|
RGBLIGHT_ENABLE = no # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -106,7 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/
|
|||||||
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
#include "../../config.h"
|
#pragma once
|
||||||
|
|
||||||
|
//Force NKRO to be enabled.
|
||||||
|
#define FORCE_NKRO
|
||||||
|
|
||||||
//GRAVE_ESC override for CTRL+SHIFT+ESC Windows task manager shortcut.
|
//GRAVE_ESC override for CTRL+SHIFT+ESC Windows task manager shortcut.
|
||||||
#define GRAVE_ESC_CTRL_OVERRIDE
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
//Delay matrix scan for tap dance, reduce to activate modifier keys faster.
|
//Delay matrix scan for tap dance, reduce to activate modifier keys faster.
|
||||||
//#define TAPPING_TERM 200
|
//#define TAPPING_TERM 200
|
||||||
@@ -11,13 +11,16 @@ enum layers {
|
|||||||
_AL, // Adjust Layer
|
_AL, // Adjust Layer
|
||||||
};
|
};
|
||||||
|
|
||||||
enum gonnerd_keycodes {
|
enum custom_keycodes {
|
||||||
DYNAMIC_MACRO_RANGE = SAFE_RANGE,
|
DYNAMIC_MACRO_RANGE = SAFE_RANGE,
|
||||||
|
QMK_REV,
|
||||||
|
KC_WEB,
|
||||||
|
KC_SP4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern backlight_config_t backlight_config;
|
||||||
|
|
||||||
#include "dynamic_macro.h"
|
#include "dynamic_macro.h"
|
||||||
#define _______ KC_TRNS
|
|
||||||
#define XXXXXXX KC_NO
|
|
||||||
#define FN_CAPS LT(_FL, KC_CAPS)
|
#define FN_CAPS LT(_FL, KC_CAPS)
|
||||||
#define KC_DMR1 DYN_REC_START1
|
#define KC_DMR1 DYN_REC_START1
|
||||||
#define KC_DMR2 DYN_REC_START2
|
#define KC_DMR2 DYN_REC_START2
|
||||||
@@ -25,47 +28,44 @@ enum gonnerd_keycodes {
|
|||||||
#define KC_DMP2 DYN_MACRO_PLAY2
|
#define KC_DMP2 DYN_MACRO_PLAY2
|
||||||
#define KC_DMRS DYN_REC_STOP
|
#define KC_DMRS DYN_REC_STOP
|
||||||
|
|
||||||
static uint8_t current_layer;
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* _BL: Base Layer, mostly standard TKL QWERTY layout.
|
/*#### _BL: Base Layer - Standard TKL QWERTY layout.
|
||||||
* .-----------------------------------------------------------------------.
|
* .-----------------------------------------------------------------------.
|
||||||
* |Esc||||| F1| F2| F3| F4||| F5| F6| F7| F8||| F9|F10|F11|F12|PSc|SLk|Pau|
|
* |Esc|||||F1 |F2 |F3 |F4 |||F5 |F6 |F7 |F8 |||F9 |F10|F11|F12|PSc|SLk|Pau|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* | ~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Ins|Hom|PgU|
|
* |~ |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backsp |Ins|Hom|PgU|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|Del|End|PgD|
|
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ |Del|End|PgD|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |FnCaps| A| S| D| F| G| H| J| K| L| ;| '|Return | |
|
* |Caps |A |S |D |F |G |H |J |K |L |; |' |Return | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up| |
|
* |Shift |Z |X |C |V |B |N |M |, |. |/ |Shift |Fn | | Up| |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Ctrl |||||Win | Space |RAlt |||||Ctrl |Lft|Dwn|Rgt|
|
* |Ctrl |Win|Alt | Space |RAlt |Fn |Ctrl |Lft|Dwn|Rgt|
|
||||||
* *-----------------------------------------------------------------------*
|
* *-----------------------------------------------------------------------*
|
||||||
*/
|
*/
|
||||||
[_BL] = LAYOUT_tkl( \
|
[_BL] = LAYOUT_tkl( \
|
||||||
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_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_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_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, \
|
||||||
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, \
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, \
|
||||||
KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, \
|
KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, \
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
),
|
),
|
||||||
|
/*#### _WL: Workman Layer.
|
||||||
/* _WL: Workman Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* .-----------------------------------------------------------------------.
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
* | ||||| | | | ||| | | | ||| | | | | | | |
|
* .-----------------------------------------------------------|-----------|
|
||||||
* .-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
* | | | | | | | | | | | | -| =| | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Q |D |R |W |B |J |F |U |P |; |[ |] |\ | | | |
|
||||||
* | | Q| D| R| W| B| J| F| U| P| ;| [| ]| \| | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |A |S |H |T |G |Y |N |E |O |I |' | | |
|
||||||
* | | A| S| H| T| G| Y| N| E| O| I| '| | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Z |X |M |C |V |K |L |, |. |/ | | | | | |
|
||||||
* | | Z| X| M| C| V| K| L| ,| .| /| | | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | |
|
||||||
* | ||||| | | ||||| | | | |
|
* *-----------------------------------------------------------------------*
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_WL] = LAYOUT_tkl( \
|
[_WL] = LAYOUT_tkl( \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
@@ -75,21 +75,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
_______, _______, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
/*#### _NL: Norman Layer.
|
||||||
/* _NL: Norman Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* .-----------------------------------------------------------------------.
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
* | ||||| | | | ||| | | | ||| | | | | | | |
|
* .-----------------------------------------------------------|-----------|
|
||||||
* .-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
* | | | | | | | | | | | | -| =| | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Q |W |D |F |K |J |U |R |L |; |[ |] |\ | | | |
|
||||||
* | | Q| W| D| F| K| J| U| R| L| ;| [| ]| \| | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |A |S |E |T |G |Y |N |I |O |H |' | | |
|
||||||
* | | A| S| E| T| G| Y| N| I| O| H| '| | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Z |X |C |V |B |P |M |, |. |/ | | | | | |
|
||||||
* | | Z| X| C| V| B| P| M| ,| .| /| | | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | |
|
||||||
* | ||||| | | ||||| | | | |
|
* *-----------------------------------------------------------------------*
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_NL] = LAYOUT_tkl( \
|
[_NL] = LAYOUT_tkl( \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
@@ -99,21 +98,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
/*#### _DL: Dvorak Layer.
|
||||||
/* _DL: Dvorak Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* .-----------------------------------------------------------------------.
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
* | ||||| | | | ||| | | | ||| | | | | | | |
|
* .-----------------------------------------------------------|-----------|
|
||||||
* .-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | | |[ |] | | | | |
|
||||||
* | | | | | | | | | | | | [| ]| | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |' |, |. |P |Y |F |G |C |R |L |/ |= |\ | | | |
|
||||||
* | | '| ,| .| P| Y| F| G| C| R| L| /| =| \| | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |A |O |E |U |I |D |H |T |N |S |- | | |
|
||||||
* | | A| O| E| U| I| D| H| T| N| S| -| | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |; |Q |J |K |X |B |M |W |V |Z | | | | | |
|
||||||
* | | ;| Q| J| K| X| B| M| W| V| Z| | | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | |
|
||||||
* | ||||| | | ||||| | | | |
|
* *-----------------------------------------------------------------------*
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_DL] = LAYOUT_tkl( \
|
[_DL] = LAYOUT_tkl( \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
@@ -123,21 +121,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______, KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , _______, _______, _______, \
|
_______, _______, KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
/*#### _CL: Colmak Layer.
|
||||||
/* _CL: Colmak Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* .-----------------------------------------------------------------------.
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
* | ||||| | | | ||| | | | ||| | | | | | | |
|
* .-----------------------------------------------------------|-----------|
|
||||||
* .-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
* | | | | | | | | | | | | -| =| | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Q |W |F |P |G |J |L |U |Y |; |[ |] |\ | | | |
|
||||||
* | | Q| W| F| P| G| J| L| U| Y| ;| [| ]| \| | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |A |R |S |T |D |H |N |E |I |O |' | | |
|
||||||
* | | A| R| S| T| D| H| N| E| I| O| '| | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | |Z |X |C |V |B |K |M |, |. |/ | | | | | |
|
||||||
* | | Z| X| C| V| B| K| M| ,| .| /| | | | | |
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* | | | | | | | | | | |
|
||||||
* | ||||| | | ||||| | | | |
|
* *-----------------------------------------------------------------------*
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_CL] = LAYOUT_tkl( \
|
[_CL] = LAYOUT_tkl( \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
@@ -147,142 +144,126 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
/*#### _FL: Function Layer.
|
||||||
/* _FL: Function Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* M0 opens Chrome
|
* | ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
||||||
* .-----------------------------------------------------------------------.
|
* .-----------------------------------------------------------|-----------|
|
||||||
* | ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
* |Web| | | | | | | | | | | | | | | | |
|
||||||
* .-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* | M0| | | | | | | | | | | | | | | | |
|
* |Fn_AL| | | | | | | | | | | | | | | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Fn_AL| | | | | | | | | | | | | | | | |
|
* | | | | | | | |Lft|Dwn|Up |Rgt| | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |FnCaps| | | | | | |Lft|Dwn|Up |Rgt| | | |
|
* | | | | | | | | | | | | |Fn | | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* | | | | | | | | | | | | | | | | |
|
* | | | | SP4 | |Fn | |WBk| |WFw|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* *-----------------------------------------------------------------------*
|
||||||
* | ||||| | | ||||| |WBk| |WFw|
|
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_FL] = LAYOUT_tkl( \
|
[_FL] = LAYOUT_tkl( \
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
M(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
KC_WEB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
MO(_AL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
MO(_AL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, 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, KC_MENU, M(1), XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_WBAK, XXXXXXX, KC_WFWD \
|
XXXXXXX, XXXXXXX, KC_MENU, KC_SP4, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_WBAK, XXXXXXX, KC_WFWD \
|
||||||
),
|
),
|
||||||
|
/*#### _AL: Adjust Layer - Keymap select, LED backlight, and Dynamic Macro settings.
|
||||||
/* _AL: Adjust Layer.
|
* .-----------------------------------------------------------------------.
|
||||||
* Default keymap, RGB Underglow, LED backlight, and Dynamic Macro settings.
|
* |Rst||||| | | | ||| | | | ||| | | | | | | |
|
||||||
* .-----------------------------------------------------------------------.
|
* .-----------------------------------------------------------|-----------|
|
||||||
* |Rst||||| | | | ||| | | | ||| | | | | | | |
|
* |Rev|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
||||||
* .-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Ver|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
* |Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
* | | | |_DL| | | | | | | | | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* |FnCaps| | |_DL| | | | | | | | | | |
|
* | | | |_CL| |_BL|_NL| | | | | |Fn | | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* |-----------------------------------------------------------|-----------|
|
||||||
* | | | |_CL| |_BL|_NL| | | | | | | | | |
|
* | | | | | |Fn | | | | |
|
||||||
* |-----------------------------------------------------------|-----------|
|
* *-----------------------------------------------------------------------*
|
||||||
* | ||||| | | ||||| | | | |
|
|
||||||
* *-----------------------------------------------------------------------*
|
|
||||||
*/
|
*/
|
||||||
[_AL] = LAYOUT_tkl( \
|
[_AL] = LAYOUT_tkl( \
|
||||||
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
F(0), RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, KC_DMR1, KC_DMP1, \
|
QMK_REV, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, KC_DMR1, KC_DMP1, \
|
||||||
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS, KC_DMR2, KC_DMP2, \
|
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS, KC_DMR2, KC_DMP2, \
|
||||||
_______, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(_CL), XXXXXXX, DF(_BL), DF(_NL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(_CL), XXXXXXX, DF(_BL), DF(_NL), 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 \
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
switch(id) {
|
|
||||||
case 0:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(I(0), D(LGUI), T(R), U(LGUI), END);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SEND_STRING("chrome.exe\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
return MACRO(I(0), T(SPC), T(SPC), T(SPC), T(SPC), END);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
[0] = ACTION_FUNCTION(0),
|
|
||||||
};
|
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
||||||
switch (id) {
|
|
||||||
case 0:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING ("[QMK:" QMK_KEYBOARD ":" QMK_KEYMAP ":" QMK_VERSION "]");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
#ifdef BACKLIGHT_ENABLE
|
|
||||||
backlight_level(0);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
uint8_t layer = biton32(layer_state);
|
|
||||||
|
|
||||||
if (current_layer == layer) {
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
current_layer = layer;
|
|
||||||
switch (layer) {
|
|
||||||
case 0:
|
|
||||||
backlight_level(0);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
backlight_level(1);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
backlight_level(1);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
backlight_level(1);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
backlight_level(1);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
backlight_level(2);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
backlight_level(3);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
backlight_level(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
// Enable Dynamic Macros.
|
switch (keycode) {
|
||||||
|
case QMK_REV:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION ":" QMK_BUILDDATE);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_WEB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_LGUI("r"));
|
||||||
|
wait_ms(100);
|
||||||
|
SEND_STRING("chrome.exe\n");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_SP4:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (" ");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Dynamic Macros.
|
||||||
if (!process_record_dynamic_macro(keycode, record)) {
|
if (!process_record_dynamic_macro(keycode, record)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void custom_backlight_level(uint8_t level) {
|
||||||
|
if (level > BACKLIGHT_LEVELS)
|
||||||
|
level = BACKLIGHT_LEVELS;
|
||||||
|
backlight_config.level = level;
|
||||||
|
backlight_config.enable = !!backlight_config.level;
|
||||||
|
backlight_set(backlight_config.level);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
custom_backlight_level(0);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
switch (biton32(state)) {
|
||||||
|
case _BL:
|
||||||
|
custom_backlight_level(0);
|
||||||
|
break;
|
||||||
|
case _WL:
|
||||||
|
case _NL:
|
||||||
|
case _DL:
|
||||||
|
case _CL:
|
||||||
|
custom_backlight_level(1);
|
||||||
|
break;
|
||||||
|
case _FL:
|
||||||
|
custom_backlight_level(2);
|
||||||
|
break;
|
||||||
|
case _AL:
|
||||||
|
custom_backlight_level(3);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
custom_backlight_level(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,120 +1,114 @@
|
|||||||
# Keymap Maintainer: Gam3cat
|
# Keymap Maintainer: Gam3cat
|
||||||
make gonnerd:gam3cat
|
make gonnerd:gam3cat
|
||||||
## Layout Config:
|
## Layout Config:
|
||||||
2u backspace, 2.25u left shift/enter, 1.75u right shift.
|
2u backspace, 2.25u lshift/enter, [2.75u rshift] or [1.75u rshift, 1u Fn].
|
||||||
2x1.5u, 1x7.0u, 2x1.5u, 3x1u bottom row.
|
[1.5u, 1u, 1.5u 1x7.0u, 1.5u, 1u, 1.5u, 3x1u] or [2x1.5u, 1x7.0u, 2x1.5u, 3x1u] bottom row.
|
||||||
|
|
||||||
FN_CAPS = MO(_FL) when held, CAPS when tapped.
|
|
||||||
GRAVE_ESC + GUI = `
|
|
||||||
GRAVE_ESC + SHIFT = ~
|
|
||||||
|
|
||||||
## Base Layer Selection:
|
## Base Layer Selection:
|
||||||
(Caps+TAB+( )): (Q)WERTY, (W)orkman, (N)orman, (D)vorak, (C)olmak
|
(Fn+TAB+( )): (Q)WERTY, (W)orkman, (N)orman, (D)vorak, (C)olmak
|
||||||
|
|
||||||
### Base Layer Options:
|
### Base Layer Options:
|
||||||
_BL: Base Layer, mostly standard TKL QWERTY layout.
|
#### _BL: Base Layer - Standard TKL QWERTY layout.
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
|Esc||||| F1| F2| F3| F4||| F5| F6| F7| F8||| F9|F10|F11|F12|PSc|SLk|Pau|
|
|Esc|||||F1 |F2 |F3 |F4 |||F5 |F6 |F7 |F8 |||F9 |F10|F11|F12|PSc|SLk|Pau|
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Ins|Hom|PgU|
|
|~ |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backsp |Ins|Hom|PgU|
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|Del|End|PgD|
|
|Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ |Del|End|PgD|
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|FnCaps| A| S| D| F| G| H| J| K| L| ;| '|Return | |
|
|Caps |A |S |D |F |G |H |J |K |L |; |' |Return | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up| |
|
|Shift |Z |X |C |V |B |N |M |, |. |/ |Shift |Fn | | Up| |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|Ctrl |||||Win | Space |RAlt |||||Ctrl |Lft|Dwn|Rgt|
|
|Ctrl |Win|Alt | Space |RAlt |Fn |Ctrl |Lft|Dwn|Rgt|
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_WL: Workman Layer.
|
#### _WL: Workman Layer.
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
| ||||| | | | ||| | | | ||| | | | | | | |
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | -| =| | | | |
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Q| D| R| W| B| J| F| U| P| ;| [| ]| \| | | |
|
| |Q |D |R |W |B |J |F |U |P |; |[ |] |\ | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | A| S| H| T| G| Y| N| E| O| I| '| | |
|
| |A |S |H |T |G |Y |N |E |O |I |' | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Z| X| M| C| V| K| L| ,| .| /| | | | | |
|
| |Z |X |M |C |V |K |L |, |. |/ | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| | | | |
|
| | | | | | | | | | |
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_NL: Norman Layer.
|
#### _NL: Norman Layer.
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
| ||||| | | | ||| | | | ||| | | | | | | |
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | -| =| | | | |
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Q| W| D| F| K| J| U| R| L| ;| [| ]| \| | | |
|
| |Q |W |D |F |K |J |U |R |L |; |[ |] |\ | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | A| S| E| T| G| Y| N| I| O| H| '| | |
|
| |A |S |E |T |G |Y |N |I |O |H |' | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Z| X| C| V| B| P| M| ,| .| /| | | | | |
|
| |Z |X |C |V |B |P |M |, |. |/ | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| | | | |
|
| | | | | | | | | | |
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_DL: Dvorak Layer.
|
#### _DL: Dvorak Layer.
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
| ||||| | | | ||| | | | ||| | | | | | | |
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | [| ]| | | | |
|
| | | | | | | | | | | |[ |] | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | '| ,| .| P| Y| F| G| C| R| L| /| =| \| | | |
|
| |' |, |. |P |Y |F |G |C |R |L |/ |= |\ | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | A| O| E| U| I| D| H| T| N| S| -| | |
|
| |A |O |E |U |I |D |H |T |N |S |- | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | ;| Q| J| K| X| B| M| W| V| Z| | | | | |
|
| |; |Q |J |K |X |B |M |W |V |Z | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| | | | |
|
| | | | | | | | | | |
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_CL: Colmak Layer.
|
#### _CL: Colmak Layer.
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
| ||||| | | | ||| | | | ||| | | | | | | |
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | -| =| | | | |
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Q| W| F| P| G| J| L| U| Y| ;| [| ]| \| | | |
|
| |Q |W |F |P |G |J |L |U |Y |; |[ |] |\ | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | A| R| S| T| D| H| N| E| I| O| '| | |
|
| |A |R |S |T |D |H |N |E |I |O |' | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | Z| X| C| V| B| K| M| ,| .| /| | | | | |
|
| |Z |X |C |V |B |K |M |, |. |/ | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| | | | |
|
| | | | | | | | | | |
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_FL: Function Layer.
|
#### _FL: Function Layer.
|
||||||
M0 opens Chrome
|
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
| ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
| ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
| M0| | | | | | | | | | | | | | | | |
|
|Web| | | | | | | | | | | | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | | | | | | |
|
|Fn_AL| | | | | | | | | | | | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | |Lft|Dwn|Up |Rgt| | | |
|
| | | | | | | |Lft|Dwn|Up |Rgt| | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | |Fn | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| |WBk| |WFw|
|
| | | | SP4 | |Fn | |WBk| |WFw|
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
_AL: Adjust Layer.
|
#### _AL: Adjust Layer - Keymap select, LED backlight, and Dynamic Macro settings.
|
||||||
Default keymap, RGB Underglow, LED backlight, and Dynamic Macro settings.
|
|
||||||
.-----------------------------------------------------------------------.
|
.-----------------------------------------------------------------------.
|
||||||
|Rst||||| | | | ||| | | | ||| | | | | | | |
|
|Rst||||| | | | ||| | | | ||| | | | | | | |
|
||||||
.-----------------------------------------------------------|-----------|
|
.-----------------------------------------------------------|-----------|
|
||||||
|Ver|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
|Rev|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
|Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
|FnCaps| | |_DL| | | | | | | | | | |
|
| | | |_DL| | | | | | | | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| | | |_CL| |_BL|_NL| | | | | | | | | |
|
| | | |_CL| |_BL|_NL| | | | | |Fn | | | |
|
||||||
|-----------------------------------------------------------|-----------|
|
|-----------------------------------------------------------|-----------|
|
||||||
| ||||| | | ||||| | | | |
|
| | | | | |Fn | | | | |
|
||||||
*-----------------------------------------------------------------------*
|
*-----------------------------------------------------------------------*
|
||||||
@@ -2,20 +2,24 @@
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
TAP_DANCE_ENABLE = no # Enable TapDance functionality
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys(+1500)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # 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 # Nkey Rollover - If this doesn't work, add this to config.h: #define FORCE_NKRO
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
UNICODEMAP_ENABLE = no # Enable extended unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Uses buzzer to emulate clicky switches. By default, uses the C6 pin, same as AUDIO_ENABLE.
|
||||||
|
#VARIABLE_TRACE = no # Use this to debug changes to variable values
|
||||||
|
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390)
|
||||||
|
KEY_LOCK_ENABLE = no # This enables key lock(+260)
|
||||||
|
SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
//Force NKRO to be enabled.
|
||||||
|
#define FORCE_NKRO
|
||||||
|
|
||||||
|
//GRAVE_ESC override for CTRL+SHIFT+ESC Windows task manager shortcut.
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
//Delay matrix scan for tap dance, reduce to activate modifier keys faster.
|
||||||
|
//#define TAPPING_TERM 200
|
||||||
@@ -0,0 +1,292 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
_BL = 0, // Base Layer
|
||||||
|
_WL, // Workman Layer
|
||||||
|
_NL, // Norman Layer
|
||||||
|
_DL, // Dvorak Layer
|
||||||
|
_CL, // Base Layer
|
||||||
|
_FL, // Function Layer
|
||||||
|
_AL, // Adjust Layer
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
DYNAMIC_MACRO_RANGE = SAFE_RANGE,
|
||||||
|
QMK_REV,
|
||||||
|
KC_WEB,
|
||||||
|
KC_SP4
|
||||||
|
};
|
||||||
|
|
||||||
|
extern backlight_config_t backlight_config;
|
||||||
|
|
||||||
|
#include "dynamic_macro.h"
|
||||||
|
#define FN_CAPS LT(_FL, KC_CAPS)
|
||||||
|
#define KC_DMR1 DYN_REC_START1
|
||||||
|
#define KC_DMR2 DYN_REC_START2
|
||||||
|
#define KC_DMP1 DYN_MACRO_PLAY1
|
||||||
|
#define KC_DMP2 DYN_MACRO_PLAY2
|
||||||
|
#define KC_DMRS DYN_REC_STOP
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/*#### _BL: Base Layer - Standard TKL QWERTY layout.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* |Esc|||||F1 |F2 |F3 |F4 |||F5 |F6 |F7 |F8 |||F9 |F10|F11|F12|PSc|SLk|Pau|
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |~ |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backsp |Ins|Hom|PgU|
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ |Del|End|PgD|
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Caps |A |S |D |F |G |H |J |K |L |; |' |Return | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Shift |Z |X |C |V |B |N |M |, |. |/ |Shift |Fn | | Up| |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Ctrl |Win|Alt | Space |RAlt |Fn |Ctrl |Lft|Dwn|Rgt|
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_BL] = LAYOUT_all( \
|
||||||
|
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_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, XXXXXXX, KC_ENT, \
|
||||||
|
KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), KC_UP, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
/*#### _WL: Workman Layer.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Q |D |R |W |B |J |F |U |P |; |[ |] |\ | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |A |S |H |T |G |Y |N |E |O |I |' | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Z |X |M |C |V |K |L |, |. |/ | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | |
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_WL] = LAYOUT_all( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , _______, _______, _______, \
|
||||||
|
_______, _______, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
/*#### _NL: Norman Layer.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Q |W |D |F |K |J |U |R |L |; |[ |] |\ | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |A |S |E |T |G |Y |N |I |O |H |' | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Z |X |C |V |B |P |M |, |. |/ | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | |
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_NL] = LAYOUT_all( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_R , KC_L , KC_SCLN, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_A , KC_S , KC_E , KC_T , KC_G , KC_Y , KC_N , KC_I , KC_O , KC_H , _______, _______, _______, \
|
||||||
|
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
/*#### _DL: Dvorak Layer.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | | |[ |] | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |' |, |. |P |Y |F |G |C |R |L |/ |= |\ | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |A |O |E |U |I |D |H |T |N |S |- | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |; |Q |J |K |X |B |M |W |V |Z | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | |
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_DL] = LAYOUT_all( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_SLSH, KC_EQL , _______, _______, _______, _______, \
|
||||||
|
_______, KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS, _______, _______, \
|
||||||
|
_______, _______, KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
/*#### _CL: Colmak Layer.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* | ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | | |- |= | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Q |W |F |P |G |J |L |U |Y |; |[ |] |\ | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |A |R |S |T |D |H |N |E |I |O |' | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | |Z |X |C |V |B |K |M |, |. |/ | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | |
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_CL] = LAYOUT_all( \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , _______, _______, _______, \
|
||||||
|
_______, _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
/*#### _FL: Function Layer.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* | ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* |Web| | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Fn_AL| | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | |Lft|Dwn|Up |Rgt| | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | | | | | | | | |Fn | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | SP4 | |Fn | |WBk| |WFw|
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_FL] = LAYOUT_all( \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
KC_WEB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
MO(_AL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, KC_MENU, KC_SP4, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_WBAK, XXXXXXX, KC_WFWD \
|
||||||
|
),
|
||||||
|
/*#### _AL: Adjust Layer - Keymap select, LED backlight, and Dynamic Macro settings.
|
||||||
|
* .-----------------------------------------------------------------------.
|
||||||
|
* |Rst||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
* .-----------------------------------------------------------|-----------|
|
||||||
|
* |Rev|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* |Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | |_DL| | | | | | | | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | |_CL| |_BL|_NL| | | | | |Fn | | | |
|
||||||
|
* |-----------------------------------------------------------|-----------|
|
||||||
|
* | | | | | |Fn | | | | |
|
||||||
|
* *-----------------------------------------------------------------------*
|
||||||
|
*/
|
||||||
|
[_AL] = LAYOUT_all( \
|
||||||
|
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
QMK_REV, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMR1, KC_DMP1, \
|
||||||
|
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS, KC_DMR2, KC_DMP2, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(_CL), XXXXXXX, DF(_BL), DF(_NL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, \
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QMK_REV:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION ":" QMK_BUILDDATE);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_WEB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(SS_LGUI("r"));
|
||||||
|
wait_ms(100);
|
||||||
|
SEND_STRING("chrome.exe\n");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_SP4:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (" ");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Dynamic Macros.
|
||||||
|
if (!process_record_dynamic_macro(keycode, record)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void custom_backlight_level(uint8_t level) {
|
||||||
|
if (level > BACKLIGHT_LEVELS)
|
||||||
|
level = BACKLIGHT_LEVELS;
|
||||||
|
backlight_config.level = level;
|
||||||
|
backlight_config.enable = !!backlight_config.level;
|
||||||
|
backlight_set(backlight_config.level);
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
custom_backlight_level(0);
|
||||||
|
#endif
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_mode(1);
|
||||||
|
rgblight_sethsv_noeeprom(180,100,100);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t layer_state_set_user(uint32_t state) {
|
||||||
|
switch (biton32(state)) {
|
||||||
|
case _BL:
|
||||||
|
custom_backlight_level(0);
|
||||||
|
rgblight_sethsv_noeeprom(180,100,255);
|
||||||
|
break;
|
||||||
|
case _WL:
|
||||||
|
case _NL:
|
||||||
|
case _DL:
|
||||||
|
case _CL:
|
||||||
|
custom_backlight_level(1);
|
||||||
|
rgblight_sethsv_noeeprom(230,255,255);
|
||||||
|
break;
|
||||||
|
case _FL:
|
||||||
|
custom_backlight_level(2);
|
||||||
|
rgblight_sethsv_noeeprom(280,255,255);
|
||||||
|
break;
|
||||||
|
case _AL:
|
||||||
|
custom_backlight_level(3);
|
||||||
|
rgblight_sethsv_noeeprom(350,255,255);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
custom_backlight_level(0);
|
||||||
|
rgblight_sethsv_noeeprom(180,100,100);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_init_ports(void) {
|
||||||
|
DDRD |= (1<<5); // OUT
|
||||||
|
DDRE |= (1<<6); // OUT
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
DDRD |= (1 << 5); PORTD &= ~(1 << 5);
|
||||||
|
} else {
|
||||||
|
DDRD &= ~(1 << 5); PORTD &= ~(1 << 5);
|
||||||
|
}
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
DDRE |= (1 << 6); PORTE &= ~(1 << 6);
|
||||||
|
} else {
|
||||||
|
DDRE &= ~(1 << 6); PORTE &= ~(1 << 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
# Keymap Maintainer: Gam3cat
|
||||||
|
make h87a:gam3cat
|
||||||
|
## Layout Config:
|
||||||
|
2u backspace, 2.25u lshift/enter, [2.75u rshift] or [1.75u rshift, 1u Fn].
|
||||||
|
[1.5u, 1u, 1.5u 1x7.0u, 1.5u, 1u, 1.5u, 3x1u] or [2x1.5u, 1x7.0u, 2x1.5u, 3x1u] bottom row.
|
||||||
|
|
||||||
|
## Base Layer Selection:
|
||||||
|
(Fn+TAB+( )): (Q)WERTY, (W)orkman, (N)orman, (D)vorak, (C)olmak
|
||||||
|
|
||||||
|
### Base Layer Options:
|
||||||
|
#### _BL: Base Layer - Standard TKL QWERTY layout.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
|Esc|||||F1 |F2 |F3 |F4 |||F5 |F6 |F7 |F8 |||F9 |F10|F11|F12|PSc|SLk|Pau|
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|~ |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backsp |Ins|Hom|PgU|
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ |Del|End|PgD|
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Caps |A |S |D |F |G |H |J |K |L |; |' |Return | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Shift |Z |X |C |V |B |N |M |, |. |/ |Shift |Fn | | Up| |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Ctrl |Win|Alt | Space |RAlt |Fn |Ctrl |Lft|Dwn|Rgt|
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _WL: Workman Layer.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Q |D |R |W |B |J |F |U |P |; |[ |] |\ | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |A |S |H |T |G |Y |N |E |O |I |' | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Z |X |M |C |V |K |L |, |. |/ | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _NL: Norman Layer.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Q |W |D |F |K |J |U |R |L |; |[ |] |\ | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |A |S |E |T |G |Y |N |I |O |H |' | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Z |X |C |V |B |P |M |, |. |/ | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _DL: Dvorak Layer.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | | |[ |] | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |' |, |. |P |Y |F |G |C |R |L |/ |= |\ | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |A |O |E |U |I |D |H |T |N |S |- | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |; |Q |J |K |X |B |M |W |V |Z | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _CL: Colmak Layer.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
| ||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | | |- |= | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Q |W |F |P |G |J |L |U |Y |; |[ |] |\ | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |A |R |S |T |D |H |N |E |I |O |' | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| |Z |X |C |V |B |K |M |, |. |/ | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _FL: Function Layer.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
| ||||| | | | ||| | | | ||| |VlM|VlD|VlU| | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
|Web| | | | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Fn_AL| | | | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | |Lft|Dwn|Up |Rgt| | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | | | | | | | | |Fn | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | SP4 | |Fn | |WBk| |WFw|
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
|
|
||||||
|
#### _AL: Adjust Layer - Keymap select, LED backlight, and Dynamic Macro settings.
|
||||||
|
.-----------------------------------------------------------------------.
|
||||||
|
|Rst||||| | | | ||| | | | ||| | | | | | | |
|
||||||
|
.-----------------------------------------------------------|-----------|
|
||||||
|
|Rev|Tog|Mod|H- |H+ |S- |S+ |V- |V+ | |BLT|BL-|BL+| | |MR1|MP1|
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
|Fn_AL|_BL|_WL| | | | | | | | | | | | MS|MR2|MP2|
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | |_DL| | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | |_CL| |_BL|_NL| | | | | |Fn | | | |
|
||||||
|
|-----------------------------------------------------------|-----------|
|
||||||
|
| | | | | |Fn | | | | |
|
||||||
|
*-----------------------------------------------------------------------*
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
TAP_DANCE_ENABLE = no # Enable TapDance functionality
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys(+1500)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - If this doesn't work, add this to config.h: #define FORCE_NKRO
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
UNICODEMAP_ENABLE = no # Enable extended unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
FAUXCLICKY_ENABLE = no # Uses buzzer to emulate clicky switches. By default, uses the C6 pin, same as AUDIO_ENABLE.
|
||||||
|
#VARIABLE_TRACE = no # Use this to debug changes to variable values
|
||||||
|
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390)
|
||||||
|
KEY_LOCK_ENABLE = no # This enables key lock(+260)
|
||||||
|
SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common
|
||||||
@@ -21,6 +21,3 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
|||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -148,13 +148,26 @@
|
|||||||
#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
|
#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
|
||||||
#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
|
#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
|
||||||
|
|
||||||
|
/* default 3V ERM vibration motor voltage and library*/
|
||||||
|
#if FB_ERM_LRA == 0
|
||||||
|
#define RATED_VOLTAGE 3
|
||||||
|
#define V_RMS 2.3
|
||||||
|
#define V_PEAK 3.30
|
||||||
|
/* Library Selection */
|
||||||
|
#define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
|
||||||
|
|
||||||
|
/* default 2V LRA voltage and library */
|
||||||
|
#elif FB_ERM_LRA == 1
|
||||||
#define RATED_VOLTAGE 2
|
#define RATED_VOLTAGE 2
|
||||||
#define V_RMS 2.0
|
#define V_RMS 2.0
|
||||||
#define V_PEAK 2.85
|
#define V_PEAK 2.85
|
||||||
#define F_LRA 205
|
#define F_LRA 200
|
||||||
/* Library Selection */
|
/* Library Selection */
|
||||||
#define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
|
#define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Control 1 register settings */
|
/* Control 1 register settings */
|
||||||
#define DRIVE_TIME 25
|
#define DRIVE_TIME 25
|
||||||
#define AC_COUPLE 0
|
#define AC_COUPLE 0
|
||||||
@@ -179,14 +192,11 @@
|
|||||||
#define ZC_DET_TIME 0
|
#define ZC_DET_TIME 0
|
||||||
#define AUTO_CAL_TIME 3
|
#define AUTO_CAL_TIME 3
|
||||||
|
|
||||||
//#define WS2812_LED_N 2
|
//#define RGBLIGHT_ANIMATIONS
|
||||||
//#define RGBLED_NUM WS2812_LED_N
|
|
||||||
//#define WS2812_TIM_N 2
|
|
||||||
//#define WS2812_TIM_CH 2
|
|
||||||
//#define PORT_WS2812 GPIOA
|
|
||||||
//#define PIN_WS2812 15
|
|
||||||
//#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
|
||||||
//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
|
|
||||||
//#define WS2812_EXTERNAL_PULLUP
|
|
||||||
|
|
||||||
|
//#define RGBLED_NUM 10
|
||||||
|
//#define RGB_DI_PIN B5
|
||||||
|
//#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||||
|
|
||||||
|
//#define RGB_MATRIX_KEYPRESSES
|
||||||
#endif
|
#endif
|
||||||
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
[_LOWER] = LAYOUT_wrapper(
|
[_LOWER] = LAYOUT_wrapper(
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
|
||||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE, \
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE, \
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______, \
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -159,7 +159,7 @@
|
|||||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 10
|
#define STM32_I2C_I2C1_IRQ_PRIORITY 10
|
||||||
#define STM32_I2C_I2C2_IRQ_PRIORITY 10
|
#define STM32_I2C_I2C2_IRQ_PRIORITY 10
|
||||||
#define STM32_I2C_USE_DMA TRUE
|
#define STM32_I2C_USE_DMA FALSE
|
||||||
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||||
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
||||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
ifndef QUANTUM_DIR
|
|
||||||
include ../../../../Makefile
|
|
||||||
endif
|
|
||||||
@@ -87,6 +87,3 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
API_SYSEX_ENABLE = no
|
API_SYSEX_ENABLE = no
|
||||||
|
|
||||||
#ifndef QUANTUM_DIR
|
|
||||||
# include ../../../Makefile
|
|
||||||
#endif
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6060
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Flehrad
|
||||||
|
#define PRODUCT Numbrero
|
||||||
|
#define DESCRIPTION Pro Micro-powered Reversible L/H Numpad with Extra Macro Keys
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
|
/* key matrix pins */
|
||||||
|
#define MATRIX_ROW_PINS { F6, B5, B4, E6, F7 }
|
||||||
|
#define MATRIX_COL_PINS { D1, D0, D4, F5, F4 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_PIN
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 5
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Numbrero",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "Flehrad",
|
||||||
|
"width": 5,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_numbrero_numpad": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K10", "x":0, "y":1, "h":1.5},
|
||||||
|
{"label":"K11", "x":1, "y":1},
|
||||||
|
{"label":"K12", "x":2, "y":1},
|
||||||
|
{"label":"K13", "x":3, "y":1},
|
||||||
|
{"label":"K20", "x":0, "y":2.5},
|
||||||
|
{"label":"K21", "x":1, "y":2},
|
||||||
|
{"label":"K22", "x":2, "y":2},
|
||||||
|
{"label":"K23", "x":3, "y":2},
|
||||||
|
{"label":"K14", "x":4, "y":1, "h":2},
|
||||||
|
{"label":"K30", "x":0, "y":3.5, "h":1.5},
|
||||||
|
{"label":"K31", "x":1, "y":3},
|
||||||
|
{"label":"K32", "x":2, "y":3},
|
||||||
|
{"label":"K33", "x":3, "y":3},
|
||||||
|
{"label":"K41", "x":1, "y":4, "w":2},
|
||||||
|
{"label":"K43", "x":3, "y":4},
|
||||||
|
{"label":"K34", "x":4, "y":3, "h":2}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_numbrero_ortho": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K04", "x":4, "y":0},
|
||||||
|
{"label":"K10", "x":0, "y":1, "h":1.5},
|
||||||
|
{"label":"K11", "x":1, "y":1},
|
||||||
|
{"label":"K12", "x":2, "y":1},
|
||||||
|
{"label":"K13", "x":3, "y":1},
|
||||||
|
{"label":"K14", "x":4, "y":1},
|
||||||
|
{"label":"K20", "x":0, "y":2.5},
|
||||||
|
{"label":"K21", "x":1, "y":2},
|
||||||
|
{"label":"K22", "x":2, "y":2},
|
||||||
|
{"label":"K23", "x":3, "y":2},
|
||||||
|
{"label":"K24", "x":4, "y":2},
|
||||||
|
{"label":"K30", "x":0, "y":3.5, "h":1.5},
|
||||||
|
{"label":"K31", "x":1, "y":3},
|
||||||
|
{"label":"K32", "x":2, "y":3},
|
||||||
|
{"label":"K33", "x":3, "y":3},
|
||||||
|
{"label":"K34", "x":4, "y":3},
|
||||||
|
{"label":"K41", "x":1, "y":4},
|
||||||
|
{"label":"K42", "x":2, "y":4},
|
||||||
|
{"label":"K43", "x":3, "y":4},
|
||||||
|
{"label":"K44", "x":4, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
LAYOUT_numbrero_numpad(
|
||||||
|
KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_TRNS, KC_P7, KC_P8, KC_P9,
|
||||||
|
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_TRNS, KC_P1, KC_P2, KC_P3,
|
||||||
|
KC_P0, KC_PDOT, KC_PENT),
|
||||||
|
|
||||||
|
LAYOUT_numbrero_ortho(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#include "numbrero.h"
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_numbrero_numpad( \
|
||||||
|
K00, K01, K02, K03, K04, \
|
||||||
|
K10, K11, K12, K13, \
|
||||||
|
K20, K21, K22, K23, K14, \
|
||||||
|
K30, K31, K32, K33, \
|
||||||
|
K41, K43, K34 \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04 }, \
|
||||||
|
{ K10, K11, K12, K13, K14 }, \
|
||||||
|
{ K20, K21, K22, K23, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34 }, \
|
||||||
|
{ KC_NO, K41, KC_NO, K43, KC_NO } \
|
||||||
|
}
|
||||||
|
#define LAYOUT_numbrero_ortho(\
|
||||||
|
K00, K01, K02, K03, K04, \
|
||||||
|
K10, K11, K12, K13, K14, \
|
||||||
|
K20, K21, K22, K23, K24, \
|
||||||
|
K30, K31, K32, K33, K34, \
|
||||||
|
K41, K42, K43, K44 \
|
||||||
|
){ \
|
||||||
|
{ K00, K01, K02, K03, K04 }, \
|
||||||
|
{ K10, K11, K12, K13, K14 }, \
|
||||||
|
{ K20, K21, K22, K23, K24 }, \
|
||||||
|
{ K30, K31, K32, K33, K34 }, \
|
||||||
|
{ KC_NO, K41, K42, K43, K44 } \
|
||||||
|
}
|
||||||
Loaded 100 of 641 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user