aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c40
-rw-r--r--keyboards/keebio/iris/keymaps/333fred/config.h14
-rw-r--r--keyboards/keebio/iris/keymaps/333fred/keymap.c54
-rw-r--r--keyboards/keebio/iris/keymaps/333fred/rules.mk7
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c49
-rw-r--r--layouts/community/ergodox/333fred/keymap.c175
-rw-r--r--layouts/community/ortho_5x12/333fred/keymap.c51
-rw-r--r--users/333fred/333fred.c38
-rw-r--r--users/333fred/333fred.h9
-rw-r--r--users/333fred/333fred_config.h1
-rw-r--r--users/333fred/rgb.c12
11 files changed, 195 insertions, 255 deletions
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
index 4f6151a51..bc61579de 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
@@ -43,38 +43,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 ), 43 ),
44 44
45 [VIM] = LAYOUT_5x6( 45 [VIM] = LAYOUT_5x6(
46 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, 46 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
47 _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, 47 _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
48 _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, 48 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
50 _______, _______, _______, _______, 50 _______, _______, _______, _______,
51 _______, _______, _______, _______, 51 _______, _______, _______, _______,
52 _______, _______, _______, _______, 52 _______, _______, _______, _______,
53 _______, _______, _______, _______ 53 _______, _______, _______, _______
54 ), 54 ),
55}; 55};
56 56
57const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
58 switch(id) {
59 case DLEFT:
60 if (record->event.pressed) { // Windows move desktop left
61 return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
62 }
63 break;
64 case DRIGHT:
65 if (record->event.pressed) { // Windows move desktop right
66 return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
67 }
68 break;
69 case PSCREEN_APP: if (record->event.pressed) {
70 return MACRO(D(LALT), T(PSCR), U(LALT), END);
71 }
72 break;
73 }
74 return MACRO_NONE;
75}
76
77bool process_record_user(uint16_t keycode, keyrecord_t *record) { 57bool process_record_user(uint16_t keycode, keyrecord_t *record) {
78 tap_dance_process_record(keycode); 58 tap_dance_process_keycode(keycode);
79 return true; 59 return !try_handle_macro(keycode, record);
80} 60}
diff --git a/keyboards/keebio/iris/keymaps/333fred/config.h b/keyboards/keebio/iris/keymaps/333fred/config.h
new file mode 100644
index 000000000..8a866b826
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/333fred/config.h
@@ -0,0 +1,14 @@
1#pragma once
2
3#include "333fred_config.h"
4
5#define USE_SERIAL
6#define EE_HANDS
7#define NO_ACTION_MACRO
8
9#undef TAPPING_TERM
10#define TAPPING_TERM 200
11
12#undef RGBLED_NUM
13#define RGBLED_NUM 24
14#define RGBLIGHT_SLEEP
diff --git a/keyboards/keebio/iris/keymaps/333fred/keymap.c b/keyboards/keebio/iris/keymaps/333fred/keymap.c
new file mode 100644
index 000000000..b8a65d7d2
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/333fred/keymap.c
@@ -0,0 +1,54 @@
1#include QMK_KEYBOARD_H
2#include "333fred.h"
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5
6 [BASE] = LAYOUT(
7 //┌──────────────┬────────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬──────────────┐
8 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
9 //├──────────────┼────────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼──────────────┤
10 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
11 //├──────────────┼────────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼──────────────┤
12 CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
13 //├──────────────┼────────────┼────────┼────────┼────────┼────────┼───────────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼──────────────┤
14 OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_DOWN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
15 //└──────────────┴────────────┴────────┴────────┼────────┼────────┼───────────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴──────────────┘
16 KC_LALT, KC_BSPC, TD(TD_SYM_VIM), KC_ENT, KC_SPC, KC_RGUI
17 // └────────┴────────┴───────────────┘ └────────┴────────┴────────┘
18 ),
19
20
21 [SYMB] = LAYOUT(
22 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
23 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
24 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
25 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PLUS, _______, KC_7, KC_8, KC_9, _______, KC_F12,
26 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
27 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_EQL, _______, KC_4, KC_5, KC_6, _______, KC_VOLU,
28 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
29 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_UP, KC_UP, KC_0, KC_1, KC_2, KC_3, _______, KC_VOLD,
30 //└────────┴────────┴────────┴───┬────┴───┬────┴───────┴─────┬───┴────┐ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
31 _______, TD(TD_COPY_PASTE), _______, KC_MPRV, KC_MPLY, KC_MNXT
32 // └────────┴──────────────────┴────────┘ └────────┴────────┴────────┘
33 ),
34
35
36 [VIM] = LAYOUT(
37 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
40 _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
41 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
42 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
43 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
46 _______, _______, _______, _______, _______, _______
47 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
48 ),
49};
50
51bool process_record_user(uint16_t keycode, keyrecord_t *record) {
52 tap_dance_process_keycode(keycode);
53 return !try_handle_macro(keycode, record);
54}
diff --git a/keyboards/keebio/iris/keymaps/333fred/rules.mk b/keyboards/keebio/iris/keymaps/333fred/rules.mk
new file mode 100644
index 000000000..2b5da5a22
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/333fred/rules.mk
@@ -0,0 +1,7 @@
1NKRO_ENABLE = yes
2KEY_LOCK_ENABLE = yes
3TAP_DANCE_ENABLE = yes
4CONSOLE_ENABLE = no
5PERMISSIVE_HOLD = yes
6EXTRAFLAGS += -flto
7
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
index 3dd769803..53756344f 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
@@ -3,12 +3,6 @@
3 3
4extern keymap_config_t keymap_config; 4extern keymap_config_t keymap_config;
5 5
6enum custom_macros {
7 DLEFT,
8 DRIGHT,
9 PSCREEN_APP
10};
11
12const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13 7
14/* Qwerty 8/* Qwerty
@@ -46,11 +40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 * `------------------------------------------------- -------------------------------------------------' 40 * `------------------------------------------------- -------------------------------------------------'
47 */ 41 */
48[SYMB] = LAYOUT( \ 42[SYMB] = LAYOUT( \
49 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \ 43 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
50 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \ 44 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \
51 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \ 45 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \
52 M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \ 46 PSCREEN_APP, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \
53 KC_PSCR, _______, RESET, _______, _______, TO(GAME), _______, _______, KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \ 47 KC_PSCR, _______, RESET, _______, _______, TO(GAME), _______, _______, KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
54), 48),
55 49
56/* Vim Movement 50/* Vim Movement
@@ -67,11 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
67 * `------------------------------------------------..------------------------------------------------' 61 * `------------------------------------------------..------------------------------------------------'
68 */ 62 */
69[VIM] = LAYOUT( \ 63[VIM] = LAYOUT( \
70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, \ 64 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, \
71 _______, RGB_SAI, RGB_VAI, RGB_SAD, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, \ 65 _______, RGB_SAI, RGB_VAI, RGB_SAD, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, \
72 _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \ 66 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
73 _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, \ 67 _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, \
74 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
75), 69),
76 70
77/* Gaming mode (Raise) 71/* Gaming mode (Raise)
@@ -123,28 +117,7 @@ void persistant_default_layer_set(uint16_t default_layer) {
123 default_layer_set(default_layer); 117 default_layer_set(default_layer);
124} 118}
125 119
126const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
127 switch(id) {
128 case DLEFT:
129 if (record->event.pressed) { // Windows move desktop left
130 return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
131 }
132 break;
133 case DRIGHT:
134 if (record->event.pressed) { // Windows move desktop right
135 return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
136 }
137 break;
138 case PSCREEN_APP:
139 if (record->event.pressed) {
140 return MACRO(D(LALT), T(PSCR), U(LALT), END);
141 }
142 break;
143 }
144 return MACRO_NONE;
145}
146
147bool process_record_user(uint16_t keycode, keyrecord_t *record) { 120bool process_record_user(uint16_t keycode, keyrecord_t *record) {
148 tap_dance_process_record(keycode); 121 tap_dance_process_keycode(keycode);
149 return true; 122 return true;
150} 123}
diff --git a/layouts/community/ergodox/333fred/keymap.c b/layouts/community/ergodox/333fred/keymap.c
index c649e88dc..134592766 100644
--- a/layouts/community/ergodox/333fred/keymap.c
+++ b/layouts/community/ergodox/333fred/keymap.c
@@ -4,28 +4,6 @@
4#include "version.h" 4#include "version.h"
5#include "333fred.h" 5#include "333fred.h"
6 6
7enum custom_keycodes {
8 PLACEHOLDER = SAFE_RANGE, // can always be here
9 EPRM,
10 VRSN,
11};
12
13enum custom_macros {
14 // Windows macros
15 DLEFT,
16 DRIGHT,
17 PSCREEN_APP,
18 LSFT_TAB,
19
20 // KeePass macros
21 KEEPASS_OPEN,
22 KEEPASS_TYPE,
23
24 // Terminal Copy/Paste
25 TERM_CP,
26 TERM_PT
27};
28
29// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer 7// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer
30 8
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -85,26 +63,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
85 */ 63 */
86// If it accepts an argument (i.e, is a function), it doesn't need KC_. 64// If it accepts an argument (i.e, is a function), it doesn't need KC_.
87// Otherwise, it needs KC_* 65// Otherwise, it needs KC_*
88[CODEFLOW] = LAYOUT_ergodox( // layer 1 : code 66[CODEFLOW] = LAYOUT_ergodox_pretty( // layer 1 : code
89 // left hand 67 // left hand
90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
91 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
92 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
93 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
94 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 72 _______, _______, _______, _______, _______, KC_F7, KC_F8, _______, _______, _______,
95 KC_TRNS, KC_TRNS, 73 _______, _______, _______, _______,
96 KC_TRNS, 74 _______, _______,
97 KC_TRNS, KC_TRNS, KC_TRNS, 75 _______, _______, _______, _______, _______, _______
98 // right han
99
100 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
101 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
102 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
103 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
104 KC_F7, KC_F8, KC_TRNS, KC_TRNS, KC_TRNS,
105 KC_TRNS, KC_TRNS,
106 KC_TRNS,
107 KC_TRNS, KC_TRNS, KC_TRNS
108 ), 76 ),
109/* Keymap 3: Symbol Layer 77/* Keymap 3: Symbol Layer
110 * 78 *
@@ -129,14 +97,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
129 */ 97 */
130[SYMB] = LAYOUT_ergodox_pretty( 98[SYMB] = LAYOUT_ergodox_pretty(
131 // left hand 99 // left hand
132 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 100 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
133 KC_TRNS, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_TRNS, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, 101 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
134 KC_TRNS, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, 102 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
135 KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, 103 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
136 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_0, KC_DOT, KC_EQL, KC_TRNS, 104 _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, KC_EQL, _______,
137 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 105 _______, _______, _______, _______,
138 M(PSCREEN_APP), KC_TRNS, 106 PSCREEN_APP, _______,
139 KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS 107 _______, _______, KC_PSCR, _______, _______, _______
140), 108),
141/* Keymap 3: Media and mouse keys 109/* Keymap 3: Media and mouse keys
142 * 110 *
@@ -160,14 +128,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
160 * `--------------------' `--------------------' 128 * `--------------------' `--------------------'
161 */ 129 */
162[MDIA] = LAYOUT_ergodox_pretty( 130[MDIA] = LAYOUT_ergodox_pretty(
163 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
164 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 132 _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
165 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 133 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,
166 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 134 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
167 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 135 _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, _______,
168 BL_INC, BL_DEC, KC_VOLU, KC_TRNS, 136 BL_INC, BL_DEC, KC_VOLU, _______,
169 BL_TOGG, KC_VOLD, 137 BL_TOGG, KC_VOLD,
170 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT 138 _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
171), 139),
172/* Keymap 4: Movement 140/* Keymap 4: Movement
173 * 141 *
@@ -192,14 +160,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
192 */ 160 */
193// MEDIA AND MOUSE 161// MEDIA AND MOUSE
194[VIM] = LAYOUT_ergodox_pretty( 162[VIM] = LAYOUT_ergodox_pretty(
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 163 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
196 KC_TRNS, M(KEEPASS_OPEN), M(KEEPASS_TYPE), TERM_CP, TERM_PT, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_C), KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_V), KC_TRNS, 164 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
197 KC_TRNS, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, 165 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
198 KC_TRNS, M(LSFT_TAB), KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 166 _______, _______, KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
199 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 167 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
200 KC_TRNS, KC_TRNS, KC_HOME, KC_END, 168 _______, _______, KC_HOME, KC_END,
201 KC_TRNS, KC_TRNS, 169 _______, _______,
202 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS 170 _______, _______, _______, _______, _______, _______
203), 171),
204/* Keymap 1: Game Layer 172/* Keymap 1: Game Layer
205 * 173 *
@@ -226,14 +194,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
226// Otherwise, it needs KC_* 194// Otherwise, it needs KC_*
227[GAME] = LAYOUT_ergodox_pretty( // layer 1 : code 195[GAME] = LAYOUT_ergodox_pretty( // layer 1 : code
228 // left hand 196 // left hand
229 KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 197 KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
230 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 198 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
231 KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 199 KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
232 KC_LSFT, KC_Z, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 200 KC_LSFT, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
233 KC_ENT, KC_TRNS, KC_TRNS, KC_LOCK, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 201 KC_ENT, _______, _______, KC_LOCK, KC_BSPC, _______, _______, _______, _______, _______,
234 KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V), 202 KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
235 KC_TRNS, KC_UP, 203 _______, KC_UP,
236 KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, KC_TRNS, KC_TRNS 204 KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, _______, _______
237 ), 205 ),
238/* Keymap 1: Game Arrow Layer 206/* Keymap 1: Game Arrow Layer
239 * 207 *
@@ -260,71 +228,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
260// Otherwise, it needs KC_* 228// Otherwise, it needs KC_*
261[GAME_ARROW] = LAYOUT_ergodox_pretty( // layer 1 : code 229[GAME_ARROW] = LAYOUT_ergodox_pretty( // layer 1 : code
262 // left hand 230 // left hand
263 KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 231 KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
264 KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 232 _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
265 KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 233 KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______,
266 KC_LSFT, KC_Z, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 234 KC_LSFT, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
267 KC_ENT, KC_TRNS, KC_TRNS, KC_LOCK, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 235 KC_ENT, _______, _______, KC_LOCK, KC_BSPC, _______, _______, _______, _______, _______,
268 KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V), 236 KC_F5, KC_F6, LCTL(KC_C), LCTL(KC_V),
269 KC_TRNS, KC_UP, 237 _______, KC_UP,
270 KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, KC_TRNS, KC_TRNS 238 KC_LALT, KC_SPC, OSM(SYMB), KC_DOWN, _______, _______
271 ) 239 )
272}; 240};
273 241
274const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
275{
276 // MACRODOWN only works in this function
277 switch(id) {
278 case DLEFT:
279 if (record->event.pressed) { // Windows move desktop left
280 return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
281 }
282 break;
283 case DRIGHT:
284 if (record->event.pressed) { // Windows move desktop right
285 return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
286 }
287 break;
288 case PSCREEN_APP:
289 if (record->event.pressed) {
290 return MACRO(D(LALT), T(PSCR), U(LALT), END);
291 }
292 break;
293 case LSFT_TAB:
294 if (record->event.pressed) {
295 return MACRO(D(LSFT), T(TAB), U(LSFT), END);
296 }
297 case KEEPASS_OPEN:
298 if (record->event.pressed) { // Keepass open application
299 return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
300 }
301 break;
302 case KEEPASS_TYPE:
303 if (record->event.pressed) { // Keepass autotype
304 return MACRO(D(LCTL), D(LALT), T(A), U(LALT), U(LCTL), END);
305 }
306 break;
307 case TERM_CP:
308 if (record->event.pressed) { // Terminal Copy
309 return MACRO(D(LCTL), T(INSERT), U(LCTL), END);
310 }
311 break;
312 case TERM_PT:
313 if (record->event.pressed) { // Terminal Paste
314 return MACRO(D(LSFT), T(INSERT), U(LSFT), END);
315 }
316 break;
317 }
318 return MACRO_NONE;
319};
320
321bool process_record_user(uint16_t keycode, keyrecord_t *record) { 242bool process_record_user(uint16_t keycode, keyrecord_t *record) {
322 tap_dance_process_record(keycode); 243 tap_dance_process_keycode(keycode);
323 return true; 244 return true;
324} 245}
325 246
326// Runs constantly in the background, in a loop. 247// Runs constantly in the background, in a loop.
327void matrix_scan_user_keyboard(void) { 248void matrix_scan_user(void) {
328 ergodox_board_led_on(); 249 ergodox_board_led_on();
329 ergodox_led_all_on(); 250 ergodox_led_all_on();
330} 251}
diff --git a/layouts/community/ortho_5x12/333fred/keymap.c b/layouts/community/ortho_5x12/333fred/keymap.c
index cc699dfc5..a228a49d4 100644
--- a/layouts/community/ortho_5x12/333fred/keymap.c
+++ b/layouts/community/ortho_5x12/333fred/keymap.c
@@ -3,11 +3,9 @@
3 3
4extern keymap_config_t keymap_config; 4extern keymap_config_t keymap_config;
5 5
6enum custom_macros { 6#if (!defined(LAYOUT) && defined(KEYMAP))
7 DLEFT, 7# define LAYOUT KEYMAP
8 DRIGHT, 8#endif
9 PSCREEN_APP
10};
11 9
12const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13 11
@@ -46,11 +44,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 * `-----------------------------------------------------------------------------------' 44 * `-----------------------------------------------------------------------------------'
47 */ 45 */
48[SYMB] = LAYOUT_ortho_5x12( \ 46[SYMB] = LAYOUT_ortho_5x12( \
49 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \ 47 KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
50 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \ 48 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \
51 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \ 49 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \
52 M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \ 50 PSCREEN_APP, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \
53 KC_PSCR, _______, _______, _______, _______, TG(GAME), KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \ 51 KC_PSCR, _______, _______, _______, _______, TG(GAME), KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
54), 52),
55 53
56/* Vim Movement (Hold down F) 54/* Vim Movement (Hold down F)
@@ -67,11 +65,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
67 * `-----------------------------------------------------------------------------------' 65 * `-----------------------------------------------------------------------------------'
68 */ 66 */
69[VIM] = LAYOUT_ortho_5x12( \ 67[VIM] = LAYOUT_ortho_5x12( \
70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
71 _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, \ 69 _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, \
72 _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \ 70 _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
73 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
74 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 72 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
75), 73),
76 74
77/* Gaming mode (Raise) 75/* Gaming mode (Raise)
@@ -102,28 +100,7 @@ void persistent_default_layer_set(uint16_t default_layer) {
102 default_layer_set(default_layer); 100 default_layer_set(default_layer);
103} 101}
104 102
105const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
106 switch(id) {
107 case DLEFT:
108 if (record->event.pressed) { // Windows move desktop left
109 return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
110 }
111 break;
112 case DRIGHT:
113 if (record->event.pressed) { // Windows move desktop right
114 return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
115 }
116 break;
117 case PSCREEN_APP:
118 if (record->event.pressed) {
119 return MACRO(D(LALT), T(PSCR), U(LALT), END);
120 }
121 break;
122 }
123 return MACRO_NONE;
124}
125
126bool process_record_user(uint16_t keycode, keyrecord_t *record) { 103bool process_record_user(uint16_t keycode, keyrecord_t *record) {
127 tap_dance_process_record(keycode); 104 tap_dance_process_keycode(keycode);
128 return true; 105 return true;
129} 106}
diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c
index 3b2b36d02..79df8c4de 100644
--- a/users/333fred/333fred.c
+++ b/users/333fred/333fred.c
@@ -86,31 +86,37 @@ qk_tap_dance_action_t tap_dance_actions[] = {
86 [TD_COPY_PASTE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_copy_paste_finished, NULL) 86 [TD_COPY_PASTE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_copy_paste_finished, NULL)
87}; 87};
88 88
89void tap_dance_process_record(uint16_t keycode) { 89void tap_dance_process_keycode(uint16_t keycode) {
90 if (tap_dance_state == SINGLE_TAP && keycode != TD(TD_SYM_VIM)) { 90 if (tap_dance_state == SINGLE_TAP && keycode != TD(TD_SYM_VIM)) {
91 tap_dance_active = false; 91 tap_dance_active = false;
92 } 92 }
93} 93}
94 94
95__attribute__ ((weak)) 95__attribute__ ((weak))
96void matrix_init_rgb(void) {}
97
98__attribute__ ((weak))
99void layer_state_set_rgb(uint32_t state) {} 96void layer_state_set_rgb(uint32_t state) {}
100 97
101__attribute__ ((weak))
102void matrix_scan_user_keyboard(void) {}
103
104void matrix_scan_user() {
105 static bool first_run = true;
106 if (first_run) {
107 first_run = false;
108 matrix_init_rgb();
109 }
110 matrix_scan_user_keyboard();
111}
112
113uint32_t layer_state_set_user(uint32_t state) { 98uint32_t layer_state_set_user(uint32_t state) {
114 layer_state_set_rgb(state); 99 layer_state_set_rgb(state);
115 return state; 100 return state;
116} 101}
102
103bool try_handle_macro(uint16_t keycode, keyrecord_t *record) {
104 switch (keycode)
105 {
106 case DLEFT:
107 if (record->event.pressed)
108 SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_LEFT))));
109 return true;
110 case DRIGHT:
111 if (record->event.pressed)
112 SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_RIGHT))));
113 return true;
114 case PSCREEN_APP:
115 if (record->event.pressed)
116 SEND_STRING(SS_LALT(SS_TAP(X_PSCREEN)));
117 return true;
118
119 default:
120 return false;
121 }
122}
diff --git a/users/333fred/333fred.h b/users/333fred/333fred.h
index 0e6c6a196..17f3779b7 100644
--- a/users/333fred/333fred.h
+++ b/users/333fred/333fred.h
@@ -17,6 +17,13 @@ enum tap_dance_declarations {
17 TD_COPY_PASTE, 17 TD_COPY_PASTE,
18}; 18};
19 19
20enum custom_keys {
21 DLEFT = SAFE_RANGE,
22 DRIGHT,
23 PSCREEN_APP
24};
25
20void tap_dance_sym_vim_finished(qk_tap_dance_state_t*, void*); 26void tap_dance_sym_vim_finished(qk_tap_dance_state_t*, void*);
21void tap_dance_sym_vim_reset(qk_tap_dance_state_t*, void*); 27void tap_dance_sym_vim_reset(qk_tap_dance_state_t*, void*);
22void tap_dance_process_record(uint16_t); 28void tap_dance_process_keycode(uint16_t);
29bool try_handle_macro(uint16_t keycode, keyrecord_t *record);
diff --git a/users/333fred/333fred_config.h b/users/333fred/333fred_config.h
index b158e2d5a..c099072fc 100644
--- a/users/333fred/333fred_config.h
+++ b/users/333fred/333fred_config.h
@@ -1,3 +1,4 @@
1#pragma once 1#pragma once
2 2
3#define PERMISSIVE_HOLD 3#define PERMISSIVE_HOLD
4#define NO_ACTION_MACRO
diff --git a/users/333fred/rgb.c b/users/333fred/rgb.c
index a3dfd905c..5a6d74b5a 100644
--- a/users/333fred/rgb.c
+++ b/users/333fred/rgb.c
@@ -1,16 +1,11 @@
1#include "quantum.h" 1#include "quantum.h"
2#include "333fred.h" 2#include "333fred.h"
3 3
4void matrix_init_rgb(void) {
5 rgblight_enable_noeeprom();
6 rgblight_sethsv_noeeprom(270, 255, 20);
7}
8
9void layer_state_set_rgb(uint32_t state) { 4void layer_state_set_rgb(uint32_t state) {
10 switch (biton32(state)) { 5 switch (biton32(state)) {
11 case BASE: 6 case BASE:
12 // purple 7 // purple
13 rgblight_sethsv_noeeprom(270, 255, 20); 8 rgblight_sethsv_noeeprom(255, 255, 20);
14 break; 9 break;
15 case SYMB: 10 case SYMB:
16 // blue 11 // blue
@@ -26,3 +21,8 @@ void layer_state_set_rgb(uint32_t state) {
26 break; 21 break;
27 } 22 }
28} 23}
24
25void keyboard_post_init_user(void) {
26 rgblight_enable_noeeprom();
27 layer_state_set_rgb(1); // Set layer 0 (bit 1) on
28}