summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Bösebeck <sb@caluga.de>2016-04-17 22:17:40 +0200
committerStephan Bösebeck <sb@caluga.de>2016-04-17 22:17:40 +0200
commit7c3345f9b9aeb44306d2fe5b640f3ee95868efeb (patch)
tree874de8f8254513978d2c001b63b6a81c514f7706
parent38a1d830faa138f6a7e094b3eda33dc528112ec7 (diff)
parenta67d425f4d5278595e7ab785a0f246b83fb1a09f (diff)
Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
-rw-r--r--README.md8
-rw-r--r--keyboard/atomic/Makefile91
-rw-r--r--keyboard/atomic/config.h2
-rw-r--r--keyboard/atomic/keymaps/pc_atomic.c75
-rw-r--r--keyboard/atomic/keymaps/pvc/config.h157
-rw-r--r--keyboard/atomic/keymaps/pvc/keymap.c309
-rw-r--r--keyboard/atomic/keymaps/pvc/makefile.mk17
-rw-r--r--keyboard/planck/Makefile6
-rw-r--r--keyboard/planck/keymaps/default/README.md32
-rw-r--r--keyboard/planck/keymaps/default/keymap.c183
-rw-r--r--keyboard/planck/keymaps/pvc_planck.c (renamed from keyboard/planck/keymaps/pc.c)71
-rw-r--r--keyboard/preonic/Makefile4
-rw-r--r--keyboard/preonic/config.h4
-rw-r--r--keyboard/preonic/keymaps/default/keymap.c88
-rw-r--r--quantum/audio.c58
-rw-r--r--quantum/audio.h26
-rw-r--r--quantum/keymap_common.c264
-rw-r--r--quantum/keymap_common.h28
-rw-r--r--quantum/musical_notes.h187
-rw-r--r--tmk_core/common.mk3
-rw-r--r--tmk_core/common/action_layer.h1
-rw-r--r--tmk_core/common/keyboard.c8
-rw-r--r--tmk_core/common/keymap.h3
-rw-r--r--tmk_core/common/magic.c36
-rw-r--r--tmk_core/common/magic.h6
25 files changed, 1254 insertions, 413 deletions
diff --git a/README.md b/README.md
index 613bdcf42b..6e1ab9bc53 100644
--- a/README.md
+++ b/README.md
@@ -304,7 +304,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring
Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time.
-Please add the following options into your config.h, and set them up according your hardware configuration.
+Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default:
#define ws2812_PORTREG PORTF
#define ws2812_DDRREG DDRF
@@ -314,6 +314,12 @@ Please add the following options into your config.h, and set them up according y
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
+You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to:
+
+ #define ws2812_PORTREG PORTB
+ #define ws2812_DDRREG DDRB
+ #define ws2812_pin PB3
+
The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c`
### WS2812 Wiring
diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile
index 20cf4fff18..3f066aebcd 100644
--- a/keyboard/atomic/Makefile
+++ b/keyboard/atomic/Makefile
@@ -27,7 +27,7 @@
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
-# make debug = Start either simulavr or avarice as specified for debugging,
+# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
@@ -41,7 +41,6 @@
# Target file name (without extension).
TARGET = atomic
-
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
@@ -50,15 +49,42 @@ TMK_DIR = ../../tmk_core
TARGET_DIR = .
# # project specific files
-SRC = atomic.c \
- backlight.c
+SRC = atomic.c
+
+ifdef keymap
+ KEYMAP = $(keymap)
+endif
ifdef KEYMAP
- SRC := keymaps/$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP).c
+else
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
+ include keymaps/$(KEYMAP)/makefile.mk
+endif
else
- SRC := keymaps/default.c $(SRC)
+$(error Keymap file does not exist)
+endif
endif
+else
+
+ifneq ("$(wildcard keymaps/default.c)","")
+ KEYMAP_FILE = keymaps/default.c
+else
+ KEYMAP_FILE = keymaps/default/keymap.c
+endif
+
+ifneq ("$(wildcard keymaps/default/makefile.mk)","")
+ include keymaps/default/makefile.mk
+endif
+
+endif
+
+SRC := $(KEYMAP_FILE) $(SRC)
+
CONFIG_H = config.h
# MCU name
@@ -78,7 +104,6 @@ MCU = atmega32u4
# software delays.
F_CPU = 16000000
-
#
# LUFA specific
#
@@ -110,23 +135,45 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-#MIDI_ENABLE = yes # MIDI controls
-#UNICODE_ENABLE = yes # Unicode
-#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# change to "no" to disable the options, or define them in the makefile.mk in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+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 = 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. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifdef KEYMAP
+
+ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
+ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
+ include keymaps/$(KEYMAP)/makefile.mk
+endif
+endif
+
+else
+
+ifneq ("$(wildcard keymaps/default/makefile.mk)","")
+ include keymaps/default/makefile.mk
+endif
+
+endif
+
+ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
+ SRC := backlight.c $(SRC)
+endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
@@ -136,4 +183,4 @@ VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
-include $(TOP_DIR)/quantum/quantum.mk
+include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file
diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h
index f30a9e6cc4..1b34decf9c 100644
--- a/keyboard/atomic/config.h
+++ b/keyboard/atomic/config.h
@@ -130,7 +130,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MAGIC_KEY_LAYER7 7
//#define MAGIC_KEY_LAYER8 8
//#define MAGIC_KEY_LAYER9 9
-//#define MAGIC_KEY_BOOTLOADER PAUSE
+#define MAGIC_KEY_BOOTLOADER B
//#define MAGIC_KEY_LOCK CAPS
//#define MAGIC_KEY_EEPROM E
//#define MAGIC_KEY_NKRO N
diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c
deleted file mode 100644
index bdf575046b..0000000000
--- a/keyboard/atomic/keymaps/pc_atomic.c
+++ /dev/null
@@ -1,75 +0,0 @@
-#include "atomic.h"
-
-#define _QW 0
-#define _LW 1
-#define _RS 2
-#define _FN 3
-
-#define _______ KC_TRNS
-#define ___T___ KC_TRNS
-#define XXXXXXX KC_NO
-
-/*
- * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
- * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
- * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
- * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
- * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
- * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
- * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT |
- * '--------------------------------------------------------------------------------------------------------------------------------------'
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QW] = { /* QWERTY */
- { 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, XXXXXXX },
- { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
- { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP },
- { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN },
- { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), KC_SPC, XXXXXXX, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
- },
- [_LW] = { /* LOWERED */
- { 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, ___T___, ___T___ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
- },
- [_RS] = { /* RAISED */
- { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
- },
- [_FN] = { /* FUNCTION */
- { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
- { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
- { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D },
- { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
- },
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
- [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
-
- [3] = ACTION_DEFAULT_LAYER_SET(0),
- [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(TYPE(KC_T), END);
- break;
- }
- return MACRO_NONE;
-};
diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h
new file mode 100644
index 0000000000..8449fa06de
--- /dev/null
+++ b/keyboard/atomic/keymaps/pvc/config.h
@@ -0,0 +1,157 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+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_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ortholinear Keyboards
+#define PRODUCT The Atomic Keyboard
+#define DESCRIPTION A compact ortholinear keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
+#define ROWS (int []){ D0, D5, B5, B6, B3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+/* 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
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1 H
+//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+#define MAGIC_KEY_BOOTLOADER B
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c
new file mode 100644
index 0000000000..c2081f525e
--- /dev/null
+++ b/keyboard/atomic/keymaps/pvc/keymap.c
@@ -0,0 +1,309 @@
+#include "atomic.h"
+#include "action_layer.h"
+
+#ifdef AUDIO_ENABLE
+#include "audio.h"
+#include "musical_notes.h"
+#endif
+
+
+#define _QW 0
+#define _LW 1
+#define _RS 2
+#define _AD 3
+#define _FN 4
+
+#define M_QW 0
+#define M_LW 1
+#define M_RS 2
+#define M_FN 3
+
+
+#define _______ KC_TRNS
+#define ___T___ KC_TRNS
+#define XXXXXXX KC_NO
+
+/*
+ * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
+ * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
+ * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
+ * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = { /* QWERTY */
+ { 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, XXXXXXX },
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
+ { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP },
+ { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN },
+ { KC_LCTL, KC_LGUI, M(M_FN), KC_LALT, M(M_RS), KC_SPC, XXXXXXX, M(M_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+ [_LW] = { /* LOWERED */
+ { 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, ___T___, ___T___ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+ [_RS] = { /* RAISED */
+ { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+ [_FN] = { /* FUNCTION */
+ { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
+ { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
+ { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D },
+ { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
+ },
+ [_AD] = { /* ADJUST */
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ },
+ { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+ },
+};
+
+
+#ifdef AUDIO_ENABLE
+
+
+
+
+float tone_lw[][2] = {
+/*
+Q_NOTE(_C1 ) ,
+Q_NOTE(_CS1 ) ,
+Q_NOTE(_D1 ) ,
+Q_NOTE(_DS1 ) ,
+Q_NOTE(_E1 ) ,
+Q_NOTE(_F1 ) ,
+Q_NOTE(_FS1 ) ,
+Q_NOTE(_G1 ) ,
+Q_NOTE(_GS1 ) ,
+Q_NOTE(_A1 ) ,
+Q_NOTE(_AS1 ) ,
+Q_NOTE(_B1 ) ,
+*/
+
+Q_NOTE(_C4 ) ,
+Q_NOTE(_CS4 ) ,
+Q_NOTE(_D4 ) ,
+Q_NOTE(_DS4 ) ,
+Q_NOTE(_E4 ) ,
+Q_NOTE(_F4 ) ,
+Q_NOTE(_FS4 ) ,
+Q_NOTE(_G4 ) ,
+Q_NOTE(_GS4 ) ,
+Q_NOTE(_A4 ) ,
+Q_NOTE(_AS4 ) ,
+Q_NOTE(_B1 ) ,
+
+
+Q_NOTE(_C2 ) ,
+Q_NOTE(_CS2 ) ,
+Q_NOTE(_D2 ) ,
+Q_NOTE(_DS2 ) ,
+Q_NOTE(_E2 ) ,
+Q_NOTE(_F2 ) ,
+Q_NOTE(_FS2 ) ,
+Q_NOTE(_G2 ) ,
+Q_NOTE(_GS2 ) ,
+Q_NOTE(_A2 ) ,
+Q_NOTE(_AS2 ) ,
+Q_NOTE(_B2 ) ,
+Q_NOTE(_C3 ) ,
+Q_NOTE(_CS3 ) ,
+Q_NOTE(_D3 ) ,
+Q_NOTE(_DS3 ) ,
+Q_NOTE(_E3 ) ,
+Q_NOTE(_F3 ) ,
+Q_NOTE(_FS3 ) ,
+Q_NOTE(_G3 ) ,
+Q_NOTE(_GS3 ) ,
+Q_NOTE(_A3 ) ,
+Q_NOTE(_AS3 ) ,
+Q_NOTE(_B3 ) ,
+Q_NOTE(_C4 ) ,
+Q_NOTE(_CS4 ) ,
+Q_NOTE(_D4 ) ,
+Q_NOTE(_DS4 ) ,
+Q_NOTE(_E4 ) ,
+Q_NOTE(_F4 ) ,
+Q_NOTE(_FS4 ) ,
+Q_NOTE(_G4 ) ,
+Q_NOTE(_GS4 ) ,
+Q_NOTE(_A4 ) ,
+Q_NOTE(_AS4 ) ,
+Q_NOTE(_B4 ) ,
+Q_NOTE(_C5 ) ,
+Q_NOTE(_CS5 ) ,
+Q_NOTE(_D5 ) ,
+Q_NOTE(_DS5 ) ,
+Q_NOTE(_E5 ) ,
+Q_NOTE(_F5 ) ,
+Q_NOTE(_FS5 ) ,
+Q_NOTE(_G5 ) ,
+Q_NOTE(_GS5 ) ,
+Q_NOTE(_A5 ) ,
+Q_NOTE(_AS5 ) ,
+Q_NOTE(_B5 ) ,
+Q_NOTE(_C6 ) ,
+Q_NOTE(_CS6 ) ,
+Q_NOTE(_D6 ) ,
+Q_NOTE(_DS6 ) ,
+Q_NOTE(_E6 ) ,
+Q_NOTE(_F6 ) ,
+Q_NOTE(_FS6 ) ,
+Q_NOTE(_G6 ) ,
+Q_NOTE(_GS6 ) ,
+Q_NOTE(_A6 ) ,
+Q_NOTE(_AS6 ) ,
+Q_NOTE(_B6 ) ,
+Q_NOTE(_C7 ) ,
+Q_NOTE(_CS7 ) ,
+Q_NOTE(_D7 ) ,
+Q_NOTE(_DS7 ) ,
+Q_NOTE(_E7 ) ,
+Q_NOTE(_F7 ) ,
+Q_NOTE(_FS7 ) ,
+Q_NOTE(_G7 ) ,
+Q_NOTE(_GS7 ) ,
+Q_NOTE(_A7 ) ,
+Q_NOTE(_AS7 ) ,
+Q_NOTE(_B7 ) ,
+Q_NOTE(_C8 ) ,
+Q_NOTE(_CS8 ) ,
+Q_NOTE(_D8 ) ,
+Q_NOTE(_DS8 ) ,
+Q_NOTE(_E8 ) ,
+Q_NOTE(_F8 ) ,
+Q_NOTE(_FS8 ) ,
+Q_NOTE(_G8 ) ,
+Q_NOTE(_GS8 ) ,
+Q_NOTE(_A8 ) ,
+Q_NOTE(_AS8 ) ,
+Q_NOTE(_B8 ) ,
+
+};
+
+float tone_rs[][2] = {
+Q_NOTE(_A4 ) ,
+Q_NOTE(_A4 ) ,
+Q_NOTE(_A4 ) ,
+Q_NOTE(_A4 ) ,
+Q_NOTE(_AS8 ) ,
+Q_NOTE(_B8 ) ,
+};
+
+#endif
+
+void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
+{
+ if (order)
+ {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
+ {
+ layer_on(layer3);
+ }
+ else
+ {
+ layer_off(layer3);
+ layer_off(layer4);
+ }
+ }
+ else
+ {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
+ {
+ layer_on(layer4);
+ }
+ else
+ {
+ layer_off(layer3);
+ layer_off(layer4);
+ }
+ }
+}
+
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+//#define MUSIC_ARRAY_SIZE(x) (((int)(sizeof(x) / (sizeof(x[0][0])))) / 2)
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+
+ // MACRODOWN only works in this function
+ switch(id) {
+ case M_LW:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ println("PlayNotes LW");
+ PLAY_NOTE_ARRAY(tone_lw, false, STACCATO);
+ #endif
+ layer_on(_LW);
+ update_tri_layer(_LW, _RS, _FN);
+ } else {
+ layer_off(_LW);
+ update_tri_layer(_LW, _RS, _FN);
+ }
+ break;
+ case M_RS:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ println("PlayNotes RS");
+ PLAY_NOTE_ARRAY(tone_rs, false, LEGATO);
+ #endif
+ layer_on(_RS);
+ update_tri_layer(_LW, _RS, _FN);
+ } else {
+ layer_off(_RS);
+ update_tri_layer(_LW, _RS, _FN);
+ }
+ break;
+ default:
+ break;
+ }
+ return MACRO_NONE;
+};
+
+#ifdef AUDIO_ENABLE
+float start_up[][2] = {
+Q_NOTE(_E4 ) ,
+Q_NOTE(_E4 ) ,
+Q_NOTE(_F4 ) ,
+Q_NOTE(_G4 ) ,
+Q_NOTE(_G4 ) ,
+Q_NOTE(_F4 ) ,
+Q_NOTE(_E4 ) ,
+Q_NOTE(_D4 ) ,
+Q_NOTE(_C4 ) ,
+Q_NOTE(_C4 ) ,
+Q_NOTE(_D4 ) ,
+Q_NOTE(_E4 ) ,
+H_NOTE(_E4 ) ,
+Q_NOTE(_D4 ) ,
+H_NOTE(_D4 ) ,
+};
+#endif
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ init_notes();
+ PLAY_NOTE_ARRAY(start_up, false, STACCATO);
+ println("Matrix Init");
+ #endif
+}
diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk
new file mode 100644
index 0000000000..d469966501
--- /dev/null
+++ b/keyboard/atomic/keymaps/pvc/makefile.mk
@@ -0,0 +1,17 @@
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # 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. Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file
diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile
index 8d4e7787a6..01d9e3ce9a 100644
--- a/keyboard/planck/Makefile
+++ b/keyboard/planck/Makefile
@@ -139,10 +139,10 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# change to "no" to disable the options, or define them in the makefile.mk in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality
@@ -183,4 +183,4 @@ VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
-include $(TOP_DIR)/quantum/quantum.mk
+include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file
diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md
index d2f43bbdb8..de9680b498 100644
--- a/keyboard/planck/keymaps/default/README.md
+++ b/keyboard/planck/keymaps/default/README.md
@@ -1,34 +1,2 @@
# The Default Planck Layout
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QW] = { /* Qwerty */
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
- {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- },
- [_CM] = { /* Colemak */
- {KC_TAB, KC_Q, KC_W