diff options
56 files changed, 2420 insertions, 447 deletions
| @@ -38,7 +38,7 @@ ERROR_FILE := $(BUILD_DIR)/error_occured  MAKEFILE_INCLUDED=yes -# Helper function to process the newt element of a space separated path  +# Helper function to process the newt element of a space separated path  # It works a bit like the traditional functional head tail  # so the CURRENT_PATH_ELEMENT will beome the new head  # and the PATH_ELEMENTS are the rest that are still unprocessed @@ -47,16 +47,16 @@ define NEXT_PATH_ELEMENT      $$(eval PATH_ELEMENTS := $$(wordlist  2,9999,$$(PATH_ELEMENTS)))  endef -# We change the / to spaces so that we more easily can work with the elements  +# We change the / to spaces so that we more easily can work with the elements  # separately  PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))  # Initialize the path elements list for further processing  $(eval $(call NEXT_PATH_ELEMENT)) -# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct  +# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct  # variables depending on which directory you stand in. -# It's really a very simple if else chain, if you squint enough,  -# but the makefile syntax makes it very verbose.  +# It's really a very simple if else chain, if you squint enough, +# but the makefile syntax makes it very verbose.  # If we are in a subfolder of keyboards  ifeq ($(CURRENT_PATH_ELEMENT),keyboards)      $(eval $(call NEXT_PATH_ELEMENT)) @@ -111,7 +111,7 @@ endif  .DEFAULT_GOAL := all  ifneq ($(KEYMAP),)      ifeq ($(SUBPROJECT),) -         # Inside a keymap folder, just build the keymap, with the  +         # Inside a keymap folder, just build the keymap, with the           # default subproject          .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)      else @@ -163,7 +163,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3      ifneq ($1,)          ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)              MATCHED_ITEM := $$(firstword $1) -        else  +        else              $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))          endif      endif @@ -171,10 +171,10 @@ endef  # A recursive helper function for finding the longest match  # $1 The list to be checed -# It works by always removing the currently matched item from the list  +# It works by always removing the currently matched item from the list  # and call itself recursively, until a match is found  define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 -    # Stop the recursion when the list is empty  +    # Stop the recursion when the list is empty      ifneq ($1,)          RULE_BEFORE := $$(RULE)          $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1)) @@ -270,7 +270,7 @@ define PARSE_KEYBOARD          $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))  	# If there's no matching subproject, we assume it's the default  	# This will allow you to leave the subproject part of the target out -    else  +    else          $$(eval $$(call PARSE_SUBPROJECT,))      endif  endef @@ -285,7 +285,7 @@ endef  # When entering this, the keyboard and subproject are known, so now we need  # to determine which keymaps are going to get compiled  define PARSE_SUBPROJECT -    # If we want to compile the default subproject, then we need to  +    # If we want to compile the default subproject, then we need to      # include the correct makefile to determine the actual name of it      CURRENT_SP := $1      ifeq ($$(CURRENT_SP),) @@ -304,7 +304,7 @@ define PARSE_SUBPROJECT           endif      endif      # The special allsp is handled later -    ifneq ($$(CURRENT_SP),allsp)  +    ifneq ($$(CURRENT_SP),allsp)          # get a list of all keymaps          KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))          ifneq ($$(CURRENT_SP),) @@ -343,7 +343,7 @@ define PARSE_SUBPROJECT      endif  endef -# If we want to parse all subprojects, but the keyboard doesn't have any,  +# If we want to parse all subprojects, but the keyboard doesn't have any,  # then use defaultsp instead  define PARSE_ALL_SUBPROJECTS      ifeq ($$(SUBPROJECTS),) @@ -448,7 +448,7 @@ endef  # Set the silent mode depending on if we are trying to compile multiple keyboards or not -# By default it's on in that case, but it can be overriden by specifying silent=false  +# By default it's on in that case, but it can be overriden by specifying silent=false  # from the command line  define SET_SILENT_MODE      ifdef SUB_IS_SILENT @@ -481,11 +481,12 @@ endef  # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps  SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))  .PHONY: $(SUBPROJECTS) -$(SUBPROJECTS): %: %-allkm  +$(SUBPROJECTS): %: %-allkm  # Let's match everything, we handle all the rule parsing ourselves  .PHONY: % -%:  +ifndef SKIP_GIT +%:  	# Check if we have the CMP tool installed  	cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;  	# Check if the submodules are dirty, and display a warning if they are @@ -505,8 +506,24 @@ $(SUBPROJECTS): %: %-allkm  	# But we return the error code at the end, to trigger travis failures  	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))  	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; -	$(foreach TEST,$(TESTS),$(RUN_TEST))  +	$(foreach TEST,$(TESTS),$(RUN_TEST)) +	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +else +%: +	# Check if we have the CMP tool installed +	cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; +	rm -f $(ERROR_FILE) > /dev/null 2>&1 +	$(eval $(call PARSE_RULE,$@)) +	$(eval $(call SET_SILENT_MODE)) +	# Run all the commands in the same shell, notice the + at the first line +	# it has to be there to allow parallel execution of the submake +	# This always tries to compile everything, even if error occurs in the middle +	# But we return the error code at the end, to trigger travis failures +	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) +	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +	$(foreach TEST,$(TESTS),$(RUN_TEST))  	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +endif  # All should compile everything  .PHONY: all @@ -526,7 +543,11 @@ test: test-all  test-clean: test-all-clean  # Generate the version.h file -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +ifndef SKIP_GIT +    GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +else +    GIT_VERSION := NA +endif  BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")  $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)  $(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) diff --git a/doc/keycode.txt b/doc/keycode.txt index 5a42c50bf..687406fda 100644 --- a/doc/keycode.txt +++ b/doc/keycode.txt @@ -84,7 +84,7 @@ KC_PAUSE            KC_PAUS         48 Keyboard Pause1  KC_INSERT           KC_INS          49 Keyboard Insert1  KC_HOME                             4A Keyboard Home1  KC_PGUP                             4B Keyboard PageUp1 -KC_DELETE           KC_DELETE       4C Keyboard Delete Forward +KC_DELETE           KC_DEL          4C Keyboard Delete Forward  KC_END                              4D Keyboard End1  KC_PGDOWN           KC_PGDN         4E Keyboard PageDown1  KC_RIGHT            KC_RGHT         4F Keyboard RightArrow1 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 @@ +Dvorak support, plover support, gaming support + +I'm used to the Kinesis, so originally I was just going to patch up +the thumb keys to be more familiar. But the ergodox is really well +suited to NKRO support in Plover, so I added a layer for that, and +then I remembered that dvorak can be really annoying for video +games (try to reach WASD), so I added a layer for that. + +The result is probably a bit idiosyncratic, but it works for me. + +(I also don't have any press/hold distinction keys, because that +confuses my fuzzy little brain.) + +Contributed 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 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define PLVR 2 // media keys +#define QWRT 3 // qwerty layer for gaming + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------.           ,--------------------------------------------------. + * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   \    | + * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| + * | Tab    |   '  |   ,  |   .  |   P  |   Y  |  L1  |           |  L2  |   F  |   G  |   C  |   R  |   L  |   /    | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * | LGui   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    | + * |--------+------+------+------+------+------| Esc  |           |  L3  |------+------+------+------+------+--------| + * | LShift |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | RShift | + * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' + *   |Lalt  |  Grv |      | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt | + *   `----------------------------------'                                       `----------------------------------' + *                                        ,-------------.       ,---------------. + *                                        | LCtrl| Alt  |       | LGui | RCtrl  | + *                                 ,------|------|------|       |------+--------+------. + *                                 |      |      | Home |       | PgUp |        |      | + *                                 |Backsp|Delete|------|       |------| Enter  |Space | + *                                 |   ace|      | End  |       | PgDn |        |      | + *                                 `--------------------'       `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP(  // layer 0 : default +        // left hand +        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_ESC, +        KC_TAB,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   MO(SYMB), +        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I, +        KC_LSFT,        KC_SCLN,        KC_Q,    KC_J,   KC_K,   KC_X,   KC_ESC, +        KC_LALT,        KC_GRV,         KC_ESC,  KC_LEFT,KC_RGHT, +                                               KC_LCTL,  KC_LALT, +                                                              KC_HOME, +                                               KC_BSPC,KC_DEL,KC_END, +        // right hand +            KC_ESC,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLS, +             TG(PLVR),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH, +                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS, +             TG(QWRT),KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,             KC_RSFT, +                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT, +             KC_LGUI,        KC_RCTL, +             KC_PGUP, +             KC_PGDN,KC_ENT, KC_SPC +    ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------.           ,--------------------------------------------------. + * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  | + * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| + * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |  KP7 |  KP8 | KP9  |  KP* |   F12  | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |  KP4 |  KP5 | KP6  |  KP+ |        | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |  KP1 |  KP2 | KP3  |  KP/ |        | + * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' + *   |      |      |      |      |      |                                       |      |  KP. | KP0  |  KP= |      | + *   `----------------------------------'                                       `----------------------------------' + *                                        ,-------------.       ,-------------. + *                                        |      |      |       |      |      | + *                                 ,------|------|------|       |------+------+------. + *                                 |      |      |      |       |      |      |      | + *                                 |      |      |------|       |------|      |      | + *                                 |      |      |      |       |      |      |      | + *                                 `--------------------'       `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( +       // left hand +       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS, +       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, +       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, +       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, +       KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, +                                       KC_TRNS,KC_TRNS, +                                               KC_TRNS, +                               KC_TRNS,KC_TRNS,KC_TRNS, +       // right hand +       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11, +       KC_TRNS, KC_UP,   KC_P7,  KC_P8,   KC_P9,   KC_PAST, KC_F12, +                KC_DOWN, KC_P4,  KC_P5,   KC_P6,   KC_PPLS, KC_TRNS, +       KC_TRNS, KC_AMPR, KC_P1,  KC_P2,   KC_P3,   KC_PSLS, KC_TRNS, +                         KC_TRNS,KC_PDOT,  KC_P0,   KC_PEQL,  KC_TRNS, +       KC_TRNS, KC_TRNS, +       KC_TRNS, +       KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd + * + * ,--------------------------------------------------.           ,--------------------------------------------------. + * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        | + * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| + * |        |   1  |   2  |   3  |   4  |   5  |      |           | L2   |  6   |  7   |   8  |   9  |  0   |        | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |   q  |   w  |   e  |   r  |   t  |------|           |------|  y   |  u   |   i  |   o  |  p   |   [    | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * |        |   a  |   s  |   d  |   f  |   g  |      |           |      |  h   |  j   |   k  |   l  |  ;   |   '    | + * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' + *   |      |      |      |      |      |                                       |      |      |      |      |      | + *   `----------------------------------'                                       `----------------------------------' + *                                        ,-------------.       ,-------------. + *                                        |      |      |       |      |      | + *                                 ,------|------|------|       |------+------+------. + *                                 |      |      |      |       |      |      |      | + *                                 |   c  |   v  |------|       |------|  n   |  m   | + *                                 |      |      |      |       |      |      |      | + *                                 `--------------------'       `--------------------' + */ + +[PLVR] = KEYMAP(  // layout: layer 2: Steno for Plover +        // left hand +        KC_NO, KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO, +        KC_NO,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_TRNS, +        KC_NO,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T, +        KC_NO,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_NO, +        KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO, +                                      KC_FN4, KC_NO, +                                           KC_NO, +                                 KC_C,   KC_V,   KC_NO, +        // right hand +               KC_NO,  KC_NO,   KC_NO,   KC_NO,  KC_NO,   KC_NO,   KC_TRNS, +               TG(2),   KC_6,    KC_7,    KC_8,   KC_9,    KC_0,   KC_TRNS, +                        KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_LBRC, +               KC_NO,   KC_H,    KC_J,    KC_K,   KC_L, KC_SCLN,   KC_QUOT, +                              KC_TRNS, KC_TRNS,  KC_NO,   KC_NO,     KC_NO, +        KC_TRNS, KC_TRNS, +        KC_TRNS, +        KC_NO,  KC_N,   KC_M +), +/* Keymap 3: qwerty-ish + * + * ,--------------------------------------------------.           ,--------------------------------------------------. + * |   =    |   1  |   2  |   3  |   4  |   5  | Esc  |           | Esc  |   6  |   7  |   8  |   9  |   0  |   -    | + * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| + * | Tab    |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |   \    | + * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| + * | LGui   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |  LGui  | + * |--------+------+------+------+------+------| Spc  |           |  L3  |------+------+------+------+------+--------| + * | LShift |   Z  |   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |   /  | RShift | + * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' + *   | Lalt |  Grv |  '"  | Left | Right|                                       |  Up  | Down |   [  |   ]  | RAlt | + *   `----------------------------------'                                       `----------------------------------' + *                                        ,-------------.       ,---------------. + *                                        | LCtrl| LAlt |       | LGui | RCtrl  | + *                                 ,------|------|------|       |------+--------+------. + *                                 |      |      | Home |       | PgUp |        |      | + *                                 |Backsp|Delete|------|       |------| Enter  |Space | + *                                 |   ace|      | End  |       | PgDn |        |      | + *                                 `--------------------'       `----------------------' + */ +[QWRT] = KEYMAP(  // layer 3: qwerty for gaming +        // left hand +        KC_EQL,         KC_1,         KC_2,   KC_3,   KC_4,   KC_5,   KC_ESC, +        KC_TAB,         KC_Q,         KC_W,   KC_E,   KC_R,   KC_T,   TG(SYMB), +        KC_LGUI,        KC_A,         KC_S,   KC_D,   KC_F,   KC_G, +        KC_LSFT,        KC_Z,         KC_X,   KC_C,   KC_V,   KC_B,   KC_SPACE, +        KC_LALT,      KC_GRV,      KC_QUOT,  KC_LEFT,KC_RGHT, +										        KC_LCTL,  KC_LALT, +										                       KC_HOME, +										        KC_BSPC,KC_DEL,KC_END, +        // right hand +             KC_ESC,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_MINS, +             KC_NO,       KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_BSLS, +                          KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,          KC_QUOT, +             TG(QWRT),    KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT, +                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_RALT, +              KC_LGUI,        KC_RCTL, +              KC_PGUP, +              KC_PGDN,KC_ENT, KC_SPC +    ), +}; + +const uint16_t PROGMEM fn_actions[] = { +    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +      switch(id) { +        case 0: +        if (record->event.pressed) { +          register_code(KC_RSFT); +        } else { +          unregister_code(KC_RSFT); +        } +        break; +      } +    return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + +    uint8_t layer = biton32(layer_state); + +    ergodox_board_led_off(); +    ergodox_right_led_1_off(); +    ergodox_right_led_2_off(); +    ergodox_right_led_3_off(); +    switch (layer) { +      // TODO: Make this relevant to the ErgoDox EZ. +        case 1: +            ergodox_right_led_1_on(); +            break; +        case 2: +            ergodox_right_led_2_on(); +            break; +		case 3: +			ergodox_right_led_3_on(); +			break; +        default: +            // none +            break; +    } + +}; 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 @@ -BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE  = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE  = yes # Audio control and System control(+450) -CONSOLE_ENABLE   = no  # Console for debug(+400) -COMMAND_ENABLE   = no  # Commands for debug and configuration -CUSTOM_MATRIX    = yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE      = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE      = no  # MIDI controls -UNICODE_ENABLE   = yes # Unicode -  ifndef QUANTUM_DIR  	include ../../../../Makefile  endif 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] = {          KC_LGUI, KC_GRV,  KC_BSLS, KC_LEFT, KC_RGHT,                                                       KC_LCTL, KC_LALT,                                                                KC_HOME, -                                            KC_SPC,  KC_BSPC, KC_END, +                                            KC_BSPC,  KC_DEL, KC_END,          // right hand          MO(FN2), KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,          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 @@  # sethbc's Ergodox EZ keymap -Largely based on the Ergodox Infinity default keymap +Largely based on the Ergodox Infinity default keymap, but layer locking has been +removed 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 @@ +AUDIO_ENABLE:=no +BACKLIGHT_ENABLE:=no +BLUETOOTH_ENABLE:=no +BOOTMAGIC_ENABLE:=no +COMMAND_ENABLE:=no +CONSOLE_ENABLE:=no +EXTRAKEY_ENABLE:=yes +MIDI_ENABLE:=no +MOUSEKEY_ENABLE:=yes +NKRO_ENABLE:=no +RGBLIGHT_ENABLE:=no +SLEEP_LED_ENABLE:=no +TAP_DANCE_ENABLE:=yes +UNICODEMAP_ENABLE:=no +UNICODE_ENABLE:=no + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif 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 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#ifndef NO_DEBUG +  #define NO_DEBUG +#endif +#ifndef NO_PRINT +  #define NO_PRINT +#endif + +#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 @@ +#include <stdbool.h> + +#include "ergodox.h" +#include "action_layer.h" + +enum { +  BASE = 0,     // Default layer +  ARROWS = 1,   // Arrows and Fx keys layer +  MOUSE = 2,    // Mouse movement and buttons layer +  PARENS = 3,   // Parenthesis easy access layer + +  TD_L = 0,     // Tap dance index for left shift +  TD_R = 1      // Tap dance index for right shift +}; + +// See the videck.png image for a visualization of the layout. +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +  [BASE] = KEYMAP( +    // left hand +    KC_GRV,     KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_HOME, +    KC_EQL,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_END, +    MO(PARENS), KC_A,    KC_S,    KC_D,    KC_F,    KC_G, +    TD(TD_L),   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_BSPC, +    KC_LCTL,    KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE, +                                                    KC_ESC,  KC_LGUI, +                                                             TG(MOUSE), +                                           KC_SPC,  KC_TAB,  TG(ARROWS), +    // right hand +    KC_PGUP, KC_6,   KC_7,    KC_8,    KC_9,   KC_0,    KC_MINS, +    KC_PGDN, KC_Y,   KC_U,    KC_I,    KC_O,   KC_P,    KC_BSLS, +             KC_H,   KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT, +    KC_DELT, KC_N,   KC_M,    KC_COMM, KC_DOT, KC_SLSH, TD(TD_R), +                     KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL, +    KC_APP,  KC_ESC, +    KC_INS, +    KC_SLCK, KC_ENT, KC_SPC +  ), +  [ARROWS] = KEYMAP( +    // left hand +    KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +                                                 KC_TRNS, KC_TRNS, +                                                          KC_NO, +                                        KC_TRNS, KC_TRNS, KC_TRNS, +    // right hand +    KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, +             KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, +    KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS +  ), +  [MOUSE] = KEYMAP( +    // left hand +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +                                                 KC_BTN3, KC_TRNS, +                                                          KC_TRNS, +                                        KC_BTN1, KC_BTN2, KC_NO, +    // right hand +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +             KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, +    KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS +  ), +  [PARENS] = KEYMAP( +    // left hand +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +                                                 KC_TRNS, KC_TRNS, +                                                          KC_NO, +                                        KC_TRNS, KC_TRNS, KC_NO, +    // right hand +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, +             KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, +                      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +    KC_TRNS, KC_TRNS, +    KC_TRNS, +    KC_TRNS, KC_TRNS, KC_TRNS +  ) +}; + +typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc); + +typedef struct +{ +  uint16_t kc1; +  uint16_t kc2; +  videck_tap_dance_trigger_t trigger; +} videck_tap_dance_tuple_t; + +static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) { +  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data; + +  if (state->count == 1) { +    register_code16 (tuple->kc1); +  } else if (state->count == 2) { +    register_code16 (tuple->kc2); +  } +} + +static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) { +  videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data; + +  if (state->count == 1) { +    unregister_code16 (tuple->kc1); +  } else if (state->count == 2) { +    unregister_code16 (tuple->kc2); +    tuple->trigger(tuple->kc2); +  } +} + +static bool caps_lock_is_on; + +// Toggles caps lock status. +static void videck_caps_trigger (const uint16_t kc) { +  caps_lock_is_on ^= true; +} + +#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \ +    .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \ +    .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }),  \ +  } + +qk_tap_dance_action_t tap_dance_actions[] = { +  [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger), +  [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger) +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +  ergodox_led_all_set(LED_BRIGHTNESS_LO); +  caps_lock_is_on = false; +}; + +static void indicate_using_led(const uint8_t led, const bool enabled) { +  if (enabled) { +    ergodox_right_led_on(led); +  } else { +    ergodox_right_led_off(led); +  } +} + +static inline void indicate_caps_lock_state(const bool enabled) { +  indicate_using_led(1, enabled); +} + +static inline void indicate_arrows_layer_state(const bool enabled) { +  indicate_using_led(2, enabled); +} + +static inline void indicate_mouse_layer_state(const bool enabled) { +  indicate_using_led(3, enabled); +} + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +  // Check if we have shift locked. +  indicate_caps_lock_state(caps_lock_is_on); +  indicate_arrows_layer_state(IS_LAYER_ON(ARROWS)); +  indicate_mouse_layer_state(IS_LAYER_ON(MOUSE)); +}; 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 @@ +ViDeck keymap for ErgoDox +========================= + +This is a QWERTY layout based on the US layout, where Vi functionality has been +especially considered. + +# Features +* Mouse movements using the Vi movement keys. +* Vi movement keys doubling as arrow keys. +* Shift lock using double tap. +* A coder's modifier key for easy input of parenthesis. +* Acess to the escape key using either thumb. +* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch +  to a non-US layout once in a while in X). + +# Missing keys +* Caps Lock (shift lock is used instead). +* Pause/Break. +* Print Screen. + +# LEDs +* Shift lock is indicated using first LED. +* Arrow keys layer is indicated using second LED. +* 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 @@ +[ +  { +    "backcolor": "#333333", +    "background": { +      "name": "PBT Black", +      "style": "background-image: url('/bg/plastic/pbt-black.png');" +    }, +    "switchMount": "cherry", +    "switchBrand": "gateron", +    "switchType": "KS-3-Red" +  }, +  [ +    { +      "x": 3.5, +      "c": "#323232", +      "t": "#ffffff\n\n\n#ac97d8" +    }, +    "#\n3\n\nF3", +    { +      "x": 10.5 +    }, +    "*\n8\n\nF8" +  ], +  [ +    { +      "y": -0.875, +      "x": 2.5 +    }, +    "@\n2\n\nF2", +    { +      "x": 1 +    }, +    "$\n4\n\nF4", +    { +      "x": 8.5 +    }, +    "&\n7\n\nF7", +    { +      "x": 1, +      "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454" +    }, +    "(\n9\n\nF9" +  ], +  [ +    { +      "y": -0.875, +      "x": 5.5, +      "t": "#ffffff\n\n\n#ac97d8" +    }, +    "%\n5\n\nF5", +    { +      "t": "#ffffff" +    }, +    "home", +    { +      "x": 4.5 +    }, +    "pgup", +    { +      "t": "#ffffff\n\n\n#ac97d8" +    }, +    "^\n6\n\nF6" +  ], +  [ +    { +      "y": -0.875, +      "t": "#ffffff", +      "w": 1.5 +    }, +    "~\n`", +    { +      "t": "#ffffff\n\n\n#ac97d8" +    }, +    "!\n1\n\nF1", +    { +      "x": 14.5 +    }, +    ")\n0\n\nF10", +    { +      "w": 1.5 +    }, +    "_\n-\n\nF11" +  ], +  [ +    { +      "y": -0.375, +      "x": 3.5, +      "t": "#ffffff" +    }, +    "E", +    { +      "x": 10.5 +    }, +    "I" +  ], +  [ +    { +      "y": -0.875, +      "x": 2.5 +    }, +    "W", +    { +      "x": 1 +    }, +    "R", +    { +      "x": 8.5 +    }, +    "U", +    { +      "x": 1, +      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" +    }, +    "O\n\n\n\n\n\n\n\n\n{" +  ], +  [ +    { +      "y": -0.875, +      "x": 5.5, +      "t": "#ffffff" +    }, +    "T", +    { +      "h": 1.5 +    }, +    "end", +    { +      "x": 4.5, +      "h": 1.5 +    }, +    "pgdn", +    "Y" +  ], +  [ +    { +      "y": -0.875, +      "w": 1.5 +    }, +    "+\n=", +    "Q", +    { +      "x": 14.5, +      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" +    }, +    "P\n\n\n\n\n\n\n\n\n}", +    { +      "t": "#ffffff\n\n\n#ac97d8", +      "w": 1.5 +    }, +    "|\n\\\n\nF12" +  ], +  [ +    { +      "y": -0.375, +      "x": 3.5, +      "t": "#ffffff" +    }, +    "D", +    { +      "x": 10.5, +      "t": "#ffffff\n\n#5eb1e7\n#ac97d8" +    }, +    "K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>" +  ], +  [ +    { +      "y": -0.875, +      "x": 2.5, +      "t": "#ffffff" +    }, +    "S", +    { +      "x": 1, +      "n": true +    }, +    "F", +    { +      "x": 8.5, +      "t": "#ffffff\n\n#5eb1e7\n#ac97d8", +      "n": true +    }, +    "J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>", +    { +      "x": 1, +      "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615" +    }, +    "L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n(" +  ], +  [ +    { +      "y": -0.875, +      "x": 5.5, +      "t": "#ffffff" +    }, +    "G", +    { +      "x": 6.5, +      "t": "#ffffff\n\n#5eb1e7\n#ac97d8" +    }, +    "H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>" +  ], +  [ +    { +      "y": -0.875, +      "t": "#f8d615", +      "a": 6, +      "w": 1.5 +    }, +    "( ) [ ] { }", +    { +      "t": "#ffffff", +      "a": 4 +    }, +    "A", +    { +      "x": 14.5, +      "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615" +    }, +    ":\n;\n\n\n\n\n\nÖ\n\n)", +    { +      "t": "#ffffff\n\n\n\n\n\n\n#60605b", +      "w": 1.5 +    }, +    "\"\n'\n\n\n\n\n\nÄ" +  ], +  [ +    { +      "y": -0.625, +      "x": 6.5, +      "t": "#ffffff", +      "h": 1.5 +    }, +    "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>", +    { +      "x": 4.5, +      "h": 1.5 +    }, +    "<i class='kb kb-Unicode-DeleteRight-Big'></i>" +  ], +  [ +    { +      "y": -0.75, +      "x": 3.5 +    }, +    "C", +    { +      "x": 10.5 +    }, +    "<\n," +  ], +  [ +    { +      "y": -0.875, +      "x": 2.5 +    }, +    "X", +    { +      "x": 1 +    }, +    "V", +    { +      "x": 8.5 +    }, +    "M", +    { +      "x": 1, +      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" +    }, +    ">\n.\n\n\n\n\n\n\n\n[" +  ], +  [ +    { +      "y": -0.875, +      "x": 5.5, +      "t": "#ffffff" +    }, +    "B", +    { +      "x": 6.5 +    }, +    "N" +  ], +  [ +    { +      "y": -0.875, +      "t": "#ffffff\n\n#f67f00", +      "a": 6, +      "fa": [ +        5 +      ], +      "w": 1.5 +    }, +    "⇑\n\n2-tap<br/>locks", +    { +      "t": "#ffffff", +      "a": 4, +      "f": 3 +    }, +    "Z", +    { +      "x": 14.5, +      "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615", +      "f": 3 +    }, +    "?\n/\n\n\n\n\n\n\n\n]", +    { +      "t": "#ffffff\n\n#f67f00", +      "a": 6, +      "f": 3, +      "w": 1.5 +    }, +    "⇑\n\n2-tap<br/>locks" +  ], +  [ +    { +      "y": -0.375, +      "x": 3.5, +      "t": "#ffffff", +      "a": 4 +    }, +    "\n<i class='kb kb-Multimedia-Volume-Up-2'></i>", +    { +      "x": 10.5, +      "f": 3 +    }, +    "}\n]" +  ], +  [ +    { +      "y": -0.875, +      "x": 2.5 +    }, +    "\n<i class='kb kb-Multimedia-Volume-Down-1'></i>", +    { +      "x": 1 +    }, +    "\n<i class='kb kb-Multimedia-Mute-1'></i>", +    { +      "x": 8.5, +      "t": "#ffffff\n\n\n\n\n\n\n#60605b", +      "f": 3 +    }, +    "{\n[\n\n\n\n\n\nÅ", +    { +      "x": 1, +      "t": "#ffffff", +      "f": 3 +    }, +    "+\n=" +  ], +  [ +    { +      "y": -0.75, +      "x": 0.5, +      "f": 3 +    }, +    "ctrl", +    { +      "f": 3 +    }, +    "alt", +    { +      "x": 14.5, +      "f": 3 +    }, +    "altgr", +    { +      "f": 3 +    }, +    "ctrl" +  ], +  [ +    { +      "r": 30, +      "rx": 6.5, +      "ry": 4.25, +      "y": -1, +      "x": 1, +      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7", +      "f": 3 +    }, +    "esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M", +    { +      "t": "#ffffff", +      "f": 7 +    }, +    "<i class='kb kb-logo-linux-tux'></i>" +  ], +  [ +    { +      "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7", +      "f": 3, +      "h": 2 +    }, +    "space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L", +    { +      "h": 2 +    }, +    "<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", +    { +      "t": "#5eb1e7" +    }, +    "<i class='fa fa-mouse-pointer'></i>" +  ], +  [ +    { +      "x": 2, +      "t": "#ac97d8" +    }, +    "<i class='fa fa-arrows'></i>" +  ], +  [ +    { +      "r": -30, +      "rx": 13, +      "y": -1, +      "x": -3, +      "t": "#ffffff" +    }, +    "<i class='kb kb-Hamburger-Menu'></i>", +    "esc" +  ], +  [ +    { +      "x": -3 +    }, +    "ins", +    { +      "h": 2 +    }, +    "<i class='kb kb-Return-2'></i>", +    { +      "h": 2 +    }, +    "space" +  ], +  [ +    { +      "x": -3 +    }, +    "scroll<br/>lock" +  ] +]
\ No newline at end of file diff --git a/keyboards/ergodox/keymaps/videck/videck.png b/keyboards/ergodox/keymaps/videck/videck.pngBinary files differ new file mode 100644 index 000000000..c99323f53 --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/videck.png 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 @@  #include "quantum.h"  #include "led.h" -/* GH60 LEDs  +/* GH60 LEDs   *   GPIO pads   *   0 F7 WASD LEDs   *   1 F6 ESC LED @@ -35,40 +35,41 @@ inline void gh60_wasd_leds_off(void)   	{ DDRF &= ~(1<<7); PORTF &= ~(1<<7); }      K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \      K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D  \  ) { \ -    { 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 }, \ -    { 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 }, \ -    { 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 }, \ -    { 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 }, \ -    { 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 }  \ +    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ +    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ +    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ +    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ +    { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    KC_NO,    K49, K4A, K4B, K4C, K4D }  \  } -/* ANSI valiant. No extra keys for ISO */ +/* ANSI variant. No extra keys for ISO */  #define KEYMAP_ANSI( \      K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \      K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \      K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,      K2D, \      K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,           K3D, \      K40, K41, K42,           K45,                     K4A, K4B, K4C, K4D  \ -) KEYMAP( \ -    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ -    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ -    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO,  K2D, \ -    K30, NO,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO,  K3D, \ -    K40, K41, K42,           K45,                NO,  K4A, K4B, K4C, K4D  \ -) +) { \ +    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ +    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ +    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO,    K2D }, \ +    { K30, KC_NO,    K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO,    K3D }, \ +    { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    KC_NO,    KC_NO,    K4A, K4B, K4C, K4D }  \ +} +/* HHKB Variant */  #define KEYMAP_HHKB( \      K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\      K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \      K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,      K2D, \      K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,      K3D, K3C, \      K40, K41, K42,           K45,                     K4A, K4B, K4C, K4D  \ -) KEYMAP( \ -    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ -    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ -    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO,  K2D, \ -    K30, NO,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ -    K40, K41, K42,           K45,                K49, K4A, K4B, K4C, K4D  \ -) +) { \ +    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ +    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ +    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO,    K2D }, \ +    { K30, KC_NO,    K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ +    { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    KC_NO,    K49, K4A, K4B, K4C, K4D }  \ +}  #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 @@  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {      /* 0: qwerty */      KEYMAP( -	ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, GRV,  \ -        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \ -        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NO,  ENT,  \ -        LSFT,FN1, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,FN0, RSFT, \ -        LCTL,LGUI,LALT,          SPC,                BSLS,RALT,RGUI,APP, RCTL), +	      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,\ +        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,\ +        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,\ +        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,\ +        KC_LCTL,KC_LGUI,KC_LALT,       KC_SPC,             KC_BSLS,KC_RALT,KC_RGUI,KC_APP,KC_RCTL),      /* 1: fn */  	KEYMAP( -        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \ -        TRNS,TRNS,UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS), +        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,\ +        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,\ +        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,\ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ +        KC_TRNS,KC_TRNS,KC_TRNS,       KC_TRNS,            KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),      /* 2: arrows */  	KEYMAP( -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP,   \ -        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,LEFT,DOWN,RGHT), +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,\ +        KC_TRNS,KC_TRNS,KC_TRNS,       KC_TRNS,            KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT),  };  const uint16_t PROGMEM fn_actions[] = { @@ -49,7 +49,7 @@ void matrix_scan_user(void) {  //Layer LED indicators      uint32_t layer = layer_state; -	 +      if (layer & (1<<1)) {          gh60_wasd_leds_on();          gh60_fn_led_on(); @@ -57,7 +57,7 @@ void matrix_scan_user(void) {          gh60_wasd_leds_off();          gh60_fn_led_off();      } -	 +      if (layer & (1<<2)) {          gh60_poker_leds_on();          gh60_esc_led_on(); @@ -65,5 +65,5 @@ void matrix_scan_user(void) {          gh60_poker_leds_off();          gh60_esc_led_off();      } -	 +  }; 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 @@  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     /* -   *  Base layer, pretty standard ANSI layout.  +   *  Base layer, pretty standard ANSI layout.     * ,-----------------------------------------------------------. -   * |FN12| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp | +   * |F(12)| 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |     * |-----------------------------------------------------------|     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|     * |-----------------------------------------------------------| @@ -22,13 +22,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * `-----------------------------------------------------------'     */  	[_BL] = KEYMAP( -        FN12,1,2,3,4,5,6,7,8,9,0,MINS,EQL,BSPC, \ -	TAB,Q,W,E,R,T,Y,U,I,O,P,LBRC,RBRC,BSLS, \ -        FN2,A,S,D,F,G,H,J,K,L,SCLN,QUOT,NO,ENT,  \ -        LSFT,NO,Z,X,C,V,B,N,M,COMM,DOT,SLSH,NO,RSFT, \ -        LCTL,LGUI,LALT,        SPC,      NO,RALT,FN0,APP, RCTL), -    -   /*   +        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, \ +	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, \ +        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,  \ +        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, \ +        KC_LCTL,KC_LGUI,KC_LALT,        KC_SPC,      KC_NO,KC_RALT,F(0),KC_APP,KC_RCTL), + +   /*     * Locking arrow keys to WASD for when you need dedicated arrow keys     * ,-----------------------------------------------------------.     * |    |  |   |   |   |   |   |   |   |   |   |   |   |       | @@ -43,14 +43,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * `-----------------------------------------------------------'     */  	[_AL] = KEYMAP( -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,UP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,   \ -        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS), +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ +        KC_TRNS,KC_TRNS,KC_UP,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_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, \ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \ +        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), -   /*  +   /*     * Primary function layer, mostly the same as the traditional Pok3r layout.     * ,-------------------------------------------------------------.     * |`~ | 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] = {     * `-------------------------------------------------------------'     */  	[_FL] = KEYMAP( -        GRAVE,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12, DELETE, \ -        TRNS,FN1,TRNS,TRNS,TRNS,TRNS,CALC,PGUP,UP,PGDN,PSCR,SLCK,PAUS,TRNS, \ -        TRNS,MUTE,_VOLDOWN,_VOLUP,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,FN3,TRNS,TRNS,TRNS,TRNS,END,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS), -    -   /*  +        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, \ +        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, \ +        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, \ +        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, \ +        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), + +   /*     * Locking layer for controlling the underglow. -   *  +   *     * ,-----------------------------------------------------------.     * |    |  |   |   |   |   |   |   |   |   |   |   |   |       |     * |-----------------------------------------------------------| @@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {     * `-----------------------------------------------------------'     */  	[_UL] = KEYMAP( -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,FN4,FN5,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ -        TRNS,TRNS,TRNS,FN6,FN7,FN8,FN9,FN10,FN11,TRNS,TRNS,TRNS,TRNS,TRNS,   \ -        TRNS,TRNS,TRNS,          TRNS,               TRNS,TRNS,TRNS,TRNS,TRNS), +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ +        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ +        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, \ +        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,   \ +        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),  };  enum function_id { @@ -124,7 +124,7 @@ const uint16_t PROGMEM fn_actions[] = {  const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)  { -  // MACRODOWN only works in this function  +  // MACRODOWN only works in this function        switch(id) {          case 0:            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 @@ +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif 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 @@ +#include "gh60.h" +#include "action_layer.h" + +#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +    /* 0: qwerty */ +  KEYMAP_HHKB( +	      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,\ +        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,\ +        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,\ +        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),\ +        KC_LCTL,KC_LALT,KC_LGUI,      KC_SPC,            KC_RGUI,KC_RALT,KC_APP,KC_RCTL), +    /* 1: fn */ +	KEYMAP_HHKB( +        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,\ +        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,\ +        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,\ +        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,\ +        KC_TRNS,KC_TRNS,KC_TRNS,      KC_TRNS,           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), +}; + +enum function_id { +    SHIFT_ESC, +}; + +const uint16_t PROGMEM fn_actions[] = { +    [0] = ACTION_FUNCTION(SHIFT_ESC), +    [1] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +      switch(id) { +        case 0: +          if (record->event.pressed) { +            register_code(KC_RSFT); +          } else { +            unregister_code(KC_RSFT); +          } +        break; +      } +    return MACRO_NONE; +}; + +void matrix_scan_user(void) { + +} + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { +  static uint8_t shift_esc_shift_mask; +  switch (id) { +    case SHIFT_ESC: +      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; +      if (record->event.pressed) { +        if (shift_esc_shift_mask) { +          add_key(KC_GRV); +          send_keyboard_report(); +        } else { +          add_key(KC_ESC); +          send_keyboard_report(); +        } +      } else { +        if (shift_esc_shift_mask) { +          del_key(KC_GRV); +          send_keyboard_report(); +        } else { +          del_key(KC_ESC); +          send_keyboard_report(); +        } +      } +      break; +  } +} 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 @@   * @details Frequency of the system timer that drives the system ticks. This   *          setting also defines the system tick time unit.   */ -#define CH_CFG_ST_FREQUENCY                 1000 +#define CH_CFG_ST_FREQUENCY                 100000  /**   * @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)          }      #endif -        wait_us(1); // need wait to settle pin state +        // need wait to settle pin state +        // if you wait too short, or have a too high update rate +        // the keyboard might freeze, or there might not be enough +        // processing power to update the LCD screen properly. +        // 20us, or two ticks at 100000Hz seems to be OK +        wait_us(20);          // read col data          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] = {   * |-----------------------------------------------------------------------------------------+   * |         |     |     |     |     |     |     | Psc |     |     |     |     |             |   * |-----------------------------------------------------------------------------------------+ - * |           | Led | Led-| Led+|     | Mute| Vol+| Vol-|     |     |     |    Play   |     | + * |           | Led | Led+| Led-|     | Mute| Vol+| Vol-|     |     |     |    Play   |     |   * |-----------------------------------------------------------------------------------------+   * |       |       |       |                                 |       | Prev  | Stop  | Next  |   * `-----------------------------------------------------------------------------------------' diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index f4d900acc..1b7bbcbbb 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/>.  #define PRODUCT         Lets Split  #define DESCRIPTION     A split keyboard for the cheap makers -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_COLS 6 - -// wiring of each half -#define MATRIX_ROW_PINS { B5, B4, E6, D7 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } - -#define CATERINA_BOOTLOADER - -// #define USE_I2C - -// Use serial if not using I2C -#ifndef USE_I2C -#  define USE_SERIAL -#endif - -// #define EE_HANDS - -#define I2C_MASTER_LEFT -// #define I2C_MASTER_RIGHT -  /* COL2ROW or ROW2COL */  #define DIODE_DIRECTION COL2ROW @@ -72,25 +49,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define IS_COMMAND() ( \      keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \  ) - -/* ws2812 RGB LED */ -#define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 8     // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 - -/* - * Feature disable options - *  These options are also useful to firmware size reduction. - */ -  /* disable debug print */ -// #define NO_DEBUG +//#define NO_DEBUG  /* disable print */ -// #define NO_PRINT +//#define NO_PRINT  /* disable action features */  //#define NO_ACTION_LAYER @@ -99,4 +62,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  //#define NO_ACTION_MACRO  //#define NO_ACTION_FUNCTION +#ifdef SUBPROJECT_rev1 +    #include "rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 +    #include "rev2/config.h"  #endif +#endif
\ No newline at end of file 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] = {   * `-----------------------------------------------------------------------------------'   */  [_QWERTY] = KEYMAP( \ -  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \ -  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \ +  KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \ +  KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \    KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \ -  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \ +  KC_LCTL, ADJUST, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  MT(MOD_LSFT, KC_SPC),  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \  ),  /* Colemak @@ -83,41 +83,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {    KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT , \    ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \  ), - -/* Lower - * ,-----------------------------------------------------------------------------------. - * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |     |    \  |  |   | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = KEYMAP( \ -  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ +[3] = KEYMAP( \ +  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \    KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ -  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +  _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \  ), - -/* Raise - * ,-----------------------------------------------------------------------------------. - * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = KEYMAP( \ -  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \ +[4] = KEYMAP( \ +  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______, \    KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______, \ -  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +  _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \  ),  /* Adjust (Lower + Raise) @@ -134,11 +110,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {  [_ADJUST] =  KEYMAP( \    _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \    _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \ -  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ +  _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \  ) - -  };  #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 @@ -#include "lets_split.h" - -#ifdef AUDIO_ENABLE -    float tone_startup[][2] = SONG(STARTUP_SOUND); -    float tone_goodbye[][2] = SONG(GOODBYE_SOUND); -#endif - -void matrix_init_kb(void) { - -    #ifdef AUDIO_ENABLE -        _delay_ms(20); // gets rid of tick -        PLAY_NOTE_ARRAY(tone_startup, false, 0); -    #endif - -    // // green led on -    // DDRD |= (1<<5); -    // PORTD &= ~(1<<5); - -    // // orange led on -    // DDRB |= (1<<0); -    // PORTB &= ~(1<<0); - -	matrix_init_user(); -}; - -void shutdown_user(void) { -    #ifdef AUDIO_ENABLE -        PLAY_NOTE_ARRAY(tone_goodbye, false, 0); -	_delay_ms(150); -	stop_all_notes(); -    #endif -} +#include "lets_split.h"
\ No newline at end of file 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 @@  #ifndef LETS_SPLIT_H  #define LETS_SPLIT_H -#include "quantum.h" - -void promicro_bootloader_jmp(bool program); +#ifdef SUBPROJECT_rev1 +    #include "rev1.h" +#endif +#ifdef SUBPROJECT_rev2 +    #include "rev2.h" +#endif -#define KEYMAP( \ -	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ -	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ -	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ -	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ -	) \ -	{ \ -		{ k00, k01, k02, k03, k04, k05 }, \ -		{ k10, k11, k12, k13, k14, k15 }, \ -		{ k20, k21, k22, k23, k24, k25 }, \ -		{ k30, k31, k32, k33, k34, k35 }, \ -		{ k40, k41, k42, k43, k44, k45 }, \ -		{ k50, k51, k52, k53, k54, k55 }, \ -		{ k60, k61, k62, k63, k64, k65 }, \ -		{ k70, k71, k72, k73, k74, k75 } \ -	} +#include "quantum.h"  #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 @@ +ifndef MAKEFILE_INCLUDED +	include ../../Makefile +endif
\ 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 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x3060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Wootpatoot +#define PRODUCT         Lets Split +#define PRODUCT         Lets Split v1 +#define DESCRIPTION     A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C +// Use serial if not using I2C +#ifndef USE_I2C +#  define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/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 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE +    float tone_startup[][2] = SONG(STARTUP_SOUND); +    float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + +    #ifdef AUDIO_ENABLE +        _delay_ms(20); // gets rid of tick +        PLAY_NOTE_ARRAY(tone_startup, false, 0); +    #endif + +    // // green led on +    // DDRD |= (1<<5); +    // PORTD &= ~(1<<5); + +    // // orange led on +    // DDRB |= (1<<0); +    // PORTB &= ~(1<<0); + +	matrix_init_user(); +}; + +void shutdown_user(void) { +    #ifdef AUDIO_ENABLE +        PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +	_delay_ms(150); +	stop_all_notes(); +    #endif +} 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 @@ +#ifndef REV1_H +#define REV1_H + +#include "../lets_split.h" + +//void promicro_bootloader_jmp(bool program); +#include "quantum.h" + +//void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ +	k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ +	k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ +	k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ +	k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ +	) \ +	{ \ +		{ k00, k01, k02, k03, k04, k05 }, \ +		{ k10, k11, k12, k13, k14, k15 }, \ +		{ k20, k21, k22, k23, k24, k25 }, \ +		{ k30, k31, k32, k33, k34, k35 }, \ +		{ k40, k41, k42, k43, k44, k45 }, \ +		{ k50, k51, k52, k53, k54, k55 }, \ +		{ k60, k61, k62, k63, k64, k65 }, \ +		{ k70, k71, k72, k73, k74, k75 } \ +	} + +#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 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR +	include ../../../Makefile +endif
\ 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 @@ +ifndef MAKEFILE_INCLUDED +	include ../../Makefile +endif
\ 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 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x3060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Wootpatoot +#define PRODUCT         Lets Split v2 +#define DESCRIPTION     A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// Use serial if not using I2C +#ifndef USE_I2C +#  define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12    // Number of LEDs +#define ws2812_PORTREG  PORTD +#define ws2812_DDRREG   DDRD + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + + +#endif
\ 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 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE +    float tone_startup[][2] = SONG(STARTUP_SOUND); +    float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + +    #ifdef AUDIO_ENABLE +        _delay_ms(20); // gets rid of tick +        PLAY_NOTE_ARRAY(tone_startup, false, 0); +    #endif + +    // // green led on +    // DDRD |= (1<<5); +    // PORTD &= ~(1<<5); + +    // // orange led on +    // DDRB |= (1<<0); +    // PORTB &= ~(1<<0); + +	matrix_init_user(); +}; + +void shutdown_user(void) { +    #ifdef AUDIO_ENABLE +        PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +	_delay_ms(150); +	stop_all_notes(); +    #endif +} 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 @@ +#ifndef REV2_H +#define REV2_H + +#include "../lets_split.h" + +//void promicro_bootloader_jmp(bool program); +#include "quantum.h" + +//void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ +	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ +	k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ +	k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ +	k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ +	) \ +	{ \ +		{ k00, k01, k02, k03, k04, k05 }, \ +		{ k10, k11, k12, k13, k14, k15 }, \ +		{ k20, k21, k22, k23, k24, k25 }, \ +		{ k30, k31, k32, k33, k34, k35 }, \ +		{ k40, k41, k42, k43, k44, k45 }, \ +		{ k50, k51, k52, k53, k54, k55 }, \ +		{ k60, k61, k62, k63, k64, k65 }, \ +		{ k70, k71, k72, k73, k74, k75 } \ +	} + +#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 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR +	include ../../../Makefile +endif 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  NKRO_ENABLE ?= no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work  BACKLIGHT_ENABLE ?= no      # Enable keyboard backlight functionality  MIDI_ENABLE ?= no            # MIDI controls -AUDIO_ENABLE ?= yes           # Audio output on port C6 +AUDIO_ENABLE ?= no           # Audio output on port C6  UNICODE_ENABLE ?= no         # Unicode  BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. - +RGBLIGHT_ENABLE ?= no       # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. +SUBPROJECT_rev1 ?= yes +USE_I2C ?= yes  # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE  SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend 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 @@ +ifndef MAKEFILE_INCLUDED +	include ../../Makefile +endif 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 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Wootpatoot +#define PRODUCT         maxipad +#define DESCRIPTION     A custom keyboard + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } +#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW +  +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1          H +//#define MAGIC_KEY_HELP2          SLASH +//#define MAGIC_KEY_DEBUG          D +//#define MAGIC_KEY_DEBUG_MATRIX   X +//#define MAGIC_KEY_DEBUG_KBD      K +//#define MAGIC_KEY_DEBUG_MOUSE    M +//#define MAGIC_KEY_VERSION        V +//#define MAGIC_KEY_STATUS         S +//#define MAGIC_KEY_CONSOLE        C +//#define MAGIC_KEY_LAYER0_ALT1    ESC +//#define MAGIC_KEY_LAYER0_ALT2    GRAVE +//#define MAGIC_KEY_LAYER0         0 +//#define MAGIC_KEY_LAYER1         1 +//#define MAGIC_KEY_LAYER2         2 +//#define MAGIC_KEY_LAYER3         3 +//#define MAGIC_KEY_LAYER4         4 +//#define MAGIC_KEY_LAYER5         5 +//#define MAGIC_KEY_LAYER6         6 +//#define MAGIC_KEY_LAYER7         7 +//#define MAGIC_KEY_LAYER8         8 +//#define MAGIC_KEY_LAYER9         9 +//#define MAGIC_KEY_BOOTLOADER     PAUSE +//#define MAGIC_KEY_LOCK           CAPS +//#define MAGIC_KEY_EEPROM         E +//#define MAGIC_KEY_NKRO           N +//#define MAGIC_KEY_SLEEP_LED      Z + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#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 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile in  +#   the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) +CONSOLE_ENABLE = no         # Console for debug(+400) +COMMAND_ENABLE = yes        # Commands for debug and configuration +NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality +MIDI_ENABLE = no            # MIDI controls +AUDIO_ENABLE = no           # Audio output on port C6 +UNICODE_ENABLE = no         # Unicode +BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif
\ 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 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#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 @@ +#include "maxipad.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Base */ +  KC_ESC,  KC_1,    KC_2,  KC_3,  KC_4,  KC_5, \ +  KC_TAB,  KC_Q,    KC_W,  KC_E,  KC_R,  KC_T, \ +  MO(1),   KC_A,    KC_S,  KC_D,  KC_F,  KC_G, \ +  KC_LSFT, KC_Z,    KC_X,  KC_C,  KC_V,  KC_B, \ +  KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \ +), +[1] = KEYMAP( +  KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \ +  KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \ +  KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 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 \ +), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +      switch(id) { +        case 0: +          if (record->event.pressed) { +            register_code(KC_RSFT); +          } else { +            unregister_code(KC_RSFT); +          } +        break; +      } +    return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  return true; +} + +void led_set_user(uint8_t usb_led) { + +}
\ 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 @@ +#include "maxipad.h" + +void matrix_init_kb(void) { +	// put your keyboard start-up code here +	// runs once when the firmware starts up + +	matrix_init_user(); +} + +void matrix_scan_kb(void) { +	// put your looping keyboard code here +	// runs every cycle (a lot) + +	matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { +	// put your per-action keyboard code here +	// runs for every action, just before processing by the firmware + +	return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { +	// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + +	led_set_user(usb_led); +} 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 @@ +#ifndef MAXIPAD_H +#define MAXIPAD_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ +     k00, k01, k02, k03, k04, k05, \ +     k10, k11, k12, k13, k14, k15, \ +     k20, k21, k22, k23, k24, k25, \ +     k30, k31, k32, k33, k34, k35, \ +     k40, k41, k42, k43, k44, k45 \ +) \ +{ \ +    { k00, k01, k02, k03, k04, k05 }, \ +    { k10, k11, k12, k13, k14, k15 }, \ +    { k20, k21, k22, k23, k24, k25 }, \ +    { k30, k31, k32, k33, k34, k35 }, \ +    { k40, k41, k42, k43, k44, k45} \ +} + +#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 @@ +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + + +## Building + +Download 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.  + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + + +### Other Keymaps + +Several 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. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|<name>] +``` + +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. + 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 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +#   change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no      # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes       # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes        # Console for debug(+400) +COMMAND_ENABLE ?= yes        # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no            # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no            # MIDI controls +UNICODE_ENABLE ?= no         # Unicode +BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_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 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "satan.h" + +#define _DEFAULT 0 +#define _ALTDISP 1 +#define _FN 2 + +enum planck_keycodes { +  DEFAULT = SAFE_RANGE, +  ALTDISP +}; + +// Fillers to make layering more clear +#define ______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty alt/gui/space/gui/alt + * ,-----------------------------------------------------------------------------------------. + * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  | + * |-----------------------------------------------------------------------------------------+ + * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    | + * |-----------------------------------------------------------------------------------------+ + * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | RShift    | FN  | + * |-----------------------------------------------------------------------------------------+ + *         | LAlt| LGUI  |               Space                | RGUI  | RAlt | + *         `-----------------------------------------------------------------' + */ +  [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */ +      KC_ESC,   KC_1,     KC_2,     KC_3,    KC_4,     KC_5,     KC_6,     KC_7,    KC_8,  KC_9,     KC_0,     KC_MINS,  KC_EQL,    KC_BSLS, KC_GRV, \ +      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,  \ +      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,   \ +      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), \ +      ______,  KC_LALT,  KC_LGUI,            KC_SPC,                                                 KC_RGUI,  KC_RALT, ______, ______ \ +      ), + +/* Qwerty gui/alt/space/alt/gui + * ,-----------------------------------------------------------------------------------------. + * | Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  \  |  `  | + * |-----------------------------------------------------------------------------------------+ + * | Tab    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |  Bksp  | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    | + * |-----------------------------------------------------------------------------------------+ + * | Shift     |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  | RShift    | FN  | + * |-----------------------------------------------------------------------------------------+ + *         |LGUI | LAlt  |               Space                | RAlt   |RGUI | + *         `-----------------------------------------------------------------' + */ +  [_ALTDISP] = KEYMAP_HHKB( /* Basic QWERTY */ +      KC_ESC,   KC_1,     KC_2,     KC_3,    KC_4,     KC_5,     KC_6,     KC_7,    KC_8,  KC_9,     KC_0,     KC_MINS,  KC_EQL,    KC_BSLS, KC_GRV, \ +      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,  \ +      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,   \ +      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), \ +      ______,  KC_LGUI,  KC_LALT,            KC_SPC,                                                 KC_RALT,  KC_RGUI, ______, ______ \ +      ), + +/* FN Layer + * ,-----------------------------------------------------------------------------------------. + * |     | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F8  | F9  | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------+ + * |  CAPS  | BL- | BL+ | BL  |     |     |     |     | Psc | Slck| Paus| Up  |     |        | + * |-----------------------------------------------------------------------------------------+ + * |         | Vol-| Vol+| Mute|     |     | *   | /   | Home| PgUp| Left|Right|             | + * |-----------------------------------------------------------------------------------------+ + * |           | Prev| Play| Next|     |     | +   | -   | End  |PgDn| Down|           |     | + * |-----------------------------------------------------------------------------------------+ + *         |       |       |                                 | Stop  |       | + *         `-----------------------------------------------------------------' + */ +  [_FN] = KEYMAP_HHKB( /* Layer 1 */ +      ______,   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, \ +      KC_CAPS,   BL_DEC, BL_INC, BL_TOGG, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______,  \ +      ______,   KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______,   \ +      ______,   KC_MPRV, KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______,  \ +      ______,   DEFAULT, ALTDISP,                 ______,                 KC_MSTP, ______,    ______,    ______ \ +      ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +  // MACRODOWN only works in this function +  return MACRO_NONE; +}; + +void persistant_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  switch (keycode) { +    case DEFAULT: +      if (record->event.pressed) { +        persistant_default_layer_set(1UL<<_DEFAULT); +      } +      return false; +      break; +    case ALTDISP: +      if (record->event.pressed) { +        persistant_default_layer_set(1UL<<_ALTDISP); +      } +      return false; +      break; +  } +  return true; +}
\ 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 @@ +# Dbroqua HHKB like Layout + +Like the HHKB but with a Satan GH60 PCB :D. + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua_hhkb make dfu +```
\ 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] = {    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, \    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,  \    KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(_FL), \ -  KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,                                               KC_RALT, KC_RGUI, KC_MENU, KC_RCTL), +  KC_LCTL, KC_LALT, KC_LGUI,          KC_SPC,                                               KC_RGUI, KC_RALT, KC_MENU, KC_RCTL),  [_FL] = KEYMAP_HHKB(    #ifdef RGBLIGHT_ENABLE    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, \ -  KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,   _______, KC_DEL,  \ -  _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,          KC_PENT, \ -  _______,          _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN, _______, _______, \ -  _______, _______, _______,                   _______,                                     _______, _______, _______, _______), -  #else -  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, \    KC_CAPS, _______, RGB_TOG,RGB_MOD,RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,   _______, KC_DEL, \    _______, KC_VOLD, RGB_HUD,RGB_SAI,RGB_SAD, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,          KC_PENT, \    _______,          RGB_VAI,RGB_VAD,_______, _______, _______, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN, _______, _______, \    _______, _______, _______,                 _______,                                     _______, _______, _______, _______), +  #else +  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, \ +  KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,   _______, KC_DEL,  \ +  _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,          KC_PENT, \ +  _______,          _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN, _______, _______, \ +  _______, _______, _______,                   _______,                                     _______, _______, _______, _______),    #endif  }; 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/>.  #define BACKLIGHT_LEVELS 3  /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 +#define DEBOUNCING_DELAY 0 + +#define MATRIX_MASKED  /* define if matrix has ghost (lacks anti-ghosting diodes) */  //#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 @@  #   change to "no" to disable the options, or define them in the Makefile in  #   the appropriate keymap folder that will get included automatically  # -BOOTMAGIC_ENABLE   = yes  # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE   = no   # Virtual DIP switch configuration(+1000)  MOUSEKEY_ENABLE    = yes  # Mouse keys(+4700)  EXTRAKEY_ENABLE    = yes  # Audio control and System control(+450)  CONSOLE_ENABLE     = yes  # Console for debug(+400) @@ -18,4 +18,4 @@ SLEEP_LED_ENABLE   = no   # Breathing sleep LED during USB suspend  ifndef QUANTUM_DIR  	include ../../../../Makefile -endif
\ No newline at end of file +endif 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 {  #define M_CP_CT             M(MACRO_COPY_CUT) +#define M_COPY              KC_FN1  #define SC_UNDO             LCTL(KC_Z)  #define SC_REDO             LCTL(KC_Y) @@ -141,35 +142,46 @@ enum keyboard_macros {  #define ________________    _______, _______  #define XXXXXXXXXXXXXXXX    XXXXXXX, XXXXXXX +const matrix_row_t matrix_mask[MATRIX_ROWS] = +{ +//  1098765432109876543210987654321 +  0b0000000001111111101111011111111, +  0b0000000001111111111111111111111, +  0b0000000001111111111111111111111, +  0b0000000001111111111111111111111, +  0b0000000001010111111111111111111, +  0b0000000001111101111111101011111, +}; +  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =  {  /* LAYER = LAYER_QWERTY    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | 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 | +  | 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     |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | M1     | INS    | HOME   | PG UP  |       | ESC    | `      | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | =      | BACKSP |       | NUM LK | KP /   | KP *   | KP -   | +  | NUM LK | KP /   | KP *   | KP -   |       | ESC    | `      | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | =      | BACKSP |       | INS    | HOME   | PG UP  | M1     |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | M2     | DEL    | END    | PG DN  |       | TAB    | TAB    | Q      | W      | E      | R      | T      | Y      | U      | I      | O      | P      | -      | \      |       | KP 7   | KP 8   | KP 9   | KP +   | +  | KP 7   | KP 8   | KP 9   | KP +   |       | TAB    | TAB    | Q      | W      | E      | R      | T      | Y      | U      | I      | O      | P      | -      | \      |       | DEL    | END    | PG DN  | M2     |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------| -  | 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 +   | +  | 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     |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------| -  | M4     | LEFT   | CP/CT  | RIGHT  |       | LSHIFT | LSHIFT | Z      | X      | C      | V      | B      | N      | M      | ,      | .      | /      | RSHIFT | RSHIFT |       | KP 1   | KP 2   | KP 3   | KP Ent | +  | KP 1   | KP 2   | KP 3   | KP Ent |       | LSHIFT | LSHIFT | Z      | X      | C      | V      | B      | N      | M      | ,      | .      | /      | RSHIFT | RSHIFT |       | XXXXXX | UP     | XXXXXX | M4     |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | M5     | DL     | DOWN   | DR     |       | LCTRL  | XXXXXX | XXXXXX | LWIN   | LALT   | LOWER  | SPACE  . SPACE  | UPPER  | OSHIFT | RALT   | APP    | XXXXXX | RCTRL  |       | KP 0   | KP ,   | KP .   | KP Ent | +  | KP 0   | KP ,   | KP .   | KP Ent |       | LCTRL  | XXXXXX | LWIN   | XXXXXX | LALT   | UPPER  | SPACE  . SPACE  | LOWER  | OSHIFT | RALT   | APP    | XXXXXX | RCTRL  |       | LEFT   | DOWN   | RIGHT  | M5     |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'  */  KEYMAP(LAYER_QWERTY, \ -    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, \ -    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, \ -    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, \ -    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, \ -    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, \ -    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  \ +    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 , \ +    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   , \ +    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   , \ +    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   , \ +    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   , \ +    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     \  ),  /* LAYER = LAYER_LOWER    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | ______ | ______ | ______ | ______ |       | F13    | F14    | F15    | F16    | XXXXXX | F17    | F18    | F19    | F20    | XXXXXX | F21    | F22    | F23    | F24    |       | ______ | MUTE A | ______ | ______ | +  | ______ | MUTE A | ______ | ______ |       | F13    | F14    | F15    | F16    | XXXXXX | F17    | F18    | F19    | F20    | XXXXXX | F21    | F22    | F23    | F24    |       | ______ | ______ | ______ | ______ |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------.    | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | @@ -180,20 +192,20 @@ KEYMAP(LAYER_QWERTY, \    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------|    | ______ | ______ | ______ | ______ |       | ______ | ______ | |      | &      | !      | ~      | ;      | :      | =      | <      | >      | ?      | ______ | ______ |       | ______ | ______ | ______ | ______ |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | ______ | ______ | ______ | ______ |       | ______ | XXXXXX | XXXXXX | ______ | ______ | ______ | ______ . ______ | LOWER  | ______ | ______ | ______ | XXXXXX | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER  | ______ | ______ | ______ | XXXXXX | ______ |       | ______ | ______ | ______ | ______ |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'  */  KEYMAP(LAYER_LOWER, \ -    _______, _______, _______, _______,         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, _______, _______, \ +    _______, 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 ,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT  , _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT  , KC_GT  , KC_QUES, _______, _______,         _______, _______, _______, _______, \ -    _______, _______, _______, _______,         _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______,         _______, _______, _______, _______  \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______,         _______, _______, _______, _______  \  ),  /* LAYER = LAYER_UPPER    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | ______ | ______ | ______ | ______ |       | F13    | F14    | F15    | F16    | XXXXXX | F17    | F18    | F19    | F20    | XXXXXX | F21    | F22    | F23    | F24    |       | ______ | MUTE A | ______ | ______ | +  | ______ | MUTE A | ______ | ______ |       | F13    | F14    | F15    | F16    | XXXXXX | F17    | F18    | F19    | F20    | XXXXXX | F21    | F22    | F23    | F24    |       | ______ | ______ | ______ | ______ |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------.    | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | @@ -204,44 +216,44 @@ KEYMAP(LAYER_LOWER, \    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------|    | ______ | ______ | ______ | ______ |       | ______ | ______ | F9     | F10    | F11    | F12    | SCR LK | KP 0   | KP 1   | KP 2   | KP 3   | KP Ent | ______ | ______ |       | ______ | ______ | ______ | ______ |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | ______ | ______ | ______ | ______ |       | ______ | XXXXXX | XXXXXX | ______ | ______ | UPPER  | KP 0   . KP 0   | ______ | RALT   | KP .   | KP Ent | XXXXXX | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | UPPER  | KP 0   . KP 0   | ______ | RALT   | KP .   | KP Ent | XXXXXX | ______ |       | ______ | ______ | ______ | ______ |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'  */  KEYMAP(LAYER_UPPER, \ -    _______, _______, _______, _______,         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, _______, _______, \ +    _______, 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 ,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_F5  , KC_F6  , KC_F7  , KC_F8  , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______,         _______, _______, _______, _______, \      _______, _______, _______, _______,         _______, _______, KC_F9  , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______,         _______, _______, _______, _______, \ -    _______, _______, _______, _______,         _______, XXXXXXX, XXXXXXX, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______,         _______, _______, _______, _______  \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______,         _______, _______, _______, _______  \  ),  /* LAYER = LAYER_MOUSE    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------.    | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | MS BT1 | MS AC0 | MS WHU | MS AC2 |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | MS AC0 | MS WHU | MS AC2 | MS BT1 |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | MS BT2 | MS WHL | MS WHD | MS WHU |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | MS WHL | MS WHD | MS WHU | MS BT2 |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------| -  | MS BT3 | MS UL  | MS U   | MS UR  |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |   o   | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |   o   | MS BT1 | MS BT2 | MS BT3 | MS BT3 |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|   o   |--------|--------|--------+--------| -  | MS BT4 | MS L   | MS BT1 | MS R   |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | XXXXXX | MS U   | XXXXXX | MS BT4 |    |--------+--------+--------+--------|       |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|       |--------|--------|--------+--------| -  | MS BT5 | MS DL  | MS D   | MS DR  |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | +  | ______ | ______ | ______ | ______ |       | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ |       | MS L   | MS D   | MS R   | MS BT5 |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'  */  KEYMAP(LAYER_MOUSE, \      _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \ -    KC_BTN1, KC_ACL0, KC_WH_U, KC_ACL2,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \ -    KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \ -    KC_BTN3, M_MS_UL, KC_MS_U, M_MS_UR,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \ -    KC_BTN4, KC_MS_L, KC_BTN1, KC_MS_R,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, \ -    KC_BTN5, M_MS_DL, KC_MS_D, M_MS_DR,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______  \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         KC_ACL0, KC_WH_U, KC_ACL2, KC_BTN1, \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         KC_WH_L, KC_WH_D, KC_WH_U, KC_BTN2, \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN3, \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         XXXXXXX, KC_MS_U, XXXXXXX, KC_BTN4, \ +    _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,         KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5  \  ),  /* LAYER = LAYER_ADJUST    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------. -  | 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  | +  | 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 |    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'    .-----------------------------------.       .-----------------------------------------------------------------------------------------------------------------------------.       .-----------------------------------.    | 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, \    '-----------------------------------'       '-----------------------------------------------------------------------------------------------------------------------------'       '-----------------------------------'  */  KEYMAP(LAYER_ADJUST, \ -    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 , \ +    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, \      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET  , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  \  ), -  };  #ifdef AUDIO_ENABLE @@ -296,6 +307,7 @@ void persistant_default_layer_set(uint16_t default_layer)  const uint16_t PROGMEM fn_actions[] = {    [0] = ACTION_MODS_ONESHOT(MOD_LSFT), +  [1] = ACTION_MACRO_TAP(MACRO_COPY_CUT),  };  const 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)    switch(id)    { -    case MACRO_HELP_1: -      if (record->event.pressed) -      { -        uprint("H1"); -      } -      break; - -    case MACRO_HELP_2: -      if (record->event.pressed) -      { -        uprint("H2"); -      } -      break; - -    case MACRO_HELP_3: -      if (record->event.pressed) -      { -        uprint("H3"); -      } -      break; - -    case MACRO_HELP_4: -      if (record->event.pressed) -      { -        uprint("H4"); -      } -      break; - -   case MACRO_HELP_5: -     if (record->event.pressed) -     { -       uprint("H5"); -     } -     break; - -   case MACRO_HELP_6: -     if (record->event.pressed) -     { -       uprint("H6"); -     } -     break; - -   case MACRO_HELP_7: -      if (record->event.pressed) -      { -        uprint("H7"); -      } -      break; - -  case MACRO_HELP_8: -    if (record->event.pressed) -    { -      uprint("H8"); -    } -    break; - -  case MACRO_HELP_9: -    if (record->event.pressed) -    { -      uprint("H9"); -    } -    break; +    case MACRO_COPY_CUT: +        if (record->event.pressed) { +            register_code(KC_LCTL); +            if (record->tap.count == 1) { +                register_code(KC_C); +                unregister_code(KC_C); +            } +            else if (record->tap.count == 2) { +                register_code(KC_X); +                unregister_code(KC_X); +            } +            unregister_code(KC_LCTL); +        } +        break; + + +  //   case MACRO_HELP_1: +  //     if (record->event.pressed) +  //     { +  //       uprint("H1"); +  //     } +  //     break; + +  //   case MACRO_HELP_2: +  //     if (record->event.pressed) +  //     { +  //       uprint("H2"); +  //     } +  //     break; + +  //   case MACRO_HELP_3: +  //     if (record->event.pressed) +  //     { +  //       uprint("H3"); +  //     } +  //     break; + +  //   case MACRO_HELP_4: +  //     if (record->event.pressed) +  //     { +  //       uprint("H4"); +  //     } +  //     break; + +  //  case MACRO_HELP_5: +  //    if (record->event.pressed) +  //    { +  //      uprint("H5"); +  //    } +  //    break; + +  //  case MACRO_HELP_6: +  //    if (record->event.pressed) +  //    { +  //      uprint("H6"); +  //    } +  //    break; + +  //  case MACRO_HELP_7: +  //     if (record->event.pressed) +  //     { +  //       uprint("H7"); +  //     } +  //     break; + +  // case MACRO_HELP_8: +  //   if (record->event.pressed) +  //   { +  //     uprint("H8"); +  //   } +  //   break; + +  // case MACRO_HELP_9: +  //   if (record->event.pressed) +  //   { +  //     uprint("H9"); +  //   } +  //   break;    case MACRO_BREATH_TOGGLE:      if (record->event.pressed) @@ -566,12 +594,12 @@ void led_set_user(uint8_t usb_led)  void startup_user()  {    _delay_ms(10); // gets rid of tick -  PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); +  // PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);  }  void shutdown_user()  { -  PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); +  // PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);    _delay_ms(2000);    stop_all_notes();  } diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h new file mode 100644 index 000000000..0df177721 --- /dev/null +++ b/quantum/keymap_extras/keymap_br_abnt2.h @@ -0,0 +1,58 @@ +#ifndef KEYMAP_BR_ABNT2_H +#define KEYMAP_BR_ABNT2_H + +#include "keymap_common.h" + +/* Scan codes for the Brazilian ABNT2 keyboard layout */ + +#define BR_CCDL KC_SCLN      //  Ç   same scancode as ;: on US layout +#define BR_SCLN KC_SLSH      //  ;:  same scancode as /? on US layout +#define BR_QUOT KC_GRV       //  '"  same scancode as `~ on US layout +#define BR_TILD KC_QUOT      //  ~^  dead keys, same scancode as '" on US layout +#define BR_ACUT KC_LBRC      //  ´`  dead keys, same scancode as [{ on US layout +#define BR_LBRC KC_RBRC      //  [{  same scancode as ]} on US layout +#define BR_RBRC KC_BSLS      //  ]}  same scancode as \| on US layout +#define BR_BSLS KC_NUBS      //  \|  uses the non-US hash scancode (#~, sometimes §±) +#define BR_SLSH KC_INT1      //  /?  uses the INTL1 scancode + +#define BR_COLN LSFT(BR_SCLN)   // shifted : +#define BR_DQT  LSFT(BR_QUOT)   // shifted " +#define BR_CIRC LSFT(BR_TILD)   // shifted ^ (dead key) +#define BR_GRAV LSFT(BR_ACUT)   // shifted ` (dead key) +#define BR_LCBR LSFT(BR_LBRC)   // shifted { +#define BR_RCBR LSFT(BR_RBRC)   // shifted } +#define BR_PIPE LSFT(BR_BSLS)   // shifted | +#define BR_QUES LSFT(BR_SLSH)   // shifted ? +#define BR_TRMA LSFT(KC_6)      // shifted ¨ (dead key - trema accent) + +// On the ABNT2 the keypad comma and the keypad dot scancodes are switched +// (presumably because in Brazil comma is used as the decimal separator) +#define BR_KPDT KC_KP_COMMA  //  keypad . +#define BR_KPCM KC_KP_DOT    //  keypad , + +#define BR_1UP    LALT(KC_1)      // 1 superscript                    ¹   alt+1 +#define BR_2UP    LALT(KC_2)      // 2 superscript                    ²   alt+2 +#define BR_3UP    LALT(KC_3)      // 3 superscript                    ³   alt+3 +#define BR_PND    LALT(KC_4)      // Pound sign                       £   alt+4 +#define BR_CENT   LALT(KC_5)      // Cent sign                        ¢   alt+5 +#define BR_NOT    LALT(KC_6)      // Not sign                         ¬   alt+6 +#define BR_SECT   LALT(KC_EQL)    // Section sign                     §   alt+= +#define BR_FORD   LALT(BR_LBRC)   // Feminine Ordinal Sign            ª   alt+[ +#define BR_MORD   LALT(BR_RBRC)   // Masculine Ordinal Sign           º   alt+] +#define BR_DGRE   LALT(BR_SLSH)   // Degree sign                      °   alt+/ + +#define BR_EURO   LALT(KC_E)      // Euro sign                        €   alt+e +#define BR_NDTD   LALT(BR_TILD)   // Non-dead key tilde               ~   alt+~ +#define BR_NDAC   LALT(BR_ACUT)   // Non-dead key acute accent        ´   alt+´ +#define BR_NDGV   LALT(BR_QUOT)   // Non-dead key grave accent        `   alt+' +#define BR_NDCR   LALT(BR_CIRC)   // Non-dead key circumflex accent   ^   alt+^ (alt+shift+~) +#define BR_NDTR   LALT(BR_TRMA)   // Non-dead key trema accent        ¨   alt+¨ (alt+shift+6) + +// For 101-key keyboard layouts, the ABNT2 layout allows +// the slash and question mark to be typed using alt+q and alt+w. +// The shortcuts are provided here for completeness' sake, +// but it's recommended to use BR_SLSH and BR_QUES instead +#define BR_ASLS   LALT(KC_Q) +#define BR_AQST   LALT(KC_W) + +#endif 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/>.  #include "debug.h"  #include "util.h"  #include "matrix.h" +#include "timer.h" +  /* Set 0 if debouncing isn't needed */  #ifndef DEBOUNCING_DELAY  #   define DEBOUNCING_DELAY 5  #endif -static uint8_t debouncing = DEBOUNCING_DELAY; + +#if (DEBOUNCING_DELAY > 0) +    static uint16_t debouncing_time; +    static bool debouncing = false; +#endif + +#if (MATRIX_COLS <= 8) +#    define print_matrix_header()  print("\nr/c 01234567\n") +#    define print_matrix_row(row)  print_bin_reverse8(matrix_get_row(row)) +#    define matrix_bitpop(i)       bitpop(matrix[i]) +#    define ROW_SHIFTER ((uint8_t)1) +#elif (MATRIX_COLS <= 16) +#    define print_matrix_header()  print("\nr/c 0123456789ABCDEF\n") +#    define print_matrix_row(row)  print_bin_reverse16(matrix_get_row(row)) +#    define matrix_bitpop(i)       bitpop16(matrix[i]) +#    define ROW_SHIFTER ((uint16_t)1) +#elif (MATRIX_COLS <= 32) +#    define print_matrix_header()  print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") +#    define print_matrix_row(row)  print_bin_reverse32(matrix_get_row(row)) +#    define matrix_bitpop(i)       bitpop32(matrix[i]) +#    define ROW_SHIFTER  ((uint32_t)1) +#endif + +#ifdef MATRIX_MASKED +    extern const matrix_row_t matrix_mask[]; +#endif  static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;  static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;  /* matrix state(1:on, 0:off) */  static matrix_row_t matrix[MATRIX_ROWS]; + +static matrix_row_t matrix_raw[MATRIX_ROWS];  static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -#if DIODE_DIRECTION == ROW2COL -    static matrix_row_t matrix_reversed[MATRIX_COLS]; -    static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS]; -#endif -#if MATRIX_COLS > 16 -    #define SHIFTER 1UL -#else -    #define SHIFTER 1 +#if (DIODE_DIRECTION == COL2ROW) +    static void init_cols(void); +    static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); +    static void unselect_rows(void); +    static void select_row(uint8_t row); +    static void unselect_row(uint8_t row); +#else // ROW2COL +    static void init_rows(void); +    static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); +    static void unselect_cols(void); +    static void unselect_col(uint8_t col); +    static void select_col(uint8_t col);  #endif -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); -  __attribute__ ((weak))  void matrix_init_quantum(void) {      matrix_init_kb(); @@ -95,7 +123,7 @@ uint8_t matrix_cols(void) {  }  // void matrix_power_up(void) { -// #if DIODE_DIRECTION == COL2ROW +// #if (DIODE_DIRECTION == COL2ROW)  //     for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) {  //         /* DDRxn */  //         _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF); @@ -119,19 +147,26 @@ uint8_t matrix_cols(void) {  // }  void matrix_init(void) { +      // To use PORTF disable JTAG with writing JTD bit twice within four cycles. -    #ifdef __AVR_ATmega32U4__ +    #if  (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))          MCUCR |= _BV(JTD);          MCUCR |= _BV(JTD);      #endif      // initialize row and col +#if (DIODE_DIRECTION == COL2ROW)      unselect_rows();      init_cols(); +#else // ROW2COL +    unselect_cols(); +    init_rows(); +#endif      // initialize matrix state: all keys off      for (uint8_t i=0; i < MATRIX_ROWS; i++) {          matrix[i] = 0; +        matrix_raw[i] = 0;          matrix_debouncing[i] = 0;      } @@ -141,71 +176,60 @@ void matrix_init(void) {  uint8_t matrix_scan(void)  { -#if DIODE_DIRECTION == COL2ROW -    for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -        select_row(i); -        wait_us(30);  // without this wait read unstable value. -        matrix_row_t cols = read_cols(); -        if (matrix_debouncing[i] != cols) { -            matrix_debouncing[i] = cols; -            if (debouncing) { -                debug("bounce!: "); debug_hex(debouncing); debug("\n"); -            } -            debouncing = DEBOUNCING_DELAY; -        } -        unselect_rows(); -    } +#if (DIODE_DIRECTION == COL2ROW) -    if (debouncing) { -        if (--debouncing) { -            wait_ms(1); -        } else { -            for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -                matrix[i] = matrix_debouncing[i]; +    // Set row, read cols +    for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { +#       if (DEBOUNCING_DELAY > 0) +            bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row); + +            if (matrix_changed) { +                debouncing = true; +                debouncing_time = timer_read();              } -        } + +#       else +            read_cols_on_row(matrix, current_row); +#       endif +      } -#else -    for (uint8_t i = 0; i < MATRIX_COLS; i++) { -        select_row(i); -        wait_us(30);  // without this wait read unstable value. -        matrix_row_t rows = read_cols(); -        if (matrix_reversed_debouncing[i] != rows) { -            matrix_reversed_debouncing[i] = rows; -            if (debouncing) { -                debug("bounce!: "); debug_hex(debouncing); debug("\n"); + +#else // ROW2COL + +    // Set col, read rows +    for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { +#       if (DEBOUNCING_DELAY > 0) +            bool matrix_changed = read_rows_on_col(matrix_debouncing, current_col); +            if (matrix_changed) { +                debouncing = true; +                debouncing_time = timer_read();              } -            debouncing = DEBOUNCING_DELAY; -        } -        unselect_rows(); +#       else +             read_rows_on_col(matrix, current_col); +#       endif +      } -    if (debouncing) { -        if (--debouncing) { -            wait_ms(1); -        } else { -            for (uint8_t i = 0; i < MATRIX_COLS; i++) { -                matrix_reversed[i] = matrix_reversed_debouncing[i]; +#endif + +#   if (DEBOUNCING_DELAY > 0) +        if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) { +            for (uint8_t i = 0; i < MATRIX_ROWS; i++) { +                matrix[i] = matrix_debouncing[i];              } +            debouncing = false;          } -    } -    for (uint8_t y = 0; y < MATRIX_ROWS; y++) { -        matrix_row_t row = 0; -        for (uint8_t x = 0; x < MATRIX_COLS; x++) { -            row |= ((matrix_reversed[x] & (1<<y)) >> y) << x; -        } -        matrix[y] = row; -    } -#endif +#   endif      matrix_scan_quantum(); -      return 1;  }  bool matrix_is_modified(void)  { +#if (DEBOUNCING_DELAY > 0)      if (debouncing) return false; +#endif      return true;  } @@ -218,15 +242,22 @@ bool matrix_is_on(uint8_t row, uint8_t col)  inline  matrix_row_t matrix_get_row(uint8_t row)  { +    // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a +    // switch blocker installed and the switch is always pressed. +#ifdef MATRIX_MASKED +    return matrix[row] & matrix_mask[row]; +#else      return matrix[row]; +#endif  }  void matrix_print(void)  { -    print("\nr/c 0123456789ABCDEF\n"); +    print_matrix_header(); +      for (uint8_t row = 0; row < MATRIX_ROWS; row++) {          phex(row); print(": "); -        pbin_reverse16(matrix_get_row(row)); +        print_matrix_row(row);          print("\n");      }  } @@ -235,63 +266,148 @@ uint8_t matrix_key_count(void)  {      uint8_t count = 0;      for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -        count += bitpop16(matrix[i]); +        count += matrix_bitpop(i);      }      return count;  } + + +#if (DIODE_DIRECTION == COL2ROW) +  static void init_cols(void)  { -#if DIODE_DIRECTION == COL2ROW -    for(int x = 0; x < MATRIX_COLS; x++) { -        int pin = col_pins[x]; -#else -    for(int x = 0; x < MATRIX_ROWS; x++) { -        int pin = row_pins[x]; -#endif -        _SFR_IO8((pin >> 4) + 1) &=  ~_BV(pin & 0xF); -        _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); +    for(uint8_t x = 0; x < MATRIX_COLS; x++) { +        uint8_t pin = col_pins[x]; +        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI      }  } -static matrix_row_t read_cols(void) +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)  { -    matrix_row_t result = 0; +    // Store last value of row prior to reading +    matrix_row_t last_row_value = current_matrix[current_row]; -#if DIODE_DIRECTION == COL2ROW -    for(int x = 0; x < MATRIX_COLS; x++) {      -        int pin = col_pins[x]; -#else -    for(int x = 0; x < MATRIX_ROWS; x++) { -        int pin = row_pins[x]; -#endif -        result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (SHIFTER << x); +    // Clear data in matrix row +    current_matrix[current_row] = 0; + +    // Select row and wait for row selecton to stabilize +    select_row(current_row); +    wait_us(30); + +    // For each col... +    for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + +        // Select the col pin to read (active low) +        uint8_t pin = col_pins[col_index]; +        uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); + +        // Populate the matrix row with the state of the col pin +        current_matrix[current_row] |=  pin_state ? 0 : (ROW_SHIFTER << col_index);      } -    return result; + +    // Unselect row +    unselect_row(current_row); + +    return (last_row_value != current_matrix[current_row]); +} + +static void select_row(uint8_t row) +{ +    uint8_t pin = row_pins[row]; +    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT +    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW +} + +static void unselect_row(uint8_t row) +{ +    uint8_t pin = row_pins[row]; +    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI  }  static void unselect_rows(void)  { -#if DIODE_DIRECTION == COL2ROW -    for(int x = 0; x < MATRIX_ROWS; x++) {  -        int pin = row_pins[x]; -#else -    for(int x = 0; x < MATRIX_COLS; x++) {  -        int pin = col_pins[x]; -#endif -        _SFR_IO8((pin >> 4) + 1) &=  ~_BV(pin & 0xF); -        _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); +    for(uint8_t x = 0; x < MATRIX_ROWS; x++) { +        uint8_t pin = row_pins[x]; +        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI      }  } -static void select_row(uint8_t row) +#else // ROW2COL + +static void init_rows(void)  { +    for(uint8_t x = 0; x < MATRIX_ROWS; x++) { +        uint8_t pin = row_pins[x]; +        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI +    } +} -#if DIODE_DIRECTION == COL2ROW -    int pin = row_pins[row]; -#else -    int pin = col_pins[row]; -#endif -    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); -    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) +{ +    bool matrix_changed = false; + +    // Select col and wait for col selecton to stabilize +    select_col(current_col); +    wait_us(30); + +    // For each row... +    for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) +    { + +        // Store last value of row prior to reading +        matrix_row_t last_row_value = current_matrix[row_index]; + +        // Check row pin state +        if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) +        { +            // Pin LO, set col bit +            current_matrix[row_index] |= (ROW_SHIFTER << current_col); +        } +        else +        { +            // Pin HI, clear col bit +            current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); +        } + +        // Determine if the matrix changed state +        if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) +        { +            matrix_changed = true; +        } +    } + +    // Unselect col +    unselect_col(current_col); + +    return matrix_changed;  } + +static void select_col(uint8_t col) +{ +    uint8_t pin = col_pins[col]; +    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT +    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW +} + +static void unselect_col(uint8_t col) +{ +    uint8_t pin = col_pins[col]; +    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI +} + +static void unselect_cols(void) +{ +    for(uint8_t x = 0; x < MATRIX_COLS; x++) { +        uint8_t pin = col_pins[x]; +        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN +        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI +    } +} + +#endif @@ -241,6 +241,7 @@ You can also add extra options at the end of the make command line, after the ta  * `make COLOR=false` - turns off color output  * `make SILENT=true` - turns off output besides errors/warnings  * `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) +* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands)  The 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. 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)              debug_enable = !debug_enable;              if (debug_enable) {                  print("\ndebug: on\n"); -                debug_matrix   = true; -                debug_keyboard = true; -                debug_mouse    = true;              } else {                  print("\ndebug: off\n"); +                debug_matrix   = false; +                debug_keyboard = false; +                debug_mouse    = false;              }              break; | 
