From fcef83a5d0a7e3eaf8034142ed553d58facb465a Mon Sep 17 00:00:00 2001
From: Christian Westerlund <christian@omborddata.se>
Date: Tue, 16 May 2017 15:15:42 +0200
Subject: Created a dvorak keymap for Swedish developers using Visual Studio

---
 .../ergodox/keymaps/dvorak_programmer_swe/keymap.c | 331 +++++++++++++++++++++
 .../keymaps/dvorak_programmer_swe/readme.md        |  28 ++
 2 files changed, 359 insertions(+)
 create mode 100644 keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
 create mode 100644 keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md

(limited to 'keyboards')

diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
new file mode 100644
index 0000000000..8d65f7c7a5
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
@@ -0,0 +1,331 @@
+#include "ergodox.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "version.h"
+#include "keymap_nordic.h"
+#include "keymap_norwegian.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // mouse keys
+#define DEVL 3 // dev keys
+
+#define MACRO_PUBLIC 10
+#define MACRO_PRIVATE 11
+#define MACRO_PROT 12
+
+#define MACRO_SHARED 13
+#define MACRO_CONST 14
+#define MACRO_DIM 15
+#define MACRO_STRING 16
+#define MACRO_INT 17
+#define MACRO_DEC 18
+#define MACRO_BOOL 19
+
+#define MACRO_RETURN 20
+#define MACRO_NOTHING 21
+#define MACRO_TODO 22
+
+#define MACRO_SAVE 24
+#define MACRO_BUILD 25
+#define MACRO_DEBUG 26
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   L3   |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   \    |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Del    |   -  |   ,  |   .  |   P  |   Y  |  LT1 |           |  LT1 |   F  |   G  |   C  |   R  |   L  |   Å    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | WIN    |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   Ä    |
+ * |--------+------+------+------+------+------|  LT2 |           |  LT2 |------+------+------+------+------+--------|
+ * | LShift |   Ö  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   | CTRL |  L1  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
+ *                                 |      |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
+        MO(DEVL),       KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
+        KC_DELT,        NO_MINS,        KC_COMM, KC_DOT, KC_P,   KC_Y,   TG(SYMB),
+        KC_LGUI,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   TG(MDIA),
+        CTL_T(KC_NO),   MO(SYMB),       LALT(KC_LSFT),  KC_LEFT,KC_RGHT,
+                                              ALT_T(KC_APP),  KC_LGUI,
+                                                              KC_HOME,
+                                               KC_SPC,KC_BSPC,KC_END,
+        // right hand
+             KC_RGHT,     KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             KC_BSLASH,
+             TG(1),       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             NO_AM,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             NO_AE,
+             TG(MDIA),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             KC_LALT,        CTL_T(KC_ESC),
+             KC_PGUP,
+             KC_PGDN,KC_TAB, KC_ENT
+    ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   @  |   {  |   }  |   [  |   ]  |      |           |      |   <  |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   (  |   )  |   \  |   /  |------|           |------|   >  |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      | UND  | CUT  | COP  | PAS  |      |           |      |   ?  |   1  |   2  |   3  |   %  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |   .  |   0  |   =  |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       M(0),      KC_F1,   KC_F2,    KC_F3,    KC_F4,     KC_F5,    KC_TRNS,
+       KC_TRNS,   NO_AT,   ALGR(KC_7),  ALGR(KC_0),  NO_LBRC,   NO_RBRC,  KC_TRNS,
+       KC_TRNS,   KC_HASH, NO_LPRN,  NO_RPRN,  ALGR(KC_MINS), NO_SLSH,
+       KC_TRNS,   KC_TRNS, LCTL(KC_Z),  LCTL(KC_X),  LCTL(KC_C),    LCTL(KC_V),  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, NO_LESS,   KC_7,   KC_8,    KC_9,    KC_KP_ASTERISK, KC_F12,
+                LSFT(NO_LESS), KC_4,   KC_5,    KC_6,    KC_KP_PLUS, KC_TRNS,
+       KC_TRNS, NO_QUES, KC_1,   KC_2,    KC_3,    LSFT(KC_5), KC_TRNS,
+                         KC_DOT,KC_0,  LSFT(KC_0),    KC_TRNS,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Lclk | Rclk |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[MDIA] = KEYMAP(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, 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_BTN1, KC_BTN2,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+    // 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_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
+),
+/* Keymap 3: Developer keys in vb.net
+ * shortened in layout beneth, for example int-> integer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        | Save |Build |Debug |      |      |      |           |      | bool | int  |string| dec  | Todo |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |------|           |------| priv | publ |shared| prot |      |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |      |      |      |      |      |      |           |      | const| dim  |return|nothin|      |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+[DEVL] = KEYMAP(
+       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS, M(MACRO_SAVE), M(MACRO_BUILD), M(MACRO_DEBUG), 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,
+    // right hand
+       KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+       KC_TRNS,  M(MACRO_BOOL), M(MACRO_INT), M(MACRO_STRING), M(MACRO_DEC), M(MACRO_TODO), KC_TRNS,
+                 M(MACRO_PRIVATE), M(MACRO_PUBLIC), M(MACRO_SHARED), M(MACRO_PROT), KC_TRNS, KC_TRNS,
+       KC_TRNS,  M(MACRO_CONST), M(MACRO_DIM), M(MACRO_RETURN), M(MACRO_NOTHING), 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[] = {
+    [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;
+        case MACRO_PUBLIC:
+			if (record->event.pressed) {
+				return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
+			} 
+			break;
+		case MACRO_PRIVATE:
+			if (record->event.pressed) {
+				return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
+			} 
+			break;
+        case MACRO_PROT:
+			if (record->event.pressed) {
+				return MACRO( T(P), T(R), T(O), T(T), T(E), T(C), T(T), T(E), T(D), T(SPACE),END);
+			} 
+			break;
+		case MACRO_SHARED:
+			if (record->event.pressed) {
+				return MACRO( T(S), T(H), T(A), T(R), T(E), T(D), T(SPACE), END);
+			} 
+			break;
+		case MACRO_CONST:
+			if (record->event.pressed) {
+				return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
+			} 
+			break;		
+		case MACRO_DIM:
+			if (record->event.pressed) {
+				return MACRO( T(D), T(I), T(M), T(SPACE), END);
+			} 
+			break;
+		case MACRO_STRING:
+			if (record->event.pressed) {
+				return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
+			} 
+			break;		
+		case MACRO_BOOL:
+			if (record->event.pressed) {
+				return MACRO( T(B), T(O), T(O), T(L), T(E), T(A), T(N), T(SPACE), END);
+			} 
+			break;		
+		case MACRO_INT:
+			if (record->event.pressed) {
+				return MACRO( T(I), T(N), T(T), T(SPACE), END);
+			} 
+			break;
+		case MACRO_DEC:
+			if (record->event.pressed) {
+				return MACRO( T(D), T(E), T(C), T(I), T(M), T(A), T(L), T(SPACE), END);
+			} 
+			break;
+		case MACRO_RETURN:
+			if (record->event.pressed) {
+				return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), T(SPACE), END);
+			} 
+			break;
+		case MACRO_NOTHING:
+			if (record->event.pressed) {
+				return MACRO( T(N), T(O), T(T), T(H), T(I), T(N), T(G), T(SPACE), END);
+			} 		
+		case MACRO_TODO:
+			if (record->event.pressed) {
+				return MACRO( KC_BSLASH, D(LSHIFT) ,T(T), T(O), T(D), T(O), KC_DOT, U(LSHIFT),  T(SPACE),END);
+			} 
+			break;	
+        case MACRO_SAVE:
+			if (record->event.pressed) {
+				return MACRO( D(LCTL) ,T(S), U(LCTL),END);
+			} 
+			break;	
+        case MACRO_BUILD:
+			if (record->event.pressed) {
+				return MACRO(  D(LCTL), D(LSHIFT) ,T(B), U(LSHIFT), U(LCTL),END);
+			} 
+			break;
+        case MACRO_DEBUG:
+			if (record->event.pressed) {
+				return MACRO( KC_F5 ,END);
+			} 
+			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;
+        default:
+            // none
+            break;
+    }
+
+};
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md b/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md
new file mode 100644
index 0000000000..552fa0e3ab
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md
@@ -0,0 +1,28 @@
+# ErgoDox EZ Dvorak Programmer SWEDISH
+
+Dvorak layout adjusted for a suitable programmer layout and swedish special characters added:
+
+* åäö characters added
+* Layout for common vb.net keywords
+* Common Visual Studio commands like Save, Build, Debug
+
+TODO:
+
+* (Layer 4 is qwerty (for easier gaming & less fortunate keyboard users)) Like this idea, will add it later on
+
+Known issues:
+
+* Keymap 2 modifier has not gotten its place yet..
+* Print screen, where?
+
+
+## Changelog
+
+* 2017-05-16
+  * Initial release
+
+# Author
+Christian Westerlund
+cwesterlund @ github
+
+Thanks to the author of keymap csharp_dev for inspiration!
\ No newline at end of file
-- 
cgit v1.2.3


From 3c5b9150789fdd20b4dafb91463440010a6b6759 Mon Sep 17 00:00:00 2001
From: skullY <skullydazed@gmail.com>
Date: Fri, 21 Apr 2017 22:05:22 -0700
Subject: Make KC_GRV accessible

---
 keyboards/clueboard/keymaps/shift_fn/keymap.c | 2 +-
 keyboards/clueboard/keymaps/skully/keymap.c   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'keyboards')

diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c
index fdec37a540..83ae1d6154 100644
--- a/keyboards/clueboard/keymaps/shift_fn/keymap.c
+++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _FL: Function Layer
    */
 [_FL] = KEYMAP(
-  S(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,    S(KC_GRV), KC_DEL,           BL_STEP,    \
+  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,    S(KC_GRV), KC_DEL,           BL_STEP,    \
   S(KC_TAB), S(KC_Q),   S(KC_W),S(KC_E),S(KC_R),S(KC_T),  S(KC_Y),  S(KC_U),S(KC_I),S(KC_O),   S(KC_P),   S(KC_LBRC),S(KC_RBRC),S(KC_BSLS),                  S(KC_PGDN), \
   S(KC_LCTL),S(KC_A),   MO(_CL),S(KC_D),S(KC_F),S(KC_G),  S(KC_H),  S(KC_J),S(KC_K),S(KC_L),   S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT),                               \
   MO(_FL),   S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V),  S(KC_B),  S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO),  KC_RSFT,           KC_PGUP,             \
diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c
index df7757a922..47dee8e6d4 100644
--- a/keyboards/clueboard/keymaps/skully/keymap.c
+++ b/keyboards/clueboard/keymaps/skully/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* Keymap _FL: Function Layer
    */
 [_FL] = KEYMAP(
-  S(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,    S(KC_GRV), KC_DEL,           BL_STEP,    \
+  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,    S(KC_GRV), KC_DEL,           BL_STEP,    \
   S(KC_TAB), S(KC_Q),   S(KC_W),S(KC_E),S(KC_R),S(KC_T),  S(KC_Y),  S(KC_U),S(KC_I),S(KC_O),   S(KC_P),   S(KC_LBRC),S(KC_RBRC),S(KC_BSLS),                  S(KC_PGDN), \
   S(KC_LCTL),S(KC_A),   MO(_CL),S(KC_D),S(KC_F),S(KC_G),  S(KC_H),  S(KC_J),S(KC_K),S(KC_L),   S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT),                               \
   MO(_FL),   S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V),  S(KC_B),  S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO),  KC_RSFT,           KC_PGUP,             \
-- 
cgit v1.2.3


From a74e69e9fa889113ee31fbc8dc7e6848fdb07576 Mon Sep 17 00:00:00 2001
From: skullY <skullydazed@gmail.com>
Date: Tue, 16 May 2017 13:09:23 -0700
Subject: Increase TAPPING_TERM for the Clueboard

---
 keyboards/clueboard/config.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

(limited to 'keyboards')

diff --git a/keyboards/clueboard/config.h b/keyboards/clueboard/config.h
index ad68323856..3817062777 100644
--- a/keyboards/clueboard/config.h
+++ b/keyboards/clueboard/config.h
@@ -42,6 +42,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* How long a "key tap" is. Used in functions like LT() and macros to determine
+ * how long QMK "holds down" a tapped key.
+ *
+ * If you are macOS this should be at least 500ms to avoid macOS's accidental
+ * Caps Lock activation prevention measures, as noted by /u/JerryEn here:
+ *
+ * https://www.reddit.com/r/clueboard/comments/6bfc2m/lt_not_working_with_caps_lock/dhmbp88/
+ */
+#define TAPPING_TERM 600 // ms
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
-- 
cgit v1.2.3


From aaa01d0a4e633e26c58e5bc9c0bc557604088140 Mon Sep 17 00:00:00 2001
From: tengg <tengg@users.noreply.github.com>
Date: Wed, 17 May 2017 21:20:01 -0400
Subject: ESC/GRAVE/TILDE better handling (#1307)

* revise HHKB bootloader_size to 4096 such that sw reset works

* cleanup esr/grave/tilde handling function
---
 keyboards/clueboard/keymaps/mac_optimized/keymap.c | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

(limited to 'keyboards')

diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
index 7ea02d27e8..e72733092f 100644
--- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c
+++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
@@ -50,35 +50,28 @@ const uint16_t PROGMEM fn_actions[] = {
 
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   static uint8_t mods_pressed;
-  static bool mod_flag;
 
   switch (id) {
     case 0:
       /* Handle the combined Grave/Esc key
        */
-      mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
-
       if (record->event.pressed) {
         /* The key is being pressed.
          */
+        mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
         if (mods_pressed) {
-          mod_flag = true;
-          add_key(KC_GRV);
-          send_keyboard_report();
+          register_code(KC_GRV);
         } else {
-          add_key(KC_ESC);
-          send_keyboard_report();
+          register_code(KC_ESC);
         }
       } else {
         /* The key is being released.
          */
-        if (mod_flag) {
-          mod_flag = false;
-          del_key(KC_GRV);
-          send_keyboard_report();
+        if (mods_pressed) {
+          mods_pressed = false;
+          unregister_code(KC_GRV);
         } else {
-          del_key(KC_ESC);
-          send_keyboard_report();
+          unregister_code(KC_ESC);
         }
       }
       break;
-- 
cgit v1.2.3


From 85df6873487000583454657fb20ac7cea7194f8d Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Thu, 18 May 2017 18:55:07 -0400
Subject: m10a lowercase

---
 keyboards/M10A/M10A.c                   |  5 --
 keyboards/M10A/M10A.h                   | 19 --------
 keyboards/M10A/Makefile                 |  3 --
 keyboards/M10A/config.h                 | 82 ---------------------------------
 keyboards/M10A/keymaps/default/Makefile |  3 --
 keyboards/M10A/keymaps/default/keymap.c | 49 --------------------
 keyboards/M10A/rules.mk                 | 68 ---------------------------
 keyboards/m10a/Makefile                 |  3 ++
 keyboards/m10a/config.h                 | 82 +++++++++++++++++++++++++++++++++
 keyboards/m10a/keymaps/default/Makefile |  3 ++
 keyboards/m10a/keymaps/default/keymap.c | 49 ++++++++++++++++++++
 keyboards/m10a/m10a.c                   |  5 ++
 keyboards/m10a/m10a.h                   | 19 ++++++++
 keyboards/m10a/rules.mk                 | 68 +++++++++++++++++++++++++++
 14 files changed, 229 insertions(+), 229 deletions(-)
 delete mode 100644 keyboards/M10A/M10A.c
 delete mode 100644 keyboards/M10A/M10A.h
 delete mode 100644 keyboards/M10A/Makefile
 delete mode 100644 keyboards/M10A/config.h
 delete mode 100644 keyboards/M10A/keymaps/default/Makefile
 delete mode 100644 keyboards/M10A/keymaps/default/keymap.c
 delete mode 100644 keyboards/M10A/rules.mk
 create mode 100644 keyboards/m10a/Makefile
 create mode 100644 keyboards/m10a/config.h
 create mode 100644 keyboards/m10a/keymaps/default/Makefile
 create mode 100644 keyboards/m10a/keymaps/default/keymap.c
 create mode 100644 keyboards/m10a/m10a.c
 create mode 100644 keyboards/m10a/m10a.h
 create mode 100644 keyboards/m10a/rules.mk

(limited to 'keyboards')

diff --git a/keyboards/M10A/M10A.c b/keyboards/M10A/M10A.c
deleted file mode 100644
index 9a3bd15e1a..0000000000
--- a/keyboards/M10A/M10A.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "M10A.h"
-
-void matrix_init_kb(void) {
-	matrix_init_user();
-}
\ No newline at end of file
diff --git a/keyboards/M10A/M10A.h b/keyboards/M10A/M10A.h
deleted file mode 100644
index 6ec334fb3c..0000000000
--- a/keyboards/M10A/M10A.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef M10A_H
-#define M10A_H
-
-#include "quantum.h"
-
-#define M10A( \
-      k00, k01, k02, \
-      k10, k11, k12, \
-      k20, k21, k22, \
-      k30, k31, k32  \
-) \
-{ \
-    { k00, k01, k02 }, \
-    { k10, k11, k12 }, \
-    { k20, k21, k22 }, \
-    { k30, k31, k32 } \
-} 
-
-#endif
diff --git a/keyboards/M10A/Makefile b/keyboards/M10A/Makefile
deleted file mode 100644
index 4e2a6f00fd..0000000000
--- a/keyboards/M10A/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef MAKEFILE_INCLUDED
-	include ../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/M10A/config.h b/keyboards/M10A/config.h
deleted file mode 100644
index f052ab6297..0000000000
--- a/keyboards/M10A/config.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-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      0x0007
-#define DEVICE_VER 		0x0001
-#define MANUFACTURER    Machine Industries
-#define PRODUCT         M10-A
-#define DESCRIPTION     RAMA x Machine Industries M10-A
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 3
-
-/* Planck PCB default pin-out */
-#define MATRIX_ROW_PINS { B6, F7, F6, D6 }
-#define MATRIX_COL_PINS { F5, F1, F0 }
-#define UNUSED_PINS
-
-#define BACKLIGHT_PIN B7
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-#define BACKLIGHT_LEVELS 6
-
-/* 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/M10A/keymaps/default/Makefile b/keyboards/M10A/keymaps/default/Makefile
deleted file mode 100644
index 457a3d01d4..0000000000
--- a/keyboards/M10A/keymaps/default/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
-	include ../../../../Makefile
-endif
diff --git a/keyboards/M10A/keymaps/default/keymap.c b/keyboards/M10A/keymaps/default/keymap.c
deleted file mode 100644
index 75abeb5b75..0000000000
--- a/keyboards/M10A/keymaps/default/keymap.c
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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 "M10A.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.
-
-enum layers {
-  _LAYER0,
-  _LAYER1,
-  _LAYER2,
-  _LAYER3,
-  _LAYER4,
-  _LAYER5,
-  _LAYER6,
-  _LAYER7,
-  _LAYER8,
-  _LAYER9
-};
-
-// // Fillers to make layering more clear
-// #define _______ KC_TRNS
-// #define XXXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_LAYER0] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER1] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER2] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER3] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER4] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER5] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER6] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER7] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER8] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
-  [_LAYER9] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}
-};
-
-void matrix_init_user(void) {
-  #ifdef BACKLIGHT_ENABLE
-    backlight_level(0);
-  #endif
-}
diff --git a/keyboards/M10A/rules.mk b/keyboards/M10A/rules.mk
deleted file mode 100644
index f5a785dbcc..0000000000
--- a/keyboards/M10A/rules.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# 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=4096
-
-# 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 ?= no        # 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 ?= yes      # Enable keyboard backlight functionality
-MIDI_ENABLE ?= no            # MIDI controls
-AUDIO_ENABLE ?= no           # Audio output on port C6
-UNICODE_ENABLE ?= yes         # Unicode
-BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.
-API_SYSEX_ENABLE = 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/m10a/Makefile b/keyboards/m10a/Makefile
new file mode 100644
index 0000000000..4e2a6f00fd
--- /dev/null
+++ b/keyboards/m10a/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/m10a/config.h b/keyboards/m10a/config.h
new file mode 100644
index 0000000000..f052ab6297
--- /dev/null
+++ b/keyboards/m10a/config.h
@@ -0,0 +1,82 @@
+/*
+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      0x0007
+#define DEVICE_VER 		0x0001
+#define MANUFACTURER    Machine Industries
+#define PRODUCT         M10-A
+#define DESCRIPTION     RAMA x Machine Industries M10-A
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 3
+
+/* Planck PCB default pin-out */
+#define MATRIX_ROW_PINS { B6, F7, F6, D6 }
+#define MATRIX_COL_PINS { F5, F1, F0 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN B7
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 6
+
+/* 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/m10a/keymaps/default/Makefile b/keyboards/m10a/keymaps/default/Makefile
new file mode 100644
index 0000000000..457a3d01d4
--- /dev/null
+++ b/keyboards/m10a/keymaps/default/Makefile
@@ -0,0 +1,3 @@
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif
diff --git a/keyboards/m10a/keymaps/default/keymap.c b/keyboards/m10a/keymaps/default/keymap.c
new file mode 100644
index 0000000000..97434a461d
--- /dev/null
+++ b/keyboards/m10a/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// 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 "m10a.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.
+
+enum layers {
+  _LAYER0,
+  _LAYER1,
+  _LAYER2,
+  _LAYER3,
+  _LAYER4,
+  _LAYER5,
+  _LAYER6,
+  _LAYER7,
+  _LAYER8,
+  _LAYER9
+};
+
+// // Fillers to make layering more clear
+// #define _______ KC_TRNS
+// #define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_LAYER0] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER1] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER2] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER3] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER4] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER5] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER6] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER7] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER8] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}},
+  [_LAYER9] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}
+};
+
+void matrix_init_user(void) {
+  #ifdef BACKLIGHT_ENABLE
+    backlight_level(0);
+  #endif
+}
diff --git a/keyboards/m10a/m10a.c b/keyboards/m10a/m10a.c
new file mode 100644
index 0000000000..9cc7f069ae
--- /dev/null
+++ b/keyboards/m10a/m10a.c
@@ -0,0 +1,5 @@
+#include "m10a.h"
+
+void matrix_init_kb(void) {
+	matrix_init_user();
+}
\ No newline at end of file
diff --git a/keyboards/m10a/m10a.h b/keyboards/m10a/m10a.h
new file mode 100644
index 0000000000..6ec334fb3c
--- /dev/null
+++ b/keyboards/m10a/m10a.h
@@ -0,0 +1,19 @@
+#ifndef M10A_H
+#define M10A_H
+
+#include "quantum.h"
+
+#define M10A( \
+      k00, k01, k02, \
+      k10, k11, k12, \
+      k20, k21, k22, \
+      k30, k31, k32  \
+) \
+{ \
+    { k00, k01, k02 }, \
+    { k10, k11, k12 }, \
+    { k20, k21, k22 }, \
+    { k30, k31, k32 } \
+} 
+
+#endif
diff --git a/keyboards/m10a/rules.mk b/keyboards/m10a/rules.mk
new file mode 100644
index 0000000000..f5a785dbcc
--- /dev/null
+++ b/keyboards/m10a/rules.mk
@@ -0,0 +1,68 @@
+# 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=4096
+
+# 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 ?= no        # 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 ?= yes      # Enable keyboard backlight functionality
+MIDI_ENABLE ?= no            # MIDI controls
+AUDIO_ENABLE ?= no           # Audio output on port C6
+UNICODE_ENABLE ?= yes         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE ?= no        # Enable WS2812 RGB underlight.
+API_SYSEX_ENABLE = 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
-- 
cgit v1.2.3


From 9c284786e728a2e8834745d6bb7df0fda4099cf3 Mon Sep 17 00:00:00 2001
From: jerryen <Jerry@jerryen.com>
Date: Fri, 19 May 2017 17:24:47 -0700
Subject: Workaround for the macOS caps lock delay (#1308)

* Add 80ms delay for KC_CAPS when used as a tap key

Workaround for the macOS caps lock delay

* Revert "Increase TAPPING_TERM for the Clueboard"

This reverts commit a74e69e9fa889113ee31fbc8dc7e6848fdb07576.
---
 keyboards/clueboard/config.h | 10 ----------
 tmk_core/common/action.c     |  4 ++++
 2 files changed, 4 insertions(+), 10 deletions(-)

(limited to 'keyboards')

diff --git a/keyboards/clueboard/config.h b/keyboards/clueboard/config.h
index 3817062777..ad68323856 100644
--- a/keyboards/clueboard/config.h
+++ b/keyboards/clueboard/config.h
@@ -42,16 +42,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
-/* How long a "key tap" is. Used in functions like LT() and macros to determine
- * how long QMK "holds down" a tapped key.
- *
- * If you are macOS this should be at least 500ms to avoid macOS's accidental
- * Caps Lock activation prevention measures, as noted by /u/JerryEn here:
- *
- * https://www.reddit.com/r/clueboard/comments/6bfc2m/lt_not_working_with_caps_lock/dhmbp88/
- */
-#define TAPPING_TERM 600 // ms
-
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index 8640dfab35..a534f818ec 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -26,6 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "action_macro.h"
 #include "action_util.h"
 #include "action.h"
+#include "wait.h"
 
 #ifdef DEBUG_ACTION
 #include "debug.h"
@@ -438,6 +439,9 @@ void process_action(keyrecord_t *record, action_t action)
                     } else {
                         if (tap_count > 0) {
                             dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n");
+                            if (action.layer_tap.code == KC_CAPS) {
+                                wait_ms(80);
+                            }
                             unregister_code(action.layer_tap.code);
                         } else {
                             dprint("KEYMAP_TAP_KEY: No tap: Off on release\n");
-- 
cgit v1.2.3