summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStick <nstickney@gmail.com>2017-06-08 08:52:32 -0500
committerStick <nstickney@gmail.com>2017-06-08 08:52:32 -0500
commit3af2bca1fc948e17ca53809f483495d75b900310 (patch)
tree08a12b65a6cdf9ab609ba33dee4a44aad14800d6
parent035f7bb1bfac1c7ca20d61bbdd31858720fde7eb (diff)
parent00d94166267f3ef9f514234ad877470b74b30601 (diff)
downloadqmk_firmware-3af2bca1fc948e17ca53809f483495d75b900310.tar.gz
qmk_firmware-3af2bca1fc948e17ca53809f483495d75b900310.zip
Merge remote-tracking branch 'upstream/master'
-rw-r--r--Dockerfile4
-rw-r--r--keyboards/ergodox/keymaps/adam/config.h6
-rw-r--r--keyboards/ergodox/keymaps/adam/keymap.c174
-rw-r--r--keyboards/ergodox/keymaps/adam/readme.md3
-rw-r--r--keyboards/ergodox/readme.md1
-rw-r--r--keyboards/lets_split/keymaps/adam/config.h43
-rw-r--r--keyboards/lets_split/keymaps/adam/keymap.c79
-rw-r--r--keyboards/lets_split/keymaps/adam/makefile1
-rw-r--r--keyboards/ps2avrGB/README.md6
-rw-r--r--keyboards/ps2avrGB/keymaps/mechmini/keymap.c28
-rw-r--r--keyboards/ps2avrGB/ps2avrGB.h17
-rw-r--r--tmk_core/common/action_tapping.c2
12 files changed, 361 insertions, 3 deletions
diff --git a/Dockerfile b/Dockerfile
index 88da06f02a..bc0285a447 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -15,6 +15,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y build-essential
binutils-arm-none-eabi \
libnewlib-arm-none-eabi \
git \
+ software-properties-common \
+ avrdude \
&& rm -rf /var/lib/apt/lists/*
ENV keyboard=ergodox
@@ -23,4 +25,4 @@ ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
-CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}
+CMD make clean; make;
diff --git a/keyboards/ergodox/keymaps/adam/config.h b/keyboards/ergodox/keymaps/adam/config.h
new file mode 100644
index 0000000000..b3910bc452
--- /dev/null
+++ b/keyboards/ergodox/keymaps/adam/config.h
@@ -0,0 +1,6 @@
+#include "../../config.h"
+
+#undef TAPPING_TERM
+#define TAPPING_TERM 300 //At 500 some bad logic takes hold
+#define PREVENT_STUCK_MODIFIERS
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/ergodox/keymaps/adam/keymap.c b/keyboards/ergodox/keymaps/adam/keymap.c
new file mode 100644
index 0000000000..432f0fb26f
--- /dev/null
+++ b/keyboards/ergodox/keymaps/adam/keymap.c
@@ -0,0 +1,174 @@
+#include "ergodox.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+
+
+#define BASE 0 // default layer
+#define FLOCK 1 // symbols arrows and F keys on F held down
+#define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
+#define CAPLOCK 3 //caps on until space / enter / esc
+#define SFLOCK 11 // symbols arrows and F keys on F held down
+#define SJLOCK 12 // same as Flock but with fall thru J and mapped to J held down
+
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Sends macro when key is tapped, presses mod when key is held
+#define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \
+ ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
+ ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) )
+
+#define tap_mod_shift(record, mod, macro) ( ((record)->event.pressed) ? \
+ ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \
+ ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (MACRO( D(LSFT), T(LBRC), U(LSFT), END)) : MACRO(U(mod), END) ) )
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Layout
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | A | S | D | F | G |------| |------| H | J | K | L |; | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | Z | X | C | V | B | | | | N | M | , | . | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+--------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `----------------------'
+ */
+ [BASE] = KEYMAP(
+ // left hand
+ GUI_T(KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS,
+ _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB,
+ _______, SFT_T(KC_A), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
+ _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
+ _______, _______, _______, _______ ,_______,
+ _______, _______,
+ _______,
+ KC_SPC, _______, _______ ,
+
+ // right hand
+ KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
+ GUI_T(KC_H), F(JLOCK), CTL_T(KC_K), ALT_T(KC_L), SFT_T(KC_SCLN), _______,
+ KC_DELETE, KC_N, KC_M, KC_COMM,KC_DOT, KC_QUOT, _______,
+ _______, _______,_______,_______, _______,
+ _______, _______,
+ _______,
+ _______,_______, KC_ENT
+ ),
+ [FLOCK] = KEYMAP(
+ // left hand
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ XXXXXXX,KC_LBRC,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,_______,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,
+ XXXXXXX,
+ KC_ESC,XXXXXXX,XXXXXXX,
+ // right hand
+ KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
+ XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, XXXXXXX, KC_RBRC, XXXXXXX,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, S(KC_RBRC), XXXXXXX,
+ XXXXXXX, XXXXXXX, KC_END, KC_PGDOWN, KC_QUES, KC_SLSH, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX,
+ XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+ [JLOCK] = KEYMAP(
+ // left hand
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ XXXXXXX,KC_LBRC,KC_GRV, KC_TILD,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,S(KC_LBRC),XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,KC_BSLS,KC_PIPE,XXXXXXX,XXXXXXX,TO(CAPLOCK),XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,
+ XXXXXXX,
+ KC_ESC,XXXXXXX,XXXXXXX,
+ // right hand
+ KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RBRC, XXXXXXX,
+ XXXXXXX, _______, XXXXXXX, XXXXXXX, S(KC_RBRC), XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX,
+ XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+ [CAPLOCK] = KEYMAP(
+ // left hand
+ TO(BASE), _______, _______, _______, _______, _______, _______,
+ _______, S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), _______,
+ // _______, SFT_T(S(KC_A)), ALT_T(KC_S), CTL_T(KC_D), F(FLOCK), GUI_T(KC_G),
+ _______, S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G),
+ _______, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), _______,
+ _______, _______, _______, _______ ,_______,
+ _______, _______,
+ _______,
+ TO(BASE), _______, _______ ,
+
+ // right hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, S(KC_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P), _______,
+ S(KC_H), S(KC_J), S(KC_K), S(KC_L), S(KC_SCLN), _______,
+ _______, S(KC_N), S(KC_M), S(KC_COMM),S(KC_DOT), S(KC_QUOT), _______,
+ _______, _______,_______,_______, _______,
+ _______, _______,
+ _______,
+ _______,_______, TO(BASE)
+ )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_KEY(FLOCK,KC_F),
+ [2] = ACTION_LAYER_TAP_KEY(JLOCK,KC_J),
+ [11] = ACTION_LAYER_TAP_KEY(FLOCK,LSFT(KC_F)),
+ [12] = ACTION_LAYER_TAP_KEY(JLOCK,LSFT(KC_J))
+};
+
+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) {
+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ }
+ 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);
+
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ break;
+ case 2:
+ break;
+ default:
+ // none
+ break;
+ }
+};
diff --git a/keyboards/ergodox/keymaps/adam/readme.md b/keyboards/ergodox/keymaps/adam/readme.md
new file mode 100644
index 0000000000..9d03df5d57
--- /dev/null
+++ b/keyboards/ergodox/keymaps/adam/readme.md
@@ -0,0 +1,3 @@
+# Adam's ErgoDox
+
+Currently only really uses keys available on Let's Split, for ease of switching
diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md
index 3d6fb455a0..90ede90ae7 100644
--- a/keyboards/ergodox/readme.md
+++ b/keyboards/ergodox/readme.md
@@ -78,7 +78,6 @@ Linux page]. Some distributions provide a binary, maybe called
To flash the firmware:
- Build the firmware with `make keymapname`, for example `make default`
-
- This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
`ergodox_ez_default.hex`
diff --git a/keyboards/lets_split/keymaps/adam/config.h b/keyboards/lets_split/keymaps/adam/config.h
new file mode 100644
index 0000000000..177dd22d7e
--- /dev/null
+++ b/keyboards/lets_split/keymaps/adam/config.h
@@ -0,0 +1,43 @@
+/*
+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/>.
+*/
+
+
+#define USE_SERIAL
+
+//#define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+#ifdef SUBPROJECT_rev1
+ #include "../../rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+ #include "../../rev2/config.h"
+ /* RGB Underglow */
+ #undef RGBLED_NUM
+ #define RGBLIGHT_ANIMATIONS
+ #define RGBLED_NUM 8
+#endif
+#ifdef SUBPROJECT_rev2fliphalf
+ #include "../../rev2fliphalf/config.h"
+#endif
+
+#undef TAPPING_TERM
+#define TAPPING_TERM 200 //At 500 some bad logic takes hold
+#define PREVENT_STUCK_MODIFIERS
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
diff --git a/keyboards/lets_split/keymaps/adam/keymap.c b/keyboards/lets_split/keymaps/adam/keymap.c
new file mode 100644
index 0000000000..8aca732560
--- /dev/null
+++ b/keyboards/lets_split/keymaps/adam/keymap.c
@@ -0,0 +1,79 @@
+#include "lets_split.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define BASE 0 // default layer
+#define FLOCK 1 // symbols arrows and F keys on F held down
+#define JLOCK 2 // same as Flock but with fall thru J and mapped to J held down
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[BASE] = KEYMAP ( \
+ TD(1), KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, \
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TAB, KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+ SFT_T(KC_A), ALT_T(KC_S),CTL_T(KC_D), F(FLOCK), GUI_T(KC_G), KC_BSPC, KC_DELETE, GUI_T(KC_H), F(JLOCK), CTL_T(KC_K), ALT_T(KC_L), SFT_T(KC_SCLN), \
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOTE
+),
+[FLOCK] = KEYMAP ( \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \
+ KC_LBRC, KC_GRV, KC_TILDE, S(KC_1), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, XXXXXXX, KC_RBRC, \
+ S(KC_LBRC), _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, S(KC_RBRC), \
+ KC_BSLS, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, KC_ESC, XXXXXXX, KC_END, KC_PGDOWN, KC_QUES, KC_SLASH \
+),
+[JLOCK] = KEYMAP ( \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \
+ KC_LBRC, KC_GRV, KC_TILDE, S(KC_1), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, XXXXXXX, KC_RBRC, \
+ S(KC_LBRC), _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_LEFT, _______, KC_UP, KC_RIGHT, S(KC_RBRC), \
+ KC_BSLS, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, KC_ESC, XXXXXXX, KC_END, KC_PGDOWN, KC_QUES, KC_SLASH \
+)
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [FLOCK] = ACTION_LAYER_TAP_KEY(FLOCK,KC_F),
+ [JLOCK] = ACTION_LAYER_TAP_KEY(JLOCK,KC_J)
+};
+#ifdef TAP_DANCE_ENABLE
+void tap_1(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ register_code (KC_1);
+ unregister_code (KC_1);
+ break;
+ case 2:
+ register_code (KC_ESC);
+ unregister_code (KC_ESC);
+ break;
+ case 3:
+ register_code (KC_LSFT);
+ register_code (KC_1);
+ unregister_code (KC_1);
+ unregister_code (KC_LSFT);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [0] = ACTION_TAP_DANCE_DOUBLE(KC_1, KC_ESC),
+ [1] = ACTION_TAP_DANCE_FN(tap_1)
+};
+#endif
diff --git a/keyboards/lets_split/keymaps/adam/makefile b/keyboards/lets_split/keymaps/adam/makefile
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/lets_split/keymaps/adam/makefile
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/ps2avrGB/README.md b/keyboards/ps2avrGB/README.md
index f8360aec0c..16135eccd6 100644
--- a/keyboards/ps2avrGB/README.md
+++ b/keyboards/ps2avrGB/README.md
@@ -40,6 +40,12 @@ Then, with the keyboard plugged in, simply run this command from the
$ make ps2avrGB-program
```
+Or if you have a MechMini:
+
+```
+$ make ps2avrGB-mechmini-program
+```
+
If you prefer, you can just build it and flash the firmware directly with
`bootloadHID` if you boot the board while holding down `L_Ctrl` to keep it
in the bootloader:
diff --git a/keyboards/ps2avrGB/keymaps/mechmini/keymap.c b/keyboards/ps2avrGB/keymaps/mechmini/keymap.c
new file mode 100644
index 0000000000..4b3ed916c7
--- /dev/null
+++ b/keyboards/ps2avrGB/keymaps/mechmini/keymap.c
@@ -0,0 +1,28 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ps2avrGB.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ MECHMINI_KEYMAP(
+ TAB, Q, W, E, R, T, Y, U, I, O, P, BSLS,
+ LCTL, A, S, D, F, G, H, J, K, L, SCLN,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH,
+ GRV, LALT, LGUI, SPC, ENT, RGUI, RALT, RCTL
+ )
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
diff --git a/keyboards/ps2avrGB/ps2avrGB.h b/keyboards/ps2avrGB/ps2avrGB.h
index 813f31f804..1c7a9c1478 100644
--- a/keyboards/ps2avrGB/ps2avrGB.h
+++ b/keyboards/ps2avrGB/ps2avrGB.h
@@ -58,4 +58,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ KC_##K07, KC_##K17, KC_##K27, KC_##K37, KC_##K47, KC_##K57, KC_##K67, KC_##K77, KC_NO, KC_NO, KC_##KA7, KC_##KB7, KC_##KC7, KC_##KD7, KC_##KE7 } \
}
+#define MECHMINI_KEYMAP( \
+ K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, \
+ K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, \
+ K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, \
+ K00, K10, K20, K56, K57, KB0, KC0, K66 \
+) \
+{ \
+ { KC_##K00, KC_##K10, KC_##K20, KC_##K56, KC_NO, KC_NO, KC_##K57, KC_NO, KC_##KB0, KC_##KC0, KC_##K66, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_##K01, KC_##K11, KC_##K21, KC_##K31, KC_##K41, KC_##K51, KC_##K46, KC_##KE6, KC_##KE7, KC_##K47, KC_##KA1, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_##K02, KC_##K12, KC_##K22, KC_##K32, KC_##K42, KC_##K52, KC_##K36, KC_##KD6, KC_##KD7, KC_##K37, KC_##KA2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_##K03, KC_##K13, KC_##K23, KC_##K33, KC_##K43, KC_##K53, KC_##K26, KC_##KC6, KC_##KC7, KC_##K27, KC_##KA3, KC_##KB3, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
#endif
diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c
index bd9a69ae0a..531a3ca345 100644
--- a/tmk_core/common/action_tapping.c
+++ b/tmk_core/common/action_tapping.c
@@ -96,7 +96,7 @@ bool process_tapping(keyrecord_t *keyp)
// enqueue
return false;
}
-#if TAPPING_TERM >= 500
+#if TAPPING_TERM >= 500 || defined PERMISSIVE_HOLD
/* Process a key typed within TAPPING_TERM
* This can register the key before settlement of tapping,
* useful for long TAPPING_TERM but may prevent fast typing.