aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornstickney <nstickney@gmail.com>2017-03-07 19:09:56 -0600
committernstickney <nstickney@gmail.com>2017-03-07 19:09:56 -0600
commiteab0166f832f3cca88059d87374426e6b017beff (patch)
tree28bb5b4f5fe9e6e5dbb88ff8864835e7e2e2bbee
parentb69b214d524bb658152c5b2491cb270b8464aeb4 (diff)
parent615bfc4eca8204b73c592a076ca02aeaeceb7e1e (diff)
downloadqmk_firmware-eab0166f832f3cca88059d87374426e6b017beff.tar.gz
qmk_firmware-eab0166f832f3cca88059d87374426e6b017beff.zip
Merge remote-tracking branch 'upstream/master'
-rw-r--r--keyboards/clueboard/keymaps/caps_fn/keymap.c83
-rw-r--r--keyboards/clueboard/keymaps/caps_fn/layout.pngbin0 -> 112289 bytes
-rw-r--r--keyboards/clueboard/keymaps/caps_fn/readme.md15
-rw-r--r--keyboards/clueboard/keymaps/default/keymap.c93
-rw-r--r--keyboards/clueboard/keymaps/default/layout.pngbin0 -> 112442 bytes
-rw-r--r--keyboards/clueboard/keymaps/default/readme.md17
-rw-r--r--keyboards/clueboard/keymaps/mac_optimized/keymap.c83
-rw-r--r--keyboards/clueboard/keymaps/mac_optimized/layout.pngbin0 -> 107368 bytes
-rw-r--r--keyboards/clueboard/keymaps/mac_optimized/readme.md15
-rw-r--r--keyboards/clueboard/keymaps/max/Makefile49
-rw-r--r--keyboards/clueboard/keymaps/max/keymap.c85
-rw-r--r--keyboards/clueboard/keymaps/maximised/keymap.c47
-rw-r--r--keyboards/clueboard/keymaps/maximised/layout.pngbin0 -> 111157 bytes
-rw-r--r--keyboards/clueboard/keymaps/maximised/readme.md14
-rw-r--r--keyboards/clueboard/keymaps/mouse_keys/Makefile1
-rw-r--r--keyboards/clueboard/keymaps/mouse_keys/keymap.c93
-rw-r--r--keyboards/clueboard/keymaps/mouse_keys/layout.pngbin0 -> 143816 bytes
-rw-r--r--keyboards/clueboard/keymaps/mouse_keys/readme.md16
-rw-r--r--keyboards/clueboard/keymaps/shift_fn/keymap.c83
-rw-r--r--keyboards/clueboard/keymaps/shift_fn/layout.pngbin0 -> 107234 bytes
-rw-r--r--keyboards/clueboard/keymaps/shift_fn/readme.md17
-rw-r--r--keyboards/clueboard/keymaps/skully/keymap.c90
-rw-r--r--keyboards/clueboard/keymaps/skully/layout.pngbin0 -> 111676 bytes
-rw-r--r--keyboards/clueboard/keymaps/skully/readme.md11
-rw-r--r--keyboards/clueboard/keymaps/unix_optimized/keymap.c83
-rw-r--r--keyboards/clueboard/keymaps/unix_optimized/layout.pngbin0 -> 111171 bytes
-rw-r--r--keyboards/clueboard/keymaps/unix_optimized/readme.md15
-rw-r--r--keyboards/clueboard/keymaps/win_optimized/keymap.c83
-rw-r--r--keyboards/clueboard/keymaps/win_optimized/layout.pngbin0 -> 110405 bytes
-rw-r--r--keyboards/clueboard/keymaps/win_optimized/readme.md17
-rw-r--r--keyboards/clueboard/rules.mk10
-rw-r--r--keyboards/ergodox/keymaps/colemak_programmer/Makefile1
-rw-r--r--keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_001.jpgbin0 -> 301259 bytes
-rw-r--r--keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_002.jpgbin0 -> 235864 bytes
-rw-r--r--keyboards/ergodox/keymaps/colemak_programmer/keymap.c256
-rw-r--r--keyboards/ergodox/keymaps/colemak_programmer/readme.md23
-rw-r--r--keyboards/gh60/keymaps/unxmaal/Makefile112
-rw-r--r--keyboards/gh60/keymaps/unxmaal/README.md20
-rw-r--r--keyboards/gh60/keymaps/unxmaal/WS2812-wiring.jpgbin0 -> 1038926 bytes
-rw-r--r--keyboards/gh60/keymaps/unxmaal/config.h190
-rw-r--r--keyboards/gh60/keymaps/unxmaal/keymap.c228
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c16
-rw-r--r--keyboards/planck/keymaps/callum/readme.md10
-rw-r--r--keyboards/planck/keymaps/default/keymap.c16
-rw-r--r--keyboards/planck/keymaps/espynn/keyboard-layout.jpgbin52908 -> 53129 bytes
-rw-r--r--keyboards/planck/keymaps/espynn/keymap.c22
-rw-r--r--keyboards/planck/keymaps/espynn/layout.json131
-rw-r--r--keyboards/planck/keymaps/espynn/readme.md12
-rw-r--r--keyboards/roadkit/Makefile3
-rw-r--r--keyboards/roadkit/config.h162
-rw-r--r--keyboards/roadkit/keymaps/default/Makefile21
-rw-r--r--keyboards/roadkit/keymaps/default/config.h8
-rw-r--r--keyboards/roadkit/keymaps/default/keymap.c49
-rw-r--r--keyboards/roadkit/keymaps/default/readme.md1
-rw-r--r--keyboards/roadkit/keymaps/singles/Makefile21
-rw-r--r--keyboards/roadkit/keymaps/singles/config.h8
-rw-r--r--keyboards/roadkit/keymaps/singles/keymap.c61
-rw-r--r--keyboards/roadkit/keymaps/singles/readme.md3
-rw-r--r--keyboards/roadkit/readme.md32
-rw-r--r--keyboards/roadkit/roadkit.c28
-rw-r--r--keyboards/roadkit/roadkit.h33
-rw-r--r--keyboards/roadkit/rules.mk69
-rw-r--r--keyboards/satan/keymaps/unxmaal/Makefile21
-rw-r--r--keyboards/satan/keymaps/unxmaal/README.md20
-rw-r--r--keyboards/satan/keymaps/unxmaal/keymap.c119
-rw-r--r--tmk_core/common/action_tapping.c2
66 files changed, 2369 insertions, 349 deletions
diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c
new file mode 100644
index 000000000..37f00e8d8
--- /dev/null
+++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c
@@ -0,0 +1,83 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _BL: Base Layer (Default Layer)
17 */
18[_BL] = KEYMAP(
19 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_GRV, KC_BSPC, KC_PGUP, \
20 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, KC_PGDN, \
21 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_NUHS, KC_ENT, \
22 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
23 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
24
25 /* Keymap _FL: Function Layer
26 */
27[_FL] = KEYMAP(
28 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_DEL, BL_STEP, \
29 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
30 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
31 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
32 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
33
34 /* Keymap _CL: Control layer
35 */
36[_CL] = KEYMAP(
37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
41 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
42};
43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
47const uint16_t PROGMEM fn_actions[] = {
48 [0] = ACTION_FUNCTION(0), // Calls action_function()
49};
50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed;
53
54 switch (id) {
55 case 0:
56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
60 if (record->event.pressed) {
61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
64 add_key(KC_GRV);
65 send_keyboard_report();
66 } else {
67 add_key(KC_ESC);
68 send_keyboard_report();
69 }
70 } else {
71 /* The key is being released.
72 */
73 if (mods_pressed) {
74 del_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 del_key(KC_ESC);
78 send_keyboard_report();
79 }
80 }
81 break;
82 }
83}
diff --git a/keyboards/clueboard/keymaps/caps_fn/layout.png b/keyboards/clueboard/keymaps/caps_fn/layout.png
new file mode 100644
index 000000000..a5bd57adb
--- /dev/null
+++ b/keyboards/clueboard/keymaps/caps_fn/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/caps_fn/readme.md b/keyboards/clueboard/keymaps/caps_fn/readme.md
new file mode 100644
index 000000000..74ad01fca
--- /dev/null
+++ b/keyboards/clueboard/keymaps/caps_fn/readme.md
@@ -0,0 +1,15 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Caps Fn Layout
13
14This is the default layout except that Caps Lock acts like Caps Lock when
15tapped but Fn when held.
diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c
index 01f158bf0..37f00e8d8 100644
--- a/keyboards/clueboard/keymaps/default/keymap.c
+++ b/keyboards/clueboard/keymaps/default/keymap.c
@@ -1,7 +1,8 @@
1#include "clueboard.h" 1#include "clueboard.h"
2 2
3// Used for SHIFT_ESC 3// Helpful defines
4#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) 4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
5 6
6// Each layer gets a name for readability, which is then used in the keymap matrix below. 7// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name. 8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -9,21 +10,10 @@
9// entirely and just use numbers. 10// entirely and just use numbers.
10#define _BL 0 11#define _BL 0
11#define _FL 1 12#define _FL 1
12#define _RS 2 13#define _CL 2
13 14
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap _BL: (Base Layer) Default Layer 16 /* Keymap _BL: Base Layer (Default Layer)
16 * ,--------------------------------------------------------------------------. ,----.
17 * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
18 * |--------------------------------------------------------------------------| |----|
19 * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
20 * |--------------------------------------------------------------------------| `----'
21 * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
22 * |-----------------------------------------------------------------------------.
23 * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
24 * |------------------------------------------------------------------------|----|----.
25 * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
26 * `----------------------------------------------------------------------------------'
27 */ 17 */
28[_BL] = KEYMAP( 18[_BL] = KEYMAP(
29 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_GRV, KC_BSPC, KC_PGUP, \ 19 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_GRV, KC_BSPC, KC_PGUP, \
@@ -33,61 +23,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), 23 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
34 24
35 /* Keymap _FL: Function Layer 25 /* Keymap _FL: Function Layer
36 * ,--------------------------------------------------------------------------. ,----.
37 * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
38 * |--------------------------------------------------------------------------| |----|
39 * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
40 * |--------------------------------------------------------------------------| `----'
41 * | | | _RS| | | | | | | | | | | |
42 * |-----------------------------------------------------------------------------.
43 * | | | | | | | | | | | | | | |PGUP|
44 * |------------------------------------------------------------------------|----|----.
45 * | | | | | | | | | | _FL|HOME|PGDN| END|
46 * `----------------------------------------------------------------------------------'
47 */ 26 */
48[_FL] = KEYMAP( 27[_FL] = KEYMAP(
49 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_DEL, BL_STEP, \ 28 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_DEL, BL_STEP, \
50 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ 29 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
51 KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ 30 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
52 KC_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_PGUP, \ 31 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END), 32 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
54 33
55 /* Keymap _RS: Reset layer 34 /* Keymap _CL: Control layer
56 * ,--------------------------------------------------------------------------. ,----.
57 * | | | | | | | | | | | | | | | | | |
58 * |--------------------------------------------------------------------------| |----|
59 * | | | | |RESET| | | | | | | | | | | |
60 * |--------------------------------------------------------------------------| `----'
61 * | | | _RS| | | | | | | | | | | |
62 * |-----------------------------------------------------------------------------.
63 * | | | | | | | | | | | | | | | |
64 * |------------------------------------------------------------------------|----|----.
65 * | | | | | | | | | | _FL| | | |
66 * `----------------------------------------------------------------------------------'
67 */ 35 */
68[_RS] = KEYMAP( 36[_CL] = KEYMAP(
69 KC_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, RGB_TOG, RGB_VAI, \ 37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
70 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \ 38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
71 KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ 39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
72 MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \ 40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
73 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI), 41 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
74};
75
76enum function_id {
77 SHIFT_ESC,
78}; 42};
79 43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
80const uint16_t PROGMEM fn_actions[] = { 47const uint16_t PROGMEM fn_actions[] = {
81 [0] = ACTION_FUNCTION(SHIFT_ESC), 48 [0] = ACTION_FUNCTION(0), // Calls action_function()
82}; 49};
83 50
84void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
85 static uint8_t shift_esc_shift_mask; 52 static uint8_t mods_pressed;
53
86 switch (id) { 54 switch (id) {
87 case SHIFT_ESC: 55 case 0:
88 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; 56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
89 if (record->event.pressed) { 60 if (record->event.pressed) {
90 if (shift_esc_shift_mask) { 61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
91 add_key(KC_GRV); 64 add_key(KC_GRV);
92 send_keyboard_report(); 65 send_keyboard_report();
93 } else { 66 } else {
@@ -95,7 +68,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
95 send_keyboard_report(); 68 send_keyboard_report();
96 } 69 }
97 } else { 70 } else {
98 if (shift_esc_shift_mask) { 71 /* The key is being released.
72 */
73 if (mods_pressed) {
99 del_key(KC_GRV); 74 del_key(KC_GRV);
100 send_keyboard_report(); 75 send_keyboard_report();
101 } else { 76 } else {
diff --git a/keyboards/clueboard/keymaps/default/layout.png b/keyboards/clueboard/keymaps/default/layout.png
new file mode 100644
index 000000000..cd318163e
--- /dev/null
+++ b/keyboards/clueboard/keymaps/default/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/default/readme.md b/keyboards/clueboard/keymaps/default/readme.md
new file mode 100644
index 000000000..cede17ee1
--- /dev/null
+++ b/keyboards/clueboard/keymaps/default/readme.md
@@ -0,0 +1,17 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Default Clueboard Layout
13
14This is the default layout that comes flashed on every Clueboard. For the most
15part it's a straightforward and easy to follow layout. The only unusual key is
16the key in the upper left, which sends Escape normally, but Grave when any of
17the Ctrl, Alt, or GUI modifiers are held down.
diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
new file mode 100644
index 000000000..59f7ff243
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
@@ -0,0 +1,83 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _BL: Base Layer (Default Layer)
17 */
18[_BL] = KEYMAP(
19 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_GRV, KC_BSPC, KC_PGUP, \
20 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, KC_PGDN, \
21 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_NUHS, KC_ENT, \
22 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
23 KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
24
25 /* Keymap _FL: Function Layer
26 */
27[_FL] = KEYMAP(
28 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_DEL, BL_STEP, \
29 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
30 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
31 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
32 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
33
34 /* Keymap _CL: Control layer
35 */
36[_CL] = KEYMAP(
37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
41 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
42};
43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
47const uint16_t PROGMEM fn_actions[] = {
48 [0] = ACTION_FUNCTION(0), // Calls action_function()
49};
50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed;
53
54 switch (id) {
55 case 0:
56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
60 if (record->event.pressed) {
61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
64 add_key(KC_GRV);
65 send_keyboard_report();
66 } else {
67 add_key(KC_ESC);
68 send_keyboard_report();
69 }
70 } else {
71 /* The key is being released.
72 */
73 if (mods_pressed) {
74 del_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 del_key(KC_ESC);
78 send_keyboard_report();
79 }
80 }
81 break;
82 }
83}
diff --git a/keyboards/clueboard/keymaps/mac_optimized/layout.png b/keyboards/clueboard/keymaps/mac_optimized/layout.png
new file mode 100644
index 000000000..e84ba54ea
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mac_optimized/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/mac_optimized/readme.md b/keyboards/clueboard/keymaps/mac_optimized/readme.md
new file mode 100644
index 000000000..940e09125
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mac_optimized/readme.md
@@ -0,0 +1,15 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Default Clueboard Layout for Mac
13
14This is the default Clueboard layout with Alt and GUI switched to match Mac
15conventions.
diff --git a/keyboards/clueboard/keymaps/max/Makefile b/keyboards/clueboard/keymaps/max/Makefile
deleted file mode 100644
index 950dadf84..000000000
--- a/keyboards/clueboard/keymaps/max/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
1#----------------------------------------------------------------------------
2# On command line:
3#
4# make all = Make software.
5#
6# make clean = Clean out built project files.
7#
8# make coff = Convert ELF to AVR COFF.
9#
10# make extcoff = Convert ELF to AVR Extended COFF.
11#
12# make program = Download the hex file to the device.
13# Please customize your programmer settings(PROGRAM_CMD)
14#
15# make teensy = Download the hex file to the device, using teensy_loader_cli.
16# (must have teensy_loader_cli installed).
17#
18# make dfu = Download the hex file to the device, using dfu-programmer (must
19# have dfu-programmer installed).
20#
21# make flip = Download the hex file to the device, using Atmel FLIP (must
22# have Atmel FLIP installed).
23#
24# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
25# (must have dfu-programmer installed).
26#
27# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
28# (must have Atmel FLIP installed).
29#
30# make debug = Start either simulavr or avarice as specified for debugging,
31# with avr-gdb or avr-insight as the front end for debugging.
32#
33# make filename.s = Just compile filename.c into the assembler code only.
34#
35# make filename.i = Create a preprocessed source file for use in submitting
36# bug reports to the GCC project.
37#
38# To rebuild project do "make clean" then "make all".
39#----------------------------------------------------------------------------
40
41# Build Options
42# change to "no" to disable the options, or define them in the makefile.mk in
43# the appropriate keymap folder that will get included automatically
44#
45RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
46
47ifndef QUANTUM_DIR
48 include ../../../../Makefile
49endif \ No newline at end of file
diff --git a/keyboards/clueboard/keymaps/max/keymap.c b/keyboards/clueboard/keymaps/max/keymap.c
deleted file mode 100644
index 193809840..000000000
--- a/keyboards/clueboard/keymaps/max/keymap.c
+++ /dev/null
@@ -1,85 +0,0 @@
1#include "clueboard.h"
2
3// Used for SHIFT_ESC
4#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
5
6// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name.
8// Layer names don't all need to be of the same length, obviously, and you can also skip them
9// entirely and just use numbers.
10#define _BL 0
11#define _FL 1
12#define _RS 2
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap _BL: (Base Layer) Default Layer
16 * ,--------------------------------------------------------------------------. ,----.
17 * | Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| ~| BS| |PgUp|
18 * |--------------------------------------------------------------------------| |----|
19 * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PgDn|
20 * |--------------------------------------------------------------------------| `----'
21 * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
22 * |-----------------------------------------------------------------------------.
23 * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| Up|
24 * |------------------------------------------------------------------------|----|----.
25 * | Ctrl| Alt| Gui| MHen| Space| Space| Hen| Gui| Alt| Ctrl|Left|Down|Rght|
26 * `----------------------------------------------------------------------------------'
27 */
28[_BL] = KEYMAP(
29 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_BSPC, KC_PGUP, \
30 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, KC_PGDN, \
31 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_NUHS, KC_ENT, \
32 MO(_FL), 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_UP, \
33 KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
34
35 /* Keymap _FL: Function Layer
36 * ,--------------------------------------------------------------------------. ,----.
37 * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
38 * |--------------------------------------------------------------------------| |----|
39 * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
40 * |--------------------------------------------------------------------------| `----'
41 * | | | _RS| | | | | | | | | | | |
42 * |-----------------------------------------------------------------------------.
43 * | | | | | | | | | | | | | | |PGUP|
44 * |------------------------------------------------------------------------|----|----.
45 * | | | | | | | | | | _FL|HOME|PGDN| END|
46 * `----------------------------------------------------------------------------------'
47 */
48[_FL] = KEYMAP(
49 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_DEL, BL_STEP, \
50 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
51 KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
52 MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_PGUP, \
53 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
54
55 /* Keymap _RS: Reset/Underlight layer
56 * ,--------------------------------------------------------------------------. ,----.
57 * | | | | | | | | | | | | | | | | | |
58 * |--------------------------------------------------------------------------| |----|
59 * | | | | |RESET| | | | | | | | | | | |
60 * |--------------------------------------------------------------------------| `----'
61 * | | | _RS| | | | | | | | | | | |
62 * |-----------------------------------------------------------------------------.
63 * | | | | | | | | | | | | | | | |
64 * |------------------------------------------------------------------------|----|----.
65 * | | | | | | | | | | _FL| | | |
66 * `----------------------------------------------------------------------------------'
67 */
68[_RS] = KEYMAP(
69 KC_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, RGB_TOG, RGB_VAI, \
70 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \
71 KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
72 MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \
73 KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI),
74};
75
76/*enum function_id {
77};*/
78
79const uint16_t PROGMEM fn_actions[] = {
80};
81
82void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
83 switch (id) {
84 }
85}
diff --git a/keyboards/clueboard/keymaps/maximised/keymap.c b/keyboards/clueboard/keymaps/maximised/keymap.c
new file mode 100644
index 000000000..ebaefa669
--- /dev/null
+++ b/keyboards/clueboard/keymaps/maximised/keymap.c
@@ -0,0 +1,47 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define _______ KC_TRNS
5
6// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name.
8// Layer names don't all need to be of the same length, obviously, and you can also skip them
9// entirely and just use numbers.
10#define _BL 0
11#define _FL 1
12#define _CL 2
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap _BL: Base Layer (Default Layer)
16 */
17[_BL] = KEYMAP(
18 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_BSPC, KC_PGUP, \
19 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, KC_PGDN, \
20 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_NUHS, KC_ENT, \
21 MO(_FL), 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_UP, \
22 KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
23
24 /* Keymap _FL: Function Layer
25 */
26[_FL] = KEYMAP(
27 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_DEL, BL_STEP, \
28 _______, _______, _______,_______,_______,_______,_______,_______,_______,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
29 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
30 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), KC_PGUP, \
31 _______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END),
32
33 /* Keymap _CL: Reset/Underlight layer
34 */
35[_CL] = KEYMAP(
36 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
37 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
38 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
39 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
40 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
41};
42
43const uint16_t PROGMEM fn_actions[] = {
44};
45
46void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
47};
diff --git a/keyboards/clueboard/keymaps/maximised/layout.png b/keyboards/clueboard/keymaps/maximised/layout.png
new file mode 100644
index 000000000..bdc5d7623
--- /dev/null
+++ b/keyboards/clueboard/keymaps/maximised/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/maximised/readme.md b/keyboards/clueboard/keymaps/maximised/readme.md
new file mode 100644
index 000000000..b95d1750f
--- /dev/null
+++ b/keyboards/clueboard/keymaps/maximised/readme.md
@@ -0,0 +1,14 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Maximised Clueboard Layout
13
14This layout is intended for a board with one or both shifts split. The outside key on the split shift is an Fn, while the inside is shift. The bottom row has all the mods on both sides, optimised for a Mac.
diff --git a/keyboards/clueboard/keymaps/mouse_keys/Makefile b/keyboards/clueboard/keymaps/mouse_keys/Makefile
new file mode 100644
index 000000000..6c605daec
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mouse_keys/Makefile
@@ -0,0 +1 @@
MOUSEKEY_ENABLE = yes
diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c
new file mode 100644
index 000000000..a9c5cebd0
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mouse_keys/keymap.c
@@ -0,0 +1,93 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14#define _ML 3
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17 /* Keymap _BL: Base Layer (Default Layer)
18 */
19[_BL] = KEYMAP(
20 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_GRV, KC_BSPC, KC_PGUP, \
21 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, KC_PGDN, \
22 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_NUHS, KC_ENT, \
23 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
24 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
25
26 /* Keymap _FL: Function Layer
27 */
28[_FL] = KEYMAP(
29 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_DEL, BL_STEP, \
30 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
31 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
32 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
33 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
34
35 /* Keymap _CL: Control layer
36 */
37[_CL] = KEYMAP(
38 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
39 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
40 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
41 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
42 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
43
44 /* Keymap _ML: Mouse layer
45 */
46 [_ML] = KEYMAP(
47 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
48 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
49 _______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
50 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, \
51 _______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R),
52};
53
54/* This is a list of user defined functions. F(N) corresponds to item N
55 of this list.
56 */
57const uint16_t PROGMEM fn_actions[] = {
58 [0] = ACTION_FUNCTION(0), // Calls action_function()
59};
60
61void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
62 static uint8_t mods_pressed;
63
64 switch (id) {
65 case 0:
66 /* Handle the combined Grave/Esc key
67 */
68 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
69
70 if (record->event.pressed) {
71 /* The key is being pressed.
72 */
73 if (mods_pressed) {
74 add_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 add_key(KC_ESC);
78 send_keyboard_report();
79 }
80 } else {
81 /* The key is being released.
82 */
83 if (mods_pressed) {
84 del_key(KC_GRV);
85 send_keyboard_report();
86 } else {
87 del_key(KC_ESC);
88 send_keyboard_report();
89 }
90 }
91 break;
92 }
93}
diff --git a/keyboards/clueboard/keymaps/mouse_keys/layout.png b/keyboards/clueboard/keymaps/mouse_keys/layout.png
new file mode 100644
index 000000000..52e5c4581
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mouse_keys/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/mouse_keys/readme.md b/keyboards/clueboard/keymaps/mouse_keys/readme.md
new file mode 100644
index 000000000..97ac6dfa2
--- /dev/null
+++ b/keyboards/clueboard/keymaps/mouse_keys/readme.md
@@ -0,0 +1,16 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# MouseKeys Layout
13
14This layout adds a mouse layer. When you hold down the spacebar the arrow keys
15will move your mouse cursor. You can click using the 3 mods to the left of the
16arrow keys, or the 3 keys under your primary fingers on the home row.
diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c
new file mode 100644
index 000000000..f21b9b589
--- /dev/null
+++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c
@@ -0,0 +1,83 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _BL: Base Layer (Default Layer)
17 */
18[_BL] = KEYMAP(
19 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_GRV, KC_BSPC, KC_PGUP, \
20 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, KC_PGDN, \
21 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_NUHS, KC_ENT, \
22 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
23 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
24
25 /* Keymap _FL: Function Layer
26 */
27[_FL] = KEYMAP(
28 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, \
29 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), \
30 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), \
31 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, \
32 KC_LCTL, KC_LALT, KC_LGUI,MO(_FL), S(KC_SPC),S(KC_SPC), MO(_FL), KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END),
33
34 /* Keymap _CL: Control layer
35 */
36[_CL] = KEYMAP(
37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
41 _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD,RGB_SAD,RGB_HUI),
42};
43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
47const uint16_t PROGMEM fn_actions[] = {
48 [0] = ACTION_FUNCTION(0), // Calls action_function()
49};
50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed;
53
54 switch (id) {
55 case 0:
56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
60 if (record->event.pressed) {
61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
64 add_key(KC_GRV);
65 send_keyboard_report();
66 } else {
67 add_key(KC_ESC);
68 send_keyboard_report();
69 }
70 } else {
71 /* The key is being released.
72 */
73 if (mods_pressed) {
74 del_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 del_key(KC_ESC);
78 send_keyboard_report();
79 }
80 }
81 break;
82 }
83}
diff --git a/keyboards/clueboard/keymaps/shift_fn/layout.png b/keyboards/clueboard/keymaps/shift_fn/layout.png
new file mode 100644
index 000000000..66d85410c
--- /dev/null
+++ b/keyboards/clueboard/keymaps/shift_fn/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/shift_fn/readme.md b/keyboards/clueboard/keymaps/shift_fn/readme.md
new file mode 100644
index 000000000..369f556f8
--- /dev/null
+++ b/keyboards/clueboard/keymaps/shift_fn/readme.md
@@ -0,0 +1,17 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Shift Fn Clueboard Layout
13
14This is an experimental layout. It makes the left shift key a dual roll key.
15For most keys it acts as a shift key, but for some keys it activates an
16alternate function instead. Primarily I use this to access the F-keys under
17the number rows.
diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c
index df6f054e0..295090352 100644
--- a/keyboards/clueboard/keymaps/skully/keymap.c
+++ b/keyboards/clueboard/keymaps/skully/keymap.c
@@ -1,7 +1,8 @@
1#include "clueboard.h" 1#include "clueboard.h"
2 2
3// Used for SHIFT_ESC 3// Helpful defines
4#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) 4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
5 6
6// Each layer gets a name for readability, which is then used in the keymap matrix below. 7// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name. 8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -9,21 +10,10 @@
9// entirely and just use numbers. 10// entirely and just use numbers.
10#define _BL 0 11#define _BL 0
11#define _FL 1 12#define _FL 1
12#define _RS 2 13#define _CL 2
13 14
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap _BL: (Base Layer) Default Layer 16 /* Keymap _BL: Base Layer (Default Layer)
16 * ,--------------------------------------------------------------------------. ,----.
17 * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
18 * |--------------------------------------------------------------------------| |----|
19 * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
20 * |--------------------------------------------------------------------------| `----'
21 * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
22 * |-----------------------------------------------------------------------------.
23 * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
24 * |------------------------------------------------------------------------|----|----.
25 * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
26 * `----------------------------------------------------------------------------------'
27 */ 17 */
28[_BL] = KEYMAP( 18[_BL] = KEYMAP(
29 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_GRV, KC_BSPC, KC_PGUP, \ 19 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_GRV, KC_BSPC, KC_PGUP, \
@@ -33,61 +23,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 KC_LCTL,KC_LALT,KC_LGUI,MO(_FL), KC_SPC, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), 23 KC_LCTL,KC_LALT,KC_LGUI,MO(_FL), KC_SPC, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
34 24
35 /* Keymap _FL: Function Layer 25 /* Keymap _FL: Function Layer
36 * ,--------------------------------------------------------------------------. ,----.
37 * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
38 * |--------------------------------------------------------------------------| |----|
39 * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
40 * |--------------------------------------------------------------------------| `----'
41 * | | | _RS| | | | | | | | | | | |
42 * |-----------------------------------------------------------------------------.
43 * | | | | | | | | | | | | | | |PGUP|
44 * |------------------------------------------------------------------------|----|----.
45 * | | | | | | | | | | _FL|HOME|PGDN| END|
46 * `----------------------------------------------------------------------------------'
47 */ 26 */
48[_FL] = KEYMAP( 27[_FL] = KEYMAP(
49 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_DEL, BL_STEP, \ 28 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_DEL, BL_STEP, \
50 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \ 29 _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, _______, \
51 KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ 30 _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
52 KC_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_PGUP, \ 31 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, \
53 KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL), KC_TRNS,KC_TRNS, MO(_FL),KC_TRNS,KC_TRNS,MO(_FL),KC_HOME,KC_PGDN,KC_END), 32 _______,_______,_______,MO(_FL), _______,_______, MO(_FL),_______,_______,MO(_FL),KC_HOME,KC_PGDN,KC_END),
54 33
55 /* Keymap _RS: Reset layer 34 /* Keymap _CL: Control layer
56 * ,--------------------------------------------------------------------------. ,----.
57 * | | | | | | | | | | | | | | | | | |
58 * |--------------------------------------------------------------------------| |----|
59 * | | | | |RESET| | | | | | | | | | | |
60 * |--------------------------------------------------------------------------| `----'
61 * | | | _RS| | | | | | | | | | | |
62 * |-----------------------------------------------------------------------------.
63 * | | | | | | | | | | | | | | | |
64 * |------------------------------------------------------------------------|----|----.
65 * | | | | | | | | | | _FL| | | |
66 * `----------------------------------------------------------------------------------'
67 */ 35 */
68[_RS] = KEYMAP( 36[_CL] = KEYMAP(
69 KC_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, \ 37 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
70 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \ 38 _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
71 KC_TRNS,KC_TRNS,MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ 39 _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
72 KC_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, \ 40 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
73 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,MO(_FL),KC_TRNS, KC_TRNS, KC_TRNS), 41 _______,_______,_______,_______, _______,_______, _______,_______,_______,MO(_FL),_______, _______, _______),
74};
75
76enum function_id {
77 SHIFT_ESC,
78}; 42};
79 43
80const uint16_t PROGMEM fn_actions[] = { 44const uint16_t PROGMEM fn_actions[] = {
81 [0] = ACTION_FUNCTION(SHIFT_ESC), 45 [0] = ACTION_FUNCTION(0),
82}; 46};
83 47
84void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 48void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
85 static uint8_t shift_esc_shift_mask; 49 static uint8_t mods_pressed;
50
86 switch (id) { 51 switch (id) {
87 case SHIFT_ESC: 52 case 0:
88 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; 53 /* Handle the combined Grave/Esc key
54 */
55 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
56
89 if (record->event.pressed) { 57 if (record->event.pressed) {
90 if (shift_esc_shift_mask) { 58 /* The key is being pressed.
59 */
60 if (mods_pressed) {
91 add_key(KC_GRV); 61 add_key(KC_GRV);
92 send_keyboard_report(); 62 send_keyboard_report();
93 } else { 63 } else {
@@ -95,7 +65,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
95 send_keyboard_report(); 65 send_keyboard_report();
96 } 66 }
97 } else { 67 } else {
98 if (shift_esc_shift_mask) { 68 /* The key is being released.
69 */
70 if (mods_pressed) {
99 del_key(KC_GRV); 71 del_key(KC_GRV);
100 send_keyboard_report(); 72 send_keyboard_report();
101 } else { 73 } else {
diff --git a/keyboards/clueboard/keymaps/skully/layout.png b/keyboards/clueboard/keymaps/skully/layout.png
new file mode 100644
index 000000000..64854aaef
--- /dev/null
+++ b/keyboards/clueboard/keymaps/skully/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/skully/readme.md b/keyboards/clueboard/keymaps/skully/readme.md
index c1182123d..08255dfbc 100644
--- a/keyboards/clueboard/keymaps/skully/readme.md
+++ b/keyboards/clueboard/keymaps/skully/readme.md
@@ -1,3 +1,14 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
1# skullY's Clueboard Layout 12# skullY's Clueboard Layout
2 13
3This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing. 14This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing.
diff --git a/keyboards/clueboard/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/keymaps/unix_optimized/keymap.c
new file mode 100644
index 000000000..9fbd77240
--- /dev/null
+++ b/keyboards/clueboard/keymaps/unix_optimized/keymap.c
@@ -0,0 +1,83 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _BL: Base Layer (Default Layer)
17 */
18[_BL] = KEYMAP(
19 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_GRV, KC_BSPC, KC_PGUP, \
20 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, KC_PGDN, \
21 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_NUHS, KC_ENT, \
22 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
23 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
24
25 /* Keymap _FL: Function Layer
26 */
27[_FL] = KEYMAP(
28 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_DEL, KC_INS, \
29 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_DEL, \
30 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
31 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
32 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
33
34 /* Keymap _CL: Control layer
35 */
36[_CL] = KEYMAP(
37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
41 _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD,RGB_HUI),
42};
43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
47const uint16_t PROGMEM fn_actions[] = {
48 [0] = ACTION_FUNCTION(0), // Calls action_function()
49};
50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed;
53
54 switch (id) {
55 case 0:
56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
60 if (record->event.pressed) {
61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
64 add_key(KC_GRV);
65 send_keyboard_report();
66 } else {
67 add_key(KC_ESC);
68 send_keyboard_report();
69 }
70 } else {
71 /* The key is being released.
72 */
73 if (mods_pressed) {
74 del_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 del_key(KC_ESC);
78 send_keyboard_report();
79 }
80 }
81 break;
82 }
83}
diff --git a/keyboards/clueboard/keymaps/unix_optimized/layout.png b/keyboards/clueboard/keymaps/unix_optimized/layout.png
new file mode 100644
index 000000000..ea7d30e35
--- /dev/null
+++ b/keyboards/clueboard/keymaps/unix_optimized/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/unix_optimized/readme.md b/keyboards/clueboard/keymaps/unix_optimized/readme.md
new file mode 100644
index 000000000..3510e138b
--- /dev/null
+++ b/keyboards/clueboard/keymaps/unix_optimized/readme.md
@@ -0,0 +1,15 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Default Clueboard Layout
13
14This is the default layout except that Caps Lock has been changed to Control
15and Insert and Delete have been put into the Fn layer.
diff --git a/keyboards/clueboard/keymaps/win_optimized/keymap.c b/keyboards/clueboard/keymaps/win_optimized/keymap.c
new file mode 100644
index 000000000..a85f0824f
--- /dev/null
+++ b/keyboards/clueboard/keymaps/win_optimized/keymap.c
@@ -0,0 +1,83 @@
1#include "clueboard.h"
2
3// Helpful defines
4#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
5#define _______ KC_TRNS
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13#define _CL 2
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Keymap _BL: Base Layer (Default Layer)
17 */
18[_BL] = KEYMAP(
19 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_GRV, KC_BSPC, KC_INS, \
20 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, KC_DEL, \
21 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_NUHS, KC_ENT, \
22 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
23 KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
24
25 /* Keymap _FL: Function Layer
26 */
27[_FL] = KEYMAP(
28 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_DEL, BL_STEP, \
29 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
30 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
31 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
32 _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
33
34 /* Keymap _CL: Control layer
35 */
36[_CL] = KEYMAP(
37 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
38 _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
39 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
40 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
41 _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
42};
43
44/* This is a list of user defined functions. F(N) corresponds to item N
45 of this list.
46 */
47const uint16_t PROGMEM fn_actions[] = {
48 [0] = ACTION_FUNCTION(0), // Calls action_function()
49};
50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed;
53
54 switch (id) {
55 case 0:
56 /* Handle the combined Grave/Esc key
57 */
58 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
59
60 if (record->event.pressed) {
61 /* The key is being pressed.
62 */
63 if (mods_pressed) {
64 add_key(KC_GRV);
65 send_keyboard_report();
66 } else {
67 add_key(KC_ESC);
68 send_keyboard_report();
69 }
70 } else {
71 /* The key is being released.
72 */
73 if (mods_pressed) {
74 del_key(KC_GRV);
75 send_keyboard_report();
76 } else {
77 del_key(KC_ESC);
78 send_keyboard_report();
79 }
80 }
81 break;
82 }
83}
diff --git a/keyboards/clueboard/keymaps/win_optimized/layout.png b/keyboards/clueboard/keymaps/win_optimized/layout.png
new file mode 100644
index 000000000..7d8c82da7
--- /dev/null
+++ b/keyboards/clueboard/keymaps/win_optimized/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/win_optimized/readme.md b/keyboards/clueboard/keymaps/win_optimized/readme.md
new file mode 100644
index 000000000..cede17ee1
--- /dev/null
+++ b/keyboards/clueboard/keymaps/win_optimized/readme.md
@@ -0,0 +1,17 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10![Clueboard Layout Image](layout.png)
11
12# Default Clueboard Layout
13
14This is the default layout that comes flashed on every Clueboard. For the most
15part it's a straightforward and easy to follow layout. The only unusual key is
16the key in the upper left, which sends Escape normally, but Grave when any of
17the Ctrl, Alt, or GUI modifiers are held down.
diff --git a/keyboards/clueboard/rules.mk b/keyboards/clueboard/rules.mk
index 3909fbd5c..7ce096ba8 100644
--- a/keyboards/clueboard/rules.mk
+++ b/keyboards/clueboard/rules.mk
@@ -90,14 +90,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
90# Build Options 90# Build Options
91# comment out to disable the options. 91# comment out to disable the options.
92# 92#
93BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) 93BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
94MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) 94MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
95EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) 95EXTRAKEY_ENABLE ?= no # Audio control and System control(+450)
96CONSOLE_ENABLE ?= yes # Console for debug(+400) 96CONSOLE_ENABLE ?= yes # Console for debug(+400)
97COMMAND_ENABLE ?= yes # Commands for debug and configuration 97COMMAND_ENABLE ?= yes # Commands for debug and configuration
98NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 98NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
99AUDIO_ENABLE ?= no 99AUDIO_ENABLE ?= no
100RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality 100RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality
101MIDI_ENABLE ?= no # MIDI controls 101MIDI_ENABLE ?= no # MIDI controls
102UNICODE_ENABLE ?= no # Unicode 102UNICODE_ENABLE ?= no # Unicode
103BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file 103BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/Makefile b/keyboards/ergodox/keymaps/colemak_programmer/Makefile
new file mode 100644
index 000000000..91b77c77a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/colemak_programmer/Makefile
@@ -0,0 +1 @@
TAP_DANCE_ENABLE = no \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_001.jpg b/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_001.jpg
new file mode 100644
index 000000000..de24d9373
--- /dev/null
+++ b/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_001.jpg
Binary files differ
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_002.jpg b/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_002.jpg
new file mode 100644
index 000000000..15f8ec8c4
--- /dev/null
+++ b/keyboards/ergodox/keymaps/colemak_programmer/colemak_programmer_002.jpg
Binary files differ
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/keymap.c b/keyboards/ergodox/keymaps/colemak_programmer/keymap.c
new file mode 100644
index 000000000..1caccc5c2
--- /dev/null
+++ b/keyboards/ergodox/keymaps/colemak_programmer/keymap.c
@@ -0,0 +1,256 @@
1#include "ergodox.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4/* Keymap 0: Basic layer
5 * MEH: Alt+Control+Shift
6 * HYPER: Alt+Control+Shift+Gui
7 * ,--------------------------------------------------. ,--------------------------------------------------.
8 * | ` ~ | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | | 7 & | 8 * | 9 ( | 0 ) | - _ | = + | Backsp |
9 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
10 * | TAB | Q | W | F | P | G |TG(3) | |TG(4) | J | L | U | Y | ; : | ' " |
11 * |--------+------+------+------+------+------|F-lck | |N-lck |------+------+------+------+------+--------|
12 * | CAPS | A | R | S | T | D |------| |------| H | N | E | I | O | ENT |
13 * |--------+------+------+------+------+------| MEH | | MEH |------+------+------+------+------+--------|
14 * | Shift | Z | X | C | V | B | | | | K | M | , < | . > | UP | Shift |
15 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
16 * | LCTL | LCTL | LGUI | LALT | LGUI | | RALT | RCTL | LEFT | DOWN | RIGHT|
17 * `----------------------------------' `----------------------------------'
18 * ,--------------. ,--------------.
19 * | Esc | App | | Ins | Del |
20 * ,------|------|-------| |------+-------+------.
21 * | | | Home | | PgUp | | |
22 * | MO(2)| MO(4)|-------| |------| Space |Space |
23 * |symbol|N-Lock| End | | PgDn | | |
24 * `---------------------' `---------------------'
25 */
26[0] = KEYMAP( // layer 0 : default
27 // left hand
28 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
29 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(3),
30 KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D,
31 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MEH,
32 KC_LCTL, KC_LCTL, KC_LGUI, KC_LALT, KC_LGUI,
33
34 KC_ESC, KC_APP,
35 KC_HOME,
36 MO(2), MO(4), KC_END,
37
38 // right hand
39 KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
40 TG(4), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_QUOT,
41 KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT,
42 KC_MEH, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
43 KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT,
44
45 KC_INS, KC_DEL,
46 KC_PGUP,
47 KC_PGDN, KC_SPC, KC_SPC
48 ),
49
50/* Keymap 1: QWERTY layer (games)
51 *
52 * ,--------------------------------------------------. ,--------------------------------------------------.
53 * | | | | | | | | | | | | | | | |
54 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
55 * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
56 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
57 * | | A | S | D | F | G |------| |------| H | J | K | L | ; | |
58 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
59 * | | Z | X | C | V | B | | | | N | M | | | | |
60 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
61 * | | | | | | | | | | | |
62 * `----------------------------------' `----------------------------------'
63 * ,-------------. ,-------------.
64 * | | | | | |
65 * ,------|------|------| |------+--------+------.
66 * | | | | | | | |
67 * | | |------| |------| | |
68 * | | | | | | | |
69 * `--------------------' `----------------------'
70 */
71[1] = KEYMAP( // layer 1: QWERTY layer (games)
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS,
74 KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
75 KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
77
78 KC_TRNS, KC_TRNS,
79 KC_TRNS,
80 KC_TRNS, KC_TRNS, KC_TRNS,
81
82 // right hand
83 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
84 KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
85 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_TRNS,
86 KC_TRNS, KC_N, KC_M, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
87 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
88 KC_TRNS, KC_TRNS,
89 KC_TRNS,
90 KC_TRNS, KC_TRNS, KC_TRNS
91 ),
92
93/* Keymap 2: Symbol Layer
94*
95* ,--------------------------------------------------. ,--------------------------------------------------.
96* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
97* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
98* | | | | + | < | % | # | DF(1)| | | & | [ | ] | \ | : | " |
99* |--------+------+------+------+------+------|QWERTY| | |------+------+------+------+------+--------|
100* | | ! | - | > | = | @ |------| |------| * | { | } | / | ? | |
101* |--------+------+------+------+------+------| DF(0)| | |------+------+------+------+------+--------|
102* | | NUBS | NUHS | / | $ | ^ |COLEMAK | | | | ( | ) | | | |
103* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
104* | | | | | | | | | | | |
105* `----------------------------------' `----------------------------------'
106* ,-------------. ,-------------.
107* | | | | | |
108* ,------|------|------| |------+------+------.
109* | | | | | | | |
110* | | |------| |------| | |
111* | | | | | | | |
112* `--------------------' `--------------------'
113*/
114// SYMBOLS
115[2] = KEYMAP(
116 // left hand
117 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
118 KC_TRNS, KC_PIPE, KC_PLUS, KC_LT, KC_PERC, KC_HASH, DF(1),
119 KC_LBRC, KC_EXCLAIM, KC_MINUS, KC_GT, KC_EQUAL, KC_AT,
120 KC_TRNS, KC_NUBS, KC_NUHS, KC_SLSH, KC_DOLLAR, KC_CIRC, DF(0),
121 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
122
123 KC_TRNS, KC_TRNS,
124 KC_TRNS,
125 KC_TRNS, KC_TRNS, KC_TRNS,
126
127 // right hand
128 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
129 KC_TRNS, KC_AMPERSAND, KC_LBRC, KC_RBRC, KC_BSLS, KC_COLN, KC_DQT,
130 KC_ASTERISK, KC_LCBR, KC_RCBR, KC_SLSH, KC_QUES, KC_TRNS,
131 KC_TRNS, KC_PIPE, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_TRNS, KC_TRNS, KC_TRNS
137),
138
139/* Keymap 3:
140 *
141 * ,--------------------------------------------------. ,--------------------------------------------------.
142 * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
143 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
144 * | | | | | | | | | | | | | | | |
145 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
146 * | | | | | | |------| |------| | | | | | |
147 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
148 * | | | | | | | HYPR | | HYPR | | | | | | |
149 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
150 * | | | | | | | | | | | |
151 * `----------------------------------' `----------------------------------'
152 * ,-------------. ,-------------.
153 * | | | | | |
154 * ,------|------|------| |------+------+------.
155 * | | | | | | | |
156 * | | |------ |------| | |
157 * | | | | | | | |
158 * `--------------------' `--------------------'
159 */
160// F-keys
161[3] = KEYMAP(
162 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
163 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
164 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
165 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HYPR,
166 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
167
168 KC_TRNS, KC_TRNS,
169 KC_TRNS,
170 KC_TRNS, KC_TRNS, KC_TRNS,
171
172 // right hand
173 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
174 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
175 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
176 KC_HYPR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
177 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
178
179 KC_TRNS, KC_TRNS,
180 KC_TRNS,
181 KC_TRNS, KC_TRNS, KC_TRNS
182),
183/* Keymap 4: Numlock
184 *
185 * ,--------------------------------------------------. ,--------------------------------------------------.
186 * | RESET | | | |P-SCRE|S-LOCK|PAUSE | |NLOCK | CALC | = | / | * | | |
187 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
188 * | | | | | | | | | | Vol+ | 7 | 8 | 9 | - | |
189 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
190 * | | | | | | |------| |------| Vol- | 4 | 5 | 6 | + | |
191 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
192 * | | | | | | | HYPR | | HYPR | Mute | 1 | 2 | 3 |Enter | |
193 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
194 * | | | | | | | | 0 | . | RCTL | RCTL |
195 * `----------------------------------' `----------------------------------'
196 * ,-------------. ,-------------.
197 * | | | | | |
198 * ,------|------|------| |------+------+------.
199 * | | | | | | | |
200 * | | |------ |------| | |
201 * | | | | | | | |
202 * `--------------------' `--------------------'
203 */
204[4] = KEYMAP(
205 RESET, KC_LSFT, KC_LSFT, KC_SYSREQ, KC_PSCR, KC_SLCK, KC_PAUSE,
206 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
207 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
208 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HYPR,
209 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
210
211 KC_TRNS, KC_TRNS,
212 KC_TRNS,
213 KC_TRNS, KC_TRNS, KC_TRNS,
214
215 // right hand
216 KC_NLCK, KC_CALC, KC_PEQL, KC_PSLS, KC_PAST, KC_LSFT, KC_TRNS,
217 KC_TRNS, KC_VOLU, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_TRNS,
218 KC_VOLD, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
219 KC_HYPR, KC_MUTE, KC_P1, KC_P2, KC_P3, KC_PENT, KC_TRNS,
220 KC_TRNS, KC_P0, KC_PDOT, KC_RCTL, KC_RCTL,
221
222 KC_TRNS, KC_TRNS,
223 KC_TRNS,
224 KC_TRNS, KC_TRNS, KC_TRNS
225),
226
227};
228
229
230// Runs constantly in the background, in a loop.
231void matrix_scan_user(void) {
232 static uint8_t state;
233
234 ergodox_board_led_off();
235 ergodox_right_led_1_off();
236 ergodox_right_led_2_off();
237 ergodox_right_led_3_off();
238
239 //reduce LED on time to 1/6th because LEDs are too strong
240 if (++state < 6) return;
241 state = 0;
242
243 //bit 1: default layer 1 - QWERTY
244 if (default_layer_state & (1UL << 1)) ergodox_right_led_1_on();
245
246 uint8_t layer = biton32(layer_state);
247
248 //layer 2 : Symbols (& Fs)
249 //if (layer == 2) ergodox_right_led_2_on();
250
251 //layer 3 : F-lock
252 if (layer == 3) ergodox_right_led_2_on();
253
254 //layer 4 : Num-lock
255 if (layer == 4) ergodox_right_led_3_on();
256};
diff --git a/keyboards/ergodox/keymaps/colemak_programmer/readme.md b/keyboards/ergodox/keymaps/colemak_programmer/readme.md
new file mode 100644
index 000000000..db0cc5777
--- /dev/null
+++ b/keyboards/ergodox/keymaps/colemak_programmer/readme.md
@@ -0,0 +1,23 @@
1# ErgoDox EZ colemak_programmer
2
3## Features
4
5* Qwerty and colemak 2 in 1
6 * Use DF() macro to swap the bottom layer so it behaves literally as collemak or qwerty
7 * Graphical creator did not allow this so I had to use TO(0) and TO(1) on the picture
8* Symbol layer programmers friendly
9 * Not only symbols are easy to access but common combination are easy too: ->, =>, !=, etc.
10* Windows and Mac
11 * The extra repeated Win key is very handy on Mac
12* Numlock
13
14I came to this layout after several iterations. It is not the ultimate best ergonomic layout but it is the best if you switch back and forth between ergodox and laptops.
15
16## Notes
17* The Quote and Enter can be swapped
18* If you use sculpted key caps try turning the bottom key 180 degrees so it became very comfortable to type with thumb.
19
20Alternatively view the [graphical creator version](http://configure.ergodox-ez.com/keyboard_layouts/kmevwm/edit) but beware it is not the same due to the creator limitations.
21
22![Default](colemak_programmer_001.jpg)
23![Default](colemak_programmer_002.jpg) \ No newline at end of file
diff --git a/keyboards/gh60/keymaps/unxmaal/Makefile b/keyboards/gh60/keymaps/unxmaal/Makefile
new file mode 100644
index 000000000..c73cf1141
--- /dev/null
+++ b/keyboards/gh60/keymaps/unxmaal/Makefile
@@ -0,0 +1,112 @@
1#----------------------------------------------------------------------------
2# On command line:
3#
4# make all = Make software.
5#
6# make clean = Clean out built project files.
7#
8# make coff = Convert ELF to AVR COFF.
9#
10# make extcoff = Convert ELF to AVR Extended COFF.
11#
12# make program = Download the hex file to the device.
13# Please customize your programmer settings(PROGRAM_CMD)
14#
15# make teensy = Download the hex file to the device, using teensy_loader_cli.
16# (must have teensy_loader_cli installed).
17#
18# make dfu = Download the hex file to the device, using dfu-programmer (must
19# have dfu-programmer installed).
20#
21# make flip = Download the hex file to the device, using Atmel FLIP (must
22# have Atmel FLIP installed).
23#
24# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
25# (must have dfu-programmer installed).
26#
27# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
28# (must have Atmel FLIP installed).
29#
30# make debug = Start either simulavr or avarice as specified for debugging,
31# with avr-gdb or avr-insight as the front end for debugging.
32#
33# make filename.s = Just compile filename.c into the assembler code only.
34#
35# make filename.i = Create a preprocessed source file for use in submitting
36# bug reports to the GCC project.
37#
38# To rebuild project do "make clean" then "make all".
39#----------------------------------------------------------------------------
40
41# MCU name
42#MCU = at90usb1287
43MCU = atmega32u4
44
45# Processor frequency.
46# This will define a symbol, F_CPU, in all source code files equal to the
47# processor frequency in Hz. You can then use this symbol in your source code to
48# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
49# automatically to create a 32-bit value in your source code.
50#
51# This will be an integer division of F_USB below, as it is sourced by
52# F_USB after it has run through any CPU prescalers. Note that this value
53# does not *change* the processor frequency - it should merely be updated to
54# reflect the processor speed set externally so that the code can use accurate
55# software delays.
56F_CPU = 16000000
57
58
59#
60# LUFA specific
61#
62# Target architecture (see library "Board Types" documentation).
63ARCH = AVR8
64
65# Input clock frequency.
66# This will define a symbol, F_USB, in all source code files equal to the
67# input clock frequency (before any prescaling is performed) in Hz. This value may
68# differ from F_CPU if prescaling is used on the latter, and is required as the
69# raw input clock is fed directly to the PLL sections of the AVR for high speed
70# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
71# at the end, this will be done automatically to create a 32-bit value in your
72# source code.
73#
74# If no clock division is performed on the input clock inside the AVR (via the
75# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
76F_USB = $(F_CPU)
77
78# Interrupt driven control endpoint task(+60)
79OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
80
81
82# Boot Section Size in *bytes*
83# Teensy halfKay 512
84# Teensy++ halfKay 1024
85# Atmel DFU loader 4096
86# LUFA bootloader 4096
87# USBaspLoader 2048
88OPT_DEFS += -DBOOTLOADER_SIZE=4096
89
90
91# Build Options
92# comment out to disable the options.
93#
94BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
95MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
96EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
97# CONSOLE_ENABLE ?= yes # Console for debug(+400)
98# COMMAND_ENABLE ?= yes # Commands for debug and configuration
99KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
100# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
101# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
102NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
103# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
104# MIDI_ENABLE ?= YES # MIDI controls
105# UNICODE_ENABLE ?= YES # Unicode
106# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
107RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow
108
109ifndef QUANTUM_DIR
110 include ../../../../Makefile
111endif
112
diff --git a/keyboards/gh60/keymaps/unxmaal/README.md b/keyboards/gh60/keymaps/unxmaal/README.md
new file mode 100644
index 000000000..52bf97ef4
--- /dev/null
+++ b/keyboards/gh60/keymaps/unxmaal/README.md
@@ -0,0 +1,20 @@
1Unxmaal's GH60 Layout
2=====================
3* Mostly stolen from /u/robotmaxtron
4
5##Quantum MK Firmware
6For the full Quantum feature list, see the parent readme.md.
7
8* Standard Mac ANSI layout
9* Spacebar acts as space when tapped, Fn when held
10* Menu acts as menu when tapped, Fn2 when held
11* Layer1:
12 * Top row = `~, F1-F12, Del
13 * JKIL = arrow cluster
14* Layer2:
15 * Top row = media controls
16 * JKIL = PgDn/Up/Home/Insert
17 * Backspace = Reset
18
19### Additional Credits
20Keymap has been based on various keymaps available from the QMK Repo for the GH60-SATAN and KC60 keyboards.
diff --git a/keyboards/gh60/keymaps/unxmaal/WS2812-wiring.jpg b/keyboards/gh60/keymaps/unxmaal/WS2812-wiring.jpg
new file mode 100644
index 000000000..4ab8cc31a
--- /dev/null
+++ b/keyboards/gh60/keymaps/unxmaal/WS2812-wiring.jpg
Binary files differ
diff --git a/keyboards/gh60/keymaps/unxmaal/config.h b/keyboards/gh60/keymaps/unxmaal/config.h
new file mode 100644
index 000000000..bb218d6fd
--- /dev/null
+++ b/keyboards/gh60/keymaps/unxmaal/config.h
@@ -0,0 +1,190 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER geekhack
28#define PRODUCT GH60
29#define DESCRIPTION t.m.k. keyboard firmware for GH60
30
31/* key matrix size */
32#define MATRIX_ROWS 5
33#define MATRIX_COLS 14
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45 #define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
46// Rev A
47// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 }
48// Rev B/C
49#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
50#define UNUSED_PINS
51
52/* COL2ROW or ROW2COL */
53#define DIODE_DIRECTION COL2ROW
54
55/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
56#define DEBOUNCING_DELAY 5
57
58/* define if matrix has ghost (lacks anti-ghosting diodes) */
59//#define MATRIX_HAS_GHOST
60
61/* number of backlight levels */
62#define BACKLIGHT_LEVELS 3
63
64/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
65#define LOCKING_SUPPORT_ENABLE
66/* Locking resynchronize hack */
67#define LOCKING_RESYNC_ENABLE
68
69/*
70 * Force NKRO
71 *
72 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
73 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
74 * makefile for this to work.)
75 *
76 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
77 * until the next keyboard reset.
78 *
79 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
80 * fully operational during normal computer usage.
81 *
82 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
83 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
84 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
85 * power-up.
86 *
87 */
88//#define FORCE_NKRO
89
90/*
91 * Magic Key Options
92 *
93 * Magic keys are hotkey commands that allow control over firmware functions of
94 * the keyboard. They are best used in combination with the HID Listen program,
95 * found here: https://www.pjrc.com/teensy/hid_listen.html
96 *
97 * The options below allow the magic key functionality to be changed. This is
98 * useful if your keyboard/keypad is missing keys and you want magic key support.
99 *
100 */
101
102/* key combination for magic key command */
103#define IS_COMMAND() ( \
104 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
105)
106
107/* control how magic key switches layers */
108//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
111
112/* override magic key keymap */
113//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
116//#define MAGIC_KEY_HELP1 H
117//#define MAGIC_KEY_HELP2 SLASH
118//#define MAGIC_KEY_DEBUG D
119//#define MAGIC_KEY_DEBUG_MATRIX X
120//#define MAGIC_KEY_DEBUG_KBD K
121//#define MAGIC_KEY_DEBUG_MOUSE M
122//#define MAGIC_KEY_VERSION V
123//#define MAGIC_KEY_STATUS S
124//#define MAGIC_KEY_CONSOLE C
125//#define MAGIC_KEY_LAYER0_ALT1 ESC
126//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
127//#define MAGIC_KEY_LAYER0 0
128//#define MAGIC_KEY_LAYER1 1
129//#define MAGIC_KEY_LAYER2 2
130//#define MAGIC_KEY_LAYER3 3
131//#define MAGIC_KEY_LAYER4 4
132//#define MAGIC_KEY_LAYER5 5
133//#define MAGIC_KEY_LAYER6 6
134//#define MAGIC_KEY_LAYER7 7
135//#define MAGIC_KEY_LAYER8 8
136//#define MAGIC_KEY_LAYER9 9
137//#define MAGIC_KEY_BOOTLOADER PAUSE
138//#define MAGIC_KEY_LOCK CAPS
139//#define MAGIC_KEY_EEPROM E
140//#define MAGIC_KEY_NKRO N
141//#define MAGIC_KEY_SLEEP_LED Z
142
143/*
144 * Feature disable options
145 * These options are also useful to firmware size reduction.
146 */
147
148/* disable debug print */
149//#define NO_DEBUG
150
151/* disable print */
152//#define NO_PRINT
153
154/* disable action features */
155//#define NO_ACTION_LAYER
156//#define NO_ACTION_TAPPING
157//#define NO_ACTION_ONESHOT
158//#define NO_ACTION_MACRO
159//#define NO_ACTION_FUNCTION
160
161/*
162 * RGB Underglow
163 * These settings are for the F4 by default:
164 *
165 *
166 * #define ws2812_PORTREG PORTF
167 * #define ws2812_DDRREG DDRF
168 * #define ws2812_pin PF4
169 * #define RGBLED_NUM 14 // Number of LEDs
170 * #define RGBLIGHT_HUE_STEP 10
171 * #define RGBLIGHT_SAT_STEP 17
172 * #define RGBLIGHT_VAL_STEP 17
173 *
174 * The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects.
175 * To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations.
176 * For details, please check this keymap. keyboard/planck/keymaps/yang/keymap.c
177*/
178
179/* Deprecated code below
180#define ws2812_PORTREG PORTF
181#define ws2812_DDRREG DDRF
182#define ws2812_pin PF4
183*/
184#define RGB_DI_PIN F4
185#define RGBLIGHT_ANIMATIONS
186#define RGBLED_NUM 8 // Number of LEDs
187#define RGBLIGHT_HUE_STEP 8
188#define RGBLIGHT_SAT_STEP 8
189#define RGBLIGHT_VAL_STEP 8
190#endif
diff --git a/keyboards/gh60/keymaps/unxmaal/keymap.c b/keyboards/gh60/keymaps/unxmaal/keymap.c
new file mode 100644
index 000000000..7c9bd6a6d
--- /dev/null
+++ b/keyboards/gh60/keymaps/unxmaal/keymap.c
@@ -0,0 +1,228 @@
1#include "gh60.h"
2#include "action_layer.h"
3
4#define _BL 0
5#define _AL 1
6#define _FL 2
7#define _UL 3
8
9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 /*
11 * ANSI Base, Mac style
12 * ,-----------------------------------------------------------------------------.
13 * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp |
14 * |-----------------------------------------------------------------------------|
15 * |Tab | Q | W | E | R | T | Y | U | I| O| P| [| ]| \|
16 * |-----------------------------------------------------------------------------|
17 * |Caps/Fn | A| S| D| F| G| H| J| K| L| ;| '| Enter |
18 * |-----------------------------------------------------------------------------|
19 * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |
20 * |-----------------------------------------------------------------------------|
21 * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl|
22 * `-----------------------------------------------------------------------------'
23 */
24 [_BL] = KEYMAP(
25 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_BSPC, \
26 KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \
27 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_NO,KC_ENT, \
28 KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
29 MO(1),KC_LALT,KC_LGUI, LT(1,KC_SPACE), KC_NO, KC_RGUI, KC_RALT, LT(2,KC_MENU), KC_RCTL),
30
31 /*
32 * Pok3r style arrow cluster
33 * ,-----------------------------------------------------------.
34 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
35 * |-----------------------------------------------------------|
36 * | | | | | | | | |Up| | | | | |
37 * |-----------------------------------------------------------|
38 * | | | | | | | |Left|Down|Right| | | |
39 * |-----------------------------------------------------------|
40 * | | | | | | | | | | | | |
41 * |-----------------------------------------------------------|
42 * | | | | | | | | |
43 * `-----------------------------------------------------------'
44 */
45 [_AL] = KEYMAP(
46 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_DELETE, \
47 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, \
48 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, \
49 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
50 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
51
52
53 /*
54 * Secondary function layer
55 * ,-------------------------------------------------------------.
56 * | | | | | | | | RW|Play|FF| Mute| Vol Down | Vol up |Reset |
57 * |-------------------------------------------------------------|
58 * | | | | | | | | | |PgUp| | | | |
59 * |-------------------------------------------------------------|
60 * | | | | | | | |Home|PgDown|End| | | |
61 * |-------------------------------------------------------------|
62 * | | | | | | | | | | | | |
63 * |-------------------------------------------------------------|
64 * | | | | | | | | |
65 * `-------------------------------------------------------------'
66 */
67 [_FL] = KEYMAP(
68 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
69 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
70 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_TRNS,KC_HOME,KC_PGDN,KC_END,KC_TRNS,KC_TRNS,KC_TRNS, \
71 KC_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, \
72 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
73
74 /*
75 * Locking layer for controlling the underglow.
76 * NOTE: currently unused.
77 *
78 * ,-----------------------------------------------------------.
79 * | | | | | | | | | | | | | | |
80 * |-----------------------------------------------------------|
81 * | | | | | | | | | | | | | | |
82 * |-----------------------------------------------------------|
83 * | |On|Mode| | | | | | | | | | |
84 * |-----------------------------------------------------------|
85 * | | |Hue+|Hue-|Sat+|Sat-|Val+|Val-| | | | |
86 * |-----------------------------------------------------------|
87 * | | | | | | | | |
88 * `-----------------------------------------------------------'
89 */
90 [_UL] = KEYMAP(
91 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
92 KC_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, \
93 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, \
94 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, \
95 KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
96};
97
98enum function_id {
99 RGBLED_TOGGLE,
100 RGBLED_STEP_MODE,
101 RGBLED_INCREASE_HUE,
102 RGBLED_DECREASE_HUE,
103 RGBLED_INCREASE_SAT,
104 RGBLED_DECREASE_SAT,
105 RGBLED_INCREASE_VAL,
106 RGBLED_DECREASE_VAL,
107 SHIFT_ESC,
108};
109
110const uint16_t PROGMEM fn_actions[] = {
111 [0] = ACTION_LAYER_MOMENTARY(2), // Momentary Fn overlay
112 [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay
113 [2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer
114 [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay
115 [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
116 [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
117 [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
118 [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
119 [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
120 [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
121 [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
122 [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
123 [12] = ACTION_FUNCTION(SHIFT_ESC),
124 [13] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
125};
126
127const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
128{
129 // MACRODOWN only works in this function
130 switch(id) {
131 case 0:
132 if (record->event.pressed) {
133 register_code(KC_RSFT);
134 } else {
135 unregister_code(KC_RSFT);
136 }
137 break;
138 }
139 return MACRO_NONE;
140};
141
142void matrix_scan_user(void) {
143
144// Layer LED indicators
145// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
146 uint32_t layer = layer_state;
147 if (layer & (1<<1)) {
148 gh60_wasd_leds_on();
149 } else {
150 gh60_wasd_leds_off();
151 }
152
153 if (layer & (1<<2)) {
154 gh60_esc_led_on();
155 } else {
156 gh60_esc_led_off();
157 }
158};
159
160#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
161
162void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
163 switch (id) {
164 case RGBLED_TOGGLE:
165 //led operations
166 if (record->event.pressed) {
167 rgblight_toggle();
168 }
169 break;
170 case RGBLED_INCREASE_HUE:
171 if (record->event.pressed) {
172 rgblight_increase_hue();
173 }
174 break;
175 case RGBLED_DECREASE_HUE:
176 if (record->event.pressed) {
177 rgblight_decrease_hue();
178 }
179 break;
180 case RGBLED_INCREASE_SAT:
181 if (record->event.pressed) {
182 rgblight_increase_sat();
183 }
184 break;
185 case RGBLED_DECREASE_SAT:
186 if (record->event.pressed) {
187 rgblight_decrease_sat();
188 }
189 break;
190 case RGBLED_INCREASE_VAL:
191 if (record->event.pressed) {
192 rgblight_increase_val();
193 }
194 break;
195 case RGBLED_DECREASE_VAL:
196 if (record->event.pressed) {
197 rgblight_decrease_val();
198 }
199 break;
200 case RGBLED_STEP_MODE:
201 if (record->event.pressed) {
202 rgblight_step();
203 }
204 break;
205 static uint8_t shift_esc_shift_mask;
206 // Shift + ESC = ~
207 case SHIFT_ESC:
208 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
209 if (record->event.pressed) {
210 if (shift_esc_shift_mask) {
211 add_key(KC_GRV);
212 send_keyboard_report();
213 } else {
214 add_key(KC_ESC);
215 send_keyboard_report();
216 }
217 } else {
218 if (shift_esc_shift_mask) {
219 del_key(KC_GRV);
220 send_keyboard_report();
221 } else {
222 del_key(KC_ESC);
223 send_keyboard_report();
224 }
225 }
226 break;
227 }
228};
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index 2acd988ea..aede27df7 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,7 +14,7 @@ extern keymap_config_t keymap_config;
14#define _FUNC 4 14#define _FUNC 4
15#define ENDASH LALT(KC_MINS) 15#define ENDASH LALT(KC_MINS)
16#define POUND LALT(KC_3) 16#define POUND LALT(KC_3)
17 17#define H(X) LALT(LCTL(X))
18 18
19enum planck_keycodes { 19enum planck_keycodes {
20 MOVE = SAFE_RANGE, 20 MOVE = SAFE_RANGE,
@@ -48,19 +48,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
48 48
49/* MOVE 49/* MOVE
50 * ,-----------------------------------------------------------------------------------. 50 * ,-----------------------------------------------------------------------------------.
51 * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | 51 * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home | Up | End | H(7) | Esc |
52 * |------+------+------+------+------+------+------+------+------+------+------+------| 52 * |------+------+------+------+------+------+------+------+------+------+------+------|
53 * | Del | Caps | Left | Down | Right| | | Left | Down | Right| Caps | Del | 53 * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps | Del |
54 * |------+------+------+------+------+------+------+------+------+------+------+------| 54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | 55 * | |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) | |
56 * |------+------+------+------+------+------+------+------+------+------+------+------| 56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | | | | | | | | | | | | | 57 * | | | | | | | | | | | | |
58 * `-----------------------------------------------------------------------------------' 58 * `-----------------------------------------------------------------------------------'
59 */ 59 */
60[_MOVE] = { 60[_MOVE] = {
61 {KC_ESC, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_ESC }, 61 {H(KC_3), H(KC_F1),H(KC_F2),H(KC_F3),H(KC_F4),H(KC_F5),H(KC_8), KC_HOME, KC_UP, KC_END, H(KC_7), KC_ESC },
62 {KC_DEL, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, 62 {H(KC_4), H(KC_F6),H(KC_F7),H(KC_F8),H(KC_F9),H(KC_F10),H(KC_9),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
63 {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______}, 63 {_______, H(KC_F11),H(KC_F12),H(KC_0),H(KC_1),H(KC_2), H(KC_A), KC_PGDN, KC_PGUP, H(KC_5), H(KC_6), _______},
64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
65}, 65},
66 66
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
114[_FUNC] = { 114[_FUNC] = {
115 {RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLU}, 115 {RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLU},
116 {XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_VOLD}, 116 {XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_VOLD},
117 {_______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, KC_POWER, XXXXXXX, XXXXXXX, XXXXXXX, _______}, 117 {_______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, KC_POWER,XXXXXXX, XXXXXXX, XXXXXXX, _______},
118 {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______} 118 {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______}
119} 119}
120 120
diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md
index 71e200b9d..4d4e5cdd7 100644
--- a/keyboards/planck/keymaps/callum/readme.md
+++ b/keyboards/planck/keymaps/callum/readme.md
@@ -6,7 +6,7 @@ This is a layout for the grid planck, built with a few ideals in mind:
6- The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible. 6- The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible.
7- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make. 7- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make.
8 8
9We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster and other movement keys; a `SYMB` layer, with numbers and symbols; a `FUNC` layer, with function keys and media keys; and a `MOUSE` layer, with mouse emulation. The `MOUSE` layer is activated by holding the Move and Symb keys simultaniously. 9We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster, other movement keys, and hotkeys; a `SYMB` layer, with numbers and symbols; a `FUNC` layer, with function keys and media keys; and a `MOUSE` layer, with mouse emulation. The `MOUSE` layer is activated by holding the Move and Symb keys simultaniously.
10 10
11``` 11```
12/* BASE 12/* BASE
@@ -23,11 +23,11 @@ We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow c
23 23
24/* MOVE 24/* MOVE
25 * ,-----------------------------------------------------------------------------------. 25 * ,-----------------------------------------------------------------------------------.
26 * | Esc | | Home | Up | End | | | Home | Up | End | | Esc | 26 * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home | Up | End | H(7) | Esc |
27 * |------+------+------+------+------+------+------+------+------+------+------+------| 27 * |------+------+------+------+------+------+------+------+------+------+------+------|
28 * | Del | Caps | Left | Down | Right| | | Left | Down | Right| Caps | Del | 28 * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps | Del |
29 * |------+------+------+------+------+------+------+------+------+------+------+------| 29 * |------+------+------+------+------+------+------+------+------+------+------+------|
30 * | | | | Pg Up| Pg Dn| | | Pg Dn| Pg Up| | | | 30 * | |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) | |
31 * |------+------+------+------+------+------+------+------+------+------+------+------| 31 * |------+------+------+------+------+------+------+------+------+------+------+------|
32 * | | | | | | | | | | | | | 32 * | | | | | | | | | | | | |
33 * `-----------------------------------------------------------------------------------' 33 * `-----------------------------------------------------------------------------------'
@@ -68,4 +68,4 @@ We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow c
68 * | | | | | Prev | Mute | Play | Next | | | | | 68 * | | | | | Prev | Mute | Play | Next | | | | |
69 * `-----------------------------------------------------------------------------------' 69 * `-----------------------------------------------------------------------------------'
70 */ 70 */
71 ``` 71```
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index 1b1b998b2..d149019fe 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -102,16 +102,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
102 * |------+------+------+------+------+-------------+------+------+------+------+------| 102 * |------+------+------+------+------+-------------+------+------+------+------+------|
103 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | 103 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
104 * |------+------+------+------+------+------|------+------+------+------+------+------| 104 * |------+------+------+------+------+------|------+------+------+------+------+------|
105 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | 105 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------| 106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | | | | | | | | Next | Vol- | Vol+ | Play | 107 * | | | | | | | | Next | Vol- | Vol+ | Play |
108 * `-----------------------------------------------------------------------------------' 108 * `-----------------------------------------------------------------------------------'
109 */ 109 */
110[_LOWER] = { 110[_LOWER] = {
111 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, 111 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
112 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, 112 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
113 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______}, 113 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______},
114 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 114 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
115}, 115},
116 116
117/* Raise 117/* Raise
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
120 * |------+------+------+------+------+-------------+------+------+------+------+------| 120 * |------+------+------+------+------+-------------+------+------+------+------+------|
121 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | 121 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
122 * |------+------+------+------+------+------|------+------+------+------+------+------| 122 * |------+------+------+------+------+------|------+------+------+------+------+------|
123 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | 123 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
124 * |------+------+------+------+------+------+------+------+------+------+------+------| 124 * |------+------+------+------+------+------+------+------+------+------+------+------|
125 * | | | | | | | | Next | Vol- | Vol+ | Play | 125 * | | | | | | | | Next | Vol- | Vol+ | Play |
126 * `-----------------------------------------------------------------------------------' 126 * `-----------------------------------------------------------------------------------'
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
138 * |------+------+------+------+------+-------------+------+------+------+------+------| 138 * |------+------+------+------+------+-------------+------+------+------+------+------|
139 * | | S | T | P | H | * | * | F | P | L | T | D | 139 * | | S | T | P | H | * | * | F | P | L | T | D |
140 * |------+------+------+------+------+------|------+------+------+------+------+------| 140 * |------+------+------+------+------+------|------+------+------+------+------+------|
141 * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | 141 * | | S | K | W | R | * | * | R | B | G | S | Z |
142 * |------+------+------+------+------+------+------+------+------+------+------+------| 142 * |------+------+------+------+------+------+------+------+------+------+------+------|
143 * | Exit | | | A | O | | E | U | | | | 143 * | Exit | | | A | O | | E | U | | | |
144 * `-----------------------------------------------------------------------------------' 144 * `-----------------------------------------------------------------------------------'
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
163 * `-----------------------------------------------------------------------------------' 163 * `-----------------------------------------------------------------------------------'
164 */ 164 */
165[_ADJUST] = { 165[_ADJUST] = {
166 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, 166 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL },
167 {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, 167 {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______},
168 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, 168 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
169 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 169 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
diff --git a/keyboards/planck/keymaps/espynn/keyboard-layout.jpg b/keyboards/planck/keymaps/espynn/keyboard-layout.jpg
index 55e5396bf..c5e438f6a 100644
--- a/keyboards/planck/keymaps/espynn/keyboard-layout.jpg
+++ b/keyboards/planck/keymaps/espynn/keyboard-layout.jpg
Binary files differ
diff --git a/keyboards/planck/keymaps/espynn/keymap.c b/keyboards/planck/keymaps/espynn/keymap.c
index 4a3fe32b8..a24ad9d48 100644
--- a/keyboards/planck/keymaps/espynn/keymap.c
+++ b/keyboards/planck/keymaps/espynn/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM fn_actions[] = {
60 [7] = ACTION_MODS_KEY(MOD_LCTL, KC_UNDS), 60 [7] = ACTION_MODS_KEY(MOD_LCTL, KC_UNDS),
61 }; 61 };
62 62
63// This config can be found at Keyboard layout editor site: http://goo.gl/zjXL2l 63// This config can be found at Keyboard layout editor site: https://goo.gl/cF7uIO
64const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 64const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65[_QWERTY] = { /* QWERTY */ 65[_QWERTY] = { /* QWERTY */
66 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 66 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
@@ -69,22 +69,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
69 {KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} 69 {KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
70}, 70},
71[_LOWER] = { /* LOWER */ 71[_LOWER] = { /* LOWER */
72 {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL}, 72 {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS},
73 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, 73 {KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_MINS, KC_TRNS, KC_TRNS, KC_TRNS},
74 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_DQT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, 74 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_DQT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
75 {KC_TRNS, ZM_NRM, ZM_IN, ZM_OUT, KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} 75 {KC_TRNS, ZM_NRM, ZM_IN, ZM_OUT, KC_TRNS, KC_PGDN, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
76}, 76},
77[_RAISE] = { /* RAISE */ 77[_RAISE] = { /* RAISE */
78 {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, 78 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_TRNS},
79 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_LCBR, KC_BSLS, KC_TRNS}, 79 {KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_TRNS, KC_TRNS, KC_TRNS},
80 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_PIPE, KC_GRV, KC_TILD, KC_LBRC, KC_LBRC, KC_TRNS, KC_TRNS}, 80 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_PIPE, KC_GRV, KC_TILD, S(KC_COMM), S(KC_DOT), KC_BSLS, KC_TRNS},
81 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} 81 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
82}, 82},
83[_CUSTOM] = { /* CUSTOM */ 83[_CUSTOM] = { /* CUSTOM */
84 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, 84 {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS},
85 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS0, CUS3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, 85 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS0, CUS3, CUS4, KC_TRNS, KC_F12, KC_TRNS},
86 {KC_TRNS, KC_TRNS, CUT, COPY, PASTE, CUS1, CUS5, CUS2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, 86 {KC_TRNS, KC_TRNS, CUT, COPY, PASTE, CUS1, CUS5, CUS2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
87 {BL, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} 87 {BL, RESET, LALT(LCTL(KC_DEL)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
88} 88}
89}; 89};
90 90
diff --git a/keyboards/planck/keymaps/espynn/layout.json b/keyboards/planck/keymaps/espynn/layout.json
index 38ccc3452..ccdf2afde 100644
--- a/keyboards/planck/keymaps/espynn/layout.json
+++ b/keyboards/planck/keymaps/espynn/layout.json
@@ -3,6 +3,7 @@
3 "backcolor": "#858585", 3 "backcolor": "#858585",
4 "name": "Planck 40%", 4 "name": "Planck 40%",
5 "author": "James Folkert", 5 "author": "James Folkert",
6 "notes": "# Espynn's keymap for Planck Ortholinear 40% Mechanical Keyboard\nAdded several custom functions to the keymap from the \"ab\" map. Special thanks to \"mollat\" for demonstration of macros in their keymap.c\n \n\n![Layout](keyboard-layout.png \"Practical Keymap\")\n\n* Online keyboard layout editor: http://goo.gl/mlLAFZ\n\n# Notes\n* Front legend text is the custom layer (both raise and lower)\n* Holding is denoted by down arrow, for example, right shift is an enter button when tapped, shift when held\n* Simultaneous RAISE+LOWER enters CUSTOM layer. Several custom keymaps are here\n* I disregarded the advice of Jack and used macros for passwords. I accept my fate.\n* RAISE and LOWER also acts as PgUp and PgDn when tapped.\n* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users. (not sure if this works)\n* Bracket/ paran/ brace keys are placed in the center of the keyboard for programmer's convenience.",
6 "background": { 7 "background": {
7 "name": "Aluminium brushed", 8 "name": "Aluminium brushed",
8 "style": "background-image: url('/bg/metal/aluminum_texture1642.jpg');" 9 "style": "background-image: url('/bg/metal/aluminum_texture1642.jpg');"
@@ -19,41 +20,49 @@
19 2, 20 2,
20 2, 21 2,
21 0, 22 0,
22 2 23 0
23 ] 24 ]
24 }, 25 },
25 "F1\n1\n\n!\n\n\n\n\n\n<i class='kb kb-Tab-2'></i>", 26 "!\n1\n\n\nF1\n\n\n\n\n<i class='kb kb-Tab-2'></i>",
26 "F2\n2\n\n@\n\n\n\n\n\nQ", 27 "@\n2\n\n\nF2\n\n\n\n\nQ",
27 "F3\n3\n\n#\n\n\n\n\n\nW", 28 "#\n3\n\n\nF3\n\n\n\n\nW",
28 "F4\n4\n\n$\n\n\n\n\n\nE", 29 "$\n4\n\n\nF4\n\n\n\n\nE",
29 "F5\n5\n\n%\n\n\n\n\n\nR", 30 "%\n5\n\n\nF5\n\n\n\n\nR",
30 "F6\n6\n\n^\n\n\n\n\n\nT", 31 "^\n6\n\n\nF6\n\n\n\n\nT",
31 "F7\n6\n\n&\n\n\n\n\n\nY", 32 "&\n7\n\n\nF7\n\n\n\n\nY",
32 "F8\n8\n\n*\nMacro4\n\n\n\n\nU", 33 "*\n8\n\n\nF8\n\n\n\n\nU",
33 "F9\n9\n\n(\n\n\n\n\n\nI", 34 "(\n9\n\n\nF9\n\n\n\n\nI",
34 { 35 {
35 "fa": [ 36 "fa": [
37 2,
36 0, 38 0,
37 0, 39 0,
38 0, 40 0
39 2
40 ] 41 ]
41 }, 42 },
42 "F10\n0\n\n)\n\n\n\n\n\nO", 43 ")\n0\n\n\nF10\n\n\n\n\nO",
43 { 44 {
44 "fa": [ 45 "fa": [
45 2, 46 2,
46 2, 47 2,
47 0, 48 0,
48 2 49 0,
50 0,
51 0,
52 0,
53 0,
54 0
49 ] 55 ]
50 }, 56 },
51 "F11\n-\n\n_\n\n\n\n\n\nP", 57 "_\n-\n\n\nF11\n\n\n\n\nP",
52 "F12\n=\n\n+\n\n\n\n\n\n<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>" 58 {
59 "a": 7,
60 "f": 3
61 },
62 "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>"
53 ], 63 ],
54 [ 64 [
55 { 65 {
56 "a": 7,
57 "f": 3 66 "f": 3
58 }, 67 },
59 "<i class='mss mss-Unicode-DeleteRight-Big-2'></i>", 68 "<i class='mss mss-Unicode-DeleteRight-Big-2'></i>",
@@ -66,12 +75,12 @@
66 }, 75 },
67 "S", 76 "S",
68 { 77 {
78 "a": 4,
69 "f": 3 79 "f": 3
70 }, 80 },
71 "D", 81 "=\n_\n\n\n\n\n\n\n\nD",
72 { 82 {
73 "t": "#ff0000", 83 "t": "#ff0000",
74 "a": 4,
75 "f": 3 84 "f": 3
76 }, 85 },
77 "\n(\n\n\n\n\n\n\n\nF", 86 "\n(\n\n\n\n\n\n\n\nF",
@@ -93,24 +102,21 @@
93 "t": "#000000", 102 "t": "#000000",
94 "f": 3 103 "f": 3
95 }, 104 },
96 "{\n\n\n\n\n\n\n\n\nK", 105 "+\n-\n\n\nMacro4\n\n\n\n\nK",
97 { 106 {
107 "a": 7,
98 "f": 3 108 "f": 3
99 }, 109 },
100 "{\n\n\n\n\n\n\n\n\nL", 110 "L",
101 { 111 {
112 "a": 6,
102 "fa": [ 113 "fa": [
103 2, 114 2,
104 2, 115 2,
105 2,
106 2,
107 0,
108 0,
109 0,
110 2 116 2
111 ] 117 ]
112 }, 118 },
113 "\\\n\n|\n\n\n\n\n:\n\n;", 119 "\n\n:\n\nF12\n\n\n\n;",
114 { 120 {
115 "a": 7, 121 "a": 7,
116 "fa": [ 122 "fa": [
@@ -141,66 +147,79 @@
141 "fa": [ 147 "fa": [
142 2, 148 2,
143 2, 149 2,
144 2, 150 0,
145 2 151 0
146 ] 152 ]
147 }, 153 },
148 "\\\n[\n|\n{\nPaste\n\n\n\n\nV", 154 "\\\n[\n\n\nPaste\n\n\n\n\nV",
149 "|\n]\n\n}\nMacro1\n\n\n\n\nB", 155 "|\n]\n\n\nMacro1\n\n\n\n\nB",
150 "`\n'\n~\n\"\nMacro5\n\n\n\n\nN", 156 "`\n'\n\n\nMacro5\n\n\n\n\nN",
151 "~\n\"\n\n\nMacro2\n\n\n\n\nM", 157 "~\n\"\n\n\nMacro2\n\n\n\n\nM",
152 { 158 {
153 "fa": [ 159 "fa": [
154 2, 160 2,
155 2, 161 2,
156 2,
157 2,
158 0, 162 0,
159 0, 163 0,
160 0, 164 0,
161 1 165 0,
166 0,
167 2
162 ] 168 ]
163 }, 169 },
164 "[\n\n{\n\n\n\n\n<\n\n,", 170 "<\n\n\n\n\n\n\n<\n\n,",
165 "[\n\n{\n\n\n\n\n\n\n.",
166 { 171 {
167 "a": 6 172 "fa": [
173 2,
174 2,
175 0
176 ]
168 }, 177 },
169 "\n\n?\n\n\n\n\n\n/", 178 ">\n\n\n\n\n\n\n>\n\n.",
170 { 179 {
171 "a": 4,
172 "fa": [ 180 "fa": [
181 0,
173 2, 182 2,
174 2, 183 0,
184 0,
185 0,
186 0,
187 0,
188 2
189 ]
190 },
191 "\\\n\n\n\n\n\n\n?\n\n/",
192 {
193 "fa": [
194 0,
175 2, 195 2,
176 0, 196 0,
177 0, 197 0,
178 0, 198 0,
179 0, 199 0,
180 1, 200 0,
181 9, 201 2,
182 0 202 9
183 ] 203 ]
184 }, 204 },
185 "\n\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift\n\n\n\n\n<i class='mss mss-Unicode-Enter-3'></i>\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift" 205 "\n\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift\n\n\n\n\n<i class='mss mss-Unicode-Enter-3'></i>\n\n<i class='kb kb-Arrows-Bottom-4'></i>Shift"
186 ], 206 ],
187 [ 207 [
188 { 208 {
189 "a": 7, 209 "a": 7
190 "f": 3
191 }, 210 },
192 "Ctrl\n\n\n\nBLight", 211 "Ctrl\n\n\n\nBLight",
193 { 212 {
194 "a": 4, 213 "a": 4,
195 "fa": [ 214 "fa": [
196 2, 215 0,
197 1, 216 1,
198 2,
199 0, 217 0,
200 0, 218 0,
201 0, 219 0,
202 0, 220 0,
203 1, 221 0,
222 2,
204 9, 223 9,
205 9 224 9
206 ] 225 ]
@@ -208,29 +227,29 @@
208 "\nZNorm\n\n\nRESET\n\n\n\n\n<i class='mss mss-Unicode-Escape-3'></i>", 227 "\nZNorm\n\n\nRESET\n\n\n\n\n<i class='mss mss-Unicode-Escape-3'></i>",
209 { 228 {
210 "fa": [ 229 "fa": [
211 2, 230 0,
212 1, 231 1,
213 2,
214 0, 232 0,
215 0, 233 0,
216 0, 234 0,
217 0, 235 0,
218 1, 236 0,
237 2,
219 9, 238 9,
220 6 239 6
221 ] 240 ]
222 }, 241 },
223 "\nZIn\n\n\n\n\n\n\n\n<i class='kb kb-logo-windows-8'></i>", 242 "\nZIn\n\n\nc.a.del\n\n\n\n\n<i class='kb kb-logo-windows-8'></i>",
224 { 243 {
225 "fa": [ 244 "fa": [
226 2, 245 0,
227 1, 246 1,
228 2,
229 0, 247 0,
230 0, 248 0,
231 0, 249 0,
232 0, 250 0,
233 1, 251 0,
252 2,
234 9, 253 9,
235 9 254 9
236 ] 255 ]
diff --git a/keyboards/planck/keymaps/espynn/readme.md b/keyboards/planck/keymaps/espynn/readme.md
index 8882f4601..ea84cf955 100644
--- a/keyboards/planck/keymaps/espynn/readme.md
+++ b/keyboards/planck/keymaps/espynn/readme.md
@@ -3,7 +3,7 @@ Created by James Folkert: https://twitter.com/trekloFsemaJ
3Added several custom functions to the keymap from the "ab" map. Special thanks to "mollat" for demonstration of macros in their keymap.c 3Added several custom functions to the keymap from the "ab" map. Special thanks to "mollat" for demonstration of macros in their keymap.c
4 4
5 5
6![Layout](keyboard-layout.png "Practical Keymap") 6![Layout](keyboard-layout.jpg "Practical Keymap")
7 7
8 8
9* Online keyboard layout editor: http://www.keyboard-layout-editor.com/ 9* Online keyboard layout editor: http://www.keyboard-layout-editor.com/
@@ -14,5 +14,11 @@ Added several custom functions to the keymap from the "ab" map. Special thanks t
14* I disregarded the advice of Jack and used macros for passwords. I accept my fate. These have been abstracted to macros 2, 3, and 4 14* I disregarded the advice of Jack and used macros for passwords. I accept my fate. These have been abstracted to macros 2, 3, and 4
15* add your mobile and email to the keymap before make 15* add your mobile and email to the keymap before make
16* RAISE and LOWER also acts as PgUp and PgDn when tapped. 16* RAISE and LOWER also acts as PgUp and PgDn when tapped.
17* [CapsLock] also acts as [Ctrl] key when you press and hold. It is convenient for GNU Emacs users. (not sure if this works) 17* Bracket/ paran/ brace keys are placed in the center of the keyboard for programmer's convenience.
18* Bracket/ paran/ brace keys are placed in the center of the keyboard for programmer's convenience. \ No newline at end of file 18
19## changes
20* Removed some unneeded keys from raise and lower layers
21* moved the + and = signs, backspace is now more intuitive
22* moved all the Function keys to CUSTOM layer
23* added ctrl alt del to CUSTOM layer
24* simplified the layout picture greatly \ No newline at end of file
diff --git a/keyboards/roadkit/Makefile b/keyboards/roadkit/Makefile
new file mode 100644
index 000000000..4e2a6f00f
--- /dev/null
+++ b/keyboards/roadkit/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/roadkit/config.h b/keyboards/roadkit/config.h
new file mode 100644
index 000000000..9596f7f3b
--- /dev/null
+++ b/keyboards/roadkit/config.h
@@ -0,0 +1,162 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEAE
25#define PRODUCT_ID 0x8846
26#define DEVICE_VER 0x0001
27#define MANUFACTURER TheVan Keyboards
28#define PRODUCT Roadkit Micro
29#define DESCRIPTION keyboard firmware for Roadkit Micro
30
31/* key matrix size */
32#define MATRIX_ROWS 4
33#define MATRIX_COLS 4
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45#define MATRIX_ROW_PINS { F0, F5, D7, B4 }
46#define MATRIX_COL_PINS { F1, F4, D6, D4 }
47#define UNUSED_PINS
48
49/* COL2ROW or ROW2COL */
50#define DIODE_DIRECTION COL2ROW
51
52// #define BACKLIGHT_PIN B7
53// #define BACKLIGHT_BREATHING
54// #define BACKLIGHT_LEVELS 3
55
56
57/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
58#define DEBOUNCING_DELAY 5
59
60/* define if matrix has ghost (lacks anti-ghosting diodes) */
61//#define MATRIX_HAS_GHOST
62
63/* number of backlight levels */
64
65/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
66#define LOCKING_SUPPORT_ENABLE
67/* Locking resynchronize hack */
68#define LOCKING_RESYNC_ENABLE
69
70/*
71 * Force NKRO
72 *
73 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
74 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
75 * makefile for this to work.)
76 *
77 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
78 * until the next keyboard reset.
79 *
80 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
81 * fully operational during normal computer usage.
82 *
83 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
84 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
85 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
86 * power-up.
87 *
88 */
89//#define FORCE_NKRO
90
91/*
92 * Magic Key Options
93 *
94 * Magic keys are hotkey commands that allow control over firmware functions of
95 * the keyboard. They are best used in combination with the HID Listen program,
96 * found here: https://www.pjrc.com/teensy/hid_listen.html
97 *
98 * The options below allow the magic key functionality to be changed. This is
99 * useful if your keyboard/keypad is missing keys and you want magic key support.
100 *
101 */
102
103/* key combination for magic key command */
104#define IS_COMMAND() ( \
105 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
106)
107
108/* control how magic key switches layers */
109//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
112
113/* override magic key keymap */
114//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
115//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
116//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
117//#define MAGIC_KEY_HELP1 H
118//#define MAGIC_KEY_HELP2 SLASH
119//#define MAGIC_KEY_DEBUG D
120//#define MAGIC_KEY_DEBUG_MATRIX X
121//#define MAGIC_KEY_DEBUG_KBD K
122//#define MAGIC_KEY_DEBUG_MOUSE M
123//#define MAGIC_KEY_VERSION V
124//#define MAGIC_KEY_STATUS S
125//#define MAGIC_KEY_CONSOLE C
126//#define MAGIC_KEY_LAYER0_ALT1 ESC
127//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
128//#define MAGIC_KEY_LAYER0 0
129//#define MAGIC_KEY_LAYER1 1
130//#define MAGIC_KEY_LAYER2 2
131//#define MAGIC_KEY_LAYER3 3
132//#define MAGIC_KEY_LAYER4 4
133//#define MAGIC_KEY_LAYER5 5
134//#define MAGIC_KEY_LAYER6 6
135//#define MAGIC_KEY_LAYER7 7
136//#define MAGIC_KEY_LAYER8 8
137//#define MAGIC_KEY_LAYER9 9
138//#define MAGIC_KEY_BOOTLOADER PAUSE
139//#define MAGIC_KEY_LOCK CAPS
140//#define MAGIC_KEY_EEPROM E
141//#define MAGIC_KEY_NKRO N
142//#define MAGIC_KEY_SLEEP_LED Z
143
144/*
145 * Feature disable options
146 * These options are also useful to firmware size reduction.
147 */
148
149/* disable debug print */
150//#define NO_DEBUG
151
152/* disable print */
153//#define NO_PRINT
154
155/* disable action features */
156//#define NO_ACTION_LAYER
157//#define NO_ACTION_TAPPING
158//#define NO_ACTION_ONESHOT
159//#define NO_ACTION_MACRO
160//#define NO_ACTION_FUNCTION
161
162#endif
diff --git a/keyboards/roadkit/keymaps/default/Makefile b/keyboards/roadkit/keymaps/default/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/roadkit/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/roadkit/keymaps/default/config.h b/keyboards/roadkit/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/roadkit/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/roadkit/keymaps/default/keymap.c b/keyboards/roadkit/keymaps/default/keymap.c
new file mode 100644
index 000000000..3fc18915a
--- /dev/null
+++ b/keyboards/roadkit/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
1#include "roadkit.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4
5extern keymap_config_t keymap_config;
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11
12#define _NP 0
13
14// Macro name shortcuts
15#define NUMPAD M(_NP)
16
17// Fillers to make layering more clear
18#define _______ KC_TRNS
19#define XXXXXXX KC_NO
20
21
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 [_NP] = /* Numpad */
24 KEYMAP(KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, \
25 KC_KP_4, KC_KP_5, KC_KP_6, \
26 KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, \
27 KC_KP_0, KC_KP_DOT),
28};
29
30const uint16_t PROGMEM fn_actions[] = {
31
32};
33
34void persistant_default_layer_set(uint16_t default_layer) {
35 eeconfig_update_default_layer(default_layer);
36 default_layer_set(default_layer);
37}
38
39const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
40{
41 switch(id) {
42 case _NP:
43 if (record->event.pressed) {
44 persistant_default_layer_set(1UL<<_NP);
45 }
46 break;
47 }
48 return MACRO_NONE;
49};
diff --git a/keyboards/roadkit/keymaps/default/readme.md b/keyboards/roadkit/keymaps/default/readme.md
new file mode 100644
index 000000000..5984a71d1
--- /dev/null
+++ b/keyboards/roadkit/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for roadkit
diff --git a/keyboards/roadkit/keymaps/singles/Makefile b/keyboards/roadkit/keymaps/singles/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/roadkit/keymaps/singles/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/roadkit/keymaps/singles/config.h b/keyboards/roadkit/keymaps/singles/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/roadkit/keymaps/singles/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/roadkit/keymaps/singles/keymap.c b/keyboards/roadkit/keymaps/singles/keymap.c
new file mode 100644
index 000000000..5ee7a752b
--- /dev/null
+++ b/keyboards/roadkit/keymaps/singles/keymap.c
@@ -0,0 +1,61 @@
1#include "roadkit.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4
5extern keymap_config_t keymap_config;
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11
12#define _NP 0
13#define _L1 1
14
15// Macro name shortcuts
16#define NUMPAD M(_NP)
17#define LAYER1 M(_L1)
18
19// Fillers to make layering more clear
20#define _______ KC_TRNS
21#define XXXXXXX KC_NO
22
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 [_NP] = /* Numpad */
26 SINGLES_KEYMAP(KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, \
27 KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, \
28 KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, \
29 KC_KP_0, KC_KP_DOT, TG(_L1), KC_BSPC),
30 [_L1] = /* LAYER 1 */
31 SINGLES_KEYMAP(KC_NUMLOCK, KC_TRNS, KC_TRNS, KC_VOLU, \
32 KC_TRNS, KC_UP, KC_TRNS, KC_VOLD, \
33 KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, \
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
35};
36
37const uint16_t PROGMEM fn_actions[] = {
38
39};
40
41void persistant_default_layer_set(uint16_t default_layer) {
42 eeconfig_update_default_layer(default_layer);
43 default_layer_set(default_layer);
44}
45
46const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
47{
48 switch(id) {
49 case _L1:
50 if (record->event.pressed) {
51 persistant_default_layer_set(1UL<<_L1);
52 }
53 break;
54 case _NP:
55 if (record->event.pressed) {
56 persistant_default_layer_set(1UL<<_NP);
57 }
58 break;
59 }
60 return MACRO_NONE;
61};
diff --git a/keyboards/roadkit/keymaps/singles/readme.md b/keyboards/roadkit/keymaps/singles/readme.md
new file mode 100644
index 000000000..48ea4a8b3
--- /dev/null
+++ b/keyboards/roadkit/keymaps/singles/readme.md
@@ -0,0 +1,3 @@
1# The singles keymap for roadkit
2
3This keymap has a base layer with numpad functionality, and then a second layer with some additional keys. The user is encouraged to develop their own keymap using this as a starting point.
diff --git a/keyboards/roadkit/readme.md b/keyboards/roadkit/readme.md
new file mode 100644
index 000000000..d7480a165
--- /dev/null
+++ b/keyboards/roadkit/readme.md
@@ -0,0 +1,32 @@
1roadkit keyboard firmware
2======================
3
4## Quantum MK Firmware
5
6For the full Quantum feature list, see [the QMK Wiki](https://github.com/qmk/qmk_firmware/wiki).
7
8## Building
9
10Download or clone the whole firmware and navigate to the `keyboards/roadkit` folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex. You can then use the programmer of your choice to program your .hex file.
11
12Depending on which keymap you would like to use, you will have to compile slightly differently.
13
14### Default
15
16To build with the default keymap, simply run `make default`. For the roadkit, the default layout is a standard numpad layout.
17
18### Singles
19
20The singles layout for the roadkit corresponds to the configuration where only 1u keys are used and there are 16 of them on the board. To build the singles keymap, run `make singles`.
21
22### Other Keymaps
23
24Several 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.
25
26To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
27
28```
29$ make [default|jack|<name>]
30```
31
32Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/roadkit/roadkit.c b/keyboards/roadkit/roadkit.c
new file mode 100644
index 000000000..26e0c51ec
--- /dev/null
+++ b/keyboards/roadkit/roadkit.c
@@ -0,0 +1,28 @@
1#include "roadkit.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/roadkit/roadkit.h b/keyboards/roadkit/roadkit.h
new file mode 100644
index 000000000..b10e5740f
--- /dev/null
+++ b/keyboards/roadkit/roadkit.h
@@ -0,0 +1,33 @@
1#ifndef ROADKIT_H
2#define ROADKIT_H
3
4#include "quantum.h"
5
6// This is a shortcut to help you visually see your layout.
7#define KEYMAP( \
8 K00, K01, K02, K03, \
9 K10, K11, K12, \
10 K20, K21, K22, K23, \
11 K30, K32 \
12) \
13{ \
14 { K00, K01, K02, K03 }, \
15 { K10, K11, K12, KC_NO }, \
16 { K20, K21, K22, K23 }, \
17 { K30, KC_NO, K32, KC_NO } \
18}
19
20#define SINGLES_KEYMAP( \
21 K00, K01, K02, K03, \
22 K10, K11, K12, K13, \
23 K20, K21, K22, K23, \
24 K30, K31, K32, K33 \
25) \
26{ \
27 { K00, K01, K02, K03 }, \
28 { K10, K11, K12, K13 }, \
29 { K20, K21, K22, K23 }, \
30 { K30, K31, K32, K33 } \
31}
32
33#endif
diff --git a/keyboards/roadkit/rules.mk b/keyboards/roadkit/rules.mk
new file mode 100644
index 000000000..dbba6bace
--- /dev/null
+++ b/keyboards/roadkit/rules.mk
@@ -0,0 +1,69 @@
1
2
3# MCU name
4#MCU = at90usb1287
5MCU = atmega32u4
6
7# Processor frequency.
8# This will define a symbol, F_CPU, in all source code files equal to the
9# processor frequency in Hz. You can then use this symbol in your source code to
10# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
11# automatically to create a 32-bit value in your source code.
12#
13# This will be an integer division of F_USB below, as it is sourced by
14# F_USB after it has run through any CPU prescalers. Note that this value
15# does not *change* the processor frequency - it should merely be updated to
16# reflect the processor speed set externally so that the code can use accurate
17# software delays.
18F_CPU = 16000000
19
20
21#
22# LUFA specific
23#
24# Target architecture (see library "Board Types" documentation).
25ARCH = AVR8
26
27# Input clock frequency.
28# This will define a symbol, F_USB, in all source code files equal to the
29# input clock frequency (before any prescaling is performed) in Hz. This value may
30# differ from F_CPU if prescaling is used on the latter, and is required as the
31# raw input clock is fed directly to the PLL sections of the AVR for high speed
32# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
33# at the end, this will be done automatically to create a 32-bit value in your
34# source code.
35#
36# If no clock division is performed on the input clock inside the AVR (via the
37# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
38F_USB = $(F_CPU)
39
40# Interrupt driven control endpoint task(+60)
41OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
42
43
44# Boot Section Size in *bytes*
45# Teensy halfKay 512
46# Teensy++ halfKay 1024
47# Atmel DFU loader 4096
48# LUFA bootloader 4096
49# USBaspLoader 2048
50OPT_DEFS += -DBOOTLOADER_SIZE=4096
51
52
53# Build Options
54# change yes to no to disable
55#
56BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
57MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
58EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
59CONSOLE_ENABLE ?= yes # Console for debug(+400)
60COMMAND_ENABLE ?= yes # Commands for debug and configuration
61# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
62SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
63# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
64NKRO_ENABLE ?= yes # USB Nkey Rollover
65BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
66MIDI_ENABLE ?= no # MIDI controls
67UNICODE_ENABLE ?= no # Unicode
68BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
69AUDIO_ENABLE ?= no # Audio output on port C6
diff --git a/keyboards/satan/keymaps/unxmaal/Makefile b/keyboards/satan/keymaps/unxmaal/Makefile
new file mode 100644
index 000000000..ee94a67b4
--- /dev/null
+++ b/keyboards/satan/keymaps/unxmaal/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/satan/keymaps/unxmaal/README.md b/keyboards/satan/keymaps/unxmaal/README.md
new file mode 100644
index 000000000..50ad0cf1f
--- /dev/null
+++ b/keyboards/satan/keymaps/unxmaal/README.md
@@ -0,0 +1,20 @@
1Unxmaal's GH60 Satan Layout
2=====================
3* Mostly stolen from /u/robotmaxtron
4
5##Quantum MK Firmware
6For the full Quantum feature list, see the parent readme.md.
7
8* Standard Mac ANSI layout
9* Spacebar acts as space when tapped, Fn when held
10* Menu acts as menu when tapped, Fn2 when held
11* Layer1:
12 * Top row = `~, F1-F12, Del
13 * JKIL = arrow cluster
14* Layer2:
15 * Top row = media controls
16 * JKIL = PgDn/Up/Home/Insert
17 * Backspace = Reset
18
19### Additional Credits
20Keymap has been based on various keymaps available from the QMK Repo for the GH60-SATAN and KC60 keyboards. \ No newline at end of file
diff --git a/keyboards/satan/keymaps/unxmaal/keymap.c b/keyboards/satan/keymaps/unxmaal/keymap.c
new file mode 100644
index 000000000..657602de0
--- /dev/null
+++ b/keyboards/satan/keymaps/unxmaal/keymap.c
@@ -0,0 +1,119 @@
1#include "satan.h"
2
3
4// Used for SHIFT_ESC
5#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _AL 1
13#define _FL 2
14
15#define _______ KC_TRNS
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 /*
19 * ANSI Base, Mac style
20 * ,-----------------------------------------------------------------------------.
21 * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| = | Backsp |
22 * |-----------------------------------------------------------------------------|
23 * |Tab | Q | W | E | R | T | Y | U | I| O| P| [| ]| \|
24 * |-----------------------------------------------------------------------------|
25 * |Caps/Fn | A| S| D| F| G| H| J| K| L| ;| '| Enter |
26 * |-----------------------------------------------------------------------------|
27 * |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift |
28 * |-----------------------------------------------------------------------------|
29 * |Fn|Alt |Gui | Space(tapped), Fn(held) |Gui |Alt |Menu(tapped, Fn2(held)|Ctrl|
30 * `-----------------------------------------------------------------------------'
31 */
32[_BL] = KEYMAP_ANSI(
33 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
34 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
35 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
36 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
37 MO(_AL), KC_LALT,KC_LGUI, LT(_AL,KC_SPACE), KC_RGUI, KC_RALT, LT(_FL,KC_MENU), KC_RCTL),
38 /*
39 * Pok3r style arrow cluster
40 * ,-----------------------------------------------------------.
41 * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL |
42 * |-----------------------------------------------------------|
43 * | | | | | | | | |Up| | | | | |
44 * |-----------------------------------------------------------|
45 * | | | | | | | |Left|Down|Right| | | |
46 * |-----------------------------------------------------------|
47 * | | | | | | | | | | | | |
48 * |-----------------------------------------------------------|
49 * | | | | | | | | |
50 * `-----------------------------------------------------------'
51 */
52[_AL] = KEYMAP_ANSI(
53 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_DELETE, \
54 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, \
55 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, \
56 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
57 KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
58 /* Keymap _FL: Function Layer
59 * ,-----------------------------------------------------------.
60 * | | | | | | | | | | | | | | RESET|
61 * |-----------------------------------------------------------|
62 * | | | | | | | | | | | |BL-|BL+|BL |
63 * |-----------------------------------------------------------|
64 * | | | | | | | | | | | | |
65 * |-----------------------------------------------------------|
66 * | | RGB on|RGB step|Hue+|Hue- |Sat+|Sat-|Val+| Val-| | | |
67 * |-----------------------------------------------------------|
68 * | | | | | | | | |
69 * `-----------------------------------------------------------'
70 */
71[_FL] = KEYMAP_ANSI(
72 #ifdef RGBLIGHT_ENABLE
73 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
74 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \
75 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
76 _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______, \
77 _______,_______,_______, _______, _______,_______,_______, _______),
78 #else
79 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
80 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, BL_INC,BL_TOGG, \
81 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
82 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
83 _______,_______,_______, _______, _______,_______,_______,_______),
84 #endif
85};
86
87enum function_id {
88 SHIFT_ESC,
89};
90
91const uint16_t PROGMEM fn_actions[] = {
92 [0] = ACTION_FUNCTION(SHIFT_ESC),
93};
94
95void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
96 static uint8_t shift_esc_shift_mask;
97 switch (id) {
98 case SHIFT_ESC:
99 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
100 if (record->event.pressed) {
101 if (shift_esc_shift_mask) {
102 add_key(KC_GRV);
103 send_keyboard_report();
104 } else {
105 add_key(KC_ESC);
106 send_keyboard_report();
107 }
108 } else {
109 if (shift_esc_shift_mask) {
110 del_key(KC_GRV);
111 send_keyboard_report();
112 } else {
113 del_key(KC_ESC);
114 send_keyboard_report();
115 }
116 }
117 break;
118 }
119}
diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c
index e16e11be7..ff78d7f2a 100644
--- a/tmk_core/common/action_tapping.c
+++ b/tmk_core/common/action_tapping.c
@@ -257,7 +257,7 @@ bool process_tapping(keyrecord_t *keyp)
257 return true; 257 return true;
258 } 258 }
259 } else { 259 } else {
260 if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n") {}; 260 if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n");
261 process_record(keyp); 261 process_record(keyp);
262 return true; 262 return true;
263 } 263 }