Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f9f62fb8c | ||
|
|
147bc6ec43 | ||
|
|
bea62add55 | ||
|
|
d511e52c1f | ||
|
|
789e199450 | ||
|
|
a747c1c3de | ||
|
|
a521fc2b6c | ||
|
|
8651eef298 |
No files matched your search
+95
-99
@@ -13,26 +13,24 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# 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/>.
|
||||||
|
|
||||||
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
|
|
||||||
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
|
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
|
||||||
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
|
|
||||||
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
|
QUANTUM_SRC += \
|
||||||
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
|
$(QUANTUM_DIR)/quantum.c \
|
||||||
COMMON_VPATH += $(SERIAL_PATH)
|
$(QUANTUM_DIR)/keymap_common.c \
|
||||||
|
$(QUANTUM_DIR)/keycode_config.c
|
||||||
|
|
||||||
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAPI_SYSEX_ENABLE
|
OPT_DEFS += -DAPI_SYSEX_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/api/api_sysex.c
|
|
||||||
OPT_DEFS += -DAPI_ENABLE
|
OPT_DEFS += -DAPI_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/api.c
|
|
||||||
MIDI_ENABLE=yes
|
MIDI_ENABLE=yes
|
||||||
|
SRC += $(QUANTUM_DIR)/api/api_sysex.c
|
||||||
|
SRC += $(QUANTUM_DIR)/api.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MUSIC_ENABLE := 0
|
|
||||||
|
|
||||||
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAUDIO_ENABLE
|
OPT_DEFS += -DAUDIO_ENABLE
|
||||||
MUSIC_ENABLE := 1
|
MUSIC_ENABLE = yes
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
|
||||||
SRC += $(QUANTUM_DIR)/audio/audio_$(PLATFORM_KEY).c
|
SRC += $(QUANTUM_DIR)/audio/audio_$(PLATFORM_KEY).c
|
||||||
@@ -42,19 +40,15 @@ endif
|
|||||||
|
|
||||||
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||||
OPT_DEFS += -DMIDI_ENABLE
|
OPT_DEFS += -DMIDI_ENABLE
|
||||||
MUSIC_ENABLE := 1
|
MUSIC_ENABLE = yes
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MUSIC_ENABLE), 1)
|
MUSIC_ENABLE ?= no
|
||||||
|
ifeq ($(MUSIC_ENABLE), yes)
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DCOMBO_ENABLE
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(STENO_ENABLE)), yes)
|
ifeq ($(strip $(STENO_ENABLE)), yes)
|
||||||
OPT_DEFS += -DSTENO_ENABLE
|
OPT_DEFS += -DSTENO_ENABLE
|
||||||
VIRTSER_ENABLE ?= yes
|
VIRTSER_ENABLE ?= yes
|
||||||
@@ -76,28 +70,6 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/pointing_device.c
|
SRC += $(QUANTUM_DIR)/pointing_device.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DUCIS_ENABLE
|
|
||||||
UNICODE_COMMON := yes
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DUNICODEMAP_ENABLE
|
|
||||||
UNICODE_COMMON := yes
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DUNICODE_ENABLE
|
|
||||||
UNICODE_COMMON := yes
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(UNICODE_COMMON)), yes)
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c
|
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c
|
||||||
EEPROM_DRIVER ?= vendor
|
EEPROM_DRIVER ?= vendor
|
||||||
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
|
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
|
||||||
@@ -245,31 +217,18 @@ ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DTAP_DANCE_ENABLE
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DKEY_LOCK_ENABLE
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(PRINTING_ENABLE)), yes)
|
ifeq ($(strip $(PRINTING_ENABLE)), yes)
|
||||||
OPT_DEFS += -DPRINTING_ENABLE
|
OPT_DEFS += -DPRINTING_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
|
||||||
SRC += $(TMK_DIR)/protocol/serial_uart.c
|
SRC += $(TMK_DIR)/protocol/serial_uart.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
|
|
||||||
OPT_DEFS += -DAUTO_SHIFT_ENABLE
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
|
|
||||||
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
|
|
||||||
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
|
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
|
||||||
|
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
|
||||||
|
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
|
||||||
|
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
|
||||||
|
COMMON_VPATH += $(SERIAL_PATH)
|
||||||
|
|
||||||
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
||||||
OPT_DEFS += $(SERIAL_DEFS)
|
OPT_DEFS += $(SERIAL_DEFS)
|
||||||
VAPTH += $(SERIAL_PATH)
|
VAPTH += $(SERIAL_PATH)
|
||||||
@@ -368,29 +327,6 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes)
|
|||||||
OPT_DEFS += -DENCODER_ENABLE
|
OPT_DEFS += -DENCODER_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
HAPTIC_ENABLE ?= no
|
|
||||||
ifneq ($(strip $(HAPTIC_ENABLE)),no)
|
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/haptic
|
|
||||||
SRC += haptic.c
|
|
||||||
OPT_DEFS += -DHAPTIC_ENABLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
|
|
||||||
SRC += DRV2605L.c
|
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
|
||||||
OPT_DEFS += -DDRV2605L
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
|
|
||||||
SRC += solenoid.c
|
|
||||||
OPT_DEFS += -DSOLENOID_ENABLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(HD44780_ENABLE)), yes)
|
|
||||||
SRC += drivers/avr/hd44780.c
|
|
||||||
OPT_DEFS += -DHD44780_ENABLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
|
ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
|
||||||
OPT_DEFS += -DVELOCIKEY_ENABLE
|
OPT_DEFS += -DVELOCIKEY_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/velocikey.c
|
SRC += $(QUANTUM_DIR)/velocikey.c
|
||||||
@@ -409,26 +345,11 @@ ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
|
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(LEADER_ENABLE)), yes)
|
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
|
|
||||||
OPT_DEFS += -DLEADER_ENABLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
|
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
|
||||||
SRC += $(QUANTUM_DIR)/dip_switch.c
|
OPT_DEFS += -DDIP_SWITCH_ENABLE
|
||||||
OPT_DEFS += -DDIP_SWITCH_ENABLE
|
SRC += $(QUANTUM_DIR)/dip_switch.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(DRIVER_PATH)/qwiic/qwiic.mk
|
|
||||||
|
|
||||||
QUANTUM_SRC:= \
|
|
||||||
$(QUANTUM_DIR)/quantum.c \
|
|
||||||
$(QUANTUM_DIR)/keymap_common.c \
|
|
||||||
$(QUANTUM_DIR)/keycode_config.c
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
|
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
|
||||||
|
|
||||||
CUSTOM_MATRIX ?= no
|
CUSTOM_MATRIX ?= no
|
||||||
@@ -486,6 +407,29 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
|||||||
COMMON_VPATH += $(QUANTUM_PATH)/split_common
|
COMMON_VPATH += $(QUANTUM_PATH)/split_common
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
HAPTIC_ENABLE ?= no
|
||||||
|
ifneq ($(strip $(HAPTIC_ENABLE)),no)
|
||||||
|
COMMON_VPATH += $(DRIVER_PATH)/haptic
|
||||||
|
SRC += haptic.c
|
||||||
|
OPT_DEFS += -DHAPTIC_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
|
||||||
|
SRC += DRV2605L.c
|
||||||
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
|
OPT_DEFS += -DDRV2605L
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
|
||||||
|
SRC += solenoid.c
|
||||||
|
OPT_DEFS += -DSOLENOID_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(HD44780_ENABLE)), yes)
|
||||||
|
SRC += drivers/avr/hd44780.c
|
||||||
|
OPT_DEFS += -DHD44780_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||||
OPT_DEFS += -DOLED_DRIVER_ENABLE
|
OPT_DEFS += -DOLED_DRIVER_ENABLE
|
||||||
COMMON_VPATH += $(DRIVER_PATH)/oled
|
COMMON_VPATH += $(DRIVER_PATH)/oled
|
||||||
@@ -493,10 +437,34 @@ ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
|||||||
SRC += oled_driver.c
|
SRC += oled_driver.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
include $(DRIVER_PATH)/qwiic/qwiic.mk
|
||||||
|
|
||||||
|
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DUCIS_ENABLE
|
||||||
|
UNICODE_COMMON := yes
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DUNICODEMAP_ENABLE
|
||||||
|
UNICODE_COMMON := yes
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DUNICODE_ENABLE
|
||||||
|
UNICODE_COMMON := yes
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(UNICODE_COMMON)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||||
|
endif
|
||||||
|
|
||||||
SPACE_CADET_ENABLE ?= yes
|
SPACE_CADET_ENABLE ?= yes
|
||||||
ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
|
ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
|
||||||
OPT_DEFS += -DSPACE_CADET_ENABLE
|
OPT_DEFS += -DSPACE_CADET_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MAGIC_ENABLE ?= yes
|
MAGIC_ENABLE ?= yes
|
||||||
@@ -515,3 +483,31 @@ ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
|
|||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
|
||||||
OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
|
OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
||||||
|
OPT_DEFS += -DCOMBO_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||||
|
OPT_DEFS += -DTAP_DANCE_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
|
||||||
|
OPT_DEFS += -DKEY_LOCK_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(LEADER_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
|
||||||
|
OPT_DEFS += -DLEADER_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
|
||||||
|
OPT_DEFS += -DAUTO_SHIFT_ENABLE
|
||||||
|
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
|
||||||
|
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
|
||||||
|
endif
|
||||||
|
endif
|
||||||
@@ -123,7 +123,7 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|
|||||||
|
|
||||||
# Bootmagic Lite :id=bootmagic-lite
|
# Bootmagic Lite :id=bootmagic-lite
|
||||||
|
|
||||||
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
|
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
|
||||||
|
|
||||||
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
|
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ To enable this version of Bootmagic, you need to enable it in your `rules.mk` wi
|
|||||||
BOOTMAGIC_ENABLE = lite
|
BOOTMAGIC_ENABLE = lite
|
||||||
```
|
```
|
||||||
|
|
||||||
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
|
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define BOOTMAGIC_LITE_ROW 0
|
#define BOOTMAGIC_LITE_ROW 0
|
||||||
@@ -144,9 +144,20 @@ And to trigger the bootloader, you hold this key down when plugging the keyboard
|
|||||||
|
|
||||||
!> Using bootmagic lite will **always reset** the EEPROM, so you will lose any settings that have been saved.
|
!> Using bootmagic lite will **always reset** the EEPROM, so you will lose any settings that have been saved.
|
||||||
|
|
||||||
|
## Split Keyboards
|
||||||
|
|
||||||
|
When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. This To do so, add these entries to your `config.h` file:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define BOOTMAGIC_LITE_ROW_RIGHT 4
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_RIGHT 1
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, these values are not set.
|
||||||
|
|
||||||
## Advanced Bootmagic Lite
|
## Advanced Bootmagic Lite
|
||||||
|
|
||||||
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
|
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
|
||||||
|
|
||||||
To replace the function, all you need to do is add something like this to your code:
|
To replace the function, all you need to do is add something like this to your code:
|
||||||
|
|
||||||
@@ -163,4 +174,4 @@ void bootmagic_lite(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
|
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
|
||||||
+16
-16
@@ -175,23 +175,23 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
|
|||||||
## Lighting Layers
|
## Lighting Layers
|
||||||
|
|
||||||
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
|
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
|
||||||
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
|
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
|
||||||
|
|
||||||
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
|
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
|
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
|
||||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||||
{6, 4, HSV_RED}, // Light 4 LEDs, starting with LED 6
|
{6, 4, HSV_RED}, // Light 4 LEDs, starting with LED 6
|
||||||
{12, 4, HSV_RED} // Light 4 LEDs, starting with LED 12
|
{12, 4, HSV_RED} // Light 4 LEDs, starting with LED 12
|
||||||
);
|
);
|
||||||
// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
|
// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
|
||||||
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||||
{9, 2, HSV_CYAN}
|
{9, 2, HSV_CYAN}
|
||||||
);
|
);
|
||||||
// Light LEDs 11 & 12 in purple when keyboard layer 2 is active
|
// Light LEDs 11 & 12 in purple when keyboard layer 2 is active
|
||||||
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||||
{11, 2, HSV_PURPLE},
|
{11, 2, HSV_PURPLE}
|
||||||
);
|
);
|
||||||
// etc..
|
// etc..
|
||||||
```
|
```
|
||||||
@@ -201,14 +201,14 @@ We combine these layers into an array using the `RGBLIGHT_LAYERS_LIST` macro, an
|
|||||||
```c
|
```c
|
||||||
// Now define the array of layers. Later layers take precedence
|
// Now define the array of layers. Later layers take precedence
|
||||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||||
my_capslock_layer,
|
my_capslock_layer,
|
||||||
my_layer1_layer, // Overrides caps lock layer
|
my_layer1_layer, // Overrides caps lock layer
|
||||||
my_layer2_layer // Overrides other layers
|
my_layer2_layer // Overrides other layers
|
||||||
);
|
);
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
void keyboard_post_init_user(void) {
|
||||||
// Enable the LED layers
|
// Enable the LED layers
|
||||||
rgblight_layers = my_rgb_layers;
|
rgblight_layers = my_rgb_layers;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -216,15 +216,15 @@ Finally, we enable and disable the lighting layers whenever the state of the key
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
// Both layers will light up if both kb layers are active
|
// Both layers will light up if both kb layers are active
|
||||||
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
||||||
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool led_update_user(led_t led_state) {
|
bool led_update_user(led_t led_state) {
|
||||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
rgblight_set_layer_state(0, led_state.caps_lock);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# Eclipse を使った ARM デバッグ
|
# Eclipse を使った ARM デバッグ
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
original document: eae21eed7:docs/arm_debugging.md
|
original document: 0.8.58:docs/arm_debugging.md
|
||||||
git diff eae21eed7 HEAD -- docs/arm_debugging.md | cat
|
git diff 0.8.58 HEAD -- docs/arm_debugging.md | cat
|
||||||
-->
|
-->
|
||||||
|
|
||||||
このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
|
このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
|
||||||
@@ -60,7 +60,7 @@ Java は Eclipse で必要とされるため、[ここ](https://www.oracle.com/t
|
|||||||
|
|
||||||
Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、Devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
|
Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、Devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
|
||||||
|
|
||||||
この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。Build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
||||||
|
|
||||||
## ビルド
|
## ビルド
|
||||||
|
|
||||||
@@ -70,13 +70,13 @@ Eclipse に QMK をビルドしようとするデバイスを教える必要が
|
|||||||
|
|
||||||
### デバッガの接続
|
### デバッガの接続
|
||||||
|
|
||||||
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を 完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
|
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
|
||||||
|
|
||||||
注意: SWCLK と SWDIO ピンがキーボードのマトリックスで使われていないことを確認してください。もし使われている場合は、一時的に他のピンに切り替えることができます。
|
注意: SWCLK と SWDIO ピンがキーボードのマトリックスで使われていないことを確認してください。もし使われている場合は、一時的に他のピンに切り替えることができます。
|
||||||
|
|
||||||
### デバッガの設定
|
### デバッガの設定
|
||||||
|
|
||||||
QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは stm32f3discovery.cfg と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは `stm32f3discovery.cfg` と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
||||||
|
|
||||||
注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
|
注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Apply and Close を選択します。
|
|||||||
|
|
||||||
キーボードをリセットしてください。
|
キーボードをリセットしてください。
|
||||||
|
|
||||||
虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止するので、Play ボタンを押します。全てのデバッガのほとんどの機能は ARM MCU で動作しますが、正確な詳細については google があなたのお友達です!
|
虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止し、Play ボタンが押されるのを待ちます。全てのデバッガのほとんどの機能は Arm MCU で動作しますが、正確な詳細については Google があなたのお友達です!
|
||||||
|
|
||||||
|
|
||||||
ハッピーデバッギング!
|
ハッピーデバッギング!
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Claw44 rev1",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "yfuku",
|
||||||
|
"width": 17.5,
|
||||||
|
"height": 4.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"L00", "x":0, "y":1.18},
|
||||||
|
{"label":"L01", "x":1, "y":1.03},
|
||||||
|
{"label":"L02", "x":2, "y":0.35},
|
||||||
|
{"label":"L03", "x":3, "y":0},
|
||||||
|
{"label":"L04", "x":4, "y":0.05},
|
||||||
|
{"label":"L05", "x":5, "y":0.10},
|
||||||
|
{"label":"R00", "x":11.5, "y":0.10},
|
||||||
|
{"label":"R01", "x":12.5, "y":0.05},
|
||||||
|
{"label":"R02", "x":13.5, "y":0},
|
||||||
|
{"label":"R03", "x":14.5, "y":0.35},
|
||||||
|
{"label":"R04", "x":15.5, "y":1.08},
|
||||||
|
{"label":"R05", "x":16.5, "y":1.18},
|
||||||
|
{"label":"L10", "x":0, "y":2.18},
|
||||||
|
{"label":"L11", "x":1, "y":2.03},
|
||||||
|
{"label":"L12", "x":2, "y":1.35},
|
||||||
|
{"label":"L13", "x":3, "y":1},
|
||||||
|
{"label":"L14", "x":4, "y":1.05},
|
||||||
|
{"label":"L15", "x":5, "y":1.10},
|
||||||
|
{"label":"R10", "x":11.5, "y":1.10},
|
||||||
|
{"label":"R11", "x":12.5, "y":1.05},
|
||||||
|
{"label":"R12", "x":13.5, "y":1},
|
||||||
|
{"label":"R13", "x":14.5, "y":1.35},
|
||||||
|
{"label":"R14", "x":15.5, "y":2.03},
|
||||||
|
{"label":"R15", "x":16.5, "y":2.18},
|
||||||
|
{"label":"L20", "x":0, "y":3.18},
|
||||||
|
{"label":"L21", "x":1, "y":3.03},
|
||||||
|
{"label":"L22", "x":2, "y":2.35},
|
||||||
|
{"label":"L23", "x":3, "y":2},
|
||||||
|
{"label":"L24", "x":4, "y":2.05},
|
||||||
|
{"label":"L25", "x":5, "y":2.10},
|
||||||
|
{"label":"R20", "x":11.5, "y":2.10},
|
||||||
|
{"label":"R21", "x":12.5, "y":2.05},
|
||||||
|
{"label":"R22", "x":13.5, "y":2},
|
||||||
|
{"label":"R23", "x":14.5, "y":2.35},
|
||||||
|
{"label":"R24", "x":15.5, "y":3.03},
|
||||||
|
{"label":"R25", "x":16.5, "y":3.18},
|
||||||
|
{"label":"L30", "x":4, "y":3.05},
|
||||||
|
{"label":"L31", "x":5, "y":3.10},
|
||||||
|
{"label":"L32", "x":6, "y":3.20, "w":1.25},
|
||||||
|
{"label":"L33", "x":7.25, "y":3.50},
|
||||||
|
{"label":"R30", "x":9.25, "y":3.50},
|
||||||
|
{"label":"R31", "x":10.25, "y":3.20, "w":1.25},
|
||||||
|
{"label":"R32", "x":11.5, "y":3.10},
|
||||||
|
{"label":"R33", "x":12.5, "y":3.05}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,84 +1,371 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "lodestone",
|
"keyboard_name": "lodestone",
|
||||||
"url": "https://prototypist.net/",
|
"url": "https://prototypist.net/",
|
||||||
"maintainer": "Flexerm",
|
"maintainer": "Flexerm",
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_all": {
|
"LAYOUT_all": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||||
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||||
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||||
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||||
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||||
{"label":"K2D (F0,B6)", "x":13.75, "y":2, "w":1.25},
|
{"label":"K2D (F0,B6)", "x":13.75, "y":2, "w":1.25},
|
||||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||||
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
}
|
"LAYOUT_65_ansi_blocker": {
|
||||||
}
|
"layout": [
|
||||||
|
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||||
|
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||||
|
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||||
|
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||||
|
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||||
|
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||||
|
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||||
|
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||||
|
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||||
|
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||||
|
{"label":"K0D (B3,B6)", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||||
|
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||||
|
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||||
|
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||||
|
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||||
|
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||||
|
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||||
|
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||||
|
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||||
|
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||||
|
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||||
|
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||||
|
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||||
|
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||||
|
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||||
|
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||||
|
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||||
|
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||||
|
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D (F0,B6)", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||||
|
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||||
|
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||||
|
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||||
|
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||||
|
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||||
|
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||||
|
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||||
|
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||||
|
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||||
|
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||||
|
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||||
|
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||||
|
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_ansi_blocker_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||||
|
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||||
|
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||||
|
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||||
|
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||||
|
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||||
|
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||||
|
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||||
|
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||||
|
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||||
|
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||||
|
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||||
|
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||||
|
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||||
|
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||||
|
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||||
|
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||||
|
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||||
|
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||||
|
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||||
|
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||||
|
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||||
|
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||||
|
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||||
|
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||||
|
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||||
|
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||||
|
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||||
|
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||||
|
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||||
|
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||||
|
{"label":"K2D (F0,B6)", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||||
|
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||||
|
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||||
|
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||||
|
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||||
|
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||||
|
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||||
|
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||||
|
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||||
|
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||||
|
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||||
|
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||||
|
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||||
|
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_iso_blocker": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||||
|
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||||
|
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||||
|
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||||
|
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||||
|
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||||
|
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||||
|
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||||
|
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||||
|
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||||
|
{"label":"K0D (B3,B6)", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||||
|
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||||
|
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||||
|
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||||
|
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||||
|
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||||
|
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||||
|
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||||
|
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||||
|
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||||
|
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||||
|
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||||
|
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||||
|
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||||
|
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||||
|
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||||
|
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||||
|
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||||
|
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||||
|
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||||
|
{"label":"K2D (F0,B6)", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||||
|
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||||
|
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||||
|
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||||
|
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||||
|
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||||
|
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||||
|
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||||
|
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||||
|
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||||
|
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||||
|
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||||
|
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||||
|
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||||
|
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_65_iso_blocker_split_bs": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||||
|
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||||
|
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||||
|
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||||
|
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||||
|
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||||
|
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||||
|
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||||
|
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||||
|
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||||
|
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||||
|
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||||
|
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||||
|
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||||
|
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||||
|
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||||
|
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||||
|
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||||
|
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||||
|
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||||
|
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||||
|
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||||
|
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||||
|
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||||
|
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||||
|
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||||
|
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||||
|
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||||
|
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||||
|
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||||
|
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||||
|
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||||
|
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||||
|
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||||
|
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||||
|
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||||
|
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||||
|
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||||
|
{"label":"K2D (F0,B6)", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||||
|
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||||
|
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||||
|
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||||
|
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||||
|
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||||
|
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||||
|
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||||
|
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||||
|
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||||
|
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||||
|
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||||
|
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||||
|
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||||
|
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||||
|
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||||
|
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||||
|
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||||
|
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
// Default layer
|
||||||
|
[0] = LAYOUT_65_ansi_blocker_split_bs(
|
||||||
|
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_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
// Fn1 Layer
|
||||||
|
[1] = LAYOUT_65_ansi_blocker_split_bs(
|
||||||
|
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_DEL, KC_TRNS,
|
||||||
|
KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default ANSI keymap for Lodestone
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
// Default layer
|
||||||
|
[0] = LAYOUT_65_iso_blocker_split_bs(
|
||||||
|
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_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
// Fn1 Layer
|
||||||
|
[1] = LAYOUT_65_iso_blocker_split_bs(
|
||||||
|
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_DEL, KC_TRNS,
|
||||||
|
KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# The default ISO keymap for Lodestone
|
||||||
@@ -35,3 +35,59 @@
|
|||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_ansi_blocker( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \
|
||||||
|
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_ansi_blocker_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \
|
||||||
|
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_iso_blocker( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, ___, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_65_iso_blocker_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||||
|
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, ___, K1F }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||||
|
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||||
|
}
|
||||||
@@ -31,3 +31,5 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
LTO_ENABLE = yes
|
LTO_ENABLE = yes
|
||||||
|
|
||||||
|
LAYOUTS = 65_ansi_blocker 65_iso_blocker
|
||||||
@@ -581,32 +581,6 @@ void tap_random_base64(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) void bootmagic_lite(void) {
|
|
||||||
// The lite version of TMK's bootmagic based on Wilba.
|
|
||||||
// 100% less potential for accidentally making the
|
|
||||||
// keyboard do stupid things.
|
|
||||||
|
|
||||||
// We need multiple scans because debouncing can't be turned off.
|
|
||||||
matrix_scan();
|
|
||||||
#if defined(DEBOUNCE) && DEBOUNCE > 0
|
|
||||||
wait_ms(DEBOUNCE * 2);
|
|
||||||
#else
|
|
||||||
wait_ms(30);
|
|
||||||
#endif
|
|
||||||
matrix_scan();
|
|
||||||
|
|
||||||
// If the Esc and space bar are held down on power up,
|
|
||||||
// reset the EEPROM valid state and jump to bootloader.
|
|
||||||
// Assumes Esc is at [0,0].
|
|
||||||
// This isn't very generalized, but we need something that doesn't
|
|
||||||
// rely on user's keymaps in firmware or EEPROM.
|
|
||||||
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
|
||||||
eeconfig_disable();
|
|
||||||
// Jump to bootloader.
|
|
||||||
bootloader_jump();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_quantum() {
|
void matrix_init_quantum() {
|
||||||
#ifdef BOOTMAGIC_LITE
|
#ifdef BOOTMAGIC_LITE
|
||||||
bootmagic_lite();
|
bootmagic_lite();
|
||||||
|
|||||||
@@ -11,16 +11,6 @@ MCU = atmega32u4
|
|||||||
# ATmega328P USBasp
|
# ATmega328P USBasp
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# If you don't know the bootloader type, then you can specify the
|
|
||||||
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
|
||||||
# Otherwise, delete this section
|
|
||||||
# Teensy halfKay 512
|
|
||||||
# Teensy++ halfKay 1024
|
|
||||||
# Atmel DFU loader 4096
|
|
||||||
# LUFA bootloader 4096
|
|
||||||
# USBaspLoader 2048
|
|
||||||
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -92,36 +92,6 @@ void via_eeprom_reset(void) {
|
|||||||
eeconfig_disable();
|
eeconfig_disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override bootmagic_lite() so it can flag EEPROM as invalid
|
|
||||||
// as well as jump to bootloader, thus performing a "factory reset"
|
|
||||||
// of dynamic keymaps and optionally backlight/other settings.
|
|
||||||
void bootmagic_lite(void) {
|
|
||||||
// The lite version of TMK's bootmagic based on Wilba.
|
|
||||||
// 100% less potential for accidentally making the
|
|
||||||
// keyboard do stupid things.
|
|
||||||
|
|
||||||
// We need multiple scans because debouncing can't be turned off.
|
|
||||||
matrix_scan();
|
|
||||||
#if defined(DEBOUNCE) && DEBOUNCE > 0
|
|
||||||
wait_ms(DEBOUNCE * 2);
|
|
||||||
#else
|
|
||||||
wait_ms(30);
|
|
||||||
#endif
|
|
||||||
matrix_scan();
|
|
||||||
|
|
||||||
// If the Esc and space bar are held down on power up,
|
|
||||||
// reset the EEPROM valid state and jump to bootloader.
|
|
||||||
// Assumes Esc is at [0,0].
|
|
||||||
// This isn't very generalized, but we need something that doesn't
|
|
||||||
// rely on user's keymaps in firmware or EEPROM.
|
|
||||||
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
|
||||||
// This is the only difference from the default implementation.
|
|
||||||
via_eeprom_reset();
|
|
||||||
// Jump to bootloader.
|
|
||||||
bootloader_jump();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Override this at the keyboard code level to check
|
// Override this at the keyboard code level to check
|
||||||
// VIA's EEPROM valid state and reset to defaults as needed.
|
// VIA's EEPROM valid state and reset to defaults as needed.
|
||||||
// Used by keyboards that store their own state in EEPROM,
|
// Used by keyboards that store their own state in EEPROM,
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
|
|||||||
endif
|
endif
|
||||||
ifeq ($(strip $(BOOTMAGIC_ENABLE)), lite)
|
ifeq ($(strip $(BOOTMAGIC_ENABLE)), lite)
|
||||||
TMK_COMMON_DEFS += -DBOOTMAGIC_LITE
|
TMK_COMMON_DEFS += -DBOOTMAGIC_LITE
|
||||||
|
TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic_lite.c
|
||||||
|
|
||||||
TMK_COMMON_DEFS += -DMAGIC_ENABLE
|
TMK_COMMON_DEFS += -DMAGIC_ENABLE
|
||||||
TMK_COMMON_SRC += $(COMMON_DIR)/magic.c
|
TMK_COMMON_SRC += $(COMMON_DIR)/magic.c
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
bool is_keyboard_left(void);
|
||||||
|
|
||||||
|
/** \brief Reset eeprom
|
||||||
|
*
|
||||||
|
* ...just incase someone wants to only change the eeprom behaviour
|
||||||
|
*/
|
||||||
|
__attribute__((weak)) void bootmagic_lite_reset_eeprom(void) {
|
||||||
|
#if defined(VIA_ENABLE)
|
||||||
|
via_eeprom_reset();
|
||||||
|
#else
|
||||||
|
eeconfig_disable();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief The lite version of TMK's bootmagic based on Wilba.
|
||||||
|
*
|
||||||
|
* 100% less potential for accidentally making the keyboard do stupid things.
|
||||||
|
*/
|
||||||
|
__attribute__((weak)) void bootmagic_lite(void) {
|
||||||
|
// We need multiple scans because debouncing can't be turned off.
|
||||||
|
matrix_scan();
|
||||||
|
#if defined(DEBOUNCE) && DEBOUNCE > 0
|
||||||
|
wait_ms(DEBOUNCE * 2);
|
||||||
|
#else
|
||||||
|
wait_ms(30);
|
||||||
|
#endif
|
||||||
|
matrix_scan();
|
||||||
|
|
||||||
|
// If the configured key (commonly Esc) is held down on power up,
|
||||||
|
// reset the EEPROM valid state and jump to bootloader.
|
||||||
|
// This isn't very generalized, but we need something that doesn't
|
||||||
|
// rely on user's keymaps in firmware or EEPROM.
|
||||||
|
uint8_t row = BOOTMAGIC_LITE_ROW;
|
||||||
|
uint8_t col = BOOTMAGIC_LITE_COLUMN;
|
||||||
|
|
||||||
|
#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
|
||||||
|
if (!is_keyboard_left()) {
|
||||||
|
row = BOOTMAGIC_LITE_ROW_RIGHT;
|
||||||
|
col = BOOTMAGIC_LITE_COLUMN_RIGHT;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (matrix_get_row(row) & (1 << col)) {
|
||||||
|
bootmagic_lite_reset_eeprom();
|
||||||
|
|
||||||
|
// Jump to bootloader.
|
||||||
|
bootloader_jump();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user