summaryrefslogtreecommitdiffstats
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna-custom/config.h8
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c113
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk11
-rw-r--r--keyboards/handwired/woodpad/config.h185
-rw-r--r--keyboards/handwired/woodpad/keymaps/default/config.h24
-rw-r--r--keyboards/handwired/woodpad/keymaps/default/keymap.c135
-rw-r--r--keyboards/handwired/woodpad/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/woodpad/keymaps/default/rules.mk37
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/config.h42
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/keymap.c440
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/rules.mk10
-rw-r--r--keyboards/handwired/woodpad/readme.md28
-rw-r--r--keyboards/handwired/woodpad/rules.mk81
-rw-r--r--keyboards/handwired/woodpad/woodpad.c43
-rw-r--r--keyboards/handwired/woodpad/woodpad.h40
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h42
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c197
-rw-r--r--keyboards/orthodox/keymaps/drashna/rules.mk6
18 files changed, 1355 insertions, 88 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
index 0b6a09934d..d2878547d3 100644
--- a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
+++ b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
@@ -4,3 +4,11 @@
#define TAPPING_TERM 200
+#ifdef RGBLIGHT_ENABLE
+#undef RGBLIGHT_SAT_STEP
+#define RGBLIGHT_SAT_STEP 12
+#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
+#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
+#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#endif // RGBLIGHT_ENABLE
+#define FORCE_NKRO
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
index a56a88e58c..2df8cbf22c 100644
--- a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
@@ -40,15 +40,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//define macro keycodes
#define M_VERSION M(0)
-#define M_SYMM M(1)
-#define M_SALT M(2)
-#define M_HARD M(3)
-#define M_MAKE M(4)
-#define M_GOODGAME M(5)
-#define M_MORESALT M(6)
-#define M_DOOMFIST M(7)
-
-
+#define M_MAKE M(1)
+
//define layer change stuff for underglow indicator
bool skip_leds = false;
@@ -383,10 +376,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
[OVERWATCH] = KEYMAP(
- KC_ESCAPE, M_SALT, M_MORESALT, M_GOODGAME, M_SYMM, M_DOOMFIST, M_HARD,
+ KC_ESCAPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F,
- KC_LCTL, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_M, KC_TRNS,
+ KC_LCTL, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_M, KC_TRNS,
KC_G, KC_U, KC_I, KC_Y, KC_T,
KC_O, KC_P,
KC_LGUI,
@@ -395,7 +388,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
@@ -508,45 +501,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
case 1:
if (record->event.pressed) {
- // Symmentra "Left Click to win" salt
- return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(L), U(LSFT), T(E), T(F), T(T), T(SPACE), T(C), T(L), T(I), T(C), T(K), T(SPACE), T(T), T(O), T(SPACE), T(W), T(I), T(N), D(LSFT), T(1), U(LSFT), T(ENTER), END );
- }
- case 2:
- if (record->event.pressed) {
- //salt salt salt
- return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(S), U(LSFT), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(COMMA), T(SPACE), T(S), T(A), T(L), T(T), T(DOT), T(DOT), T(DOT), T(ENTER), END );
- }
- case 3:
- if (record->event.pressed) {
- // your saltiness makes me hard
- return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(Y), U(LSFT), T(O), T(U), T(R), T(SPACE), T(S), T(A), T(L), T(T), T(SPACE), T(O), T(N), T(L), T(Y), T(SPACE), T(M), T(A), T(K), T(E), T(S), T(SPACE), T(M), T(Y), T(SPACE), T(P), T(E), T(N), T(I), T(S), T(SPACE), T(T), T(H), T(A), T(T), T(SPACE), T(M), T(U), T(C), T(H), T(SPACE), T(H), T(A), T(R), T(D), T(E), T(R), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), T(E), T(V), T(E), T(N), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(A), T(G), T(G), T(R), T(E), T(S), T(S), T(I), T(V), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
- }
- case 4:
- if (record->event.pressed) {
// make ergodox-ez-drashna-custom-teensy
return MACRO(I(5), T(M), T(A), T(K), T(E), T(SPACE), T(E), T(R), T(G), T(O), T(D), T(O), T(X), D(LSFT), T(MINUS), U(LSFT), T(E), T(Z), T(MINUS), T(D), T(R), T(A), T(S), T(H), T(N), T(A), T(MINUS), T(C), T(U), T(S), T(T), T(O), T(M), T(MINUS), T(T), T(E), T(E), T(N), T(S), T(Y), T(ENTER), END);
- }
- case 5:
- if (record->event.pressed) {
- //gg
- return MACRO(I(50), T(ENTER), I(5), T(G), T(G), T(ENTER), END);
- }
- case 6:
- if (record->event.pressed) {
- // Please sir, can I have some more salt
- return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(P), U(LSFT), T(L), T(E), T(A), T(S), T(E), T(SPACE), T(S), T(I), T(R), T(COMMA), T(SPACE), T(C), T(A), T(N), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(H), T(A), T(V), T(E), T(SPACE), T(S), T(O), T(M), T(E), T(SPACE), T(M), T(O), T(R), T(E), T(SPACE), T(S), T(A), T(L), T(T), D(LSFT), T(SLASH), U(LSFT), D(LSFT), T(1), U(LSFT), T(ENTER), END );
- }
- break;
- case 7:
- if (record->event.pressed) {
- // DoomFisted
- // Hey, look at me. I'm Doomfist, and I'm overpowered!
- // All I do is spam punches all day! I'm DPS, tank and
- // defense, rolled into one! All I need is team healing to be complete!
- return MACRO( I(50), T(ENTER), I(5), D(LSFT), T(H), U(LSFT), T(E), T(Y), T(COMMA), T(SPACE), T(L), T(O), T(O), T(K), T(SPACE), T(A), T(T), T(SPACE), T(M), T(E), T(DOT), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), T(O), T(O), T(M), T(F), T(I), T(S), T(T), T(COMMA), T(SPACE), T(A), T(N), T(D), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), T(O), T(V), T(E), T(R), T(P), T(O), T(W), T(E), T(R), T(E), T(D), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(D), T(O), T(SPACE), T(I), T(S), T(SPACE), T(S), T(P), T(A), T(M), T(SPACE), T(P), T(U), T(N), T(C), T(H), T(E), T(S), T(SPACE), T(A), T(L), T(L), T(SPACE), T(D), T(A), T(Y), D(LSFT), T(1), U(LSFT), T(SPACE), T(SPACE), T(SPACE), D(LSFT), T(I), U(LSFT), T(QUOTE), T(M), T(SPACE), D(LSFT), T(D), U(LSFT), D(LSFT), T(P), U(LSFT), D(LSFT), T(S), U(LSFT), T(COMMA), T(SPACE), T(T), T(A), T(N), T(K), T(SPACE), T(A), T(N), T(D), T(SPACE), T(D), T(E), T(F), T(E), T(N), T(S), T(E), T(COMMA), T(SPACE), T(R), T(O), T(L), T(L), T(E), T(D), T(SPACE), T(I), T(N), T(T), T(O), T(SPACE), T(O), T(N), T(E), D(LSFT), T(1), U(LSFT), T(SPACE), D(LSFT), T(A), U(LSFT), T(L), T(L), T(SPACE), D(LSFT), T(I), U(LSFT), T(SPACE), T(N), T(E), T(E), T(D), T(SPACE), T(I), T(S), T(SPACE), T(T), T(E), T(A), T(M), T(SPACE), T(H), T(E), T(A), T(L), T(I), T(N), T(G), T(SPACE), T(T), T(O), T(SPACE), T(B), T(E), T(SPACE), T(C), T(O), T(M), T(P), T(L), T(E), T(T), T(E), D(LSFT), T(1), U(LSFT), T(ENTER), END );
- }
- break;
-
+ }
}
return MACRO_NONE;
};
@@ -709,49 +666,39 @@ void matrix_scan_user(void) { // runs frequently to update info
}
// Check layer, and apply color if its changed since last check
- switch (layer) {
- case SYMB:
- if (has_layer_changed) {
+ if (has_layer_changed) {
+ switch (layer) {
+ case SYMB:
rgblight_sethsv (255,255,255);
- }
- break;
- case OVERWATCH:
- if (has_layer_changed) {
+ rgblight_mode(23);
+ break;
+ case OVERWATCH:
rgblight_sethsv (30,255,255);
- }
- break;
- case DIABLO:
- if (has_layer_changed) {
+ rgblight_mode(17);
+ break;
+ case DIABLO:
rgblight_sethsv (0,255,255);
- }
- break;
- case MOUS:
- if (has_layer_changed) {
+ rgblight_mode(5);
+ break;
+ case MOUS:
rgblight_sethsv (60,255,255);
- }
- break;
- case COLEMAK:
- if (has_layer_changed) {
+ break;
+ case COLEMAK:
rgblight_sethsv (300,255,255);
- }
- break;
- case DVORAK:
- if (has_layer_changed) {
+ break;
+ case DVORAK:
rgblight_sethsv (120,255,255);
- }
- break;
- case 7:
- if (has_layer_changed) {
+ break;
+ case 7:
rgblight_sethsv (255,255,255);
- }
- break;
- default:
- if (has_layer_changed) {
+ break;
+ default:
rgblight_sethsv (195,255,255);
- }
- break;
+ rgblight_mode(1);
+ break;
+ }
}
-
+
// Update layer status at the end, so this sets the default color
// rather than relying on the init, which was unreliably...
// Probably due to a timing issue, but this requires no additional code
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk b/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk
index 96590e7f77..6c78b556b7 100644
--- a/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk
@@ -1,8 +1,9 @@
-TAP_DANCE_ENABLE = yes
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-COMMAND_ENABLE = no # Commands for debug and configuration
-RGBLIGHT_ENABLE = yes
-MIDI_ENABLE = no
+TAP_DANCE_ENABLE = yes
+SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+COMMAND_ENABLE = no # Commands for debug and configuration
+RGBLIGHT_ENABLE = yes
+MIDI_ENABLE = no
+CONSOLE_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
diff --git a/keyboards/handwired/woodpad/config.h b/keyboards/handwired/woodpad/config.h
new file mode 100644
index 0000000000..2c8a8bef7d
--- /dev/null
+++ b/keyboards/handwired/woodpad/config.h
@@ -0,0 +1,185 @@
+/*
+Copyright 2017 REPLACE_WITH_YOUR_NAME
+
+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 0x6069
+#define DEVICE_VER 0x0001
+#define MANUFACTURER WoodKeys.click
+#define PRODUCT woodpad
+#define DESCRIPTION Basic numpad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
+#define MATRIX_COL_PINS { B1, B3, B2, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * 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 PAUSE
+//#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
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+#endif
diff --git a/keyboards/handwired/woodpad/keymaps/default/config.h b/keyboards/handwired/woodpad/keymaps/default/config.h
new file mode 100644
index 0000000000..f52a97bbc8
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/handwired/woodpad/keymaps/default/keymap.c b/keyboards/handwired/woodpad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1fa90ba919
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/default/keymap.c
@@ -0,0 +1,135 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "woodpad.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _NUMLOCK 0
+#define _NAV 1
+#define _ALT 2
+#define _ADJUST 3
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_NUMLOCK] = KEYMAP( /* Base */
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
+ KC_P7, KC_P8, KC_P9, KC_PPLS, \
+ KC_P4, KC_P5, KC_P6, KC_PEQL, \
+ KC_P1, KC_P2, KC_P3, KC_COMM, \
+ KC_LALT, KC_P0, KC_PDOT, KC_PENT \
+),
+[_NAV] = KEYMAP( /* Base */
+ _______, _______, _______, _______,\
+ KC_HOME, KC_UP, KC_PGUP, _______, \
+ KC_LEFT, XXXXXXX, KC_RIGHT, _______, \
+ KC_END, KC_DOWN, KC_PGDN, _______, \
+ _______, KC_INS, KC_DEL, _______ \
+),
+[_ALT] = KEYMAP( /* Base */
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,\
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______ \
+),
+[_ADJUST] = KEYMAP( /* Base */
+ _______, KC_A, _______, RESET,\
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______, \
+ _______, _______, _______, _______ \
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void numlock_led_on(void) {
+ PORTF |= (1<<7);
+}
+
+void numlock_led_off(void) {
+ PORTF &= ~(1<<7);
+}
+
+static bool numlock_down = false;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_NLCK:
+ if (record->event.pressed) {
+ numlock_down = true;
+ if (IS_LAYER_ON(_ALT)) {
+ layer_on(_ADJUST);
+ }
+ } else{
+ if(!IS_LAYER_ON(_ADJUST)) {
+ if (!IS_LAYER_ON(_NAV)){
+ numlock_led_off();
+ layer_on(_NAV);
+ } else {
+ numlock_led_on();
+ layer_off(_NAV);
+ }
+ } else {
+ layer_off(_ADJUST);
+ }
+ numlock_down = false;
+ }
+ return false;
+ break;
+ case KC_LALT:
+ if (record->event.pressed) {
+ if (numlock_down) {
+ layer_on(_ADJUST);
+ } else {
+ layer_on(_ALT);
+ }
+ } else {
+ if(IS_LAYER_ON(_ADJUST)) {
+ layer_off(_ADJUST);
+ } else {
+ layer_off(_ALT);
+ }
+ }
+ // Allow normal processing of ALT?
+ return false;
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+ // set Numlock LED to output and low
+ DDRF |= (1<<7);
+ PORTF &= ~(1<<7);
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/handwired/woodpad/keymaps/default/readme.md b/keyboards/handwired/woodpad/keymaps/default/readme.md
new file mode 100644
index 0000000000..5f17409787
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for woodpad
diff --git a/keyboards/handwired/woodpad/keymaps/default/rules.mk b/keyboards/handwired/woodpad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..b8879076bd
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/default/rules.mk
@@ -0,0 +1,37 @@
+# Copyright 2013 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/>.
+
+
+# QMK Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+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.
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/config.h b/keyboards/handwired/woodpad/keymaps/drashna/config.h
new file mode 100644
index 0000000000..e25a10d0b4
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/drashna/config.h
@@ -0,0 +1,42 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#ifdef TAP_DANCE_ENABLE
+#define TAPPING_TERM 200
+#endif // TAP_DANCE_ENABLE
+
+
+
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 7 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 12
+#define RGBLIGHT_VAL_STEP 12
+#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
+#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#endif // RGBLIGHT_ENABLE
+
+
+
+#endif
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
new file mode 100644
index 0000000000..a33a7ab464
--- /dev/null
+++ b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
@@ -0,0 +1,440 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "woodpad.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _NUMLOCK 0
+#define _NAV 1
+#define _DIABLO 2
+#define _MACROS 3
+#define _MEDIA 4
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+
+//define layer change stuff for underglow indicator
+bool skip_leds = false;
+
+bool is_overwatch = false;
+
+//This is both for underglow, and Diablo 3 macros
+bool has_layer_changed = false;
+static uint8_t current_layer;
+
+#ifdef TAP_DANCE_ENABLE
+//define diablo macro timer variables
+static uint16_t diablo_timer[4];
+static uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
+static uint8_t diablo_key_time[4];
+
+
+bool check_dtimer(uint8_t dtimer) {
+ // has the correct number of seconds elapsed (as defined by diablo_times)
+ return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true;
+};
+#endif
+
+
+enum custom_keycodes {
+ PLACEHOLDER = SAFE_RANGE, // can always be here
+ KC_DIABLO_CLEAR,
+ KC_OVERWATCH,
+ KC_SALT,
+ KC_MORESALT,
+ KC_SALTHARD,
+ KC_GOODGAME,
+ KC_SYMM,
+ KC_DOOMFIST,
+ KC_JUSTGAME,
+ KC_GLHF,
+ KC_TORB
+};
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+ TD_DIABLO_1 = 0,
+ TD_DIABLO_2,
+ TD_DIABLO_3,
+ TD_DIABLO_4
+};
+
+
+// Cycle through the times for the macro, starting at 0, for disabled.
+// Max of six values, so don't exceed
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
+ if (state->count >= 7) {
+ diablo_key_time[diablo_key] = diablo_times[0];
+ reset_tap_dance(state);
+ }
+ else {
+ diablo_key_time[diablo_key] = diablo_times[state->count - 1];
+ }
+}
+
+
+// Would rather have one function for all of this, but no idea how to do that...
+void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) {
+ diablo_tapdance_master(state, user_data, 0);
+}
+
+void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) {
+ diablo_tapdance_master(state, user_data, 1);
+}
+
+void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) {
+ diablo_tapdance_master(state, user_data, 2);
+}
+
+void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) {
+ diablo_tapdance_master(state, user_data, 3);
+}
+
+
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // tap once to disable, and more to enable timed micros
+ [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
+ [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
+ [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
+ [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
+
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_NUMLOCK] = KEYMAP( /* Base */
+ TG(_NAV), TG(_DIABLO), TG(_MACROS), KC_PSLS,\
+ KC_P7, KC_P8, KC_P9, KC_PAST, \
+ KC_P4, KC_P5, KC_P6, KC_PMNS, \
+ KC_P1, KC_P2, KC_P3, KC_PPLS, \
+ LT(_MEDIA,KC_P0), KC_PDOT, KC_COLN, KC_PENT \
+),
+[_NAV] = KEYMAP( /* Base */
+ _______, _______, _______, _______,\
+ KC_HOME, KC_UP, KC_PGUP, _______, \
+ KC_LEFT, XXXXXXX, KC_RIGHT, _______, \
+ KC_END, KC_DOWN, KC_PGDN, _______, \
+ KC_INS, KC_DEL, _______, _______ \
+),
+#ifdef TAP_DANCE_ENABLE
+[_DIABLO] = KEYMAP( /* Base */
+ KC_ESC, _______, _______, _______,\
+ KC_S, KC_F, KC_I, KC_M, \
+ KC_1, KC_2, KC_3, KC_4, \
+ TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), \
+ _______, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \
+),
+#else
+[_DIABLO] = KEYMAP( /* Base */
+ KC_ESC, _______, _______, _______,\
+ KC_S, KC_F, KC_I, KC_M, \
+ KC_1, KC_2, KC_3, KC_4, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \
+),
+
+#endif
+
+[_MACROS] = KEYMAP( /* Base */
+ KC_OVERWATCH, _______, _______, XXXXXXX,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_JUSTGAME, \
+ KC_SYMM, KC_DOOMFIST, KC_TORB, KC_GOODGAME, \
+ KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GLHF \
+),
+[_MEDIA] = KEYMAP( /* Base */
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,\
+ _______, _______, RGB_HUI, RGB_HUD, \
+ KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \
+ RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \
+ _______, _______, RGB_SAD, RGB_VAD \
+),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id) {
+ case 0:
+ if (record->event.pressed) {
+ // Output Keyboard Firmware info
+ SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP );
+ return false;
+ }
+ }
+ return MACRO_NONE;
+};
+void numlock_led_on(void) {
+ PORTF |= (1<<7);
+}
+
+void numlock_led_off(void) {
+ PORTF &= ~(1<<7);
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t kc;
+ if (is_overwatch) {
+ kc = KC_BSPC;
+ } else {
+ kc = KC_ENTER;
+ }
+ switch (keycode) {
+#ifdef TAP_DANCE_ENABLE
+ case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them
+ if (record->event.pressed) {
+ uint8_t dtime;
+
+ for (dtime = 0; dtime < 4; dtime++) {
+ diablo_key_time[dtime] = diablo_times[0];
+ }
+ }
+ return false;
+ break;
+#endif
+ case KC_OVERWATCH: // reset all Diable timers, disabling them
+ if (record->event.pressed) {
+ is_overwatch = !is_overwatch;
+ has_layer_changed = true;
+ }
+ return false;
+ break;
+