aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/contributing.md2
-rw-r--r--docs/index.html4
-rw-r--r--keyboards/atreus62/keymaps/d4mation/keymap.c196
-rw-r--r--keyboards/atreus62/keymaps/d4mation/readme.md40
-rw-r--r--keyboards/atreus62/keymaps/d4mation/rules.mk2
-rw-r--r--keyboards/clueboard/60/config.h2
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/README.md52
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/config.h100
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/glcdfont.c243
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/keymap.c214
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/kidbrazil.json1
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/logo_reader.c11
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/rules.mk17
-rw-r--r--keyboards/fluorite/readme.md2
-rw-r--r--keyboards/gray_studio/think65/solder/info.json74
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c271
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/rys/readme.md11
-rw-r--r--keyboards/gray_studio/think65/solder/solder.h16
-rw-r--r--keyboards/pico/65keys/65keys.c (renamed from keyboards/pico/rev1/rev1.c)0
-rw-r--r--keyboards/pico/65keys/65keys.h (renamed from keyboards/pico/rev1/rev1.h)0
-rw-r--r--keyboards/pico/65keys/config.h (renamed from keyboards/pico/rev1/config.h)0
-rw-r--r--keyboards/pico/65keys/info.json (renamed from keyboards/pico/info.json)0
-rw-r--r--keyboards/pico/65keys/keymaps/default/config.h (renamed from keyboards/pico/keymaps/default/config.h)0
-rw-r--r--keyboards/pico/65keys/keymaps/default/keymap.c (renamed from keyboards/pico/keymaps/default/keymap.c)0
-rw-r--r--keyboards/pico/65keys/keymaps/default/readme.md (renamed from keyboards/pico/keymaps/default/readme.md)0
-rw-r--r--keyboards/pico/65keys/keymaps/jis/config.h (renamed from keyboards/pico/keymaps/jis/config.h)0
-rw-r--r--keyboards/pico/65keys/keymaps/jis/keymap.c (renamed from keyboards/pico/keymaps/jis/keymap.c)0
-rw-r--r--keyboards/pico/65keys/keymaps/jis/readme.md (renamed from keyboards/pico/keymaps/jis/readme.md)0
-rw-r--r--keyboards/pico/65keys/rules.mk (renamed from keyboards/pico/rev1/rules.mk)0
-rw-r--r--keyboards/pico/70keys/70keys.c0
-rw-r--r--keyboards/pico/70keys/70keys.h24
-rw-r--r--keyboards/pico/70keys/config.h91
-rw-r--r--keyboards/pico/70keys/info.json81
-rw-r--r--keyboards/pico/70keys/keymaps/default/keymap.c46
-rw-r--r--keyboards/pico/70keys/keymaps/default/readme.md3
-rw-r--r--keyboards/pico/70keys/keymaps/jis/keymap.c47
-rw-r--r--keyboards/pico/70keys/keymaps/jis/readme.md3
-rw-r--r--keyboards/pico/70keys/rules.mk0
-rw-r--r--keyboards/pico/pico.h7
-rw-r--r--keyboards/pico/readme.md17
-rw-r--r--keyboards/pico/rules.mk2
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c2
-rw-r--r--readme.md2
-rw-r--r--users/d4mation/config.h1
-rw-r--r--users/d4mation/d4mation.c37
-rw-r--r--users/d4mation/d4mation.h17
-rw-r--r--users/d4mation/macros.c160
-rw-r--r--users/d4mation/macros.h23
-rw-r--r--users/d4mation/rules.mk15
-rw-r--r--users/d4mation/tap-dance.c6
-rw-r--r--users/d4mation/tap-dance.h7
-rw-r--r--users/d4mation/tap-hold.c28
-rw-r--r--users/d4mation/tap-hold.h5
-rw-r--r--users/d4mation/zalgo.c21
-rw-r--r--users/d4mation/zalgo.h5
55 files changed, 1890 insertions, 18 deletions
diff --git a/docs/contributing.md b/docs/contributing.md
index 7c365b418..c4d5057a0 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -85,7 +85,7 @@ Limited experimentation on the devices I have available shows that 7 is high eno
85 85
86Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please [reach out for help](#where-can-i-go-for-help)! 86Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please [reach out for help](#where-can-i-go-for-help)!
87 87
88You'll find all our documentation in the `qmk_firmware/docs` directory, or if you'd rather use a web based workflow you can click "Suggest An Edit" at the top of each page on http://docs.qmk.fm/. 88You'll find all our documentation in the `qmk_firmware/docs` directory, or if you'd rather use a web based workflow you can click the "Edit this page" link at the bottom of each page on https://docs.qmk.fm/.
89 89
90When providing code examples in your documentation, try to observe naming conventions used elsewhere in the docs. For example, standardizing enums as `my_layers` or `my_keycodes` for consistency: 90When providing code examples in your documentation, try to observe naming conventions used elsewhere in the docs. For example, standardizing enums as `my_layers` or `my_keycodes` for consistency:
91 91
diff --git a/docs/index.html b/docs/index.html
index 8d03c6ede..9b33cd263 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -82,9 +82,9 @@
82 .replace('raw.githubusercontent.com', 'github.com') 82 .replace('raw.githubusercontent.com', 'github.com')
83 .replace(/\/master/, '/blob/master') 83 .replace(/\/master/, '/blob/master')
84 } else { 84 } else {
85 url = 'https://github.com/qmk/qmk_firmware/blob/master/docs/' + vm.route.file 85 url = 'https://github.com/qmk/qmk_firmware/edit/master/docs/' + vm.route.file
86 } 86 }
87 var editHtml = '[:memo: Edit Document](' + url + ')\n' 87 var editHtml = ':pencil2: [Edit this page](' + url + ')\n'
88 return html 88 return html
89 + '\n\n----\n\n' 89 + '\n\n----\n\n'
90 + editHtml 90 + editHtml
diff --git a/keyboards/atreus62/keymaps/d4mation/keymap.c b/keyboards/atreus62/keymaps/d4mation/keymap.c
new file mode 100644
index 000000000..63b9d6142
--- /dev/null
+++ b/keyboards/atreus62/keymaps/d4mation/keymap.c
@@ -0,0 +1,196 @@
1#include QMK_KEYBOARD_H
2#include "d4mation.h"
3
4enum layer_names {
5 _DVR,
6 _QWR,
7 _LOWER,
8 _RAISE,
9 _NUM,
10 _ADJUST
11};
12
13enum keymap_custom_keycodes {
14 LOWER = NEW_SAFE_RANGE,
15 RAISE
16};
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20 /* Default/Dvorak layer
21 * ,-----------------------------------------. ,-----------------------------------------.
22 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | / |
23 * |------+------+------+------+------+------| |------+------+------+------+------+------|
24 * | Tab | ' | , | . | P | Y | | F | G | C | R | L | = |
25 * |------+------+------+------+------+------| |------+------+------+------+------+------|
26 * | Ctrl | A | O | E | U | I |,------.,------.| D | H | T | N | S | - |
27 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
28 * |Shift | ; | Q | J | K | X ||Super ||Enter || B | M | W | V | Z | \ |
29 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
30 * | NUM | Alt | Home | End |Lower | Bksp |`------'`------'|Space |Raise | Left | Down | Up |Right |
31 * `-----------------------------------------' `-----------------------------------------'
32 */
33
34 [_DVR] = LAYOUT(
35 _GRAVE_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
36 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL,
37 KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
38 TD(SHIFT_CAPS), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS,
39 TG(_NUM), KC_RALT, KC_HOME, KC_END, LOWER, KC_BSPC, KC_LGUI, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
40 ),
41
42 /* Qwerty layer, more "standard" for other people who may need to use my keyboard or for games where using Qwerty is just easier
43 * ,-----------------------------------------. ,-----------------------------------------.
44 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
45 * |------+------+------+------+------+------| |------+------+------+------+------+------|
46 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
47 * |------+------+------+------+------+------| |------+------+------+------+------+------|
48 * | Ctrl | A | S | D | F | G |,------.,------.| H | J | K | L | ; | ' |
49 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
50 * |Shift | Z | X | C | V | B ||Super ||Enter || N | M | , | . | / | = |
51 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
52 * | NUM | Alt | Home | End |Lower | Bksp |`------'`------'|Space |Raise | Left | Down | Up |Right |
53 * `-----------------------------------------' `-----------------------------------------'
54 */
55
56 [_QWR] = LAYOUT(
57 _GRAVE_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
58 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
59 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
60 TD(SHIFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
61 TG(_NUM), KC_RALT, KC_HOME, KC_END, LOWER, KC_BSPC, KC_LGUI, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
62 ),
63
64 /* "Lower" layer
65 * ,-----------------------------------------. ,-----------------------------------------.
66 * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 |
67 * |------+------+------+------+------+------| |------+------+------+------+------+------|
68 * | | | | |SLEEP | | | | | SCRGB| | | |
69 * |------+------+------+------+------+------| |------+------+------+------+------+------|
70 * | | | | | | |,------.,------.| | | | { | } | |
71 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
72 * | | | | | | || || || | Mute | VolD | VolU | | |
73 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
74 * | | |PageUp|PgDown| | Del |`------'`------'| Ins | | | | | |
75 * `-----------------------------------------' `-----------------------------------------'
76 */
77
78 [_LOWER] = LAYOUT(
79 KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
80 _______, _______, _______, _______, SLEEP, _______, _______, _______, SCRGB, _______, _______, _______,
81 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______,
82 _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
83 _______, _______, KC_PGUP, KC_PGDN, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______, _______
84 ),
85
86 /* "Raise" layer
87 * ,-----------------------------------------. ,-----------------------------------------.
88 * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 |
89 * |------+------+------+------+------+------| |------+------+------+------+------+------|
90 * | | |<?php>| ?> | | | |ZALGO | | | | | |
91 * |------+------+------+------+------+------| |------+------+------+------+------+------|
92 * | | Shrug|Lenny |Magic |Disfac| |,------.,------.| | | | [ | ] | |
93 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
94 * | | Ameno| Tflip| Tput | | || || || | Prev | Play | Next | | |
95 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
96 * | | |PageUp|PgDown| | Del |`------'`------'| Ins | | | | | |
97 * `-----------------------------------------' `-----------------------------------------'
98 */
99
100 [_RAISE] = LAYOUT(
101 KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
102 _______, _______, PHPOPEN, PHPCLSE, _______, _______, ZALGO, _______, _______, _______, _______, _______,
103 _______, SHRUG, LENNY, MAGIC, DISFACE, _______, _______, _______, _______, KC_LBRC, KC_RBRC,_______,
104 _______, AMENO, TFLIP, TPUT, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
105 _______, _______, KC_PGUP, KC_PGDN, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______, _______
106 ),
107
108 /* "Numpad" layer
109 * ,-----------------------------------------. ,-----------------------------------------.
110 * | | | / | * | - | | | | | / | * | - | |
111 * |------+------+------+------+------+------| |------+------+------+------+------+------|
112 * | | 7 | 8 | 9 | + | | | | 7 | 8 | 9 | + | |
113 * |------+------+------+------+------+------| |------+------+------+------+------+------|
114 * | | 4 | 5 | 6 | + | |,------.,------.| | 4 | 5 | 6 | + | |
115 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
116 * | | 1 | 2 | 3 | Enter| || || || | 1 | 2 | 3 | Enter| |
117 * |------+------+------+------+------+------|| || ||------+------+------+------+------+------|
118 * | | 0 | 0 | . | Enter| |`------'`------'| | 0 | 0 | . | Enter| |
119 * `-----------------------------------------' `-----------------------------------------'
120 */
121
122 [_NUM] = LAYOUT(
123 _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______,
124 _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______,
125 _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
126 _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______,
127 _______, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, _______, _______, _______, _______, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, _______
128 ),
129
130 /* "Adjust" layer, only active if both "Lower" and "Raise" are active at the same time
131 * All unused keys are blanked out for this layer
132 * ,-----------------------------------------. ,-----------------------------------------.
133 * | NO | NO | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO |
134 * |------+------+------+------+------+------| |------+------+------+------+------+------|
135 * | NO |RESET | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO |
136 * |------+------+------+------+------+------| |------+------+------+------+------+------|
137 * | NO | NO | NO |UC WIN|UC OSX| NO |,------.,------.| NO |Dvorak|Qwerty| NO | NO | NO |
138 * |------+------+------+------+------+------|| Swap || ||------+------+------+------+------+------|
139 * | NO | NO | NO | NO | NO | NO || to || Swap || NO | NO | NO | NO | NO | NO |
140 * |------+------+------+------+------+------|| Ctrl || Back ||------+------+------+------+------+------|
141 * | NO | NO | NO | NO | | NO |`------'`------'| NO | | NO | NO | NO | NO |
142 * `-----------------------------------------' `-----------------------------------------'
143 */
144
145 [_ADJUST] = LAYOUT(
146 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
147 XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
148 XXXXXXX, XXXXXXX, XXXXXXX, UC_M_WI, UC_M_OS, XXXXXXX, XXXXXXX, DF(_DVR),DF(_QWR),XXXXXXX, XXXXXXX, XXXXXXX,
149 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
150 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, CG_SWAP, CG_NORM, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
151 ),
152
153};
154
155/* Runs just one time when the keyboard initializes. */
156void eeconfig_init_keymap( void ) {
157 set_unicode_input_mode( UC_OSX );
158};
159
160bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) {
161
162 switch ( keycode ) {
163
164 case LOWER:
165
166 if ( record->event.pressed ) {
167 layer_on( _LOWER );
168 update_tri_layer( _LOWER, _RAISE, _ADJUST );
169 }
170 else {
171 layer_off( _LOWER );
172 update_tri_layer( _LOWER, _RAISE, _ADJUST );
173 }
174
175 return false;
176 break;
177
178 case RAISE :
179
180 if ( record->event.pressed ) {
181 layer_on( _RAISE );
182 update_tri_layer( _LOWER, _RAISE, _ADJUST );
183 }
184 else {
185 layer_off( _RAISE );
186 update_tri_layer( _LOWER, _RAISE, _ADJUST );
187 }
188
189 return false;
190 break;
191
192 }
193
194 return true;
195
196}; \ No newline at end of file
diff --git a/keyboards/atreus62/keymaps/d4mation/readme.md b/keyboards/atreus62/keymaps/d4mation/readme.md
new file mode 100644
index 000000000..5642e8e43
--- /dev/null
+++ b/keyboards/atreus62/keymaps/d4mation/readme.md
@@ -0,0 +1,40 @@
1# d4mation's keymap for the Atreus62
2
3This is a bit of a work in-progress, but for the most part I like what I have done here.
4
5I switched to Dvorak some time ago and software-based support in most OS's for Dvorak isn't very great, so this keymap by default is set to Dvorak.
6
7## Table of Contents
8
9* [Layers](#layers)
10 - [Base layer](#base)
11 - [Num](#num)
12 - [Lower](#lower)
13 - [Raise](#raise)
14 - [Adjust](#adjust)
15
16# Layers
17
18## Base
19
20* By default, this layer is Dvorak. But using the Adjust layer you can switch to Qwerty
21* Double-tapping Shift enables and disables Caps Lock
22* Quickly tapping the Grave accent key will output a Grave Accent, but holding it for 200ms will output the ESC key instead
23
24## Num
25
26This layer gets toggled off and on to place a numpad on both the left and right sides of the keyboard.
27
28## Lower
29
30This layer holds some handy shortcuts that I use often, like the screen grab shortcut and sleep shortcut in OS X.
31
32It also has quick access to {} as they are inaccessible in the base layer
33
34## Raise
35
36Aside from quick access to [] and Play/Pause/Next/Previous, this layer is mostly just goofy things I decided to program into the keyboard because I could. There's a bunch of [kaomoji](https://en.wikipedia.org/wiki/Emoticon#Japanese_style_(kaomoji))/"unicode smileys" and I added a toggle switch to enable a [Zalgo Text](https://zalgo.org/) mode.
37
38## Adjust
39
40This layer is a "here be dragons" layer. It can only be accessed by holding down the keys for Lower and Raise at the same time. I added exclusively keys that drastically transformed the keyboard's layout or function on this layer. The ability to switch to Qwerty is on this layer, a way to switch CTRL and CMD back and forth is on this layer, and a hotkey to enter bootloader mode also exists.
diff --git a/keyboards/atreus62/keymaps/d4mation/rules.mk b/keyboards/atreus62/keymaps/d4mation/rules.mk
new file mode 100644
index 000000000..517f2700e
--- /dev/null
+++ b/keyboards/atreus62/keymaps/d4mation/rules.mk
@@ -0,0 +1,2 @@
1UNICODE_ENABLE = yes
2TAP_DANCE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/clueboard/60/config.h b/keyboards/clueboard/60/config.h
index aa544c70b..f0e157ff1 100644
--- a/keyboards/clueboard/60/config.h
+++ b/keyboards/clueboard/60/config.h
@@ -47,7 +47,7 @@
47 * 47 *
48*/ 48*/
49#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 } 49#define MATRIX_ROW_PINS { B0, B1, B2, A15, A10 }
50#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C14, C15, C13, B5, B6 } 50#define MATRIX_COL_PINS { A2, A3, A6, B14, B15, A8, A9, A7, B3, B4, C15, C14, C13, B5, B6 }
51#define UNUSED_PINS { A0, A1, A9, B7, B8, B9, B10, B11, B12, B13 } 51#define UNUSED_PINS { A0, A1, A9, B7, B8, B9, B10, B11, B12, B13 }
52#define DIODE_DIRECTION COL2ROW 52#define DIODE_DIRECTION COL2ROW
53 53
diff --git a/keyboards/crkbd/keymaps/kidbrazil/README.md b/keyboards/crkbd/keymaps/kidbrazil/README.md
new file mode 100644
index 000000000..28414860c
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/README.md
@@ -0,0 +1,52 @@
1# KidBrazil's custom CRKBD Layout
2
3![Crkbd](https://user-images.githubusercontent.com/736191/40575636-6fba63a4-6123-11e8-9ca0-3f990f1f9f4c.jpg)
4
5This is a simple layout that I use for both programming and gaming. It is very
6closely based on the original CRKBD layout with some modifications to the
7position of CTRL and SHIFT.
8
9## Layers
10This keymap includes a total of 4 Layers:
11- QWERTY
12- NUMBERS
13- SYMBOLS
14- GAMING
15- WEAPONS
16
17The first three layers are pretty self explanatory and follow closely the
18default keymap for this keyboard. The magic really starts to happen with the
19gaming layer.
20
21### Gaming Layer
22The gaming layer can be toggled on/off from the SYMBOLS layer. Once on the
23gaming layer it will stay there until you toggle it off again. The gaming layer
24includes normal WASD and most of the keys FPS games use on the left hand. On the
25right hand we have F1-F12 and a few other special keys for games that require
26it.
27
28### Weapon
29The weapon layer is a momentary layer that can only be reached from the gaming
30layer. This layer preserves the left hand almost unchanged, except for when the
31layer is activated the top row becomes NUM 1 - 6 for wepon selection. The right
32hand is KC_TRNS the whole way so basically it is still the gaming layer.
33
34## Custom Font
35This keymap includes a custom font for my LooseTransistor logo. It is fine if
36you want to use it I certainly don't mind but if you want your own, just replace
37the glcdfont file here and you should be fine.
38
39Alternatively you could remove the font config line from the config.h file so it
40will use the default QMK one.
41
42## OLED
43This Keymap is setup to use the newer OLED API. Some work has been done to
44customize this with showing layer and USB information. I also tried my best to
45get a dormant / sleep state going but it is hit or miss and often only works on
46the master hand.
47
48### TODO
49- Fix OLED and Backlight so they turn off when the computer sleeps, currently
50 only the left hand does that and the LEDs still stay on.
51- Wait for Spit_common to be implemented in CRKBD and revisit the special color
52 layers and animations
diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h
new file mode 100644
index 000000000..dd3f1a030
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/config.h
@@ -0,0 +1,100 @@
1/*
2This is the c configuration file for the keymap
3
4Copyright 2012 Jun Wako <wakojun@gmail.com>
5Copyright 2015 Jack Humbert
6Copyright 2019 Lucas Moreira
7
8This program is free software: you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation, either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#pragma once
23
24//#define USE_MATRIX_I2C
25
26/* Select hand configuration */
27
28#define MASTER_LEFT
29// #define MASTER_RIGHT
30// #define EE_HANDS
31
32//#define SSD1306OLED
33
34#define USE_SERIAL_PD2
35
36#define TAPPING_FORCE_HOLD
37#define TAPPING_TERM 150
38#undef PRODUCT
39#define PRODUCT CRKBD Loose Transistor Ed.
40
41#ifdef RGBLIGHT_ENABLE
42 //#undef RGBLED_NUM
43 //#define RGBLIGHT_ANIMATIONS
44 #define RGBLIGHT_EFFECT_BREATHING
45 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
46 #define RGBLIGHT_EFFECT_KNIGHT
47 //#define RGBLED_NUM 27
48 #define RGBLIGHT_LIMIT_VAL 120
49 #define RGBLIGHT_HUE_STEP 10
50 #define RGBLIGHT_SAT_STEP 17
51 #define RGBLIGHT_VAL_STEP 17
52#endif
53
54#ifdef RGB_MATRIX_ENABLE
55//# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
56// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
57// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
58# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
59# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
60// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
61// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
62# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
63# define RGB_MATRIX_HUE_STEP 8
64# define RGB_MATRIX_SAT_STEP 8
65# define RGB_MATRIX_VAL_STEP 8
66# define RGB_MATRIX_SPD_STEP 10
67
68/* Disable the animations you don&#39;t want/need. You will need to disable a good number of these *
69 * because they take up a lot of space. Disable until you can successfully compile your firmware. */
70# define DISABLE_RGB_MATRIX_ALPHAS_MODS
71# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
72// # define DISABLE_RGB_MATRIX_BREATHING
73# define DISABLE_RGB_MATRIX_CYCLE_ALL
74# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
75# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
76# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
77# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
78# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
79# define DISABLE_RGB_MATRIX_DUAL_BEACON
80# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
81# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
82# define DISABLE_RGB_MATRIX_RAINDROPS
83# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
84# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
85# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
86# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
87# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
88# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
89# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
90# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
91# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
92# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
93# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
94# define DISABLE_RGB_MATRIX_SPLASH
95# define DISABLE_RGB_MATRIX_MULTISPLASH
96# define DISABLE_RGB_MATRIX_SOLID_SPLASH
97# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
98#endif
99#define OLED_FONT_H "keyboards/crkbd/keymaps/kidbrazil/glcdfont.c"
100#define OLED_DISABLE_TIMEOUT
diff --git a/keyboards/crkbd/keymaps/kidbrazil/glcdfont.c b/keyboards/crkbd/keymaps/kidbrazil/glcdfont.c
new file mode 100644
index 000000000..a67c32924
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/glcdfont.c
@@ -0,0 +1,243 @@
1// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
2// See gfxfont.h for newer custom bitmap font info.
3
4#ifndef FONT5X7_H
5#define FONT5X7_H
6
7#ifdef __AVR__
8 #include <avr/io.h>
9 #include <avr/pgmspace.h>
10#elif defined(ESP8266)
11 #include <pgmspace.h>
12#else
13 #define PROGMEM
14#endif
15
16// Standard ASCII 5x7 font
17const unsigned char font[] PROGMEM = {
18 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
20 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
21 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
22 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
23 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
24 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
25 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
26 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
27 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
28 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
29 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
30 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
31 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
32 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
33 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
34 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
35 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
36 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
37 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
38 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
39 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
40 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
41 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
42 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
43 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
44 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
45 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
46 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
47 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
48 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
49 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
52 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
53 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
54 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
55 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
56 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
57 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
58 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
59 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
60 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
61 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
62 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
63 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
64 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
65 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
66 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
67 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
68 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
69 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
70 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
71 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
72 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
73 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
74 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
75 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
76 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
77 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
78 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
79 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
80 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
81 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
82 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
83 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
84 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
85 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
86 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
87 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
88 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
89 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
90 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
91 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
92 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
93 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
94 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
95 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
96 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
97 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
98 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
99 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
100 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
101 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
102 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
103 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
104 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
105 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
106 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
107 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
108 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
109 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
110 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
111 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
112 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
113 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
114 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
115 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
116 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
117 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
118 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
119 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
120 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
121 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
122 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
123 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
124 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
125 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
126 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
127 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
128 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
129 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
130 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
131 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
132 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
133 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
134 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
135 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
136 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
137 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
138 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
139 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
140 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
141 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
142 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
143 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
144 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
145 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
148 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00,
149 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
150 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09,
151 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE,
152 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46,
153 0x44, 0x44, 0x45, 0x44, 0x29, 0x28,
154 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07,
155 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
156 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07,
157 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
158 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
159 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
160 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
161 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
162 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
163 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07,
164 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7,
165 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
168 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
169 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
170 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
171 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
172 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
173 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
174 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
179 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
180 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00,
181 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
182 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00,
183 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF,
184 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22,
185 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
186 0x22, 0x22, 0x22, 0x14, 0x14, 0x14,
187 0x14, 0x14, 0x08, 0x08, 0x00, 0x00,
188 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80,
189 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
190 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE,
191 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
192 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD,
193 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
194 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C,
195 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00,
196 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C,
197 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
200 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
201 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
202 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
203 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
204 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
205 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
206 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F,
212 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
213 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
214 0x20, 0x47, 0x48, 0x50, 0x40, 0x41,
215 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F,
216 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31,
217 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A,
218 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70,
219 0x50, 0x70, 0x50, 0x70, 0x50, 0x70,
220 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
221 0x53, 0x73, 0x53, 0x73, 0x53, 0x70,
222 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
223 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
224 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
225 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
226 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
227 0x53, 0x73, 0x53, 0x73, 0x51, 0x70,
228 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
229 0x53, 0x73, 0x53, 0x73, 0x53, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242};
243#endif // FONT5X7_H
diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
new file mode 100644
index 000000000..1086cce3a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
@@ -0,0 +1,214 @@
1#include QMK_KEYBOARD_H
2
3// [Init Variables] ----------------------------------------------------------//
4extern uint8_t is_master;
5// Oled timer similar to Drashna's
6static uint32_t oled_timer = 0;
7// Boolean to store
8bool eeprom_oled_enabled = false;
9
10// [CRKBD layers Init] -------------------------------------------------------//
11enum crkbd_layers {
12 _QWERTY,
13 _NUM,
14 _SYM,
15 _GAME,
16 _WEAPON
17};
18
19// [Keymaps] -----------------------------------------------------------------//
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [_QWERTY] = LAYOUT(
22 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
23 LSFT_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
24 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
25 LGUI_T(KC_PGUP), MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), LALT_T(KC_PGDN)
26 ),
27
28 [_NUM] = LAYOUT(
29 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
30 LSFT_T(KC_TAB), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F12, KC_NO,
31 KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_F11, KC_NO,
32 LGUI_T(KC_PGUP), KC_TRNS, KC_SPC, KC_ENT, KC_TRNS, LALT_T(KC_PGDN)
33 ),
34
35 [_SYM] = LAYOUT(
36 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
37 LSFT_T(KC_TAB), RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
38 KC_LCTL, RGB_VAD, RGB_RMOD, RGB_HUD, RGB_SAD, TG(_GAME), KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
39 LGUI_T(KC_PGUP), KC_TRNS, KC_SPC, KC_ENT, KC_TRNS, LALT_T(KC_PGDN)
40 ),
41
42 [_GAME] = LAYOUT(
43 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
44 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, KC_NO,
45 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, KC_PGUP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO,
46 KC_TAB, MO(_WEAPON), KC_SPC, KC_ENT, KC_TRNS, KC_NO
47 ),
48
49 [_WEAPON] = LAYOUT(
50 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_7, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TAB, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS
54 )
55};
56
57//int RGB_current_mode;
58
59// [Process User Input] ------------------------------------------------------//
60bool process_record_user(uint16_t keycode, keyrecord_t *record) {
61 // Use process_record_keymap to reset timer on keypress
62 if (record->event.pressed) {
63 #ifdef OLED_DRIVER_ENABLE
64 oled_timer = timer_read32();
65 #endif
66 // Restore LEDs if they are enabled in eeprom
67 rgb_matrix_enable_noeeprom();
68 }
69 return true;
70}
71
72// [OLED Configuration] ------------------------------------------------------//
73#ifdef OLED_DRIVER_ENABLE
74
75// Init Oled and Rotate....
76oled_rotation_t oled_init_user(oled_rotation_t rotation) {
77 if (!has_usb())
78 return OLED_ROTATION_180; // flips the display 180 to see it from my side
79 return rotation;
80}
81
82// Read logo from font file
83const char *read_logo(void);
84
85// {OLED helpers} -----------------------------------------------//
86
87// Render Blank Space
88void render_space(void) {
89 oled_write_ln_P(PSTR(" "), false);
90}
91
92// Render separator lines for oled display
93void render_separator(void) {
94 switch (get_highest_layer(layer_state)){
95 case _GAME:
96 case _WEAPON:
97 oled_write_ln_P(PSTR("===================="), false);
98 break;
99 default:
100 oled_write_ln_P(PSTR("++++++++++++++++++++"), false);
101 }
102}
103
104// Render current layer state
105void render_layer_state(void){
106 // If you want to change the display of OLED, you need to change here
107 switch (get_highest_layer(layer_state)){
108 case _QWERTY:
109 oled_write_ln_P(PSTR("| MODE | QWRTY ]"), false);
110 break;
111 case _NUM:
112 oled_write_ln_P(PSTR("| MODE | NUMBERS ]"), false);
113 break;
114 case _SYM:
115 oled_write_ln_P(PSTR("| MODE | SYMBOLS ]"), false);
116 break;
117 case _GAME:
118 oled_write_ln_P(PSTR("| G A M E ]"), false);
119 break;
120 case _WEAPON:
121 oled_write_ln_P(PSTR("| W E A P O N ]"), false);
122 break;
123 default:
124 oled_write_ln_P(PSTR("| MODE | UNDEF ]"), false);
125 }
126}
127
128// Render USB State
129void render_usb_state(void) {
130 switch (USB_DeviceState) {
131 case DEVICE_STATE_Unattached:
132 oled_write_ln_P(PSTR("| USB | FREE ]"), false);
133 break;
134 case DEVICE_STATE_Suspended:
135 oled_write_ln_P(PSTR("| USB | SLEEP ]"), false);
136 break;
137 case DEVICE_STATE_Configured:
138 oled_write_ln_P(PSTR("| USB | READY ]"), false);
139 break;
140 case DEVICE_STATE_Powered:
141 oled_write_ln_P(PSTR("| USB | PWRD ]"), false);
142 break;
143 case DEVICE_STATE_Default:
144 oled_write_ln_P(PSTR("| USB | DFLT ]"), false);
145 break;
146 case DEVICE_STATE_Addressed:
147 oled_write_ln_P(PSTR("| USB | ADDRS ]"), false);
148 break;
149 default:
150 oled_write_ln_P(PSTR("| USB | INVALID ]"), false);
151 }
152}
153
154// Render Logo
155void render_logo(void) {
156 oled_write(read_logo(), false);
157}
158
159// Master OLED Screen (Left Hand )
160void render_master_oled(void) {
161 // Switch display based on Layer
162 switch (get_highest_layer(layer_state)){
163 case _GAME:
164 render_separator();
165 render_layer_state();
166 render_separator();
167 render_separator();
168 break;
169 case _WEAPON:
170 render_separator();
171 render_separator();
172 render_layer_state();
173 render_separator();
174 break;
175 default:
176 render_separator();
177 render_layer_state();
178 render_separator();
179 render_usb_state();
180 }
181}
182
183// lave OLED scren (Right Hand)
184void render_slave_oled(void) {
185 render_logo();
186}
187
188// {OLED Task} -----------------------------------------------//
189void oled_task_user(void) {
190 // Drashna style timeout for LED and OLED Roughly 8mins
191 if (timer_elapsed32(oled_timer) > 480000) {
192 oled_off();
193 rgb_matrix_disable_noeeprom();
194 return;
195 }
196 else {
197 oled_on();
198 }
199 // Show logo when USB dormant
200 switch (USB_DeviceState) {
201 case DEVICE_STATE_Unattached:
202 case DEVICE_STATE_Powered:
203 case DEVICE_STATE_Suspended:
204 render_logo();
205 break;
206 default:
207 if (is_master) {
208 render_master_oled();
209 } else {
210 render_slave_oled();
211 }
212 }
213}
214#endif
diff --git a/keyboards/crkbd/keymaps/kidbrazil/kidbrazil.json b/keyboards/crkbd/keymaps/kidbrazil/kidbrazil.json
new file mode 100644
index 000000000..dd9895cce
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/kidbrazil.json
@@ -0,0 +1 @@
{"keyboard":"crkbd/rev1","keymap":"kidbrazil","layout":"LAYOUT","layers":[["KC_ESC","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_BSPC","LCTL_T(KC_TAB)","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RSFT","LGUI_T(KC_PGUP)","MO(1)","KC_SPC","KC_ENT","MO(2)","LALT_T(KC_PGDN)"],["KC_ESC","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_DEL","LCTL_T(KC_TAB)","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_LEFT","KC_UP","KC_DOWN","KC_RGHT","KC_F12","KC_NO","KC_LSFT","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_PGUP","KC_PGDN","KC_HOME","KC_END","KC_F11","KC_NO","LGUI_T(KC_PGUP)","KC_TRNS","KC_SPC","KC_ENT","KC_TRNS","LALT_T(KC_PGDN)"],["KC_ESC","KC_EXLM","KC_AT","KC_HASH","KC_DLR","KC_PERC","KC_CIRC","KC_AMPR","KC_ASTR","KC_LPRN","KC_RPRN","KC_BSPC","LCTL_T(KC_TAB)","RGB_TOG","RGB_MOD","RGB_HUI","RGB_SAI","RGB_VAI","KC_MINS","KC_EQL","KC_LCBR","KC_RCBR","KC_PIPE","KC_GRV","KC_LSFT","RGB_VAD","RGB_RMOD","RGB_HUD","RGB_SAD","TG(3)","KC_UNDS","KC_PLUS","KC_LBRC","KC_RBRC","KC_BSLS","KC_TILD","LGUI_T(KC_PGUP)","KC_TRNS","KC_SPC","KC_ENT","KC_TRNS","LALT_T(KC_PGDN)"],["KC_ESC","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_LSFT","KC_A","KC_S","KC_D","KC_F","KC_G","KC_F7","KC_F8","KC_F9","KC_F10","KC_NO","KC_NO","KC_LCTL","KC_Z","KC_X","KC_C","KC_V","KC_TRNS","KC_PGUP","KC_PGDN","KC_NO","KC_NO","KC_NO","KC_NO","KC_TAB","MO(4)","KC_SPC","KC_ENT","KC_TRNS","KC_NO"],["KC_ESC","KC_1","KC_2","KC_3","KC_4","KC_5","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_LSFT","KC_A","KC_S","KC_D","KC_F","KC_6","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_LCTL","KC_Z","KC_X","KC_C","KC_V","KC_7","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TAB","KC_TRNS","KC_SPC","KC_TRNS","KC_TRNS","KC_TRNS"]],"author":"","notes":""} \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/kidbrazil/logo_reader.c b/keyboards/crkbd/keymaps/kidbrazil/logo_reader.c
new file mode 100644
index 000000000..1bc1503a6
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/logo_reader.c
@@ -0,0 +1,11 @@
1#include "crkbd.h"
2
3const char *read_logo(void) {
4 static char logo[] = {
5 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
6 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
7 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
8 0};
9
10 return logo;
11}
diff --git a/keyboards/crkbd/keymaps/kidbrazil/rules.mk b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
new file mode 100644
index 000000000..ad03b86bf
--- /dev/null
+++ b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
@@ -0,0 +1,17 @@
1CONSOLE_ENABLE = no # Console for debug
2COMMAND_ENABLE = no # Commands for debug and configuration
3MIDI_ENABLE = no # MIDI controls
4AUDIO_ENABLE = no # Audio output on port C6
5MOUSEKEY_ENABLE = no
6RGBLIGHT_ENABLE = no
7RGB_MATRIX_ENABLE = WS2812
8OLED_DRIVER_ENABLE = yes
9
10# If you want to change the display of OLED, you need to change here
11SRC += ./keyboards/crkbd/keymaps/kidbrazil/logo_reader.c \
12 #./lib/rgb_state_reader.c \
13 #./lib/logo_reader.c \
14 #./lib/keylogger.c \
15 # ./lib/mode_icon_reader.c \
16 # ./lib/host_led_state_reader.c \
17 # ./lib/timelogger.c \
diff --git a/keyboards/fluorite/readme.md b/keyboards/fluorite/readme.md
index 959b2443f..d55252c94 100644
--- a/keyboards/fluorite/readme.md
+++ b/keyboards/fluorite/readme.md
@@ -6,7 +6,7 @@
6 6
7Fluorite is a chaotic keyboard consisting of staggered rows, staggered columns, and ortholinear. 7Fluorite is a chaotic keyboard consisting of staggered rows, staggered columns, and ortholinear.
8 8
9* Keyboard Maintainer: [mahuyu ihotsuno](https://github.com/ihotsuno) [@ihotsuno](https://twitter.com/ihotsuno) 9* Keyboard Maintainer: [mafuyu ihotsuno](https://github.com/ihotsuno) [@ihotsuno](https://twitter.com/ihotsuno)
10* Hardware Supported: fluorite CXL PCB, ProMicro 10* Hardware Supported: fluorite CXL PCB, ProMicro
11* Hardware Availability: [ten key](https://tenkey.connpass.com/), [booth.pm](https://ihotsuno.booth.pm/) 11* Hardware Availability: [ten key](https://tenkey.connpass.com/), [booth.pm](https://ihotsuno.booth.pm/)
12 12
diff --git a/keyboards/gray_studio/think65/solder/info.json b/keyboards/gray_studio/think65/solder/info.json
index 0be504253..cc87af41b 100644
--- a/keyboards/gray_studio/think65/solder/info.json
+++ b/keyboards/gray_studio/think65/solder/info.json
@@ -77,7 +77,77 @@
77 {"label":"K4F (E6,F6)", "x":15, "y":4} 77 {"label":"K4F (E6,F6)", "x":15, "y":4}
78 ] 78 ]
79 }, 79 },
80 80 "LAYOUT_65_iso_badge": {
81 "key_count": 66,
82 "layout": [
83 {"label":"K00", "x":0, "y":0},
84 {"label":"K01", "x":1, "y":0},
85 {"label":"K02", "x":2, "y":0},
86 {"label":"K03", "x":3, "y":0},
87 {"label":"K04", "x":4, "y":0},
88 {"label":"K05", "x":5, "y":0},
89 {"label":"K06", "x":6, "y":0},
90 {"label":"K07", "x":7, "y":0},
91 {"label":"K08", "x":8, "y":0},
92 {"label":"K09", "x":9, "y":0},
93 {"label":"K0A", "x":10, "y":0},
94 {"label":"K0B", "x":11, "y":0},
95 {"label":"K0C", "x":12, "y":0},
96 {"label":"K0D", "x":13, "y":0, "w":2},
97 {"label":"K0F", "x":15, "y":0},
98 {"label":"K10", "x":0, "y":1, "w":1.5},
99 {"label":"K12", "x":1.5, "y":1},
100 {"label":"K13", "x":2.5, "y":1},
101 {"label":"K14", "x":3.5, "y":1},
102 {"label":"K15", "x":4.5, "y":1},
103 {"label":"K16", "x":5.5, "y":1},
104 {"label":"K17", "x":6.5, "y":1},
105 {"label":"K18", "x":7.5, "y":1},
106 {"label":"K19", "x":8.5, "y":1},
107 {"label":"K1A", "x":9.5, "y":1},
108 {"label":"K1B", "x":10.5, "y":1},
109 {"label":"K1C", "x":11.5, "y":1},
110 {"label":"K1D", "x":12.5, "y":1},
111 {"label":"K1F", "x":15, "y":1},
112 {"label":"K20", "x":0, "y":2, "w":1.75},
113 {"label":"K22", "x":1.75, "y":2},
114 {"label":"K23", "x":2.75, "y":2},
115 {"label":"K24", "x":3.75, "y":2},
116 {"label":"K25", "x":4.75, "y":2},
117 {"label":"K26", "x":5.75, "y":2},
118 {"label":"K27", "x":6.75, "y":2},
119 {"label":"K28", "x":7.75, "y":2},
120 {"label":"K29", "x":8.75, "y":2},
121 {"label":"K2A", "x":9.75, "y":2},
122 {"label":"K2B", "x":10.75, "y":2},
123 {"label":"K2C", "x":11.75, "y":2},
124 {"label":"K1E", "x":12.75, "y":2},
125 {"label":"K2D", "x":13.75, "y":1, "w":1.25, "h":2},
126 {"label":"K30", "x":0, "y":3, "w":1.25},
127 {"label":"K31", "x":1.25, "y":3},
128 {"label":"K32", "x":2.25, "y":3},
129 {"label":"K33", "x":3.25, "y":3},
130 {"label":"K34", "x":4.25, "y":3},
131 {"label":"K35", "x":5.25, "y":3},
132 {"label":"K36", "x":6.25, "y":3},
133 {"label":"K37", "x":7.25, "y":3},
134 {"label":"K38", "x":8.25, "y":3},
135 {"label":"K39", "x":9.25, "y":3},
136 {"label":"K3A", "x":10.25, "y":3},
137 {"label":"K3B", "x":11.25, "y":3},
138 {"label":"K3D", "x":12.25, "y":3, "w":1.75},
139 {"label":"K3E", "x":14, "y":3},
140 {"label":"K40", "x":0, "y":4, "w":1.25},
141 {"label":"K41", "x":1.25, "y":4, "w":1.25},
142 {"label":"K43", "x":2.5, "y":4, "w":1.25},
143 {"label":"K46", "x":3.75, "y":4, "w":6.25},
144 {"label":"K4A", "x":10, "y":4, "w":1.25},
145 {"label":"K4B", "x":11.25, "y":4, "w":1.25},
146 {"label":"K4D", "x":13, "y":4},
147 {"label":"K4E", "x":14, "y":4},
148 {"label":"K4F", "x":15, "y":4}
149 ]
150 },
81 "LAYOUT_all": { 151 "LAYOUT_all": {
82 "key_count": 69, 152 "key_count": 69,
83 "layout": [ 153 "layout": [
@@ -154,4 +224,4 @@
154 } 224 }
155 } 225 }
156 ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" 226 ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
157} \ No newline at end of file 227}
diff --git a/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c
new file mode 100644
index 000000000..658798ed6
--- /dev/null
+++ b/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c
@@ -0,0 +1,271 @@
1/* Copyright 2019 Rys Sommefeldt
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18/*
19 * LED ranges
20 * ┌─────────────┬─────────────┬───────────────────────────────────────────┐
21 * │ 00 01 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │
22 * │   escape    │    badge    │              underglow                    │
23 * └─────────────┴─────────────┴───────────────────────────────────────────┘
24 */
25
26// Define the LED ranges start, end
27#define THINK65_LED_RANGE_OFF 0, 0
28#define THINK65_LED_RANGE_ESC 0, 4
29#define THINK65_LED_RANGE_BADGE 4, 8
30#define THINK65_LED_RANGE_UNDERGLOW 8, 22
31#define THINK65_LED_RANGE_ALL 0, 22
32
33// Turn the LEDs off by setting HSV to 0, 0, 0
34#define THINK65_LEDS_OFF 0, 0, 0
35
36// There are 3 ranges, so we can store all combinations in 2^3 values
37// Define all of them to make it easier to write the cycling code
38#define THINK65_LED_STATE_OFF 0x0 // 0b00000000
39#define THINK65_LED_STATE_ESC 0x1 // 0b00000001
40#define THINK65_LED_STATE_BADGE 0x2 // 0b00000010
41#define THINK65_LED_STATE_UNDERGLOW 0x4 // 0b00000100
42#define THINK65_LED_STATE_ESC_AND_BADGE 0x3 // 0b00000011
43#define THINK65_LED_STATE_ESC_AND_UNDERGLOW 0x5 // 0b00000101
44#define THINK65_LED_STATE_BADGE_AND_UNDERGLOW 0x6 // 0b00000110
45#define THINK65_LED_STATE_ON 0x7 // 0b00000111
46
47// Define each LED range as a bit flag
48#define THINK65_LED_ESC_RANGE_BIT 0
49#define THINK65_LED_BADGE_RANGE_BIT 1
50#define THINK65_LED_UNDERGLOW_RANGE_BIT 2
51
52// Setup some keycodes to control cycling and range toggling
53enum rys_keycodes {
54 CYC_LED = SAFE_RANGE,
55 TOG_ESC,
56 TOG_BDG,
57 TOG_UGL
58};
59
60// setup the user EEPROM space we need
61typedef union {
62 uint8_t raw;
63 struct {
64 uint8_t current_led_state:8;
65 };
66} user_config_t;
67
68user_config_t user_config;
69
70// toggle one of the range flag bits
71void toggle_led_state(unsigned int led_range) {
72 if (led_range >= THINK65_LED_ESC_RANGE_BIT && led_range <= THINK65_LED_UNDERGLOW_RANGE_BIT) {
73 user_config.current_led_state ^= 1 << led_range;
74 }
75}
76
77// set one of the range flag bits
78void set_led_state(unsigned int led_range) {
79 if (led_range >= THINK65_LED_ESC_RANGE_BIT && led_range <= THINK65_LED_UNDERGLOW_RANGE_BIT) {
80 user_config.current_led_state |= 1 << led_range;
81 }
82}
83
84// clear one of the range flag bits
85void clear_led_state(unsigned int led_range) {
86 if (led_range >= THINK65_LED_ESC_RANGE_BIT && led_range <= THINK65_LED_UNDERGLOW_RANGE_BIT) {
87 user_config.current_led_state &= ~(1 << led_range);
88 }
89}
90
91// cycle LED states: Off -> Esc -> Badge -> Underglow -> Esc+Badge -> Esc+Underglow -> Badge+Underglow -> All
92void cycle_led_state(void) {
93 switch(user_config.current_led_state) {
94 case THINK65_LED_STATE_OFF:
95 user_config.current_led_state = THINK65_LED_STATE_ESC;
96 break;
97 case THINK65_LED_STATE_ESC:
98 user_config.current_led_state = THINK65_LED_STATE_BADGE;
99 break;
100 case THINK65_LED_STATE_BADGE:
101 user_config.current_led_state = THINK65_LED_STATE_UNDERGLOW;
102 break;
103 case THINK65_LED_STATE_UNDERGLOW:
104 user_config.current_led_state = THINK65_LED_STATE_ESC_AND_BADGE;
105 break;
106 case THINK65_LED_STATE_ESC_AND_BADGE:
107 user_config.current_led_state = THINK65_LED_STATE_ESC_AND_UNDERGLOW;
108 break;
109 case THINK65_LED_STATE_ESC_AND_UNDERGLOW:
110 user_config.current_led_state = THINK65_LED_STATE_BADGE_AND_UNDERGLOW;
111 break;
112 case THINK65_LED_STATE_BADGE_AND_UNDERGLOW:
113 user_config.current_led_state = THINK65_LED_STATE_ON;
114 break;
115 case THINK65_LED_STATE_ON:
116 user_config.current_led_state = THINK65_LED_STATE_OFF;
117 break;
118 default:
119 break;
120 }
121}
122
123void apply_led_state(void) {
124 uint8_t h = rgblight_get_hue();
125 uint8_t s = rgblight_get_sat();
126 uint8_t v = rgblight_get_val();
127
128 // Set the RGB ranges based on the current state
129 switch(user_config.current_led_state) {
130 case THINK65_LED_STATE_OFF:
131 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ALL);
132 break;
133 case THINK65_LED_STATE_ESC:
134 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_ESC);
135 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_BADGE);
136 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_UNDERGLOW);
137 break;
138 case THINK65_LED_STATE_BADGE:
139 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ESC);
140 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE);
141 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_UNDERGLOW);
142 break;
143 case THINK65_LED_STATE_UNDERGLOW:
144 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ESC);
145 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_BADGE);
146 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_UNDERGLOW);
147 break;
148 case THINK65_LED_STATE_ESC_AND_BADGE:
149 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_ESC);
150 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE);
151 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_UNDERGLOW);
152 break;
153 case THINK65_LED_STATE_ESC_AND_UNDERGLOW:
154 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_ESC);
155 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_BADGE);
156 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_UNDERGLOW);
157 break;
158 case THINK65_LED_STATE_BADGE_AND_UNDERGLOW:
159 rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ESC);
160 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE);
161 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_UNDERGLOW);
162 break;
163 case THINK65_LED_STATE_ON:
164 rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_ALL);
165 break;
166 default:
167 break;
168 }
169}
170
171void keyboard_post_init_user(void) {
172 user_config.raw = eeconfig_read_user();
173
174 if (user_config.current_led_state >= THINK65_LED_STATE_OFF && user_config.current_led_state <= THINK65_LED_STATE_ON) {
175 // If the current state read from user EEPROM is valid, apply it
176 apply_led_state();
177 } else {
178 // Setup a new default state of off
179 user_config.current_led_state = THINK65_LED_STATE_OFF;
180 apply_led_state();
181 eeconfig_update_user(user_config.raw);
182 }
183}
184
185bool process_record_user(uint16_t keycode, keyrecord_t *record) {
186 switch (keycode) {
187 case CYC_LED:
188 if (record->event.pressed) {
189 cycle_led_state();
190 apply_led_state();
191 eeconfig_update_user(user_config.raw);
192 }
193 break;
194 case TOG_ESC:
195 if (record->event.pressed) {
196 toggle_led_state(THINK65_LED_ESC_RANGE_BIT);
197 apply_led_state();
198 eeconfig_update_user(user_config.raw);
199 }
200 break;
201 case TOG_BDG:
202 if (record->event.pressed) {
203 toggle_led_state(THINK65_LED_BADGE_RANGE_BIT);
204 apply_led_state();
205 eeconfig_update_user(user_config.raw);
206 }
207 break;
208 case TOG_UGL:
209 if (record->event.pressed) {
210 toggle_led_state(THINK65_LED_UNDERGLOW_RANGE_BIT);
211 apply_led_state();
212 eeconfig_update_user(user_config.raw);
213 }
214 break;
215 case KC_CAPS:
216 if (!record->event.pressed) {
217 // connect capslock LED control to the badge LEDs
218 host_keyboard_led_state().caps_lock ? set_led_state(THINK65_LED_BADGE_RANGE_BIT) : clear_led_state(THINK65_LED_BADGE_RANGE_BIT);
219 apply_led_state();
220 eeconfig_update_user(user_config.raw);
221 }
222 break;
223 default:
224 break;
225 }
226 return true;
227}
228
229const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
230 [0] = LAYOUT_65_iso_badge(
231 /*
232 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
233 * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ ` │
234 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
235 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │Del│
236 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
237 * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │   │
238 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤   │
239 * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │   │
240 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
241 * │Ctrl│LAlt│GUI │      Spaaaaaaace       │RAlt│ L1 │ │ ← │ ↓ │ → │
242 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
243 */
244 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, KC_GRV,
245 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_DEL,
246 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,
247 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_RSFT, KC_UP,
248 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
249 ),
250 [1] = LAYOUT_65_iso_badge(
251 /*
252 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
253 * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │
254 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
255 * │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│   │   │   │   │     │   │
256 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤
257 * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
258 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤   │
259 * │    │   │   │   │   │   │   │   │   │   │   │   │      │CYC│   │
260 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
261 * │    │    │    │                        │    │    │ │ESC│BDG│UGL│
262 * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
263 */
264 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
265 RGB_TOG, RGB_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
266 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
267 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CYC_LED,
268 _______, _______, _______, _______, _______, _______, TOG_ESC, TOG_BDG, TOG_UGL
269 ),
270
271};
diff --git a/keyboards/gray_studio/think65/solder/keymaps/rys/readme.md b/keyboards/gray_studio/think65/solder/keymaps/rys/readme.md
new file mode 100644
index 000000000..ed73e3064
--- /dev/null
+++ b/keyboards/gray_studio/think65/solder/keymaps/rys/readme.md
@@ -0,0 +1,11 @@
1# Personal keymap for the Think 6.5 with compatible soldered PCB
2
3The layout is UK ISO with some small personal tweaks.
4
5The LED cycling code is based on code posted to the Gray Studio Discord by `MudkipMao` on Nov 22nd 2019. Thanks!
6
7## LED cycling
8
9This map saves and restores your current active LED group choice to user EEPROM and restores it on keyboard init, which you can cycle through all combinations of, or toggle individually.
10
11The cycle is `Off -> Esc -> Badge -> Underglow -> Esc+Badge -> Esc+Underglow -> Badge+Underglow -> All`. Look at the keymap for the controls on layer 1.
diff --git a/keyboards/gray_studio/think65/solder/solder.h b/keyboards/gray_studio/think65/solder/solder.h
index b77cc578b..19ee55125 100644
--- a/keyboards/gray_studio/think65/solder/solder.h
+++ b/keyboards/gray_studio/think65/solder/solder.h
@@ -45,5 +45,19 @@
45 { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ 45 { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
46} 46}
47 47
48#define LAYOUT_65_iso_badge( \
49 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
50 K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
51 K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1E, K2D, \
52 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
53 K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
54) { \
55 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \
56 { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
57 { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO }, \
58 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, KC_NO }, \
59 { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
60}
61
48// generated by KBFirmware JSON to QMK Parser 62// generated by KBFirmware JSON to QMK Parser
49// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file 63// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/pico/rev1/rev1.c b/keyboards/pico/65keys/65keys.c
index e69de29bb..e69de29bb 100644
--- a/keyboards/pico/rev1/rev1.c
+++ b/keyboards/pico/65keys/65keys.c
diff --git a/keyboards/pico/rev1/rev1.h b/keyboards/pico/65keys/65keys.h
index 61e32efd2..61e32efd2 100644
--- a/keyboards/pico/rev1/rev1.h
+++ b/keyboards/pico/65keys/65keys.h
diff --git a/keyboards/pico/rev1/config.h b/keyboards/pico/65keys/config.h
index ab2202525..ab2202525 100644
--- a/keyboards/pico/rev1/config.h
+++ b/keyboards/pico/65keys/config.h
diff --git a/keyboards/pico/info.json b/keyboards/pico/65keys/info.json
index c5c9c8a85..c5c9c8a85 100644
--- a/keyboards/pico/info.json
+++ b/keyboards/pico/65keys/info.json
diff --git a/keyboards/pico/keymaps/default/config.h b/keyboards/pico/65keys/keymaps/default/config.h
index 5cbe7609a..5cbe7609a 100644
--- a/keyboards/pico/keymaps/default/config.h
+++ b/keyboards/pico/65keys/keymaps/default/config.h
diff --git a/keyboards/pico/keymaps/default/keymap.c b/keyboards/pico/65keys/keymaps/default/keymap.c
index 17076f20c..17076f20c 100644
--- a/keyboards/pico/keymaps/default/keymap.c
+++ b/keyboards/pico/65keys/keymaps/default/keymap.c
diff --git a/keyboards/pico/keymaps/default/readme.md b/keyboards/pico/65keys/keymaps/default/readme.md
index 9f8fa53eb..9f8fa53eb 100644
--- a/keyboards/pico/keymaps/default/readme.md
+++ b/keyboards/pico/65keys/keymaps/default/readme.md
diff --git a/keyboards/pico/keymaps/jis/config.h b/keyboards/pico/65keys/keymaps/jis/config.h
index 5cbe7609a..5cbe7609a 100644
--- a/keyboards/pico/keymaps/jis/config.h
+++ b/keyboards/pico/65keys/keymaps/jis/config.h
diff --git a/keyboards/pico/keymaps/jis/keymap.c b/keyboards/pico/65keys/keymaps/jis/keymap.c
index a3d260661..a3d260661 100644
--- a/keyboards/pico/keymaps/jis/keymap.c
+++ b/keyboards/pico/65keys/keymaps/jis/keymap.c
diff --git a/keyboards/pico/keymaps/jis/readme.md b/keyboards/pico/65keys/keymaps/jis/readme.md
index 49d2aa7b7..49d2aa7b7 100644
--- a/keyboards/pico/keymaps/jis/readme.md
+++ b/keyboards/pico/65keys/keymaps/jis/readme.md
diff --git a/keyboards/pico/rev1/rules.mk b/keyboards/pico/65keys/rules.mk
index e69de29bb..e69de29bb 100644
--- a/keyboards/pico/rev1/rules.mk
+++ b/keyboards/pico/65keys/rules.mk
diff --git a/keyboards/pico/70keys/70keys.c b/keyboards/pico/70keys/70keys.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/pico/70keys/70keys.c
diff --git a/keyboards/pico/70keys/70keys.h b/keyboards/pico/70keys/70keys.h
new file mode 100644
index 000000000..67f7161ca
--- /dev/null
+++ b/keyboards/pico/70keys/70keys.h
@@ -0,0 +1,24 @@
1#pragma once
2
3#include "pico.h"
4#include "quantum.h"
5
6#define LAYOUT( \
7 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
8 L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
9 L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
10 L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
11 L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
12) \
13{ \
14 { L00, L01, L02, L03, L04, L05, L06 }, \
15 { L10, L11, L12, L13, L14, L15, L16 }, \
16 { L20, L21, L22, L23, L24, L25, L26 }, \
17 { L30, L31, L32, L33, L34, L35, L36 }, \
18 { L40, L41, L42, L43, L44, L45, L46 }, \
19 { R00, R01, R02, R03, R04, R05, R06 }, \
20 { R10, R11, R12, R13, R14, R15, R16 }, \
21 { R20, R21, R22, R23, R24, R25, R26 }, \
22 { R30, R31, R32, R33, R34, R35, R36 }, \
23 { R40, R41, R42, R43, R44, R45, R46 } \
24}
diff --git a/keyboards/pico/70keys/config.h b/keyboards/pico/70keys/config.h
new file mode 100644
index 000000000..4e5ba0db4
--- /dev/null
+++ b/keyboards/pico/70keys/config.h
@@ -0,0 +1,91 @@
1/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xFEED
23#define PRODUCT_ID 0x9692
24#define DEVICE_VER 0x0101
25#define MANUFACTURER Kumao Kobo
26#define PRODUCT Pico Keyboard
27#define DESCRIPTION Split row staggered 5x7 keyboard (using kailh mid-height)
28
29/* key matrix size */
30// Rows are doubled-up
31#define MATRIX_ROWS 10
32#define MATRIX_COLS 7
33
34// wiring of each half
35#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
36#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
37// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
38
39/* COL2ROW or ROW2COL */
40#define DIODE_DIRECTION COL2ROW
41
42/* define if matrix has ghost */
43//#define MATRIX_HAS_GHOST
44
45/* number of backlight levels */
46// #define BACKLIGHT_LEVELS 3
47
48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCE 5
50
51/* serial.c configuration for split keyboard */
52#define SOFT_SERIAL_PIN D0
53
54/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
55#define LOCKING_SUPPORT_ENABLE
56/* Locking resynchronize hack */
57#define LOCKING_RESYNC_ENABLE
58
59/* ws2812 RGB LED */
60#define RGB_DI_PIN D3
61
62#undef RGBLED_NUM
63#define RGBLED_NUM 14 // Number of LEDs
64#define RGBLIGHT_ANIMATIONS
65#define RGBLIGHT_HUE_STEP 8
66#define RGBLIGHT_SAT_STEP 8
67#define RGBLIGHT_VAL_STEP 8
68
69/*
70 * Feature disable options
71 * These options are also useful to firmware size reduction.
72 */
73
74/* disable debug print */
75// #define NO_DEBUG
76
77/* disable print */
78// #define NO_PRINT
79
80/* disable action features */
81//#define NO_ACTION_LAYER
82//#define NO_ACTION_TAPPING
83//#define NO_ACTION_ONESHOT
84//#define NO_ACTION_MACRO
85//#define NO_ACTION_FUNCTION
86
87#define MOUSEKEY_INTERVAL 20
88#define MOUSEKEY_DELAY 0
89#define MOUSEKEY_TIME_TO_MAX 60
90#define MOUSEKEY_MAX_SPEED 7
91#define MOUSEKEY_WHEEL_DELAY 0
diff --git a/keyboards/pico/70keys/info.json b/keyboards/pico/70keys/info.json
new file mode 100644
index 000000000..4c87ab369
--- /dev/null
+++ b/keyboards/pico/70keys/info.json
@@ -0,0 +1,81 @@
1{
2 "keyboard_name": "Pico Keyboard",
3 "url": "https://github.com/kumaokobo/pico-keyboard/",
4 "maintainer": "Kumao Kobo",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"Esc", "x":0, "y":0},
9 {"label":"~", "x":1, "y":0},
10 {"label":"1", "x":2, "y":0},
11 {"label":"2", "x":3, "y":0},
12 {"label":"3", "x":4, "y":0},
13 {"label":"4", "x":5, "y":0},
14 {"label":"5", "x":6, "y":0},
15 {"label":"6", "x":9, "y":0},
16 {"label":"7", "x":10, "y":0},
17 {"label":"8", "x":11, "y":0},
18 {"label":"9", "x":12, "y":0},
19 {"label":"0", "x":13, "y":0},
20 {"label":"-", "x":14, "y":0},
21 {"label":"\u2190", "x":15, "y":0},
22 {"label":"Tab", "x":0.25, "y":1},
23 {"label":"Tab", "x":1.25, "y":1},
24 {"label":"Q", "x":2.25, "y":1},
25 {"label":"W", "x":3.25, "y":1},
26 {"label":"E", "x":4.25, "y":1},
27 {"label":"R", "x":5.25, "y":1},
28 {"label":"T", "x":6.25, "y":1},
29 {"label":"Y", "x":9.25, "y":1},
30 {"label":"U", "x":10.25, "y":1},
31 {"label":"I", "x":11.25, "y":1},
32 {"label":"O", "x":12.25, "y":1},
33 {"label":"P", "x":13.25, "y":1},
34 {"label":"[", "x":14.25, "y":1},
35 {"label":"]", "x":15.25, "y":1},
36 {"label":"Ctrl", "x":0.5, "y":2},
37 {"label":"Ctrl", "x":1.5, "y":2},
38 {"label":"A", "x":2.5, "y":2},
39 {"label":"S", "x":3.5, "y":2},
40 {"label":"D", "x":4.5, "y":2},
41 {"label":"F", "x":5.5, "y":2},
42 {"label":"G", "x":6.5, "y":2},
43 {"label":"H", "x":9.5, "y":2},
44 {"label":"J", "x":10.5, "y":2},
45 {"label":"K", "x":11.5, "y":2},
46 {"label":"L", "x":12.5, "y":2},
47 {"label":";", "x":13.5, "y":2},
48 {"label":"'", "x":14.5, "y":2},
49 {"label":"Enter", "x":15.5, "y":2},
50 {"label":"Shift", "x":0.75, "y":3},
51 {"label":"Shift", "x":1.75, "y":3},
52 {"label":"Z", "x":2.75, "y":3},
53 {"label":"X", "x":3.75, "y":3},
54 {"label":"C", "x":4.75, "y":3},
55 {"label":"V", "x":5.75, "y":3},
56 {"label":"B", "x":6.75, "y":3},
57 {"label":"N", "x":9.75, "y":3},
58 {"label":"M", "x":10.75, "y":3},
59 {"label":",", "x":11.75, "y":3},
60 {"label":".", "x":12.75, "y":3},
61 {"label":"/", "x":13.75, "y":3},
62 {"label":"\u2191", "x":14.75, "y":3},
63 {"label":"Shift", "x":15.75, "y":3},
64 {"label":"Alt", "x":1, "y":4},
65 {"label":"Alt", "x":2, "y":4},
66 {"label":"Enter", "x":3, "y":4},
67 {"label":"Del", "x":4, "y":4},
68 {"label":"GUI", "x":5, "y":4},
69 {"label":"LANG2", "x":6, "y":4},
70 {"label":"Space", "x":7, "y":4},
71 {"label":"Space", "x":10, "y":4},
72 {"label":"LANG1", "x":11, "y":4},
73 {"label":"GUI", "x":12, "y":4},
74 {"label":"Del", "x":13, "y":4},
75 {"label":"\u2190", "x":14, "y":4},
76 {"label":"\u2193", "x":15, "y":4},
77 {"label":"\u2192", "x":16, "y":4}
78 ]
79 }
80 }
81}
diff --git a/keyboards/pico/70keys/keymaps/default/keymap.c b/keyboards/pico/70keys/keymaps/default/keymap.c
new file mode 100644
index 000000000..9b9ae30da
--- /dev/null
+++ b/keyboards/pico/70keys/keymaps/default/keymap.c
@@ -0,0 +1,46 @@
1#include QMK_KEYBOARD_H
2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7#define _QWERTY 0
8#define _SYMB 1
9
10// Shortcut to make keymap more readable
11#define SYM_L MO(_SYMB)
12#define KC_ALES LALT_T(KC_ESC)
13#define KC_L1SYM LT(_SYMB, KC_LANG1)
14#define KC_L2SYM LT(_SYMB, KC_LANG2)
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17
18 [_QWERTY] = LAYOUT(
19 //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
20 KC_ESC ,KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_BSPC ,
21 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
22 KC_TAB ,KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,
23 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
24 KC_LCTL ,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 ,
25 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
26 KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
27 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
28 KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
29 //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
30 ),
31
32 [_SYMB] = LAYOUT(
33 //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
34 _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
35 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
36 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_JYEN ,KC_BSLS ,
37 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
38 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_GRV ,KC_MINS ,_______ ,
39 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
40 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,KC_CIRC ,_______ ,
41 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
42 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_GT
43 //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
44 )
45
46};
diff --git a/keyboards/pico/70keys/keymaps/default/readme.md b/keyboards/pico/70keys/keymaps/default/readme.md
new file mode 100644
index 000000000..0b9a978d7
--- /dev/null
+++ b/keyboards/pico/70keys/keymaps/default/readme.md
@@ -0,0 +1,3 @@
1# The default keymap for Pico Keyboard 70 keys
2
3![Pico Layout Image](https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-layout-70keys.png)
diff --git a/keyboards/pico/70keys/keymaps/jis/keymap.c b/keyboards/pico/70keys/keymaps/jis/keymap.c
new file mode 100644
index 000000000..73109245e
--- /dev/null
+++ b/keyboards/pico/70keys/keymaps/jis/keymap.c
@@ -0,0 +1,47 @@
1#include QMK_KEYBOARD_H
2#include"keymap_jp.h"
3
4// Each layer gets a name for readability, which is then used in the keymap matrix below.
5// The underscores don't mean anything - you can have a layer called STUFF or any other name.
6// Layer names don't all need to be of the same length, obviously, and you can also skip them
7// entirely and just use numbers.
8#define _QWERTY 0
9#define _SYMB 1
10
11// Shortcut to make keymap more readable
12#define SYM_L MO(_SYMB)
13#define KC_ALES LALT_T(KC_ESC)
14#define KC_L1SYM LT(_SYMB, KC_LANG1)
15#define KC_L2SYM LT(_SYMB, KC_LANG2)
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18
19 [_QWERTY] = LAYOUT(
20 //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
21 KC_GRV ,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_BSPC ,
22 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
23 KC_TAB ,KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_CIRC ,
24 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
25 KC_LCTL ,KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,JP_COLN ,KC_ENT ,
26 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
27 KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
28 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
29 KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
30 //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
31 ),
32
33 [_SYMB] = LAYOUT(
34 //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
35 _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
36 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
37 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,JP_YEN ,JP_TILD ,_______ ,_______ ,
38 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
39 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,JP_GRV ,KC_MINS ,_______ ,
40 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
41 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,JP_UNDS ,_______ ,
42 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
43 _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,_______ ,KC_GT
44 //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
45 )
46
47};
diff --git a/keyboards/pico/70keys/keymaps/jis/readme.md b/keyboards/pico/70keys/keymaps/jis/readme.md
new file mode 100644
index 000000000..dda39dfb8
--- /dev/null
+++ b/keyboards/pico/70keys/keymaps/jis/readme.md
@@ -0,0 +1,3 @@
1# The JIS-like keymap for Pico Keyboard 70 keys
2
3![Pico JIS like Layout Image](https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-jis-like-layout-70keys.png)
diff --git a/keyboards/pico/70keys/rules.mk b/keyboards/pico/70keys/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/pico/70keys/rules.mk
diff --git a/keyboards/pico/pico.h b/keyboards/pico/pico.h
index 246ed8755..72024efd8 100644
--- a/keyboards/pico/pico.h
+++ b/keyboards/pico/pico.h
@@ -16,8 +16,11 @@
16 16
17#pragma once 17#pragma once
18 18
19#ifdef KEYBOARD_pico_rev1 19#ifdef KEYBOARD_pico_65keys
20 #include "rev1.h" 20 #include "65keys.h"
21#endif
22#ifdef KEYBOARD_pico_70keys
23 #include "70keys.h"
21#endif 24#endif
22 25
23#include "quantum.h" 26#include "quantum.h"
diff --git a/keyboards/pico/readme.md b/keyboards/pico/readme.md
index 26bbf1da2..891bb174f 100644
--- a/keyboards/pico/readme.md
+++ b/keyboards/pico/readme.md
@@ -1,9 +1,5 @@
1# Pico keyboard 1# Pico keyboard
2 2
3<p align="center">
4 <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard.jpg" alt="Pico Keyboard rev1.0" width="600"/>
5</p>
6
7A split keyboard kit designed for small hands. 3A split keyboard kit designed for small hands.
8Pico adopted the footprint for [Kailh Mid-Height](http://www.kailh.com/en/Products/Ks/KHS/) smaller than Cherry MX compatible switches. 4Pico adopted the footprint for [Kailh Mid-Height](http://www.kailh.com/en/Products/Ks/KHS/) smaller than Cherry MX compatible switches.
9 5
@@ -12,6 +8,17 @@ Pico adopted the footprint for [Kailh Mid-Height](http://www.kailh.com/en/Produc
12 8
13Make example for this keyboard (after setting up your build environment): 9Make example for this keyboard (after setting up your build environment):
14 10
15 make pico/rev1:default 11 make pico/65keys:default
12
13## 65 keys
14<p align="center">
15 <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard.jpg" alt="Pico Keyboard 65 keys" width="600"/>
16</p>
17
18## 70 keys
19<p align="center">
20 <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard2.jpg" alt="Pico Keyboard 70 keys" width="600"/>
21</p>
22
16 23
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 24See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/pico/rules.mk b/keyboards/pico/rules.mk
index fc6ad1e7e..0e044b676 100644
--- a/keyboards/pico/rules.mk
+++ b/keyboards/pico/rules.mk
@@ -33,4 +33,4 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
33 33
34SPLIT_KEYBOARD = yes 34SPLIT_KEYBOARD = yes
35 35
36DEFAULT_FOLDER = pico/rev1 36DEFAULT_FOLDER = pico/65keys
diff --git a/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c b/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
index 73d6789c1..5e5d16390 100644
--- a/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
13 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, \ 13 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, \
14 LCTL_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, KC_ENT, \ 14 LCTL_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, KC_ENT, \
15 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(YFL), \ 15 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(YFL), \
16 KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RGUI, KC_RALT, MO(FN), KC_RCTL), 16 KC_LCTL, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, MO(FN), KC_RCTL),
17 17
18[FN] = LAYOUT_60_ansi_split_bs_rshift( 18[FN] = LAYOUT_60_ansi_split_bs_rshift(
19 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_DEL, \ 19 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_DEL, \
diff --git a/readme.md b/readme.md
index 5a9166c04..6092f209b 100644
--- a/readme.md
+++ b/readme.md
@@ -15,7 +15,7 @@ This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github
15 15
16The docs are powered by [Docsify](https://docsify.js.org/) and hosted on [GitHub](/docs/). They are also viewable offline; see [Previewing the Documentation](https://docs.qmk.fm/#/contributing?id=previewing-the-documentation) for more details. 16The docs are powered by [Docsify](https://docsify.js.org/) and hosted on [GitHub](/docs/). They are also viewable offline; see [Previewing the Documentation](https://docs.qmk.fm/#/contributing?id=previewing-the-documentation) for more details.
17 17
18You can request changes by making a fork and opening a [pull request](https://github.com/qmk/qmk_firmware/pulls), or by clicking the "Edit Document" link at the bottom of any page. 18You can request changes by making a fork and opening a [pull request](https://github.com/qmk/qmk_firmware/pulls), or by clicking the "Edit this page" link at the bottom of any page.
19 19
20## Supported Keyboards 20## Supported Keyboards
21 21
diff --git a/users/d4mation/config.h b/users/d4mation/config.h
new file mode 100644
index 000000000..3140a036f
--- /dev/null
+++ b/users/d4mation/config.h
@@ -0,0 +1 @@
#define FORCE_NKRO \ No newline at end of file
diff --git a/users/d4mation/d4mation.c b/users/d4mation/d4mation.c
new file mode 100644
index 000000000..5aa58a9f0
--- /dev/null
+++ b/users/d4mation/d4mation.c
@@ -0,0 +1,37 @@
1#include "d4mation.h"
2
3__attribute__ ((weak))
4bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) {
5 /* If you want macros specific to your keymap, you need to define this function in your keymap */
6 return true;
7}
8
9__attribute__ ((weak))
10void matrix_init_keymap() {
11 /* If you want a matrix init specific to your keymap, you need to define this function in your keymap */
12}
13
14__attribute__ ((weak))
15void matrix_scan_keymap() {
16 /* If you want a matrix scan specific to your keymap, you need to define this function in your keymap */
17}
18
19__attribute__((weak))
20void eeconfig_init_keymap( void ) {}
21
22/* process_record_user() is called in macros.c */
23
24void matrix_init_user( void ) {
25 matrix_init_keymap();
26}
27
28void matrix_scan_user( void ) {
29 matrix_scan_keymap();
30}
31
32void eeconfig_init_user( void ) {
33
34 eeconfig_init_keymap();
35 keyboard_init();
36
37} \ No newline at end of file
diff --git a/users/d4mation/d4mation.h b/users/d4mation/d4mation.h
new file mode 100644
index 000000000..94c63526d
--- /dev/null
+++ b/users/d4mation/d4mation.h
@@ -0,0 +1,17 @@
1#pragma once
2
3#include "quantum.h"
4
5#ifdef UNICODE_ENABLE
6#include "macros.h"
7#endif
8
9#ifdef TAP_DANCE_ENABLE
10#include "tap-dance.h"
11#endif
12
13bool process_record_keymap( uint16_t keycode, keyrecord_t *record );
14
15void matrix_init_keymap( void );
16
17void matrix_scan_keymap( void ); \ No newline at end of file
diff --git a/users/d4mation/macros.c b/users/d4mation/macros.c
new file mode 100644
index 000000000..3c115d7ea
--- /dev/null
+++ b/users/d4mation/macros.c
@@ -0,0 +1,160 @@
1#include "d4mation.h"
2#include "tap-hold.h"
3#include "zalgo.h"
4#include "macros.h"
5
6bool zalgo_enabled = false;
7
8bool process_record_user( uint16_t keycode, keyrecord_t *record ) {
9
10 switch ( keycode ) {
11
12 case _GRAVE_ESC:
13
14 /* Send ` on Tap, Esc on Hold */
15 tap_or_hold( record, KC_GRAVE, KC_ESC );
16
17 return false;
18 break;
19
20 case PHPOPEN:
21
22 if ( record->event.pressed ) {
23
24 tap_code16( S( KC_COMMA ) );
25 tap_code16( S( KC_SLASH ) );
26
27 tap_code( KC_P );
28 tap_code( KC_H );
29 tap_code( KC_P );
30
31 }
32
33 return false;
34 break;
35
36 case PHPCLSE:
37
38 if ( record->event.pressed ) {
39 tap_code16( S( KC_SLASH ) );
40 tap_code16( S( KC_DOT ) );
41 }
42
43 return false;
44 break;
45
46 #ifdef UNICODE_ENABLE
47
48 case AMENO: /* ༼ つ ◕_◕ ༽つ */
49
50 if ( record->event.pressed ) {
51
52 send_unicode_hex_string( "0F3C 0020 3064 0020 25D5 005F 25D5 0020 0F3D 3064" );
53
54 }
55
56 return false;
57 break;
58
59 case MAGIC: /* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */
60
61 if ( record->event.pressed ) {
62
63 send_unicode_hex_string( "0028 2229 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029 2283 2501 2606 FF9F 002E 0020 002A" );
64
65 }
66
67 return false;
68 break;
69
70 case LENNY: /* ( ͡° ͜ʖ ͡°) */
71
72 if ( record->event.pressed ) {
73
74 send_unicode_hex_string( "0028 0020 0361 00B0 0020 035C 0296 0020 0361 00b0 0029" );
75
76 }
77
78 return false;
79 break;
80
81 case DISFACE: /* ಠ_ಠ */
82
83 if ( record->event.pressed ) {
84 send_unicode_hex_string( "0CA0 005F 0CA0" );
85 }
86
87 return false;
88 break;
89
90 case TFLIP: /* (╯°□°)╯ ︵ ┻━┻ */
91
92 if ( record->event.pressed ) {
93
94 send_unicode_hex_string( "0028 256F 00b0 25A1 00B0 0029 256F FE35 253B 2501 253B" );
95
96 }
97
98 return false;
99 break;
100
101 case TPUT: /* ┬──┬ ノ( ゜-゜ノ) */
102
103 if ( record->event.pressed ) {
104
105 send_unicode_hex_string( "252C 2500 2500 252C 0020 30CE 0028 0020 309C 002D 309C 30CE 0029" );
106
107 }
108
109 return false;
110 break;
111
112 case SHRUG: /* ¯\_(ツ)_/¯ */
113
114 if ( record->event.pressed ) {
115
116 send_unicode_hex_string( "00AF 005C 005F 0028 30C4 0029 005F 002F 00AF" );
117
118 }
119
120 return false;
121 break;
122
123 case ZALGO: /* Toggles Zalgo Text mode */
124
125 if ( record->event.pressed ) {
126 zalgo_enabled = ! zalgo_enabled;
127 }
128
129 return false;
130 break;
131
132 #endif
133
134 default:
135
136 #ifdef UNICODE_ENABLE
137
138 if ( zalgo_enabled ) {
139
140 if ( keycode < KC_A || ( keycode > KC_0 && keycode < KC_MINUS ) || keycode > KC_SLASH ) {
141 process_record_keymap( keycode, record );
142 return true;
143 }
144
145 if ( record->event.pressed ) {
146 zalgo_text( keycode );
147 }
148
149 return false;
150 }
151
152 #endif
153
154 break;
155 }
156
157 process_record_keymap( keycode, record );
158 return true;
159
160}; \ No newline at end of file
diff --git a/users/d4mation/macros.h b/users/d4mation/macros.h
new file mode 100644
index 000000000..e69d30dec
--- /dev/null
+++ b/users/d4mation/macros.h
@@ -0,0 +1,23 @@
1#pragma once
2
3#include "quantum.h"
4#include "tap-hold.h"
5#include "zalgo.h"
6
7#define SCRGB LCTL( LSFT( LGUI( KC_4 ) ) ) /* Mac Screen Area Grab shortcut (Puts into Clipboard) */
8#define SLEEP LALT( LGUI( KC_SYSTEM_POWER ) ) /* Instant sleep on Mac, rather than having to hold down the button */
9
10enum custom_keycodes {
11 _GRAVE_ESC = SAFE_RANGE, /* Prefixed with underscore to prevent conflicts */
12 PHPOPEN, /* <?php */
13 PHPCLSE, /* ?> */
14 AMENO,
15 MAGIC,
16 LENNY,
17 DISFACE,
18 TFLIP,
19 TPUT,
20 SHRUG,
21 ZALGO,
22 NEW_SAFE_RANGE
23}; \ No newline at end of file
diff --git a/users/d4mation/rules.mk b/users/d4mation/rules.mk
new file mode 100644
index 000000000..3d65a2242
--- /dev/null
+++ b/users/d4mation/rules.mk
@@ -0,0 +1,15 @@
1SRC += d4mation.c \
2 tap-hold.c \
3 macros.c
4
5BOOTMAGIC_ENABLE = no
6LTO_ENABLE = yes
7MOUSEKEY_ENABLE = no
8
9ifeq ($(strip $(UNICODE_ENABLE)), yes)
10 SRC += zalgo.c
11endif
12
13ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
14 SRC += tap-dance.c
15endif \ No newline at end of file
diff --git a/users/d4mation/tap-dance.c b/users/d4mation/tap-dance.c
new file mode 100644
index 000000000..46f2274f5
--- /dev/null
+++ b/users/d4mation/tap-dance.c
@@ -0,0 +1,6 @@
1#include "tap-dance.h"
2
3qk_tap_dance_action_t tap_dance_actions[] = {
4 /* Tap once/hold for Shift, tap twice for Caps Lock */
5 [SHIFT_CAPS] = ACTION_TAP_DANCE_DOUBLE( KC_LSHIFT, KC_CAPS )
6}; \ No newline at end of file
diff --git a/users/d4mation/tap-dance.h b/users/d4mation/tap-dance.h
new file mode 100644
index 000000000..0087c4a6e
--- /dev/null
+++ b/users/d4mation/tap-dance.h
@@ -0,0 +1,7 @@
1#pragma once
2
3#include "quantum.h"
4
5enum tap_dance {
6 SHIFT_CAPS = 0
7}; \ No newline at end of file
diff --git a/users/d4mation/tap-hold.c b/users/d4mation/tap-hold.c
new file mode 100644
index 000000000..0c5119f99
--- /dev/null
+++ b/users/d4mation/tap-hold.c
@@ -0,0 +1,28 @@
1#include "tap-hold.h"
2
3#ifndef TAP_HOLD_TIME
4#define TAP_HOLD_TIME 200
5#endif
6
7uint16_t tap_hold_timer;
8
9void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold ) {
10
11 if ( record->event.pressed ) {
12 tap_hold_timer = timer_read();
13 } else {
14
15 if ( tap_hold_timer &&
16 timer_elapsed( tap_hold_timer ) > TAP_HOLD_TIME ) {
17 /* Held down then released */
18 tap_code( hold );
19 } else {
20 /* Quickly Tapped */
21 tap_code( tap );
22 }
23
24 tap_hold_timer = 0;
25
26 }
27
28} \ No newline at end of file
diff --git a/users/d4mation/tap-hold.h b/users/d4mation/tap-hold.h
new file mode 100644
index 000000000..52dc0830f
--- /dev/null
+++ b/users/d4mation/tap-hold.h
@@ -0,0 +1,5 @@
1#pragma once
2
3#include "quantum.h"
4
5void tap_or_hold( keyrecord_t *record, uint16_t tap, uint16_t hold ); \ No newline at end of file
diff --git a/users/d4mation/zalgo.c b/users/d4mation/zalgo.c
new file mode 100644
index 000000000..3a1688e05
--- /dev/null
+++ b/users/d4mation/zalgo.c
@@ -0,0 +1,21 @@
1#include "zalgo.h"
2
3void zalgo_text( uint16_t keycode ) {
4
5 tap_code( keycode );
6
7 int number = ( rand() % ( 8 + 1 - 2 ) ) + 2;
8 unsigned int index;
9
10 unicode_input_start();
11
12 for ( index = 0; index < number; index++ ) {
13
14 uint16_t hex = ( rand() % ( 0x036F + 1 - 0x0300 ) ) + 0x0300;
15 register_hex( hex );
16
17 }
18
19 unicode_input_finish();
20
21} \ No newline at end of file
diff --git a/users/d4mation/zalgo.h b/users/d4mation/zalgo.h
new file mode 100644
index 000000000..f59fc035b
--- /dev/null
+++ b/users/d4mation/zalgo.h
@@ -0,0 +1,5 @@
1#pragma once
2
3#include "quantum.h"
4
5void zalgo_text( uint16_t keycode ); \ No newline at end of file