aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile57
-rw-r--r--keyboards/ergodox/keymaps/dvorak_plover/README.md14
-rw-r--r--keyboards/ergodox/keymaps/dvorak_plover/keymap.c230
-rw-r--r--keyboards/ergodox/keymaps/sethbc/Makefile11
-rw-r--r--keyboards/ergodox/keymaps/sethbc/keymap.c2
-rw-r--r--keyboards/ergodox/keymaps/sethbc/readme.md3
-rw-r--r--keyboards/ergodox/keymaps/videck/Makefile19
-rw-r--r--keyboards/ergodox/keymaps/videck/config.h13
-rw-r--r--keyboards/ergodox/keymaps/videck/keymap.c179
-rw-r--r--keyboards/ergodox/keymaps/videck/readme.md24
-rw-r--r--keyboards/ergodox/keymaps/videck/videck.json443
-rw-r--r--keyboards/ergodox/keymaps/videck/videck.pngbin0 -> 106851 bytes
-rw-r--r--keyboards/gh60/gh60.h43
-rw-r--r--keyboards/gh60/keymaps/default/keymap.c36
-rw-r--r--keyboards/gh60/keymaps/robotmaxtron/keymap.c58
-rw-r--r--keyboards/gh60/keymaps/sethbc/Makefile3
-rw-r--r--keyboards/gh60/keymaps/sethbc/keymap.c76
-rw-r--r--keyboards/infinity60/chconf.h2
-rw-r--r--keyboards/infinity60/matrix.c7
-rw-r--r--keyboards/kc60/keymaps/dbroqua/keymap.c2
-rw-r--r--keyboards/lets_split/config.h46
-rw-r--r--keyboards/lets_split/keymaps/default/keymap.c46
-rw-r--r--keyboards/lets_split/lets_split.c33
-rw-r--r--keyboards/lets_split/lets_split.h26
-rw-r--r--keyboards/lets_split/rev1/Makefile3
-rw-r--r--keyboards/lets_split/rev1/config.h94
-rw-r--r--keyboards/lets_split/rev1/rev1.c32
-rw-r--r--keyboards/lets_split/rev1/rev1.h28
-rw-r--r--keyboards/lets_split/rev1/rules.mk5
-rw-r--r--keyboards/lets_split/rev2/Makefile3
-rw-r--r--keyboards/lets_split/rev2/config.h102
-rw-r--r--keyboards/lets_split/rev2/rev2.c32
-rw-r--r--keyboards/lets_split/rev2/rev2.h28
-rw-r--r--keyboards/lets_split/rev2/rules.mk5
-rw-r--r--keyboards/lets_split/rules.mk7
-rw-r--r--keyboards/maxipad/Makefile3
-rw-r--r--keyboards/maxipad/config.h163
-rw-r--r--keyboards/maxipad/keymaps/default/Makefile21
-rw-r--r--keyboards/maxipad/keymaps/default/config.h8
-rw-r--r--keyboards/maxipad/keymaps/default/keymap.c54
-rw-r--r--keyboards/maxipad/keymaps/default/readme.md1
-rw-r--r--keyboards/maxipad/maxipad.c28
-rw-r--r--keyboards/maxipad/maxipad.h25
-rw-r--r--keyboards/maxipad/readme.md28
-rw-r--r--keyboards/maxipad/rules.mk67
-rw-r--r--keyboards/satan/keymaps/dbroqua_hhkb/keymap.c110
-rw-r--r--keyboards/satan/keymaps/dbroqua_hhkb/readme.md9
-rw-r--r--keyboards/satan/keymaps/sethbc/keymap.c14
-rw-r--r--keyboards/vision_division/config.h4
-rw-r--r--keyboards/vision_division/keymaps/default/Makefile4
-rw-r--r--keyboards/vision_division/keymaps/default/keymap.c222
-rw-r--r--quantum/matrix.c326
-rw-r--r--readme.md1
-rw-r--r--tmk_core/common/command.c6
54 files changed, 2361 insertions, 445 deletions
diff --git a/Makefile b/Makefile
index 66c0ff30f..aa33c40f1 100644
--- a/Makefile
+++ b/Makefile
@@ -38,7 +38,7 @@ ERROR_FILE := $(BUILD_DIR)/error_occured
38 38
39MAKEFILE_INCLUDED=yes 39MAKEFILE_INCLUDED=yes
40 40
41# Helper function to process the newt element of a space separated path 41# Helper function to process the newt element of a space separated path
42# It works a bit like the traditional functional head tail 42# It works a bit like the traditional functional head tail
43# so the CURRENT_PATH_ELEMENT will beome the new head 43# so the CURRENT_PATH_ELEMENT will beome the new head
44# and the PATH_ELEMENTS are the rest that are still unprocessed 44# and the PATH_ELEMENTS are the rest that are still unprocessed
@@ -47,16 +47,16 @@ define NEXT_PATH_ELEMENT
47 $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS))) 47 $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
48endef 48endef
49 49
50# We change the / to spaces so that we more easily can work with the elements 50# We change the / to spaces so that we more easily can work with the elements
51# separately 51# separately
52PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) 52PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
53# Initialize the path elements list for further processing 53# Initialize the path elements list for further processing
54$(eval $(call NEXT_PATH_ELEMENT)) 54$(eval $(call NEXT_PATH_ELEMENT))
55 55
56# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct 56# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
57# variables depending on which directory you stand in. 57# variables depending on which directory you stand in.
58# It's really a very simple if else chain, if you squint enough, 58# It's really a very simple if else chain, if you squint enough,
59# but the makefile syntax makes it very verbose. 59# but the makefile syntax makes it very verbose.
60# If we are in a subfolder of keyboards 60# If we are in a subfolder of keyboards
61ifeq ($(CURRENT_PATH_ELEMENT),keyboards) 61ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
62 $(eval $(call NEXT_PATH_ELEMENT)) 62 $(eval $(call NEXT_PATH_ELEMENT))
@@ -111,7 +111,7 @@ endif
111.DEFAULT_GOAL := all 111.DEFAULT_GOAL := all
112ifneq ($(KEYMAP),) 112ifneq ($(KEYMAP),)
113 ifeq ($(SUBPROJECT),) 113 ifeq ($(SUBPROJECT),)
114 # Inside a keymap folder, just build the keymap, with the 114 # Inside a keymap folder, just build the keymap, with the
115 # default subproject 115 # default subproject
116 .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP) 116 .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
117 else 117 else
@@ -163,7 +163,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
163 ifneq ($1,) 163 ifneq ($1,)
164 ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true) 164 ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
165 MATCHED_ITEM := $$(firstword $1) 165 MATCHED_ITEM := $$(firstword $1)
166 else 166 else
167 $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1))) 167 $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
168 endif 168 endif
169 endif 169 endif
@@ -171,10 +171,10 @@ endef
171 171
172# A recursive helper function for finding the longest match 172# A recursive helper function for finding the longest match
173# $1 The list to be checed 173# $1 The list to be checed
174# It works by always removing the currently matched item from the list 174# It works by always removing the currently matched item from the list
175# and call itself recursively, until a match is found 175# and call itself recursively, until a match is found
176define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 176define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
177 # Stop the recursion when the list is empty 177 # Stop the recursion when the list is empty
178 ifneq ($1,) 178 ifneq ($1,)
179 RULE_BEFORE := $$(RULE) 179 RULE_BEFORE := $$(RULE)
180 $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1)) 180 $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
@@ -270,7 +270,7 @@ define PARSE_KEYBOARD
270 $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT))) 270 $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
271 # If there's no matching subproject, we assume it's the default 271 # If there's no matching subproject, we assume it's the default
272 # This will allow you to leave the subproject part of the target out 272 # This will allow you to leave the subproject part of the target out
273 else 273 else
274 $$(eval $$(call PARSE_SUBPROJECT,)) 274 $$(eval $$(call PARSE_SUBPROJECT,))
275 endif 275 endif
276endef 276endef
@@ -285,7 +285,7 @@ endef
285# When entering this, the keyboard and subproject are known, so now we need 285# When entering this, the keyboard and subproject are known, so now we need
286# to determine which keymaps are going to get compiled 286# to determine which keymaps are going to get compiled
287define PARSE_SUBPROJECT 287define PARSE_SUBPROJECT
288 # If we want to compile the default subproject, then we need to 288 # If we want to compile the default subproject, then we need to
289 # include the correct makefile to determine the actual name of it 289 # include the correct makefile to determine the actual name of it
290 CURRENT_SP := $1 290 CURRENT_SP := $1
291 ifeq ($$(CURRENT_SP),) 291 ifeq ($$(CURRENT_SP),)
@@ -304,7 +304,7 @@ define PARSE_SUBPROJECT
304 endif 304 endif
305 endif 305 endif
306 # The special allsp is handled later 306 # The special allsp is handled later
307 ifneq ($$(CURRENT_SP),allsp) 307 ifneq ($$(CURRENT_SP),allsp)
308 # get a list of all keymaps 308 # get a list of all keymaps
309 KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) 309 KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
310 ifneq ($$(CURRENT_SP),) 310 ifneq ($$(CURRENT_SP),)
@@ -343,7 +343,7 @@ define PARSE_SUBPROJECT
343 endif 343 endif
344endef 344endef
345 345
346# If we want to parse all subprojects, but the keyboard doesn't have any, 346# If we want to parse all subprojects, but the keyboard doesn't have any,
347# then use defaultsp instead 347# then use defaultsp instead
348define PARSE_ALL_SUBPROJECTS 348define PARSE_ALL_SUBPROJECTS
349 ifeq ($$(SUBPROJECTS),) 349 ifeq ($$(SUBPROJECTS),)
@@ -448,7 +448,7 @@ endef
448 448
449 449
450# Set the silent mode depending on if we are trying to compile multiple keyboards or not 450# Set the silent mode depending on if we are trying to compile multiple keyboards or not
451# By default it's on in that case, but it can be overriden by specifying silent=false 451# By default it's on in that case, but it can be overriden by specifying silent=false
452# from the command line 452# from the command line
453define SET_SILENT_MODE 453define SET_SILENT_MODE
454 ifdef SUB_IS_SILENT 454 ifdef SUB_IS_SILENT
@@ -481,11 +481,12 @@ endef
481# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps 481# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
482SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) 482SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
483.PHONY: $(SUBPROJECTS) 483.PHONY: $(SUBPROJECTS)
484$(SUBPROJECTS): %: %-allkm 484$(SUBPROJECTS): %: %-allkm
485 485
486# Let's match everything, we handle all the rule parsing ourselves 486# Let's match everything, we handle all the rule parsing ourselves
487.PHONY: % 487.PHONY: %
488%: 488ifndef SKIP_GIT
489%:
489 # Check if we have the CMP tool installed 490 # Check if we have the CMP tool installed
490 cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; 491 cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
491 # Check if the submodules are dirty, and display a warning if they are 492 # Check if the submodules are dirty, and display a warning if they are
@@ -505,8 +506,24 @@ $(SUBPROJECTS): %: %-allkm
505 # But we return the error code at the end, to trigger travis failures 506 # But we return the error code at the end, to trigger travis failures
506 $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) 507 $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
507 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; 508 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
508 $(foreach TEST,$(TESTS),$(RUN_TEST)) 509 $(foreach TEST,$(TESTS),$(RUN_TEST))
510 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
511else
512%:
513 # Check if we have the CMP tool installed
514 cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
515 rm -f $(ERROR_FILE) > /dev/null 2>&1
516 $(eval $(call PARSE_RULE,$@))
517 $(eval $(call SET_SILENT_MODE))
518 # Run all the commands in the same shell, notice the + at the first line
519 # it has to be there to allow parallel execution of the submake
520 # This always tries to compile everything, even if error occurs in the middle
521 # But we return the error code at the end, to trigger travis failures
522 $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
523 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
524 $(foreach TEST,$(TESTS),$(RUN_TEST))
509 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; 525 if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
526endif
510 527
511# All should compile everything 528# All should compile everything
512.PHONY: all 529.PHONY: all
@@ -526,7 +543,11 @@ test: test-all
526test-clean: test-all-clean 543test-clean: test-all-clean
527 544
528# Generate the version.h file 545# Generate the version.h file
529GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") 546ifndef SKIP_GIT
547 GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
548else
549 GIT_VERSION := NA
550endif
530BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") 551BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
531$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) 552$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
532$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) 553$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
diff --git a/keyboards/ergodox/keymaps/dvorak_plover/README.md b/keyboards/ergodox/keymaps/dvorak_plover/README.md
new file mode 100644
index 000000000..c8287b019
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_plover/README.md
@@ -0,0 +1,14 @@
1Dvorak support, plover support, gaming support
2
3I'm used to the Kinesis, so originally I was just going to patch up
4the thumb keys to be more familiar. But the ergodox is really well
5suited to NKRO support in Plover, so I added a layer for that, and
6then I remembered that dvorak can be really annoying for video
7games (try to reach WASD), so I added a layer for that.
8
9The result is probably a bit idiosyncratic, but it works for me.
10
11(I also don't have any press/hold distinction keys, because that
12confuses my fuzzy little brain.)
13
14Contributed by seebs (seebs@seebs.net)
diff --git a/keyboards/ergodox/keymaps/dvorak_plover/keymap.c b/keyboards/ergodox/keymaps/dvorak_plover/keymap.c
new file mode 100644
index 000000000..d0505609d
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_plover/keymap.c
@@ -0,0 +1,230 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4
5#define BASE 0 // default layer
6#define SYMB 1 // symbols
7#define PLVR 2 // media keys
8#define QWRT 3 // qwerty layer for gaming
9
10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
11/* Keymap 0: Basic layer
12 *
13 * ,--------------------------------------------------. ,--------------------------------------------------.
14 * | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | \ |
15 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
16 * | Tab | ' | , | . | P | Y | L1 | | L2 | F | G | C | R | L | / |
17 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
18 * | LGui | A | O | E | U | I |------| |------| D | H | T | N | S | - |
19 * |--------+------+------+------+------+------| Esc | | L3 |------+------+------+------+------+--------|
20 * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift |
21 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
22 * |Lalt | Grv | | Left | Right| | Up | Down | [ | ] | RAlt |
23 * `----------------------------------' `----------------------------------'
24 * ,-------------. ,---------------.
25 * | LCtrl| Alt | | LGui | RCtrl |
26 * ,------|------|------| |------+--------+------.
27 * | | | Home | | PgUp | | |
28 * |Backsp|Delete|------| |------| Enter |Space |
29 * | ace| | End | | PgDn | | |
30 * `--------------------' `----------------------'
31 */
32// If it accepts an argument (i.e, is a function), it doesn't need KC_.
33// Otherwise, it needs KC_*
34[BASE] = KEYMAP( // layer 0 : default
35 // left hand
36 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
37 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(SYMB),
38 KC_LGUI, KC_A, KC_O, KC_E, KC_U, KC_I,
39 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ESC,
40 KC_LALT, KC_GRV, KC_ESC, KC_LEFT,KC_RGHT,
41 KC_LCTL, KC_LALT,
42 KC_HOME,
43 KC_BSPC,KC_DEL,KC_END,
44 // right hand
45 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
46 TG(PLVR), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
47 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
48 TG(QWRT),KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
49 KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT,
50 KC_LGUI, KC_RCTL,
51 KC_PGUP,
52 KC_PGDN,KC_ENT, KC_SPC
53 ),
54/* Keymap 1: Symbol Layer
55 *
56 * ,--------------------------------------------------. ,--------------------------------------------------.
57 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
58 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
59 * | | ! | @ | { | } | | | | | | Up | KP7 | KP8 | KP9 | KP* | F12 |
60 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
61 * | | # | $ | ( | ) | ` |------| |------| Down | KP4 | KP5 | KP6 | KP+ | |
62 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
63 * | | % | ^ | [ | ] | ~ | | | | & | KP1 | KP2 | KP3 | KP/ | |
64 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
65 * | | | | | | | | KP. | KP0 | KP= | |
66 * `----------------------------------' `----------------------------------'
67 * ,-------------. ,-------------.
68 * | | | | | |
69 * ,------|------|------| |------+------+------.
70 * | | | | | | | |
71 * | | |------| |------| | |
72 * | | | | | | | |
73 * `--------------------' `--------------------'
74 */
75// SYMBOLS
76[SYMB] = KEYMAP(
77 // left hand
78 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
79 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
80 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
81 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
82 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
83 KC_TRNS,KC_TRNS,
84 KC_TRNS,
85 KC_TRNS,KC_TRNS,KC_TRNS,
86 // right hand
87 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
88 KC_TRNS, KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST, KC_F12,
89 KC_DOWN, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
90 KC_TRNS, KC_AMPR, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_TRNS,
91 KC_TRNS,KC_PDOT, KC_P0, KC_PEQL, KC_TRNS,
92 KC_TRNS, KC_TRNS,
93 KC_TRNS,
94 KC_TRNS, KC_TRNS, KC_TRNS
95),
96/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
97 *
98 * ,--------------------------------------------------. ,--------------------------------------------------.
99 * | | | | | | | | | | | | | | | |
100 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
101 * | | 1 | 2 | 3 | 4 | 5 | | | L2 | 6 | 7 | 8 | 9 | 0 | |
102 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
103 * | | q | w | e | r | t |------| |------| y | u | i | o | p | [ |
104 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
105 * | | a | s | d | f | g | | | | h | j | k | l | ; | ' |
106 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
107 * | | | | | | | | | | | |
108 * `----------------------------------' `----------------------------------'
109 * ,-------------. ,-------------.
110 * | | | | | |
111 * ,------|------|------| |------+------+------.
112 * | | | | | | | |
113 * | c | v |------| |------| n | m |
114 * | | | | | | | |
115 * `--------------------' `--------------------'
116 */
117
118[PLVR] = KEYMAP( // layout: layer 2: Steno for Plover
119 // left hand
120 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
121 KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
122 KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
123 KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
124 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
125 KC_FN4, KC_NO,
126 KC_NO,
127 KC_C, KC_V, KC_NO,
128 // right hand
129 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
130 TG(2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
131 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
132 KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
133 KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO,
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_NO, KC_N, KC_M
137),
138/* Keymap 3: qwerty-ish
139 *
140 * ,--------------------------------------------------. ,--------------------------------------------------.
141 * | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | - |
142 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
143 * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ |
144 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
145 * | LGui | A | S | D | F | G |------| |------| H | J | K | L | ; | LGui |
146 * |--------+------+------+------+------+------| Spc | | L3 |------+------+------+------+------+--------|
147 * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
148 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
149 * | Lalt | Grv | '" | Left | Right| | Up | Down | [ | ] | RAlt |
150 * `----------------------------------' `----------------------------------'
151 * ,-------------. ,---------------.
152 * | LCtrl| LAlt | | LGui | RCtrl |
153 * ,------|------|------| |------+--------+------.
154 * | | | Home | | PgUp | | |
155 * |Backsp|Delete|------| |------| Enter |Space |
156 * | ace| | End | | PgDn | | |
157 * `--------------------' `----------------------'
158 */
159[QWRT] = KEYMAP( // layer 3: qwerty for gaming
160 // left hand
161 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
162 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
163 KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
164 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPACE,
165 KC_LALT, KC_GRV, KC_QUOT, KC_LEFT,KC_RGHT,
166 KC_LCTL, KC_LALT,
167 KC_HOME,
168 KC_BSPC,KC_DEL,KC_END,
169 // right hand
170 KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
171 KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
172 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
173 TG(QWRT), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
174 KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT,
175 KC_LGUI, KC_RCTL,
176 KC_PGUP,
177 KC_PGDN,KC_ENT, KC_SPC
178 ),
179};
180
181const uint16_t PROGMEM fn_actions[] = {
182 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
183};
184
185const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
186{
187 // MACRODOWN only works in this function
188 switch(id) {
189 case 0:
190 if (record->event.pressed) {
191 register_code(KC_RSFT);
192 } else {
193 unregister_code(KC_RSFT);
194 }
195 break;
196 }
197 return MACRO_NONE;
198};
199
200// Runs just one time when the keyboard initializes.
201void matrix_init_user(void) {
202
203};
204
205// Runs constantly in the background, in a loop.
206void matrix_scan_user(void) {
207
208 uint8_t layer = biton32(layer_state);
209
210 ergodox_board_led_off();
211 ergodox_right_led_1_off();
212 ergodox_right_led_2_off();
213 ergodox_right_led_3_off();
214 switch (layer) {
215 // TODO: Make this relevant to the ErgoDox EZ.
216 case 1:
217 ergodox_right_led_1_on();
218 break;
219 case 2:
220 ergodox_right_led_2_on();
221 break;
222 case 3:
223 ergodox_right_led_3_on();
224 break;
225 default:
226 // none
227 break;
228 }
229
230};
diff --git a/keyboards/ergodox/keymaps/sethbc/Makefile b/keyboards/ergodox/keymaps/sethbc/Makefile
index 8c4ff8784..457a3d01d 100644
--- a/keyboards/ergodox/keymaps/sethbc/Makefile
+++ b/keyboards/ergodox/keymaps/sethbc/Makefile
@@ -1,14 +1,3 @@
1BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
2MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
3EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
4CONSOLE_ENABLE = no # Console for debug(+400)
5COMMAND_ENABLE = no # Commands for debug and configuration
6CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
7SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
8NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
9MIDI_ENABLE = no # MIDI controls
10UNICODE_ENABLE = yes # Unicode
11
12ifndef QUANTUM_DIR 1ifndef QUANTUM_DIR
13 include ../../../../Makefile 2 include ../../../../Makefile
14endif 3endif
diff --git a/keyboards/ergodox/keymaps/sethbc/keymap.c b/keyboards/ergodox/keymaps/sethbc/keymap.c
index 6846c4d52..8816ad63b 100644
--- a/keyboards/ergodox/keymaps/sethbc/keymap.c
+++ b/keyboards/ergodox/keymaps/sethbc/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT, 15 KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT,
16 KC_LCTL, KC_LALT, 16 KC_LCTL, KC_LALT,
17 KC_HOME, 17 KC_HOME,
18 KC_SPC, KC_BSPC, KC_END, 18 KC_BSPC, KC_DEL, KC_END,
19 // right hand 19 // right hand
20 MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 20 MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
21 KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, 21 KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
diff --git a/keyboards/ergodox/keymaps/sethbc/readme.md b/keyboards/ergodox/keymaps/sethbc/readme.md
index 510b2f99c..57b5d0ec7 100644
--- a/keyboards/ergodox/keymaps/sethbc/readme.md
+++ b/keyboards/ergodox/keymaps/sethbc/readme.md
@@ -1,3 +1,4 @@
1# sethbc's Ergodox EZ keymap 1# sethbc's Ergodox EZ keymap
2 2
3Largely based on the Ergodox Infinity default keymap 3Largely based on the Ergodox Infinity default keymap, but layer locking has been
4removed in favor of momentary layer activation
diff --git a/keyboards/ergodox/keymaps/videck/Makefile b/keyboards/ergodox/keymaps/videck/Makefile
new file mode 100644
index 000000000..5c7d21f2c
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/Makefile
@@ -0,0 +1,19 @@
1AUDIO_ENABLE:=no
2BACKLIGHT_ENABLE:=no
3BLUETOOTH_ENABLE:=no
4BOOTMAGIC_ENABLE:=no
5COMMAND_ENABLE:=no
6CONSOLE_ENABLE:=no
7EXTRAKEY_ENABLE:=yes
8MIDI_ENABLE:=no
9MOUSEKEY_ENABLE:=yes
10NKRO_ENABLE:=no
11RGBLIGHT_ENABLE:=no
12SLEEP_LED_ENABLE:=no
13TAP_DANCE_ENABLE:=yes
14UNICODEMAP_ENABLE:=no
15UNICODE_ENABLE:=no
16
17ifndef QUANTUM_DIR
18 include ../../../../Makefile
19endif
diff --git a/keyboards/ergodox/keymaps/videck/config.h b/keyboards/ergodox/keymaps/videck/config.h
new file mode 100644
index 000000000..d89aabe77
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/config.h
@@ -0,0 +1,13 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#ifndef NO_DEBUG
7 #define NO_DEBUG
8#endif
9#ifndef NO_PRINT
10 #define NO_PRINT
11#endif
12
13#endif
diff --git a/keyboards/ergodox/keymaps/videck/keymap.c b/keyboards/ergodox/keymaps/videck/keymap.c
new file mode 100644
index 000000000..7bd6274e9
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/keymap.c
@@ -0,0 +1,179 @@
1#include <stdbool.h>
2
3#include "ergodox.h"
4#include "action_layer.h"
5
6enum {
7 BASE = 0, // Default layer
8 ARROWS = 1, // Arrows and Fx keys layer
9 MOUSE = 2, // Mouse movement and buttons layer
10 PARENS = 3, // Parenthesis easy access layer
11
12 TD_L = 0, // Tap dance index for left shift
13 TD_R = 1 // Tap dance index for right shift
14};
15
16// See the videck.png image for a visualization of the layout.
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 [BASE] = KEYMAP(
19 // left hand
20 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME,
21 KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_END,
22 MO(PARENS), KC_A, KC_S, KC_D, KC_F, KC_G,
23 TD(TD_L), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
24 KC_LCTL, KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
25 KC_ESC, KC_LGUI,
26 TG(MOUSE),
27 KC_SPC, KC_TAB, TG(ARROWS),
28 // right hand
29 KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
30 KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
31 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
32 KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
33 KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
34 KC_APP, KC_ESC,
35 KC_INS,
36 KC_SLCK, KC_ENT, KC_SPC
37 ),
38 [ARROWS] = KEYMAP(
39 // left hand
40 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS,
46 KC_NO,
47 KC_TRNS, KC_TRNS, KC_TRNS,
48 // right hand
49 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
51 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
54 KC_TRNS, KC_TRNS,
55 KC_TRNS,
56 KC_TRNS, KC_TRNS, KC_TRNS
57 ),
58 [MOUSE] = KEYMAP(
59 // left hand
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_BTN3, KC_TRNS,
66 KC_TRNS,
67 KC_BTN1, KC_BTN2, KC_NO,
68 // right hand
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
71 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 KC_TRNS, KC_TRNS,
75 KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS
77 ),
78 [PARENS] = KEYMAP(
79 // left hand
80 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
81 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
82 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
83 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
84 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
85 KC_TRNS, KC_TRNS,
86 KC_NO,
87 KC_TRNS, KC_TRNS, KC_NO,
88 // right hand
89 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
91 KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
92 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
93 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
94 KC_TRNS, KC_TRNS,
95 KC_TRNS,
96 KC_TRNS, KC_TRNS, KC_TRNS
97 )
98};
99
100typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
101
102typedef struct
103{
104 uint16_t kc1;
105 uint16_t kc2;
106 videck_tap_dance_trigger_t trigger;
107} videck_tap_dance_tuple_t;
108
109static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
110 videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
111
112 if (state->count == 1) {
113 register_code16 (tuple->kc1);
114 } else if (state->count == 2) {
115 register_code16 (tuple->kc2);
116 }
117}
118
119static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
120 videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
121
122 if (state->count == 1) {
123 unregister_code16 (tuple->kc1);
124 } else if (state->count == 2) {
125 unregister_code16 (tuple->kc2);
126 tuple->trigger(tuple->kc2);
127 }
128}
129
130static bool caps_lock_is_on;
131
132// Toggles caps lock status.
133static void videck_caps_trigger (const uint16_t kc) {
134 caps_lock_is_on ^= true;
135}
136
137#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
138 .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
139 .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }), \
140 }
141
142qk_tap_dance_action_t tap_dance_actions[] = {
143 [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
144 [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
145};
146
147// Runs just one time when the keyboard initializes.
148void matrix_init_user(void) {
149 ergodox_led_all_set(LED_BRIGHTNESS_LO);
150 caps_lock_is_on = false;
151};
152
153static void indicate_using_led(const uint8_t led, const bool enabled) {
154 if (enabled) {
155 ergodox_right_led_on(led);
156 } else {
157 ergodox_right_led_off(led);
158 }
159}
160
161static inline void indicate_caps_lock_state(const bool enabled) {
162 indicate_using_led(1, enabled);
163}
164
165static inline void indicate_arrows_layer_state(const bool enabled) {
166 indicate_using_led(2, enabled);
167}
168
169static inline void indicate_mouse_layer_state(const bool enabled) {
170 indicate_using_led(3, enabled);
171}
172
173// Runs constantly in the background, in a loop.
174void matrix_scan_user(void) {
175 // Check if we have shift locked.
176 indicate_caps_lock_state(caps_lock_is_on);
177 indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
178 indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
179};
diff --git a/keyboards/ergodox/keymaps/videck/readme.md b/keyboards/ergodox/keymaps/videck/readme.md
new file mode 100644
index 000000000..759e81bac
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/readme.md
@@ -0,0 +1,24 @@
1ViDeck keymap for ErgoDox
2=========================
3
4This is a QWERTY layout based on the US layout, where Vi functionality has been
5especially considered.
6
7# Features
8* Mouse movements using the Vi movement keys.
9* Vi movement keys doubling as arrow keys.
10* Shift lock using double tap.
11* A coder's modifier key for easy input of parenthesis.
12* Acess to the escape key using either thumb.
13* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
14 to a non-US layout once in a while in X).
15
16# Missing keys
17* Caps Lock (shift lock is used instead).
18* Pause/Break.
19* Print Screen.
20
21# LEDs
22* Shift lock is indicated using first LED.
23* Arrow keys layer is indicated using second LED.
24* Mouse keys layer is indicated using third LED.
diff --git a/keyboards/ergodox/keymaps/videck/videck.json b/keyboards/ergodox/keymaps/videck/videck.json
new file mode 100644
index 000000000..7068cf548
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/videck.json
@@ -0,0 +1,443 @@
1[
2 {
3 "backcolor": "#333333",
4 "background": {
5 "name": "PBT Black",
6 "style": "background-image: url('/bg/plastic/pbt-black.png');"
7 },
8 "switchMount": "cherry",
9 "switchBrand": "gateron",
10 "switchType": "KS-3-Red"
11 },
12 [
13 {
14 "x": 3.5,
15 "c": "#323232",
16 "t": "#ffffff\n\n\n#ac97d8"
17 },
18 "#\n3\n\nF3",
19 {
20 "x": 10.5
21 },
22 "*\n8\n\nF8"
23 ],
24 [
25 {
26 "y": -0.875,
27 "x": 2.5
28 },
29 "@\n2\n\nF2",
30 {
31 "x": 1
32 },
33 "$\n4\n\nF4",
34 {
35 "x": 8.5
36 },
37 "&\n7\n\nF7",
38 {
39 "x": 1,
40 "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
41 },
42 "(\n9\n\nF9"
43 ],
44 [
45 {
46 "y": -0.875,
47 "x": 5.5,
48 "t": "#ffffff\n\n\n#ac97d8"
49 },
50 "%\n5\n\nF5",
51 {
52 "t": "#ffffff"
53 },
54 "home",
55 {
56 "x": 4.5
57 },
58 "pgup",
59 {
60 "t": "#ffffff\n\n\n#ac97d8"
61 },
62 "^\n6\n\nF6"
63 ],
64 [
65 {
66 "y": -0.875,
67 "t": "#ffffff",
68 "w": 1.5
69 },
70 "~\n`",
71 {
72 "t": "#ffffff\n\n\n#ac97d8"
73 },
74 "!\n1\n\nF1",
75 {
76 "x": 14.5
77 },
78 ")\n0\n\nF10",
79 {
80 "w": 1.5
81 },
82 "_\n-\n\nF11"
83 ],
84 [
85 {
86 "y": -0.375,
87 "x": 3.5,
88 "t": "#ffffff"
89 },
90 "E",
91 {
92 "x": 10.5
93 },
94 "I"
95 ],
96 [
97 {
98 "y": -0.875,
99 "x": 2.5
100 },
101 "W",
102 {
103 "x": 1
104 },
105 "R",
106 {
107 "x": 8.5
108 },
109 "U",
110 {
111 "x": 1,
112 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
113 },
114 "O\n\n\n\n\n\n\n\n\n{"
115 ],
116 [
117 {
118 "y": -0.875,
119 "x": 5.5,
120 "t": "#ffffff"
121 },
122 "T",
123 {
124 "h": 1.5
125 },
126 "end",
127 {
128 "x": 4.5,
129 "h": 1.5
130 },
131 "pgdn",
132 "Y"
133 ],
134 [
135 {
136 "y": -0.875,
137 "w": 1.5
138 },
139 "+\n=",
140 "Q",
141 {
142 "x": 14.5,
143 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
144 },
145 "P\n\n\n\n\n\n\n\n\n}",
146 {
147 "t": "#ffffff\n\n\n#ac97d8",
148 "w": 1.5
149 },
150 "|\n\\\n\nF12"
151 ],
152 [
153 {
154 "y": -0.375,
155 "x": 3.5,
156 "t": "#ffffff"
157 },
158 "D",
159 {
160 "x": 10.5,
161 "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
162 },
163 "K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
164 ],
165 [
166 {
167 "y": -0.875,
168 "x": 2.5,
169 "t": "#ffffff"
170 },
171 "S",
172 {
173 "x": 1,
174 "n": true
175 },
176 "F",
177 {
178 "x": 8.5,
179 "t": "#ffffff\n\n#5eb1e7\n#ac97d8",
180 "n": true
181 },
182 "J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
183 {
184 "x": 1,
185 "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
186 },
187 "L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
188 ],
189 [
190 {
191 "y": -0.875,
192 "x": 5.5,
193 "t": "#ffffff"
194 },
195 "G",
196 {
197 "x": 6.5,
198 "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
199 },
200 "H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
201 ],
202 [
203 {
204 "y": -0.875,
205 "t": "#f8d615",
206 "a": 6,
207 "w": 1.5
208 },
209 "( ) [ ] { }",
210 {
211 "t": "#ffffff",
212 "a": 4
213 },
214 "A",
215 {
216 "x": 14.5,
217 "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
218 },
219 ":\n;\n\n\n\n\n\n&Ouml;\n\n)",
220 {
221 "t": "#ffffff\n\n\n\n\n\n\n#60605b",
222 "w": 1.5
223 },
224 "\"\n'\n\n\n\n\n\n&Auml;"
225 ],
226 [
227 {
228 "y": -0.625,
229 "x": 6.5,
230 "t": "#ffffff",
231 "h": 1.5
232 },
233 "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
234 {
235 "x": 4.5,
236 "h": 1.5
237 },
238 "<i class='kb kb-Unicode-DeleteRight-Big'></i>"
239 ],
240 [
241 {
242 "y": -0.75,
243 "x": 3.5
244 },
245 "C",
246 {
247 "x": 10.5
248 },
249 "<\n,"
250 ],
251 [
252 {
253 "y": -0.875,
254 "x": 2.5
255 },
256 "X",
257 {
258 "x": 1
259 },
260 "V",
261 {
262 "x": 8.5
263 },
264 "M",
265 {
266 "x": 1,
267 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
268 },
269 ">\n.\n\n\n\n\n\n\n\n["
270 ],
271 [
272 {
273 "y": -0.875,
274 "x": 5.5,
275 "t": "#ffffff"
276 },
277 "B",
278 {
279 "x": 6.5
280 },
281 "N"
282 ],
283 [
284 {
285 "y": -0.875,
286 "t": "#ffffff\n\n#f67f00",
287 "a": 6,
288 "fa": [
289 5
290 ],
291 "w": 1.5
292 },
293 "&uArr;\n\n2-tap<br/>locks",
294 {
295 "t": "#ffffff",
296 "a": 4,
297 "f": 3
298 },
299 "Z",
300 {
301 "x": 14.5,
302 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
303 "f": 3
304 },
305 "?\n/\n\n\n\n\n\n\n\n]",
306 {
307 "t": "#ffffff\n\n#f67f00",
308 "a": 6,
309 "f": 3,
310 "w": 1.5
311 },
312 "&uArr;\n\n2-tap<br/>locks"
313 ],
314 [
315 {
316 "y": -0.375,
317 "x": 3.5,
318 "t": "#ffffff",
319 "a": 4
320 },
321 "\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
322 {
323 "x": 10.5,
324 "f": 3
325 },
326 "}\n]"
327 ],
328 [
329 {
330 "y": -0.875,
331 "x": 2.5
332 },
333 "\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
334 {
335 "x": 1
336 },
337 "\n<i class='kb kb-Multimedia-Mute-1'></i>",
338 {
339 "x": 8.5,
340 "t": "#ffffff\n\n\n\n\n\n\n#60605b",
341 "f": 3
342 },
343 "{\n[\n\n\n\n\n\n&Aring;",
344 {
345 "x": 1,
346 "t": "#ffffff",
347 "f": 3
348 },
349 "+\n="
350 ],
351 [
352 {
353 "y": -0.75,
354 "x": 0.5,
355 "f": 3
356 },
357 "ctrl",
358 {
359 "f": 3
360 },
361 "alt",
362 {
363 "x": 14.5,
364 "f": 3
365 },
366 "altgr",
367 {
368 "f": 3
369 },
370 "ctrl"
371 ],
372 [
373 {
374 "r": 30,
375 "rx": 6.5,
376 "ry": 4.25,
377 "y": -1,
378 "x": 1,
379 "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
380 "f": 3
381 },
382 "esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
383 {
384 "t": "#ffffff",
385 "f": 7
386 },
387 "<i class='kb kb-logo-linux-tux'></i>"
388 ],
389 [
390 {
391 "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
392 "f": 3,
393 "h": 2
394 },
395 "space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
396 {
397 "h": 2
398 },
399 "<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
400 {
401 "t": "#5eb1e7"
402 },
403 "<i class='fa fa-mouse-pointer'></i>"
404 ],
405 [
406 {
407 "x": 2,
408 "t": "#ac97d8"
409 },
410 "<i class='fa fa-arrows'></i>"
411 ],
412 [
413 {
414 "r": -30,
415 "rx": 13,
416 "y": -1,
417 "x": -3,
418 "t": "#ffffff"
419 },
420 "<i class='kb kb-Hamburger-Menu'></i>",
421 "esc"
422 ],
423 [
424 {
425 "x": -3
426 },
427 "ins",
428 {
429 "h": 2
430 },
431 "<i class='kb kb-Return-2'></i>",
432 {
433 "h": 2
434 },
435 "space"
436 ],
437 [
438 {
439 "x": -3
440 },
441 "scroll<br/>lock"
442 ]
443] \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/videck/videck.png b/keyboards/ergodox/keymaps/videck/videck.png
new file mode 100644
index 000000000..c99323f53
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/videck.png
Binary files differ
diff --git a/keyboards/gh60/gh60.h b/keyboards/gh60/gh60.h
index 82624b614..66bc2790d 100644
--- a/keyboards/gh60/gh60.h
+++ b/keyboards/gh60/gh60.h
@@ -4,7 +4,7 @@
4#include "quantum.h" 4#include "quantum.h"
5#include "led.h" 5#include "led.h"
6 6
7/* GH60 LEDs 7/* GH60 LEDs
8 * GPIO pads 8 * GPIO pads
9 * 0 F7 WASD LEDs 9 * 0 F7 WASD LEDs
10 * 1 F6 ESC LED 10 * 1 F6 ESC LED
@@ -35,40 +35,41 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); }
35 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ 35 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
36 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ 36 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
37) { \ 37) { \
38 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ 38 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
39 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ 39 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
40 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \ 40 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
41 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \ 41 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
42 { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ 42 { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
43} 43}
44 44
45/* ANSI valiant. No extra keys for ISO */ 45/* ANSI variant. No extra keys for ISO */
46#define KEYMAP_ANSI( \ 46#define KEYMAP_ANSI( \
47 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ 47 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
48 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 48 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
49 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ 49 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
50 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ 50 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
51 K40, K41, K42, K45, K4A, K4B, K4C, K4D \ 51 K40, K41, K42, K45, K4A, K4B, K4C, K4D \
52) KEYMAP( \ 52) { \
53 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ 53 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
54 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 54 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
55 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \ 55 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
56 K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \ 56 { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D }, \
57 K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \ 57 { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
58) 58}
59 59
60/* HHKB Variant */
60#define KEYMAP_HHKB( \ 61#define KEYMAP_HHKB( \
61 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ 62 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\
62 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 63 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
63 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ 64 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
64 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \ 65 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
65 K40, K41, K42, K45, K4A, K4B, K4C, K4D \ 66 K40, K41, K42, K45, K4A, K4B, K4C, K4D \
66) KEYMAP( \ 67) { \
67 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ 68 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
68 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ 69 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
69 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \ 70 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
70 K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ 71 { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
71 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ 72 { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
72) 73}
73 74
74#endif 75#endif
diff --git a/keyboards/gh60/keymaps/default/keymap.c b/keyboards/gh60/keymaps/default/keymap.c
index 3622be41b..92f545984 100644
--- a/keyboards/gh60/keymaps/default/keymap.c
+++ b/keyboards/gh60/keymaps/default/keymap.c
@@ -4,25 +4,25 @@
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 /* 0: qwerty */ 5 /* 0: qwerty */
6 KEYMAP( 6 KEYMAP(
7 ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, \ 7 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_GRV,\
8 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ 8 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_BSPC,\
9 CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \ 9 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_NO,KC_ENT,\
10 LSFT,FN1, Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, RSFT, \ 10 KC_LSFT,F(1),KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,F(0),KC_RSFT,\
11 LCTL,LGUI,LALT, SPC, BSLS,RALT,RGUI,APP, RCTL), 11 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_BSLS,KC_RALT,KC_RGUI,KC_APP,KC_RCTL),
12 /* 1: fn */ 12 /* 1: fn */
13 KEYMAP( 13 KEYMAP(
14 ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ 14 KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_TRNS,\
15 TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 15 KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
16 TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 16 KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
17 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 17 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
18 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), 18 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
19 /* 2: arrows */ 19 /* 2: arrows */
20 KEYMAP( 20 KEYMAP(
21 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 21 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
22 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 22 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
23 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 23 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
24 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP, \ 24 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,\
25 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,LEFT,DOWN,RGHT), 25 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT),
26}; 26};
27 27
28const uint16_t PROGMEM fn_actions[] = { 28const uint16_t PROGMEM fn_actions[] = {
@@ -49,7 +49,7 @@ void matrix_scan_user(void) {
49 49
50//Layer LED indicators 50//Layer LED indicators
51 uint32_t layer = layer_state; 51 uint32_t layer = layer_state;
52 52
53 if (layer & (1<<1)) { 53 if (layer & (1<<1)) {
54 gh60_wasd_leds_on(); 54 gh60_wasd_leds_on();
55 gh60_fn_led_on(); 55 gh60_fn_led_on();
@@ -57,7 +57,7 @@ void matrix_scan_user(void) {
57 gh60_wasd_leds_off(); 57 gh60_wasd_leds_off();
58 gh60_fn_led_off(); 58 gh60_fn_led_off();
59 } 59 }
60 60
61 if (layer & (1<<2)) { 61 if (layer & (1<<2)) {
62 gh60_poker_leds_on(); 62 gh60_poker_leds_on();
63 gh60_esc_led_on(); 63 gh60_esc_led_on();
@@ -65,5 +65,5 @@ void matrix_scan_user(void) {
65 gh60_poker_leds_off(); 65 gh60_poker_leds_off();
66 gh60_esc_led_off(); 66 gh60_esc_led_off();
67 } 67 }
68 68
69}; 69};
diff --git a/keyboards/gh60/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/keymaps/robotmaxtron/keymap.c
index 263eec4e5..9acac7cec 100644
--- a/keyboards/gh60/keymaps/robotmaxtron/keymap.c
+++ b/keyboards/gh60/keymaps/robotmaxtron/keymap.c
@@ -8,9 +8,9 @@
8 8
9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 /* 10 /*
11 * Base layer, pretty standard ANSI layout. 11 * Base layer, pretty standard ANSI layout.
12 * ,-----------------------------------------------------------. 12 * ,-----------------------------------------------------------.
13 * |FN12| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | 13 * |F(12)| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
14 * |-----------------------------------------------------------| 14 * |-----------------------------------------------------------|
15 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| 15 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
16 * |-----------------------------------------------------------| 16 * |-----------------------------------------------------------|
@@ -22,13 +22,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 * `-----------------------------------------------------------' 22 * `-----------------------------------------------------------'
23 */ 23 */
24 [_BL] = KEYMAP( 24 [_BL] = KEYMAP(
25 FN12,1,2,3,4,5,6,7,8,9,0,MINS,EQL,BSPC, \ 25 F(12),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, \
26 TAB,Q,W,E,R,T,Y,U,I,O,P,LBRC,RBRC,BSLS, \ 26 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, \
27 FN2,A,S,D,F,G,H,J,K,L,SCLN,QUOT,NO,ENT, \ 27 F(2),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \
28 LSFT,NO,Z,X,C,V,B,N,M,COMM,DOT,SLSH,NO,RSFT, \ 28 KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
29 LCTL,LGUI,LALT, SPC, NO,RALT,FN0,APP, RCTL), 29 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,F(0),KC_APP,KC_RCTL),
30 30
31 /* 31 /*
32 * Locking arrow keys to WASD for when you need dedicated arrow keys 32 * Locking arrow keys to WASD for when you need dedicated arrow keys
33 * ,-----------------------------------------------------------. 33 * ,-----------------------------------------------------------.
34 * | | | | | | | | | | | | | | | 34 * | | | | | | | | | | | | | | |
@@ -43,14 +43,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 * `-----------------------------------------------------------' 43 * `-----------------------------------------------------------'
44 */ 44 */
45 [_AL] = KEYMAP( 45 [_AL] = KEYMAP(
46 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 46 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
47 TRNS,TRNS,UP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 47 KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
48 TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 48 KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
49 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 49 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
50 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), 50 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
51 51
52 52
53 /* 53 /*
54 * Primary function layer, mostly the same as the traditional Pok3r layout. 54 * Primary function layer, mostly the same as the traditional Pok3r layout.
55 * ,-------------------------------------------------------------. 55 * ,-------------------------------------------------------------.
56 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL | 56 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
@@ -65,15 +65,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 * `-------------------------------------------------------------' 65 * `-------------------------------------------------------------'
66 */ 66 */
67 [_FL] = KEYMAP( 67 [_FL] = KEYMAP(
68 GRAVE,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12, DELETE, \ 68 KC_GRAVE,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_DELETE, \
69 TRNS,FN1,TRNS,TRNS,TRNS,TRNS,CALC,PGUP,UP,PGDN,PSCR,SLCK,PAUS,TRNS, \ 69 KC_TRNS,F(1),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, \
70 TRNS,MUTE,_VOLDOWN,_VOLUP,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS,TRNS,TRNS,TRNS, \ 70 KC_TRNS,KC_MUTE,KC__VOLDOWN,KC__VOLUP,KC_TRNS,KC_TRNS,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,KC_TRNS,KC_TRNS,KC_TRNS, \
71 TRNS,TRNS,FN3,TRNS,TRNS,TRNS,TRNS,END,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 71 KC_TRNS,KC_TRNS,F(3),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_END,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
72 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), 72 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
73 73
74 /* 74 /*
75 * Locking layer for controlling the underglow. 75 * Locking layer for controlling the underglow.
76 * 76 *
77 * ,-----------------------------------------------------------. 77 * ,-----------------------------------------------------------.
78 * | | | | | | | | | | | | | | | 78 * | | | | | | | | | | | | | | |
79 * |-----------------------------------------------------------| 79 * |-----------------------------------------------------------|
@@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
87 * `-----------------------------------------------------------' 87 * `-----------------------------------------------------------'
88 */ 88 */
89 [_UL] = KEYMAP( 89 [_UL] = KEYMAP(
90 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 90 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
91 TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 91 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
92 TRNS,FN4,FN5,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ 92 KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
93 TRNS,TRNS,TRNS,FN6,FN7,FN8,FN9,FN10,FN11,TRNS,TRNS,TRNS,TRNS,TRNS, \ 93 KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
94 TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), 94 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
95}; 95};
96 96
97enum function_id { 97enum function_id {
@@ -124,7 +124,7 @@ const uint16_t PROGMEM fn_actions[] = {
124 124
125const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 125const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
126{ 126{
127 // MACRODOWN only works in this function 127 // MACRODOWN only works in this function
128 switch(id) { 128 switch(id) {
129 case 0: 129 case 0:
130 if (record->event.pressed) { 130 if (record->event.pressed) {
diff --git a/keyboards/gh60/keymaps/sethbc/Makefile b/keyboards/gh60/keymaps/sethbc/Makefile
new file mode 100644
index 000000000..457a3d01d
--- /dev/null
+++ b/keyboards/gh60/keymaps/sethbc/Makefile
@@ -0,0 +1,3 @@
1ifndef QUANTUM_DIR
2 include ../../../../Makefile
3endif
diff --git a/keyboards/gh60/keymaps/sethbc/keymap.c b/keyboards/gh60/keymaps/sethbc/keymap.c
new file mode 100644
index 000000000..599e664e2
--- /dev/null
+++ b/keyboards/gh60/keymaps/sethbc/keymap.c
@@ -0,0 +1,76 @@
1#include "gh60.h"
2#include "action_layer.h"
3
4#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
5
6
7const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
8 /* 0: qwerty */
9 KEYMAP_HHKB(
10 F(0),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_BSLS,KC_GRV,\
11 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_BSPC,\
12 KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\
13 KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,F(1),\
14 KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RGUI,KC_RALT,KC_APP,KC_RCTL),
15 /* 1: fn */
16 KEYMAP_HHKB(
17 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_TRNS,KC_TRNS,\
18 KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,\
19 KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RIGHT,KC_PENT,\
20 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END,KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS,\
21 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
22};
23
24enum function_id {
25 SHIFT_ESC,
26};
27
28const uint16_t PROGMEM fn_actions[] = {
29 [0] = ACTION_FUNCTION(SHIFT_ESC),
30 [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
31};
32
33const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
34{
35 // MACRODOWN only works in this function
36 switch(id) {
37 case 0:
38 if (record->event.pressed) {
39 register_code(KC_RSFT);
40 } else {
41 unregister_code(KC_RSFT);
42 }
43 break;
44 }
45 return MACRO_NONE;
46};
47
48void matrix_scan_user(void) {
49
50}
51
52void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
53 static uint8_t shift_esc_shift_mask;
54 switch (id) {
55 case SHIFT_ESC:
56 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
57 if (record->event.pressed) {
58 if (shift_esc_shift_mask) {
59 add_key(KC_GRV);
60 send_keyboard_report();
61 } else {
62 add_key(KC_ESC);
63 send_keyboard_report();
64 }
65 } else {
66 if (shift_esc_shift_mask) {
67 del_key(KC_GRV);
68 send_keyboard_report();
69 } else {
70 del_key(KC_ESC);
71 send_keyboard_report();
72 }
73 }
74 break;
75 }
76}
diff --git a/keyboards/infinity60/chconf.h b/keyboards/infinity60/chconf.h
index 43c845739..d9114ec85 100644
--- a/keyboards/infinity60/chconf.h
+++ b/keyboards/infinity60/chconf.h
@@ -48,7 +48,7 @@
48 * @details Frequency of the system timer that drives the system ticks. This 48 * @details Frequency of the system timer that drives the system ticks. This
49 * setting also defines the system tick time unit. 49 * setting also defines the system tick time unit.
50 */ 50 */
51#define CH_CFG_ST_FREQUENCY 1000 51#define CH_CFG_ST_FREQUENCY 100000
52 52
53/** 53/**
54 * @brief Time delta constant for the tick-less mode. 54 * @brief Time delta constant for the tick-less mode.
diff --git a/keyboards/infinity60/matrix.c b/keyboards/infinity60/matrix.c
index 62c165aa5..d2f185288 100644
--- a/keyboards/infinity60/matrix.c
+++ b/keyboards/infinity60/matrix.c
@@ -96,7 +96,12 @@ uint8_t matrix_scan(void)
96 } 96 }
97 #endif 97 #endif
98 98
99 wait_us(1); // need wait to settle pin state 99 // need wait to settle pin state
100 // if you wait too short, or have a too high update rate
101 // the keyboard might freeze, or there might not be enough
102 // processing power to update the LCD screen properly.
103 // 20us, or two ticks at 100000Hz seems to be OK
104 wait_us(20);
100 105
101 // read col data 106 // read col data
102 data = (palReadPort(GPIOD)>>1); 107 data = (palReadPort(GPIOD)>>1);
diff --git a/keyboards/kc60/keymaps/dbroqua/keymap.c b/keyboards/kc60/keymaps/dbroqua/keymap.c
index 1b645ea93..8b5efd0ce 100644
--- a/keyboards/kc60/keymaps/dbroqua/keymap.c
+++ b/keyboards/kc60/keymaps/dbroqua/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
61 * |-----------------------------------------------------------------------------------------+ 61 * |-----------------------------------------------------------------------------------------+
62 * | | | | | | | | Psc | | | | | | 62 * | | | | | | | | Psc | | | | | |
63 * |-----------------------------------------------------------------------------------------+ 63 * |-----------------------------------------------------------------------------------------+
64 * | | Led | Led-| Led+| | Mute| Vol+| Vol-| | | | Play | | 64 * | | Led | Led+| Led-| | Mute| Vol+| Vol-| | | | Play | |
65 * |-----------------------------------------------------------------------------------------+ 65 * |-----------------------------------------------------------------------------------------+
66 * | | | | | | Prev | Stop | Next | 66 * | | | | | | Prev | Stop | Next |
67 * `-----------------------------------------------------------------------------------------' 67 * `-----------------------------------------------------------------------------------------'
diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h
index b0ad522fc..4db45ab0b 100644
--- a/keyboards/lets_split/config.h
+++ b/keyboards/lets_split/config.h
@@ -28,29 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
28#define PRODUCT Lets Split 28#define PRODUCT Lets Split
29#define DESCRIPTION A split keyboard for the cheap makers 29#define DESCRIPTION A split keyboard for the cheap makers
30 30
31/* key matrix size */
32// Rows are doubled-up
33#define MATRIX_ROWS 8
34#define MATRIX_COLS 6
35
36// wiring of each half
37#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
38#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
39
40#define CATERINA_BOOTLOADER
41
42// #define USE_I2C
43
44// Use serial if not using I2C
45#ifndef USE_I2C
46# define USE_SERIAL
47#endif
48
49// #define EE_HANDS
50
51#define I2C_MASTER_LEFT
52// #define I2C_MASTER_RIGHT
53
54/* COL2ROW or ROW2COL */ 31/* COL2ROW or ROW2COL */
55#define DIODE_DIRECTION COL2ROW 32#define DIODE_DIRECTION COL2ROW
56 33
@@ -73,24 +50,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
73 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 50 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
74) 51)
75 52
76/* ws2812 RGB LED */
77#define RGB_DI_PIN D4
78#define RGBLIGHT_ANIMATIONS
79#define RGBLED_NUM 8 // Number of LEDs
80#define RGBLIGHT_HUE_STEP 10
81#define RGBLIGHT_SAT_STEP 17
82#define RGBLIGHT_VAL_STEP 17
83
84/*
85 * Feature disable options
86 * These options are also useful to firmware size reduction.
87 */
88
89/* disable debug print */ 53/* disable debug print */
90// #define NO_DEBUG 54//#define NO_DEBUG
91 55
92/* disable print */ 56/* disable print */
93// #define NO_PRINT 57//#define NO_PRINT
94 58
95/* disable action features */ 59/* disable action features */
96//#define NO_ACTION_LAYER 60//#define NO_ACTION_LAYER
@@ -99,4 +63,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
99//#define NO_ACTION_MACRO 63//#define NO_ACTION_MACRO
100//#define NO_ACTION_FUNCTION 64//#define NO_ACTION_FUNCTION
101 65
66#ifdef SUBPROJECT_rev1
67 #include "rev1/config.h"
68#endif
69#ifdef SUBPROJECT_rev2
70 #include "rev2/config.h"
71#endif
102#endif 72#endif
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 0d2d94b67..6f1f71f5f 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42 * `-----------------------------------------------------------------------------------' 42 * `-----------------------------------------------------------------------------------'
43 */ 43 */
44[_QWERTY] = KEYMAP( \ 44[_QWERTY] = KEYMAP( \
45 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ 45 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
46 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ 46 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
47 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ 47 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
48 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ 48 KC_LCTL, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, MT(MOD_LSFT, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
49), 49),
50 50
51/* Colemak 51/* Colemak
@@ -83,41 +83,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
83 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ 83 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
84 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ 84 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
85), 85),
86 86[3] = KEYMAP( \
87/* Lower 87 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
88 * ,-----------------------------------------------------------------------------------.
89 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
90 * |------+------+------+------+------+-------------+------+------+------+------+------|
91 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
92 * |------+------+------+------+------+------|------+------+------+------+------+------|
93 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
94 * |------+------+------+------+------+------+------+------+------+------+------+------|
95 * | | | | | | | | Next | Vol- | Vol+ | Play |
96 * `-----------------------------------------------------------------------------------'
97 */
98[_LOWER] = KEYMAP( \
99 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
100 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ 88 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
101 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ 89 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
102 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ 90 _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
103), 91),
104 92[4] = KEYMAP( \
105/* Raise 93 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
106 * ,-----------------------------------------------------------------------------------.
107 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
108 * |------+------+------+------+------+-------------+------+------+------+------+------|
109 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
110 * |------+------+------+------+------+------|------+------+------+------+------+------|
111 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
112 * |------+------+------+------+------+------+------+------+------+------+------+------|
113 * | | | | | | | | Next | Vol- | Vol+ | Play |
114 * `-----------------------------------------------------------------------------------'
115 */
116[_RAISE] = KEYMAP( \
117 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
118 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ 94 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
119 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ 95 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
120 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ 96 _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
121), 97),
122 98
123/* Adjust (Lower + Raise) 99/* Adjust (Lower + Raise)
@@ -134,11 +110,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
134[_ADJUST] = KEYMAP( \ 110[_ADJUST] = KEYMAP( \
135 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ 111 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
136 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ 112 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
137 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 113 _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \
138 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
139) 115)
140
141
142}; 116};
143 117
144#ifdef AUDIO_ENABLE 118#ifdef AUDIO_ENABLE
diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c
index c505d3a6e..117b727a8 100644
--- a/keyboards/lets_split/lets_split.c
+++ b/keyboards/lets_split/lets_split.c
@@ -1,32 +1 @@
1#include "lets_split.h" #include "lets_split.h" \ No newline at end of file
2
3#ifdef AUDIO_ENABLE
4 float tone_startup[][2] = SONG(STARTUP_SOUND);
5 float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
6#endif
7
8void matrix_init_kb(void) {
9
10 #ifdef AUDIO_ENABLE
11 _delay_ms(20); // gets rid of tick
12 PLAY_NOTE_ARRAY(tone_startup, false, 0);
13 #endif
14
15 // // green led on
16 // DDRD |= (1<<5);
17 // PORTD &= ~(1<<5);
18
19 // // orange led on
20 // DDRB |= (1<<0);
21 // PORTB &= ~(1<<0);
22
23 matrix_init_user();
24};
25
26void shutdown_user(void) {
27 #ifdef AUDIO_ENABLE
28 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
29 _delay_ms(150);
30 stop_all_notes();
31 #endif
32}
diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h
index fe7ae0767..2cdfb061f 100644
--- a/keyboards/lets_split/lets_split.h
+++ b/keyboards/lets_split/lets_split.h
@@ -1,25 +1,13 @@
1#ifndef LETS_SPLIT_H 1#ifndef LETS_SPLIT_H
2#define LETS_SPLIT_H 2#define LETS_SPLIT_H
3 3
4#include "quantum.h" 4#ifdef SUBPROJECT_rev1
5 5 #include "rev1.h"
6void promicro_bootloader_jmp(bool program); 6#endif
7#ifdef SUBPROJECT_rev2
8 #include "rev2.h"
9#endif
7 10
8#define KEYMAP( \ 11#include "quantum.h"
9 k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
10 k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
11 k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
12 k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
13 ) \
14 { \
15 { k00, k01, k02, k03, k04, k05 }, \
16 { k10, k11, k12, k13, k14, k15 }, \
17 { k20, k21, k22, k23, k24, k25 }, \
18 { k30, k31, k32, k33, k34, k35 }, \
19 { k40, k41, k42, k43, k44, k45 }, \
20 { k50, k51, k52, k53, k54, k55 }, \
21 { k60, k61, k62, k63, k64, k65 }, \
22 { k70, k71, k72, k73, k74, k75 } \
23 }
24 12
25#endif \ No newline at end of file 13#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev1/Makefile b/keyboards/lets_split/rev1/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/lets_split/rev1/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
new file mode 100644
index 000000000..825e5ec24
--- /dev/null
+++ b/keyboards/lets_split/rev1/config.h
@@ -0,0 +1,94 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x3060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Wootpatoot
28#define PRODUCT Lets Split
29#define PRODUCT Lets Split v1
30#define DESCRIPTION A split keyboard for the cheap makers
31
32/* key matrix size */
33// Rows are doubled-up
34#define MATRIX_ROWS 8
35#define MATRIX_COLS 6
36
37// wiring of each half
38#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
39#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
40
41#define CATERINA_BOOTLOADER
42
43// #define USE_I2C
44// Use serial if not using I2C
45#ifndef USE_I2C
46# define USE_SERIAL
47#endif
48
49// #define EE_HANDS
50
51#define I2C_MASTER_LEFT
52// #define I2C_MASTER_RIGHT
53
54/* COL2ROW or ROW2COL */
55#define DIODE_DIRECTION COL2ROW
56
57/* define if matrix has ghost */
58//#define MATRIX_HAS_GHOST
59
60/* number of backlight levels */
61// #define BACKLIGHT_LEVELS 3
62
63/* Set 0 if debouncing isn't needed */
64#define DEBOUNCING_DELAY 5
65
66/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
67#define LOCKING_SUPPORT_ENABLE
68/* Locking resynchronize hack */
69#define LOCKING_RESYNC_ENABLE
70
71/* key combination for command */
72#define IS_COMMAND() ( \
73 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
74)
75
76/*
77 * Feature disable options
78 * These options are also useful to firmware size reduction.
79 */
80
81/* disable debug print */
82// #define NO_DEBUG
83
84/* disable print */
85// #define NO_PRINT
86
87/* disable action features */
88//#define NO_ACTION_LAYER
89//#define NO_ACTION_TAPPING
90//#define NO_ACTION_ONESHOT
91//#define NO_ACTION_MACRO
92//#define NO_ACTION_FUNCTION
93
94#endif
diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c
new file mode 100644
index 000000000..c505d3a6e
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.c
@@ -0,0 +1,32 @@
1#include "lets_split.h"
2
3#ifdef AUDIO_ENABLE
4 float tone_startup[][2] = SONG(STARTUP_SOUND);
5 float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
6#endif
7
8void matrix_init_kb(void) {
9
10 #ifdef AUDIO_ENABLE
11 _delay_ms(20); // gets rid of tick
12 PLAY_NOTE_ARRAY(tone_startup, false, 0);
13 #endif
14
15 // // green led on
16 // DDRD |= (1<<5);
17 // PORTD &= ~(1<<5);
18
19 // // orange led on
20 // DDRB |= (1<<0);
21 // PORTB &= ~(1<<0);
22
23 matrix_init_user();
24};
25
26void shutdown_user(void) {
27 #ifdef AUDIO_ENABLE
28 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
29 _delay_ms(150);
30 stop_all_notes();
31 #endif
32}
diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h
new file mode 100644
index 000000000..4667c9fb0
--- /dev/null
+++ b/keyboards/lets_split/rev1/rev1.h
@@ -0,0 +1,28 @@
1#ifndef REV1_H
2#define REV1_H
3
4#include "../lets_split.h"
5
6//void promicro_bootloader_jmp(bool program);
7#include "quantum.h"
8
9//void promicro_bootloader_jmp(bool program);
10
11#define KEYMAP( \
12 k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
13 k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
14 k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
15 k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \
16 ) \
17 { \
18 { k00, k01, k02, k03, k04, k05 }, \
19 { k10, k11, k12, k13, k14, k15 }, \
20 { k20, k21, k22, k23, k24, k25 }, \
21 { k30, k31, k32, k33, k34, k35 }, \
22 { k40, k41, k42, k43, k44, k45 }, \
23 { k50, k51, k52, k53, k54, k55 }, \
24 { k60, k61, k62, k63, k64, k65 }, \
25 { k70, k71, k72, k73, k74, k75 } \
26 }
27
28#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev1/rules.mk b/keyboards/lets_split/rev1/rules.mk
new file mode 100644
index 000000000..a0825b4ef
--- /dev/null
+++ b/keyboards/lets_split/rev1/rules.mk
@@ -0,0 +1,5 @@
1BACKLIGHT_ENABLE = no
2
3ifndef QUANTUM_DIR
4 include ../../../Makefile
5endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev2/Makefile b/keyboards/lets_split/rev2/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/lets_split/rev2/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
new file mode 100644
index 000000000..e9689d773
--- /dev/null
+++ b/keyboards/lets_split/rev2/config.h
@@ -0,0 +1,102 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x3060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Wootpatoot
28#define PRODUCT Lets Split v2
29#define DESCRIPTION A split keyboard for the cheap makers
30
31/* key matrix size */
32// Rows are doubled-up
33#define MATRIX_ROWS 8
34#define MATRIX_COLS 6
35
36// wiring of each half
37#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
38#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
39
40#define CATERINA_BOOTLOADER
41
42// #define USE_I2C
43
44// Use serial if not using I2C
45#ifndef USE_I2C
46# define USE_SERIAL
47#endif
48
49// #define EE_HANDS
50
51#define I2C_MASTER_LEFT
52// #define I2C_MASTER_RIGHT
53
54/* COL2ROW or ROW2COL */
55#define DIODE_DIRECTION COL2ROW
56
57/* define if matrix has ghost */
58//#define MATRIX_HAS_GHOST
59
60/* number of backlight levels */
61// #define BACKLIGHT_LEVELS 3
62
63/* Set 0 if debouncing isn't needed */
64#define DEBOUNCING_DELAY 5
65
66/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
67#define LOCKING_SUPPORT_ENABLE
68/* Locking resynchronize hack */
69#define LOCKING_RESYNC_ENABLE
70
71/* key combination for command */
72#define IS_COMMAND() ( \
73 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
74)
75
76/* ws2812 RGB LED */
77#define RGB_DI_PIN D3
78#define RGBLIGHT_TIMER
79#define RGBLED_NUM 12 // Number of LEDs
80#define ws2812_PORTREG PORTD
81#define ws2812_DDRREG DDRD
82
83/*
84 * Feature disable options
85 * These options are also useful to firmware size reduction.
86 */
87
88/* disable debug print */
89// #define NO_DEBUG
90
91/* disable print */
92// #define NO_PRINT
93
94/* disable action features */
95//#define NO_ACTION_LAYER
96//#define NO_ACTION_TAPPING
97//#define NO_ACTION_ONESHOT
98//#define NO_ACTION_MACRO
99//#define NO_ACTION_FUNCTION
100
101
102#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c
new file mode 100644
index 000000000..c505d3a6e
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.c
@@ -0,0 +1,32 @@
1#include "lets_split.h"
2
3#ifdef AUDIO_ENABLE
4 float tone_startup[][2] = SONG(STARTUP_SOUND);
5 float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
6#endif
7
8void matrix_init_kb(void) {
9
10 #ifdef AUDIO_ENABLE
11 _delay_ms(20); // gets rid of tick
12 PLAY_NOTE_ARRAY(tone_startup, false, 0);
13 #endif
14
15 // // green led on
16 // DDRD |= (1<<5);
17 // PORTD &= ~(1<<5);
18
19 // // orange led on
20 // DDRB |= (1<<0);
21 // PORTB &= ~(1<<0);
22
23 matrix_init_user();
24};
25
26void shutdown_user(void) {
27 #ifdef AUDIO_ENABLE
28 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
29 _delay_ms(150);
30 stop_all_notes();
31 #endif
32}
diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h
new file mode 100644
index 000000000..990976de2
--- /dev/null
+++ b/keyboards/lets_split/rev2/rev2.h
@@ -0,0 +1,28 @@
1#ifndef REV2_H
2#define REV2_H
3
4#include "../lets_split.h"
5
6//void promicro_bootloader_jmp(bool program);
7#include "quantum.h"
8
9//void promicro_bootloader_jmp(bool program);
10
11#define KEYMAP( \
12 k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
13 k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
14 k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
15 k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
16 ) \
17 { \
18 { k00, k01, k02, k03, k04, k05 }, \
19 { k10, k11, k12, k13, k14, k15 }, \
20 { k20, k21, k22, k23, k24, k25 }, \
21 { k30, k31, k32, k33, k34, k35 }, \
22 { k40, k41, k42, k43, k44, k45 }, \
23 { k50, k51, k52, k53, k54, k55 }, \
24 { k60, k61, k62, k63, k64, k65 }, \
25 { k70, k71, k72, k73, k74, k75 } \
26 }
27
28#endif \ No newline at end of file
diff --git a/keyboards/lets_split/rev2/rules.mk b/keyboards/lets_split/rev2/rules.mk
new file mode 100644
index 000000000..80a942d06
--- /dev/null
+++ b/keyboards/lets_split/rev2/rules.mk
@@ -0,0 +1,5 @@
1BACKLIGHT_ENABLE = no
2
3ifndef QUANTUM_DIR
4 include ../../../Makefile
5endif
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index 6fde8a444..1aee5313c 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -63,11 +63,12 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration
63NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 63NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
64BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality 64BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
65MIDI_ENABLE ?= no # MIDI controls 65MIDI_ENABLE ?= no # MIDI controls
66AUDIO_ENABLE ?= yes # Audio output on port C6 66AUDIO_ENABLE ?= no # Audio output on port C6
67UNICODE_ENABLE ?= no # Unicode 67UNICODE_ENABLE ?= no # Unicode
68BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID 68BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
69RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. 69RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
70 70SUBPROJECT_rev1 ?= yes
71USE_I2C ?= yes
71# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 72# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
72SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend 73SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
73 74
diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/maxipad/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif
diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h
new file mode 100644
index 000000000..fbe64a5b0
--- /dev/null
+++ b/keyboards/maxipad/config.h
@@ -0,0 +1,163 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Wootpatoot
28#define PRODUCT maxipad
29#define DESCRIPTION A custom keyboard
30
31
32/* key matrix size */
33#define MATRIX_ROWS 5
34#define MATRIX_COLS 6
35
36/*
37 * Keyboard Matrix Assignments
38 *
39 * Change this to how you wired your keyboard
40 * COLS: AVR pins used for columns, left to right
41 * ROWS: AVR pins used for rows, top to bottom
42 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
43 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
44 *
45*/
46#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 }
47#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 }
48#define UNUSED_PINS
49
50/* COL2ROW or ROW2COL */
51#define DIODE_DIRECTION COL2ROW
52
53// #define BACKLIGHT_PIN B7
54// #define BACKLIGHT_BREATHING
55// #define BACKLIGHT_LEVELS 3
56
57
58/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
59#define DEBOUNCING_DELAY 5
60
61/* define if matrix has ghost (lacks anti-ghosting diodes) */
62//#define MATRIX_HAS_GHOST
63
64/* number of backlight levels */
65
66/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
67#define LOCKING_SUPPORT_ENABLE
68/* Locking resynchronize hack */
69#define LOCKING_RESYNC_ENABLE
70
71/*
72 * Force NKRO
73 *
74 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
75 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
76 * makefile for this to work.)
77 *
78 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
79 * until the next keyboard reset.
80 *
81 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
82 * fully operational during normal computer usage.
83 *
84 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
85 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
86 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
87 * power-up.
88 *
89 */
90//#define FORCE_NKRO
91
92/*
93 * Magic Key Options
94 *
95 * Magic keys are hotkey commands that allow control over firmware functions of
96 * the keyboard. They are best used in combination with the HID Listen program,
97 * found here: https://www.pjrc.com/teensy/hid_listen.html
98 *
99 * The options below allow the magic key functionality to be changed. This is
100 * useful if your keyboard/keypad is missing keys and you want magic key support.
101 *
102 */
103
104/* key combination for magic key command */
105#define IS_COMMAND() ( \
106 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
107)
108
109/* control how magic key switches layers */
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
112//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
113
114/* override magic key keymap */
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
117//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
118//#define MAGIC_KEY_HELP1 H
119//#define MAGIC_KEY_HELP2 SLASH
120//#define MAGIC_KEY_DEBUG D
121//#define MAGIC_KEY_DEBUG_MATRIX X
122//#define MAGIC_KEY_DEBUG_KBD K
123//#define MAGIC_KEY_DEBUG_MOUSE M
124//#define MAGIC_KEY_VERSION V
125//#define MAGIC_KEY_STATUS S
126//#define MAGIC_KEY_CONSOLE C
127//#define MAGIC_KEY_LAYER0_ALT1 ESC
128//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
129//#define MAGIC_KEY_LAYER0 0
130//#define MAGIC_KEY_LAYER1 1
131//#define MAGIC_KEY_LAYER2 2
132//#define MAGIC_KEY_LAYER3 3
133//#define MAGIC_KEY_LAYER4 4
134//#define MAGIC_KEY_LAYER5 5
135//#define MAGIC_KEY_LAYER6 6
136//#define MAGIC_KEY_LAYER7 7
137//#define MAGIC_KEY_LAYER8 8
138//#define MAGIC_KEY_LAYER9 9
139//#define MAGIC_KEY_BOOTLOADER PAUSE
140//#define MAGIC_KEY_LOCK CAPS
141//#define MAGIC_KEY_EEPROM E
142//#define MAGIC_KEY_NKRO N
143//#define MAGIC_KEY_SLEEP_LED Z
144
145/*
146 * Feature disable options
147 * These options are also useful to firmware size reduction.
148 */
149
150/* disable debug print */
151//#define NO_DEBUG
152
153/* disable print */
154//#define NO_PRINT
155
156/* disable action features */
157//#define NO_ACTION_LAYER
158//#define NO_ACTION_TAPPING
159//#define NO_ACTION_ONESHOT
160//#define NO_ACTION_MACRO
161//#define NO_ACTION_FUNCTION
162
163#endif
diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c
new file mode 100644
index 000000000..43ace3241
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
1#include "maxipad.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4[0] = KEYMAP( /* Base */
5 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, \
6 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \
7 MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, \
8 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, \
9 KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \
10),
11[1] = KEYMAP(
12 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \
13 KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \
14 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \
15 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
16 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
17),
18};
19
20const uint16_t PROGMEM fn_actions[] = {
21
22};
23
24const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
25{
26 // MACRODOWN only works in this function
27 switch(id) {
28 case 0:
29 if (record->event.pressed) {
30 register_code(KC_RSFT);
31 } else {
32 unregister_code(KC_RSFT);
33 }
34 break;
35 }
36 return MACRO_NONE;
37};
38
39
40void matrix_init_user(void) {
41
42}
43
44void matrix_scan_user(void) {
45
46}
47
48bool process_record_user(uint16_t keycode, keyrecord_t *record) {
49 return true;
50}
51
52void led_set_user(uint8_t usb_led) {
53
54} \ No newline at end of file
diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md
new file mode 100644
index 000000000..a6c0d4a3f
--- /dev/null
+++ b/keyboards/maxipad/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for maxipad \ No newline at end of file
diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c
new file mode 100644
index 000000000..879ae86a7
--- /dev/null
+++ b/keyboards/maxipad/maxipad.c
@@ -0,0 +1,28 @@
1#include "maxipad.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h
new file mode 100644
index 000000000..eee1309dd
--- /dev/null
+++ b/keyboards/maxipad/maxipad.h
@@ -0,0 +1,25 @@
1#ifndef MAXIPAD_H
2#define MAXIPAD_H
3
4#include "quantum.h"
5
6// This a shortcut to help you visually see your layout.
7// The following is an example using the Planck MIT layout
8// The first section contains all of the arguements
9// The second converts the arguments into a two-dimensional array
10#define KEYMAP( \
11 k00, k01, k02, k03, k04, k05, \
12 k10, k11, k12, k13, k14, k15, \
13 k20, k21, k22, k23, k24, k25, \
14 k30, k31, k32, k33, k34, k35, \
15 k40, k41, k42, k43, k44, k45 \
16) \
17{ \
18 { k00, k01, k02, k03, k04, k05 }, \
19 { k10, k11, k12, k13, k14, k15 }, \
20 { k20, k21, k22, k23, k24, k25 }, \
21 { k30, k31, k32, k33, k34, k35 }, \
22 { k40, k41, k42, k43, k44, k45} \
23}
24
25#endif
diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md
new file mode 100644
index 000000000..ab7b122fe
--- /dev/null
+++ b/keyboards/maxipad/readme.md
@@ -0,0 +1,28 @@
1## Quantum MK Firmware
2
3For the full Quantum feature list, see [the parent readme](/).
4
5
6## Building
7
8Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
9
10Depending on which keymap you would like to use, you will have to compile slightly differently.
11
12### Default
13
14To build with the default keymap, simply run `make`.
15
16
17### Other Keymaps
18
19Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
20
21To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
22
23```
24$ make [default|jack|<name>]
25```
26
27Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
28
diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk
new file mode 100644
index 000000000..55898147d
--- /dev/null
+++ b/keyboards/maxipad/rules.mk
@@ -0,0 +1,67 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=512
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
57CONSOLE_ENABLE ?= yes # Console for debug(+400)
58COMMAND_ENABLE ?= yes # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE ?= no # USB Nkey Rollover
63BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE ?= no # MIDI controls
65UNICODE_ENABLE ?= no # Unicode
66BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c b/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c
new file mode 100644
index 000000000..98a298e76
--- /dev/null
+++ b/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c
@@ -0,0 +1,110 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3
4#include "satan.h"
5
6#define _DEFAULT 0
7#define _ALTDISP 1
8#define _FN 2
9
10enum planck_keycodes {
11 DEFAULT = SAFE_RANGE,
12 ALTDISP
13};
14
15// Fillers to make layering more clear
16#define ______ KC_TRNS
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19/* Qwerty alt/gui/space/gui/alt
20 * ,-----------------------------------------------------------------------------------------.
21 * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
22 * |-----------------------------------------------------------------------------------------+
23 * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
24 * |-----------------------------------------------------------------------------------------+
25 * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
26 * |-----------------------------------------------------------------------------------------+
27 * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN |
28 * |-----------------------------------------------------------------------------------------+
29 * | LAlt| LGUI | Space | RGUI | RAlt |
30 * `-----------------------------------------------------------------'
31 */
32 [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */
33 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_BSLS, KC_GRV, \
34 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_BSPC, \
35 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
36 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \
37 ______, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, ______, ______ \
38 ),
39
40/* Qwerty gui/alt/space/alt/gui
41 * ,-----------------------------------------------------------------------------------------.
42 * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
43 * |-----------------------------------------------------------------------------------------+
44 * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
45 * |-----------------------------------------------------------------------------------------+
46 * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
47 * |-----------------------------------------------------------------------------------------+
48 * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN |
49 * |-----------------------------------------------------------------------------------------+
50 * |LGUI | LAlt | Space | RAlt |RGUI |
51 * `-----------------------------------------------------------------'
52 */
53 [_ALTDISP] = KEYMAP_HHKB( /* Basic QWERTY */
54 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_BSLS, KC_GRV, \
55 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_BSPC, \
56 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
57 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \
58 ______, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, ______, ______ \
59 ),
60
61/* FN Layer
62 * ,-----------------------------------------------------------------------------------------.
63 * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
64 * |-----------------------------------------------------------------------------------------+
65 * | CAPS | BL- | BL+ | BL | | | | | Psc | Slck| Paus| Up | | |
66 * |-----------------------------------------------------------------------------------------+
67 * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left|Right| |
68 * |-----------------------------------------------------------------------------------------+
69 * | | Prev| Play| Next| | | + | - | End |PgDn| Down| | |
70 * |-----------------------------------------------------------------------------------------+
71 * | | | | Stop | |
72 * `-----------------------------------------------------------------'
73 */
74 [_FN] = KEYMAP_HHKB( /* Layer 1 */
75 ______, 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_INS, KC_DEL, \
76 KC_CAPS, BL_DEC, BL_INC, BL_TOGG, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \
77 ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, \
78 ______, KC_MPRV, KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______, \
79 ______, DEFAULT, ALTDISP, ______, KC_MSTP, ______, ______, ______ \
80 )
81};
82
83const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
84{
85 // MACRODOWN only works in this function
86 return MACRO_NONE;
87};
88
89void persistant_default_layer_set(uint16_t default_layer) {
90 eeconfig_update_default_layer(default_layer);
91 default_layer_set(default_layer);
92}
93
94bool process_record_user(uint16_t keycode, keyrecord_t *record) {
95 switch (keycode) {
96 case DEFAULT:
97 if (record->event.pressed) {
98 persistant_default_layer_set(1UL<<_DEFAULT);
99 }
100 return false;
101 break;
102 case ALTDISP:
103 if (record->event.pressed) {
104 persistant_default_layer_set(1UL<<_ALTDISP);
105 }
106 return false;
107 break;
108 }
109 return true;
110} \ No newline at end of file
diff --git a/keyboards/satan/keymaps/dbroqua_hhkb/readme.md b/keyboards/satan/keymaps/dbroqua_hhkb/readme.md
new file mode 100644
index 000000000..39e71beed
--- /dev/null
+++ b/keyboards/satan/keymaps/dbroqua_hhkb/readme.md
@@ -0,0 +1,9 @@
1# Dbroqua HHKB like Layout
2
3Like the HHKB but with a Satan GH60 PCB :D.
4
5# Programming Instructions:
6Enter into programming mode and run the following command.
7```
8$ sudo KEYMAP=dbroqua_hhkb make dfu
9``` \ No newline at end of file
diff --git a/keyboards/satan/keymaps/sethbc/keymap.c b/keyboards/satan/keymaps/sethbc/keymap.c
index 82c779081..93610258b 100644
--- a/keyboards/satan/keymaps/sethbc/keymap.c
+++ b/keyboards/satan/keymaps/sethbc/keymap.c
@@ -32,21 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32 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_BSPC, \ 32 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_BSPC, \
33 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ 33 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
34 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), \ 34 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), \
35 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL), 35 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MENU, KC_RCTL),
36 36
37[_FL] = KEYMAP_HHKB( 37[_FL] = KEYMAP_HHKB(
38 #ifdef RGBLIGHT_ENABLE 38 #ifdef RGBLIGHT_ENABLE
39 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, _______, RESET, \ 39 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, _______, RESET, \
40 KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \
41 _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
42 _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
43 _______, _______, _______, _______, _______, _______, _______, _______),
44 #else
45 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, _______, RESET, \
46 KC_CAPS, _______, RGB_TOG,RGB_MOD,RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \ 40 KC_CAPS, _______, RGB_TOG,RGB_MOD,RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \
47 _______, KC_VOLD, RGB_HUD,RGB_SAI,RGB_SAD, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ 41 _______, KC_VOLD, RGB_HUD,RGB_SAI,RGB_SAD, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
48 _______, RGB_VAI,RGB_VAD,_______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \ 42 _______, RGB_VAI,RGB_VAD,_______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
49 _______, _______, _______, _______, _______, _______, _______, _______), 43 _______, _______, _______, _______, _______, _______, _______, _______),
44 #else
45 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, _______, RESET, \
46 KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \
47 _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
48 _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
49 _______, _______, _______, _______, _______, _______, _______, _______),
50 #endif 50 #endif
51}; 51};
52 52
diff --git a/keyboards/vision_division/config.h b/keyboards/vision_division/config.h
index 1f8466a54..5798d91ad 100644
--- a/keyboards/vision_division/config.h
+++ b/keyboards/vision_division/config.h
@@ -31,7 +31,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31#define BACKLIGHT_LEVELS 3 31#define BACKLIGHT_LEVELS 3
32 32
33/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 33/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
34#define DEBOUNCING_DELAY 5 34#define DEBOUNCING_DELAY 0
35
36#define MATRIX_MASKED
35 37
36/* define if matrix has ghost (lacks anti-ghosting diodes) */ 38/* define if matrix has ghost (lacks anti-ghosting diodes) */
37//#define MATRIX_HAS_GHOST 39//#define MATRIX_HAS_GHOST
diff --git a/keyboards/vision_division/keymaps/default/Makefile b/keyboards/vision_division/keymaps/default/Makefile
index 5a930e85e..28060947a 100644
--- a/keyboards/vision_division/keymaps/default/Makefile
+++ b/keyboards/vision_division/keymaps/default/Makefile
@@ -2,7 +2,7 @@
2# change to "no" to disable the options, or define them in the Makefile in 2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically 3# the appropriate keymap folder that will get included automatically
4# 4#
5BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) 5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700) 6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = yes # Console for debug(+400) 8CONSOLE_ENABLE = yes # Console for debug(+400)
@@ -18,4 +18,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18 18
19ifndef QUANTUM_DIR 19ifndef QUANTUM_DIR
20 include ../../../../Makefile 20 include ../../../../Makefile
21endif \ No newline at end of file 21endif
diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c
index 64118abdc..3282761c0 100644
--- a/keyboards/vision_division/keymaps/default/keymap.c
+++ b/keyboards/vision_division/keymaps/default/keymap.c
@@ -121,6 +121,7 @@ enum keyboard_macros {
121 121
122#define M_CP_CT M(MACRO_COPY_CUT) 122#define M_CP_CT M(MACRO_COPY_CUT)
123 123
124#define M_COPY KC_FN1
124 125
125#define SC_UNDO LCTL(KC_Z) 126#define SC_UNDO LCTL(KC_Z)
126#define SC_REDO LCTL(KC_Y) 127#define SC_REDO LCTL(KC_Y)
@@ -141,35 +142,46 @@ enum keyboard_macros {
141#define ________________ _______, _______ 142#define ________________ _______, _______
142#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX 143#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX
143 144
145const matrix_row_t matrix_mask[MATRIX_ROWS] =
146{
147// 1098765432109876543210987654321
148 0b0000000001111111101111011111111,
149 0b0000000001111111111111111111111,
150 0b0000000001111111111111111111111,
151 0b0000000001111111111111111111111,
152 0b0000000001010111111111111111111,
153 0b0000000001111101111111101011111,
154};
155
144const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = 156const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =
145{ 157{
146/* LAYER = LAYER_QWERTY 158/* LAYER = LAYER_QWERTY
147 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 159 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
148 | FN | PRINT | SCR LK | PAUSE | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | VOL DN | MUTE | VOL UP | BACKLT | 160 | VOL DN | MUTE | VOL UP | BACKLT | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | PRINT | SCR LK | PAUSE | FN |
149 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 161 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
150 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 162 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
151 | M1 | INS | HOME | PG UP | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | NUM LK | KP / | KP * | KP - | 163 | NUM LK | KP / | KP * | KP - | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | INS | HOME | PG UP | M1 |
152 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 164 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
153 | M2 | DEL | END | PG DN | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | KP 7 | KP 8 | KP 9 | KP + | 165 | KP 7 | KP 8 | KP 9 | KP + | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | DEL | END | PG DN | M2 |
154 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 166 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
155 | M3 | UL | UP | UR | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | KP 4 | KP 5 | KP 6 | KP + | 167 | KP 4 | KP 5 | KP 6 | KP + | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | CP/CT | UNDO | PASTE | M3 |
156 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 168 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
157 | M4 | LEFT | CP/CT | RIGHT | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | KP 1 | KP 2 | KP 3 | KP Ent | 169 | KP 1 | KP 2 | KP 3 | KP Ent | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | XXXXXX | UP | XXXXXX | M4 |
158 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 170 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
159 | M5 | DL | DOWN | DR | | LCTRL | XXXXXX | XXXXXX | LWIN | LALT | LOWER | SPACE . SPACE | UPPER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | KP 0 | KP , | KP . | KP Ent | 171 | KP 0 | KP , | KP . | KP Ent | | LCTRL | XXXXXX | LWIN | XXXXXX | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | LEFT | DOWN | RIGHT | M5 |
160 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 172 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
161*/ 173*/
162KEYMAP(LAYER_QWERTY, \ 174KEYMAP(LAYER_QWERTY, \
163 M_HELP , KC_PSCR, KC_SLCK, KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_MUTE, KC_VOLU, M_BACKL, \ 175 KC_VOLD, KC_MUTE, KC_VOLU, M_BACKL, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUS, M_HELP , \
164 M_M1 , KC_INS , KC_HOME, KC_PGUP, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ 176 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, M_M1 , \
165 M_M2 , KC_DEL , KC_END , KC_PGDN, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, \ 177 KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_DEL , KC_END , KC_PGDN, M_M2 , \
166 M_M3 , M_UL , KC_UP , M_UR , KC_CAPS, KC_BSPC, 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_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, \ 178 KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_CAPS, KC_BSPC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , M_CP_CT, SC_UNDO, SC_PSTE, M_M3 , \
167 M_M4 , KC_LEFT, M_CP_CT, KC_RGHT, KC_LSFT, 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_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, \ 179 KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, 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_RSFT, XXXXXXX, KC_UP , XXXXXXX, M_M4 , \
168 M_M5 , M_DL , KC_DOWN, M_DR , KC_LCTL, XXXXXXX, XXXXXXX, KC_LGUI, KC_LALT, M_LOWER, KC_SPC , KC_SPC , M_UPPER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT \ 180 KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT, KC_LCTL, XXXXXXX, KC_LGUI, XXXXXXX, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, M_M5 \
169), 181),
170/* LAYER = LAYER_LOWER 182/* LAYER = LAYER_LOWER
171 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 183 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
172 | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | 184 | ______ | MUTE A | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ |
173 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 185 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
174 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 186 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
175 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 187 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ |
@@ -180,20 +192,20 @@ KEYMAP(LAYER_QWERTY, \
180 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 192 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
181 | ______ | ______ | ______ | ______ | | ______ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ | ______ | | ______ | ______ | ______ | ______ | 193 | ______ | ______ | ______ | ______ | | ______ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ | ______ | | ______ | ______ | ______ | ______ |
182 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 194 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
183 | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ | 195 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ |
184 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 196 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
185*/ 197*/
186KEYMAP(LAYER_LOWER, \ 198KEYMAP(LAYER_LOWER, \
187 _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ 199 _______, M_MUTEA, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \
188 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 200 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
189 _______, _______, _______, _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, _______, _______, _______, \ 201 _______, _______, _______, _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, _______, _______, _______, \
190 _______, _______, _______, _______, _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, _______, _______, _______, \ 202 _______, _______, _______, _______, _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, _______, _______, _______, \
191 _______, _______, _______, _______, _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, _______, _______, _______, \ 203 _______, _______, _______, _______, _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, _______, _______, _______, \
192 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \ 204 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \
193), 205),
194/* LAYER = LAYER_UPPER 206/* LAYER = LAYER_UPPER
195 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 207 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
196 | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | 208 | ______ | MUTE A | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ |
197 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 209 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
198 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 210 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
199 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 211 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ |
@@ -204,44 +216,44 @@ KEYMAP(LAYER_LOWER, \
204 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 216 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
205 | ______ | ______ | ______ | ______ | | ______ | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP Ent | ______ | ______ | | ______ | ______ | ______ | ______ | 217 | ______ | ______ | ______ | ______ | | ______ | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP Ent | ______ | ______ | | ______ | ______ | ______ | ______ |
206 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 218 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
207 | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ | 219 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ |
208 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 220 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
209*/ 221*/
210KEYMAP(LAYER_UPPER, \ 222KEYMAP(LAYER_UPPER, \
211 _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ 223 _______, M_MUTEA, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \
212 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 224 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
213 _______, _______, _______, _______, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, _______, _______, _______, \ 225 _______, _______, _______, _______, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, _______, _______, _______, \
214 _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, _______, _______, _______, \ 226 _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, _______, _______, _______, \
215 _______, _______, _______, _______, _______, _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, _______, _______, _______, \ 227 _______, _______, _______, _______, _______, _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, _______, _______, _______, \
216 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \ 228 _______, _______, _______, _______, _______, _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \
217), 229),
218/* LAYER = LAYER_MOUSE 230/* LAYER = LAYER_MOUSE
219 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 231 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
220 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 232 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ |
221 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 233 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
222 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 234 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
223 | MS BT1 | MS AC0 | MS WHU | MS AC2 | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 235 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS AC0 | MS WHU | MS AC2 | MS BT1 |
224 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 236 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
225 | MS BT2 | MS WHL | MS WHD | MS WHU | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 237 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS WHL | MS WHD | MS WHU | MS BT2 |
226 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 238 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
227 | MS BT3 | MS UL | MS U | MS UR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | ______ | ______ | ______ | ______ | 239 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | MS BT1 | MS BT2 | MS BT3 | MS BT3 |
228 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| 240 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------|
229 | MS BT4 | MS L | MS BT1 | MS R | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 241 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | XXXXXX | MS U | XXXXXX | MS BT4 |
230 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| 242 |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------|
231 | MS BT5 | MS DL | MS D | MS DR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | 243 | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS L | MS D | MS R | MS BT5 |
232 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 244 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
233*/ 245*/
234KEYMAP(LAYER_MOUSE, \ 246KEYMAP(LAYER_MOUSE, \
235 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 247 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
236 KC_BTN1, KC_ACL0, KC_WH_U, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 248 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_WH_U, KC_ACL2, KC_BTN1, \
237 KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 249 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_BTN2, \
238 KC_BTN3, M_MS_UL, KC_MS_U, M_MS_UR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 250 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN3, \
239 KC_BTN4, KC_MS_L, KC_BTN1, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 251 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_MS_U, XXXXXXX, KC_BTN4, \
240 KC_BTN5, M_MS_DL, KC_MS_D, M_MS_DR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 252 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5 \
241), 253),
242/* LAYER = LAYER_ADJUST 254/* LAYER = LAYER_ADJUST
243 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 255 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
244 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | HELP 1 | HELP 2 | HELP 3 | HELP 4 | XXXXXX | HELP 5 | HELP 6 | HELP 7 | HELP 8 | XXXXXX | HELP 9 | HELP 0 | XXXXXX | XXXXXX | | VOICE- | AUDIO | VOICE+ | MUSIC | 256 | VOICE- | AUDIO | VOICE+ | MUSIC | | HELP 1 | HELP 2 | HELP 3 | HELP 4 | XXXXXX | HELP 5 | HELP 6 | HELP 7 | HELP 8 | XXXXXX | HELP 9 | HELP 0 | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
245 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 257 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
246 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. 258 .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------.
247 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | 259 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
@@ -256,14 +268,13 @@ KEYMAP(LAYER_MOUSE, \
256 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' 268 '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------'
257*/ 269*/
258KEYMAP(LAYER_ADJUST, \ 270KEYMAP(LAYER_ADJUST, \
259 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, XXXXXXX, M_HELP5, M_HELP6, M_HELP7, M_HELP8, XXXXXXX, M_HELP9, M_HELP0, XXXXXXX, XXXXXXX, MUV_DE , AU_TOG , MUV_IN , MU_TOG , \ 271 MUV_DE , AU_TOG , MUV_IN , MU_TOG , M_HELP1, M_HELP2, M_HELP3, M_HELP4, XXXXXXX, M_HELP5, M_HELP6, M_HELP7, M_HELP8, XXXXXXX, M_HELP9, M_HELP0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
260 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 272 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
261 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 273 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
262 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 274 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
263 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 275 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
264 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 276 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
265), 277),
266
267}; 278};
268 279
269#ifdef AUDIO_ENABLE 280#ifdef AUDIO_ENABLE
@@ -296,6 +307,7 @@ void persistant_default_layer_set(uint16_t default_layer)
296 307
297const uint16_t PROGMEM fn_actions[] = { 308const uint16_t PROGMEM fn_actions[] = {
298 [0] = ACTION_MODS_ONESHOT(MOD_LSFT), 309 [0] = ACTION_MODS_ONESHOT(MOD_LSFT),
310 [1] = ACTION_MACRO_TAP(MACRO_COPY_CUT),
299}; 311};
300 312
301const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 313const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -305,68 +317,84 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
305 switch(id) 317 switch(id)
306 { 318 {
307 319
308 case MACRO_HELP_1: 320 case MACRO_COPY_CUT:
309 if (record->event.pressed) 321 if (record->event.pressed) {
310 { 322 register_code(KC_LCTL);
311 uprint("H1"); 323 if (record->tap.count == 1) {
312 } 324 register_code(KC_C);
313 break; 325 unregister_code(KC_C);
314 326 }
315 case MACRO_HELP_2: 327 else if (record->tap.count == 2) {
316 if (record->event.pressed) 328 register_code(KC_X);
317 { 329 unregister_code(KC_X);
318 uprint("H2"); 330 }
319 } 331 unregister_code(KC_LCTL);
320 break; 332 }
321 333 break;
322 case MACRO_HELP_3: 334
323 if (record->event.pressed) 335
324 { 336 // case MACRO_HELP_1:
325 uprint("H3"); 337 // if (record->event.pressed)
326 } 338 // {
327 break; 339 // uprint("H1");
328 340 // }
329 case MACRO_HELP_4: 341 // break;
330 if (record->event.pressed) 342
331 { 343 // case MACRO_HELP_2:
332 uprint("H4"); 344 // if (record->event.pressed)
333 } 345 // {
334 break; 346 // uprint("H2");
335 347 // }
336 case MACRO_HELP_5: 348 // break;
337 if (record->event.pressed) 349
338 { 350 // case MACRO_HELP_3:
339 uprint("H5"); 351 // if (record->event.pressed)
340 } 352 // {
341 break; 353 // uprint("H3");
342 354 // }
343 case MACRO_HELP_6: 355 // break;
344 if (record->event.pressed) 356
345 { 357 // case MACRO_HELP_4:
346 uprint("H6"); 358 // if (record->event.pressed)
347 } 359 // {
348 break; 360 // uprint("H4");
349 361 // }
350 case MACRO_HELP_7: 362 // break;
351 if (record->event.pressed) 363
352 { 364 // case MACRO_HELP_5:
353 uprint("H7"); 365 // if (record->event.pressed)
354 } 366 // {
355 break; 367 // uprint("H5");
356 368 // }
357 case MACRO_HELP_8: 369 // break;
358 if (record->event.pressed) 370
359 { 371 // case MACRO_HELP_6:
360 uprint("H8"); 372 // if (record->event.pressed)
361 } 373 // {
362 break; 374 // uprint("H6");
363 375 // }
364 case MACRO_HELP_9: 376 // break;
365 if (record->event.pressed) 377
366 { 378 // case MACRO_HELP_7:
367 uprint("H9"); 379 // if (record->event.pressed)
368 } 380 // {
369 break; 381 // uprint("H7");
382 // }
383 // break;
384
385 // case MACRO_HELP_8:
386 // if (record->event.pressed)
387 // {
388 // uprint("H8");
389 // }
390 // break;
391
392 // case MACRO_HELP_9:
393 // if (record->event.pressed)
394 // {
395 // uprint("H9");
396 // }
397 // break;
370 398
371 case MACRO_BREATH_TOGGLE: 399 case MACRO_BREATH_TOGGLE:
372 if (record->event.pressed) 400 if (record->event.pressed)
@@ -566,12 +594,12 @@ void led_set_user(uint8_t usb_led)
566void startup_user() 594void startup_user()
567{ 595{
568 _delay_ms(10); // gets rid of tick 596 _delay_ms(10); // gets rid of tick
569 PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); 597 // PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
570} 598}
571 599
572void shutdown_user() 600void shutdown_user()
573{ 601{
574 PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); 602 // PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
575 _delay_ms(2000); 603 _delay_ms(2000);
576 stop_all_notes(); 604 stop_all_notes();
577} 605}
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 3174e0739..07eb87bc3 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -25,37 +25,65 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25#include "debug.h" 25#include "debug.h"
26#include "util.h" 26#include "util.h"
27#include "matrix.h" 27#include "matrix.h"
28#include "timer.h"
29
28 30
29/* Set 0 if debouncing isn't needed */ 31/* Set 0 if debouncing isn't needed */
30 32
31#ifndef DEBOUNCING_DELAY 33#ifndef DEBOUNCING_DELAY
32# define DEBOUNCING_DELAY 5 34# define DEBOUNCING_DELAY 5
33#endif 35#endif
34static uint8_t debouncing = DEBOUNCING_DELAY; 36
37#if (DEBOUNCING_DELAY > 0)
38 static uint16_t debouncing_time;
39 static bool debouncing = false;
40#endif
41
42#if (MATRIX_COLS <= 8)
43# define print_matrix_header() print("\nr/c 01234567\n")
44# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
45# define matrix_bitpop(i) bitpop(matrix[i])
46# define ROW_SHIFTER ((uint8_t)1)
47#elif (MATRIX_COLS <= 16)
48# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
49# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
50# define matrix_bitpop(i) bitpop16(matrix[i])
51# define ROW_SHIFTER ((uint16_t)1)
52#elif (MATRIX_COLS <= 32)
53# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
54# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
55# define matrix_bitpop(i) bitpop32(matrix[i])
56# define ROW_SHIFTER ((uint32_t)1)
57#endif
58
59#ifdef MATRIX_MASKED
60 extern const matrix_row_t matrix_mask[];
61#endif
35 62
36static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; 63static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
37static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; 64static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
38 65
39/* matrix state(1:on, 0:off) */ 66/* matrix state(1:on, 0:off) */
40static matrix_row_t matrix[MATRIX_ROWS]; 67static matrix_row_t matrix[MATRIX_ROWS];
68
69static matrix_row_t matrix_raw[MATRIX_ROWS];
41static matrix_row_t matrix_debouncing[MATRIX_ROWS]; 70static matrix_row_t matrix_debouncing[MATRIX_ROWS];
42 71
43#if DIODE_DIRECTION == ROW2COL
44 static matrix_row_t matrix_reversed[MATRIX_COLS];
45 static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS];
46#endif
47 72
48#if MATRIX_COLS > 16 73#if (DIODE_DIRECTION == COL2ROW)
49 #define SHIFTER 1UL 74 static void init_cols(void);
50#else 75 static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
51 #define SHIFTER 1 76 static void unselect_rows(void);
77 static void select_row(uint8_t row);
78 static void unselect_row(uint8_t row);
79#else // ROW2COL
80 static void init_rows(void);
81 static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
82 static void unselect_cols(void);
83 static void unselect_col(uint8_t col);
84 static void select_col(uint8_t col);
52#endif 85#endif
53 86
54static matrix_row_t read_cols(void);
55static void init_cols(void);
56static void unselect_rows(void);
57static void select_row(uint8_t row);
58
59__attribute__ ((weak)) 87__attribute__ ((weak))
60void matrix_init_quantum(void) { 88void matrix_init_quantum(void) {
61 matrix_init_kb(); 89 matrix_init_kb();
@@ -95,7 +123,7 @@ uint8_t matrix_cols(void) {
95} 123}
96 124
97// void matrix_power_up(void) { 125// void matrix_power_up(void) {
98// #if DIODE_DIRECTION == COL2ROW 126// #if (DIODE_DIRECTION == COL2ROW)
99// for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { 127// for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) {
100// /* DDRxn */ 128// /* DDRxn */
101// _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF); 129// _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF);
@@ -119,19 +147,26 @@ uint8_t matrix_cols(void) {
119// } 147// }
120 148
121void matrix_init(void) { 149void matrix_init(void) {
150
122 // To use PORTF disable JTAG with writing JTD bit twice within four cycles. 151 // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
123 #ifdef __AVR_ATmega32U4__ 152 #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))
124 MCUCR |= _BV(JTD); 153 MCUCR |= _BV(JTD);
125 MCUCR |= _BV(JTD); 154 MCUCR |= _BV(JTD);
126 #endif 155 #endif
127 156
128 // initialize row and col 157 // initialize row and col
158#if (DIODE_DIRECTION == COL2ROW)
129 unselect_rows(); 159 unselect_rows();
130 init_cols(); 160 init_cols();
161#else // ROW2COL
162 unselect_cols();
163 init_rows();
164#endif
131 165
132 // initialize matrix state: all keys off 166 // initialize matrix state: all keys off
133 for (uint8_t i=0; i < MATRIX_ROWS; i++) { 167 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
134 matrix[i] = 0; 168 matrix[i] = 0;
169 matrix_raw[i] = 0;
135 matrix_debouncing[i] = 0; 170 matrix_debouncing[i] = 0;
136 } 171 }
137 172
@@ -141,71 +176,60 @@ void matrix_init(void) {
141uint8_t matrix_scan(void) 176uint8_t matrix_scan(void)
142{ 177{
143 178
144#if DIODE_DIRECTION == COL2ROW 179#if (DIODE_DIRECTION == COL2ROW)
145 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
146 select_row(i);
147 wait_us(30); // without this wait read unstable value.
148 matrix_row_t cols = read_cols();
149 if (matrix_debouncing[i] != cols) {
150 matrix_debouncing[i] = cols;
151 if (debouncing) {
152 debug("bounce!: "); debug_hex(debouncing); debug("\n");
153 }
154 debouncing = DEBOUNCING_DELAY;
155 }
156 unselect_rows();
157 }
158 180
159 if (debouncing) { 181 // Set row, read cols
160 if (--debouncing) { 182 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
161 wait_ms(1); 183# if (DEBOUNCING_DELAY > 0)
162 } else { 184 bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row);
163 for (uint8_t i = 0; i < MATRIX_ROWS; i++) { 185
164 matrix[i] = matrix_debouncing[i]; 186 if (matrix_changed) {
187 debouncing = true;
188 debouncing_time = timer_read();
165 } 189 }
166 } 190
191# else
192 read_cols_on_row(matrix, current_row);
193# endif
194
167 } 195 }
168#else 196
169 for (uint8_t i = 0; i < MATRIX_COLS; i++) { 197#else // ROW2COL
170 select_row(i); 198
171 wait_us(30); // without this wait read unstable value. 199 // Set col, read rows
172 matrix_row_t rows = read_cols(); 200 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
173 if (matrix_reversed_debouncing[i] != rows) { 201# if (DEBOUNCING_DELAY > 0)
174 matrix_reversed_debouncing[i] = rows; 202 bool matrix_changed = read_rows_on_col(matrix_debouncing, current_col);
175 if (debouncing) { 203 if (matrix_changed) {
176 debug("bounce!: "); debug_hex(debouncing); debug("\n"); 204 debouncing = true;
205 debouncing_time = timer_read();
177 } 206 }
178 debouncing = DEBOUNCING_DELAY; 207# else
179 } 208 read_rows_on_col(matrix, current_col);
180 unselect_rows(); 209# endif
210
181 } 211 }
182 212
183 if (debouncing) { 213#endif
184 if (--debouncing) { 214
185 wait_ms(1); 215# if (DEBOUNCING_DELAY > 0)
186 } else { 216 if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
187 for (uint8_t i = 0; i < MATRIX_COLS; i++) { 217 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
188 matrix_reversed[i] = matrix_reversed_debouncing[i]; 218 matrix[i] = matrix_debouncing[i];
189 } 219 }
220 debouncing = false;
190 } 221 }
191 } 222# endif
192 for (uint8_t y = 0; y < MATRIX_ROWS; y++) {
193 matrix_row_t row = 0;
194 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
195 row |= ((matrix_reversed[x] & (1<<y)) >> y) << x;
196 }
197 matrix[y] = row;
198 }
199#endif
200 223
201 matrix_scan_quantum(); 224 matrix_scan_quantum();
202
203 return 1; 225 return 1;
204} 226}
205 227
206bool matrix_is_modified(void) 228bool matrix_is_modified(void)
207{ 229{
230#if (DEBOUNCING_DELAY > 0)
208 if (debouncing) return false; 231 if (debouncing) return false;
232#endif
209 return true; 233 return true;
210} 234}
211 235
@@ -218,15 +242,22 @@ bool matrix_is_on(uint8_t row, uint8_t col)
218inline 242inline
219matrix_row_t matrix_get_row(uint8_t row) 243matrix_row_t matrix_get_row(uint8_t row)
220{ 244{
245 // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
246 // switch blocker installed and the switch is always pressed.
247#ifdef MATRIX_MASKED
248 return matrix[row] & matrix_mask[row];
249#else
221 return matrix[row]; 250 return matrix[row];
251#endif
222} 252}
223 253
224void matrix_print(void) 254void matrix_print(void)
225{ 255{
226 print("\nr/c 0123456789ABCDEF\n"); 256 print_matrix_header();
257
227 for (uint8_t row = 0; row < MATRIX_ROWS; row++) { 258 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
228 phex(row); print(": "); 259 phex(row); print(": ");
229 pbin_reverse16(matrix_get_row(row)); 260 print_matrix_row(row);
230 print("\n"); 261 print("\n");
231 } 262 }
232} 263}
@@ -235,63 +266,148 @@ uint8_t matrix_key_count(void)
235{ 266{
236 uint8_t count = 0; 267 uint8_t count = 0;
237 for (uint8_t i = 0; i < MATRIX_ROWS; i++) { 268 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
238 count += bitpop16(matrix[i]); 269 count += matrix_bitpop(i);
239 } 270 }
240 return count; 271 return count;
241} 272}
242 273
274
275
276#if (DIODE_DIRECTION == COL2ROW)
277
243static void init_cols(void) 278static void init_cols(void)
244{ 279{
245#if DIODE_DIRECTION == COL2ROW 280 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
246 for(int x = 0; x < MATRIX_COLS; x++) { 281 uint8_t pin = col_pins[x];
247 int pin = col_pins[x]; 282 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
248#else 283 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
249 for(int x = 0; x < MATRIX_ROWS; x++) {
250 int pin = row_pins[x];
251#endif
252 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF);
253 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF);
254 } 284 }
255} 285}
256 286
257static matrix_row_t read_cols(void) 287static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
258{ 288{
259 matrix_row_t result = 0; 289 // Store last value of row prior to reading
290 matrix_row_t last_row_value = current_matrix[current_row];
260 291
261#if DIODE_DIRECTION == COL2ROW 292 // Clear data in matrix row
262 for(int x = 0; x < MATRIX_COLS; x++) { 293 current_matrix[current_row] = 0;
263 int pin = col_pins[x]; 294
264#else 295 // Select row and wait for row selecton to stabilize
265 for(int x = 0; x < MATRIX_ROWS; x++) { 296 select_row(current_row);
266 int pin = row_pins[x]; 297 wait_us(30);
267#endif 298
268 result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (SHIFTER << x); 299 // For each col...
300 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
301
302 // Select the col pin to read (active low)
303 uint8_t pin = col_pins[col_index];
304 uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
305
306 // Populate the matrix row with the state of the col pin
307 current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
269 } 308 }
270 return result; 309
310 // Unselect row
311 unselect_row(current_row);
312
313 return (last_row_value != current_matrix[current_row]);
314}
315
316static void select_row(uint8_t row)
317{
318 uint8_t pin = row_pins[row];
319 _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
320 _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
321}
322
323static void unselect_row(uint8_t row)
324{
325 uint8_t pin = row_pins[row];
326 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
327 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
271} 328}
272 329
273static void unselect_rows(void) 330static void unselect_rows(void)
274{ 331{
275#if DIODE_DIRECTION == COL2ROW 332 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
276 for(int x = 0; x < MATRIX_ROWS; x++) { 333 uint8_t pin = row_pins[x];
277 int pin = row_pins[x]; 334 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
278#else 335 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
279 for(int x = 0; x < MATRIX_COLS; x++) {
280 int pin = col_pins[x];
281#endif
282 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF);
283 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF);
284 } 336 }
285} 337}
286 338
287static void select_row(uint8_t row) 339#else // ROW2COL
340
341static void init_rows(void)
288{ 342{
343 for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
344 uint8_t pin = row_pins[x];
345 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
346 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
347 }
348}
289 349
290#if DIODE_DIRECTION == COL2ROW 350static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
291 int pin = row_pins[row]; 351{
292#else 352 bool matrix_changed = false;
293 int pin = col_pins[row]; 353
294#endif 354 // Select col and wait for col selecton to stabilize
295 _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); 355 select_col(current_col);
296 _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); 356 wait_us(30);
357
358 // For each row...
359 for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++)
360 {
361
362 // Store last value of row prior to reading
363 matrix_row_t last_row_value = current_matrix[row_index];
364
365 // Check row pin state
366 if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
367 {
368 // Pin LO, set col bit
369 current_matrix[row_index] |= (ROW_SHIFTER << current_col);
370 }
371 else
372 {
373 // Pin HI, clear col bit
374 current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
375 }
376
377 // Determine if the matrix changed state
378 if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
379 {
380 matrix_changed = true;
381 }
382 }
383
384 // Unselect col
385 unselect_col(current_col);
386
387 return matrix_changed;
297} 388}
389
390static void select_col(uint8_t col)
391{
392 uint8_t pin = col_pins[col];
393 _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
394 _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
395}
396
397static void unselect_col(uint8_t col)
398{
399 uint8_t pin = col_pins[col];
400 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
401 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
402}
403
404static void unselect_cols(void)
405{
406 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
407 uint8_t pin = col_pins[x];
408 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
409 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
410 }
411}
412
413#endif
diff --git a/readme.md b/readme.md
index 2364b5301..18ad1a794 100644
--- a/readme.md
+++ b/readme.md
@@ -241,6 +241,7 @@ You can also add extra options at the end of the make command line, after the ta
241* `make COLOR=false` - turns off color output 241* `make COLOR=false` - turns off color output
242* `make SILENT=true` - turns off output besides errors/warnings 242* `make SILENT=true` - turns off output besides errors/warnings
243* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) 243* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug)
244* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands)
244 245
245The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. 246The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.
246 247
diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c
index f3e1bf623..5f29bc0b4 100644
--- a/tmk_core/common/command.c
+++ b/tmk_core/common/command.c
@@ -379,11 +379,11 @@ static bool command_common(uint8_t code)
379 debug_enable = !debug_enable; 379 debug_enable = !debug_enable;
380 if (debug_enable) { 380 if (debug_enable) {
381 print("\ndebug: on\n"); 381 print("\ndebug: on\n");
382 debug_matrix = true;
383 debug_keyboard = true;
384 debug_mouse = true;
385 } else { 382 } else {
386 print("\ndebug: off\n"); 383 print("\ndebug: off\n");
384 debug_matrix = false;
385 debug_keyboard = false;
386 debug_mouse = false;
387 } 387 }
388 break; 388 break;
389 389