aboutsummaryrefslogtreecommitdiff
path: root/keyboards/redox
diff options
context:
space:
mode:
authorJeremy Herve <jeremy@tagada.hu>2018-09-10 16:39:05 +0200
committerDrashna Jaelre <drashna@live.com>2018-09-10 07:39:05 -0700
commite11e4a91ac18862e1f23efb070859663ffc242b6 (patch)
tree9ccca41a6e7adf7cd709ce773e025a3a8eb71886 /keyboards/redox
parent7d8f680b507ab16fdb1172a01a72a601694ba20a (diff)
downloadqmk_firmware-e11e4a91ac18862e1f23efb070859663ffc242b6.tar.gz
qmk_firmware-e11e4a91ac18862e1f23efb070859663ffc242b6.zip
Keymap: Redox: add a new Colemak keymap, macOS oriented. (#3861)
* Add my own keymap to the list of available Redox keymaps. This keymap is a Colemak keymap, and is meant to be used on Mac OS. More information can be found in the readme. * Fix "macOS" typo and remove mention of the license. This directory inherits the project's license. * Add missing custom keycode. * Address feedback from PR review - Remove deprecated code - Remove RGB logic since it is overwritten by code running later.
Diffstat (limited to 'keyboards/redox')
-rw-r--r--keyboards/redox/keymaps/jeherve/config.h40
-rw-r--r--keyboards/redox/keymaps/jeherve/keymap.c282
-rw-r--r--keyboards/redox/keymaps/jeherve/readme.md37
-rw-r--r--keyboards/redox/keymaps/jeherve/rules.mk3
4 files changed, 362 insertions, 0 deletions
diff --git a/keyboards/redox/keymaps/jeherve/config.h b/keyboards/redox/keymaps/jeherve/config.h
new file mode 100644
index 000000000..939d0c8d8
--- /dev/null
+++ b/keyboards/redox/keymaps/jeherve/config.h
@@ -0,0 +1,40 @@
1/*
2Copyright 2018 Jeremy Herve <jeremy@jeremy.hu>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20/* Use I2C or Serial, not both */
21
22/* Change the default tapping toggle value (normally 5) */
23#define TAPPING_TOGGLE 2
24
25#define USE_SERIAL
26//#define USE_I2C
27
28/* Select hand configuration */
29
30#define MASTER_LEFT
31// #define MASTER_RIGHT
32// #define EE_HANDS
33
34#undef RGBLED_NUM
35//#define RGBLIGHT_ANIMATIONS
36#define RGBLED_NUM 14
37#define RGBLIGHT_HUE_STEP 8
38#define RGBLIGHT_SAT_STEP 8
39#define RGBLIGHT_VAL_STEP 8
40#define RGBLIGHT_SLEEP
diff --git a/keyboards/redox/keymaps/jeherve/keymap.c b/keyboards/redox/keymaps/jeherve/keymap.c
new file mode 100644
index 000000000..d298fa9a3
--- /dev/null
+++ b/keyboards/redox/keymaps/jeherve/keymap.c
@@ -0,0 +1,282 @@
1#include QMK_KEYBOARD_H
2
3extern keymap_config_t keymap_config;
4
5// Each layer gets a name for readability, which is then used in the keymap matrix below.
6// The underscores don't mean anything - you can have a layer called STUFF or any other name.
7// Layer names don't all need to be of the same length, obviously, and you can also skip them
8// entirely and just use numbers.
9#define _COLEMAK 0
10#define _SYMB 1
11#define _NAV 2
12#define _INTER 3
13#define _ADJUST 4
14
15enum custom_keycodes {
16 COLEMAK = SAFE_RANGE,
17 SYMB,
18 NAV,
19 INTER,
20 ADJUST,
21 // These use process_record_user()
22 M_BRACKET_LEFT,
23 M_BRACKET_RIGHT,
24 SHRUG,
25 WAVE,
26 YOSHI,
27 THUMB_UP,
28 NBSP
29};
30
31// Fillers to make layering more clear
32#define KC_ KC_TRNS
33#define _______ KC_TRNS
34#define XXXXXXX KC_NO
35
36// Make macros a bit simpler with this shortcut.
37#define TAP_ONCE(code) \
38 register_code (code); \
39 unregister_code (code)
40
41// Is shift being held? Let's store this in a bool.
42static bool shift_held = false;
43
44bool process_record_user(uint16_t keycode, keyrecord_t *record) {
45 switch(keycode) {
46 case SHRUG:
47 if (record->event.pressed) {
48 unicode_input_start(); register_hex(0xaf); unicode_input_finish();
49 TAP_ONCE (KC_BSLS);
50 register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
51 unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
52 register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
53 TAP_ONCE (KC_SLSH);
54 unicode_input_start (); register_hex(0xaf); unicode_input_finish();
55 }
56 return false;
57 break;
58 case YOSHI:
59 if (record->event.pressed) {
60 SEND_STRING(":yellow_yoshi:");
61 }
62 return false;
63 break;
64 case THUMB_UP:
65 if (record->event.pressed) {
66 SEND_STRING(SS_LALT("D83D+DC4D"));
67 }
68 return false;
69 break;
70 case WAVE:
71 if (record->event.pressed) {
72 SEND_STRING(SS_LALT("D83D+DC4B"));
73 }
74 return false;
75 break;
76 case NBSP:
77 if (record->event.pressed) {
78 SEND_STRING("&nbsp;");
79 }
80 return false;
81 break;
82 case KC_LSFT:
83 shift_held = record->event.pressed;
84 return true;
85 break;
86 case KC_RSFT:
87 shift_held = record->event.pressed;
88 return true;
89 break;
90 case M_BRACKET_LEFT: {
91 if (record->event.pressed) {
92 if (shift_held) {
93 unregister_code(KC_LSFT);
94 unregister_code(KC_RSFT);
95 register_code(KC_LBRC);
96 } else {
97 register_code(KC_LSFT);
98 register_code(KC_9);
99 }
100 } else { // Release the key
101 unregister_code(KC_LBRC);
102 unregister_code(KC_LSFT);
103 unregister_code(KC_RSFT);
104 unregister_code(KC_9);
105 }
106 return false;
107 break;
108 }
109 case M_BRACKET_RIGHT: {
110 if (record->event.pressed) {
111 if (shift_held) {
112 unregister_code(KC_LSFT);
113 unregister_code(KC_RSFT);
114 register_code(KC_RBRC);
115 } else {
116 register_code(KC_LSFT);
117 register_code(KC_0);
118 }
119 } else { // Release the key
120 unregister_code(KC_RBRC);
121 unregister_code(KC_LSFT);
122 unregister_code(KC_RSFT);
123 unregister_code(KC_0);
124 }
125 return false;
126 break;
127 }
128 }
129 return true;
130};
131
132const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
133
134/* COLEMAK
135 * ,------------------------------------------------. ,------------------------------------------------.
136 * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | Exp | 6 | 7 | 8 | 9 | 0 | = |
137 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
138 * | Tab | Q | W | F | P | G | ( | | ) | J | L | U | Y | ; | \ |
139 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
140 * | Lay1 | A | R | S | T | D | Lay2 | | Lay2 | H | N | E | I | O |'/Lay1|
141 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
142 * | Shift| Z | X | C | V | B | Lay1 | | Lay1 | K | M | , | . | / |Shift |
143 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
144 * | Lay3 | Ctrl | Hyper| Alt | Cmd |Bcksp | Ctrl | |Enter |Space | Cmd | Lay4 | Hyper| Ctrl | Lay3 |
145 * `------------------------------------------------' `------------------------------------------------'
146 */
147 [_COLEMAK] = LAYOUT(
148 //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
149 KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,KC_ESC, LCTL(KC_DOWN), KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL,
150 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
151 KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , M_BRACKET_LEFT, M_BRACKET_RIGHT , KC_J , KC_L , KC_U , KC_Y , KC_SCLN , KC_BSLS,
152 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
153 MO(_SYMB) , KC_A , KC_R , KC_S , KC_T , KC_D ,TT(_NAV), TT(_NAV) , KC_H , KC_N , KC_E , KC_I , KC_O , LT(_SYMB,KC_QUOT),
154 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
155 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B ,TT(_SYMB), TT(_SYMB) , KC_K , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT,
156 //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
157 MO(_INTER),KC_LCTL,KC_HYPR,KC_LALT, KC_LCMD, KC_BSPC,KC_LCTL, KC_ENT,KC_SPC , KC_RCMD , TT(_ADJUST),KC_HYPR,KC_RCTL,MO(_INTER)
158 //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
159 ),
160
161/* Symbols
162 * ,------------------------------------------------. ,------------------------------------------------.
163 * | | | | | | | | | | | | | | | |
164 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
165 * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | | |
166 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
167 * | | ! | @ | # | $ | % | | | | ^ | & | * | - | _ | |
168 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
169 * | | | | | | | | | | | | | | | |
170 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
171 * | | | | | | | | | | | | | | | |
172 * `------------------------------------------------' `------------------------------------------------'
173 */
174
175 [_SYMB] = LAYOUT(
176 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
177 _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_LCBR, KC_RCBR, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
178 _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_UNDS, _______,
179 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
180 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
181 ),
182
183/* Navigation
184 * ,------------------------------------------------. ,------------------------------------------------.
185 * | | | | | | | | | | | | | | | |
186 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
187 * | | | | | | | | | | | | | | | |
188 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
189 * | | | |VOLDOW|VOL UP| MUTE | | | | LEFT | DOWN | UP |RIGHT | | |
190 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
191 * | | | | | | | | | | | | | | | |
192 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
193 * | | | | | | | | | | | | | | | |
194 * `------------------------------------------------' `------------------------------------------------'
195 */
196 [_NAV] = LAYOUT(
197 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
198 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
199 XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT, XXXXXXX,
200 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
201 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______
202 ),
203
204/* i18n + emoji
205* ,------------------------------------------------. ,------------------------------------------------.
206* | | | | | | | | | | | | | | | |
207* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
208* | | à | 👋 | | | | | | | | ü | è | YOSHI| ö | |
209* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
210* | | á | |SHRUG | 👍 | | | | | | ú | é | í | ó | |
211* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
212* | | â | | ç | | | | | | | ű | ê | | ő | |
213* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
214* | | | | | | | | | | | | | | | |
215* `------------------------------------------------' `------------------------------------------------'
216*/
217 [_INTER] = LAYOUT(
218 XXXXXXX, _______ , _______, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______,
219 XXXXXXX, UC(0x00E0), WAVE , XXXXXXX , XXXXXXX , XXXXXXX, _______, _______, XXXXXXX, UC(0x00FC), UC(0x00E8), YOSHI, UC(0x00F6), XXXXXXX,
220 _______, UC(0x00E1), XXXXXXX, SHRUG , THUMB_UP, XXXXXXX, _______, _______, XXXXXXX, UC(0x00F9), UC(0x00E9), UC(0x00ED) , UC(0x00F3), _______,
221 XXXXXXX, UC(0x00E2), XXXXXXX, UC(0x00E7), XXXXXXX , XXXXXXX, _______, _______, XXXXXXX, UC(0x0171), UC(0x00EA), XXXXXXX, UC(0x0151), XXXXXXX,
222 _______, XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, _______, _______, NBSP, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______
223 ),
224
225/* Adjust keyboard settings
226 * ,------------------------------------------------. ,------------------------------------------------.
227 * | | | | | | | | | | | | | | | |
228 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
229 * | | | | | | | | | | | | | | | |
230 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
231 * | | | RGB- | RGB+ |RGB ON| | | | | | RESET| DEBUG|AUD ON| | |
232 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
233 * | | | | | | | | | | | | | | | |
234 * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
235 * | | | | | | | | | | | | | | | |
236 * `------------------------------------------------' `------------------------------------------------'
237 */
238 [_ADJUST] = LAYOUT(
239 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
240 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
241 _______, XXXXXXX, RGB_VAD, RGB_VAI, RGB_TOG, XXXXXXX, _______, _______, XXXXXXX, RESET , DEBUG , AU_TOG , XXXXXXX, _______,
242 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
243 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______
244 )
245
246};
247
248#ifdef AUDIO_ENABLE
249float tone_colemak[][2] = SONG(ZELDA_TREASURE);
250#endif
251
252void persistent_default_layer_set(uint16_t default_layer) {
253 eeconfig_update_default_layer(default_layer);
254 default_layer_set(default_layer);
255}
256
257// Set unicode in Mac OS.
258void matrix_init_user(void) {
259 set_unicode_input_mode(UC_OSX);
260};
261
262// Change LED colors depending on the layer.
263uint32_t layer_state_set_user(uint32_t state) {
264 switch (biton32(state)) {
265 case _SYMB:
266 rgblight_setrgb_orange();
267 break;
268 case _NAV:
269 rgblight_setrgb_springgreen();
270 break;
271 case _INTER:
272 rgblight_setrgb_teal();
273 break;
274 case _ADJUST:
275 rgblight_setrgb_red();
276 break;
277 default: // for any other layers, or the default layer
278 rgblight_setrgb_yellow();
279 break;
280 }
281 return state;
282};
diff --git a/keyboards/redox/keymaps/jeherve/readme.md b/keyboards/redox/keymaps/jeherve/readme.md
new file mode 100644
index 000000000..5afad5530
--- /dev/null
+++ b/keyboards/redox/keymaps/jeherve/readme.md
@@ -0,0 +1,37 @@
1# A Colemak keymap for the Redox keyboard
2
3----
4![jeherve-redox-layout-3](https://user-images.githubusercontent.com/426388/45171716-69888200-b203-11e8-822d-7bc91f9f6c07.jpg)
5
6----
7
8This keymap is **a work in progress**, and is meant to be used on macOS, with the "Unicode Hex Input" keyboard input.
9
10![macOS keyboard input setting](https://user-images.githubusercontent.com/426388/43962498-1ee9e3fc-9cb8-11e8-88e3-dbb068ec5c67.png)
11
12I may change a lot of the keys over the next few months, and will update this repo when I do so.
13
14[View on KLE](http://www.keyboard-layout-editor.com/#/gists/3d5368842d87a8462c8f95d4382c4a19)
15
16## Layers
17
18My keymap uses 5 layers:
19
201. The default base layer, using [Colemak](https://colemak.com/).
212. A Symbol layer, so all symbols can be accessed from the home row. (top right legends)
223. A Navigation / Media layer, with both sound control and arrows on the home row. (bottom right legends)
234. An international / Emoji layer so I can type accented characters commonly used in France and in Hungary, as well as a few Emoji I often use. (top center legends)
245. A keyboard control layer, not pictured above, allowing me to control the LED lighting as well as the keyboard debug functions.
25
26## Changelog
27
28- 2018.09.06
29 - Initial submission to QMK. It's alive! ⌨️
30
31## Credits
32
33- Redox keyboard design by [Mattia Dal Ben](https://github.com/mattdibi/redox-keyboard).
34- This keymap is based off the default keymap for the Redox keyboard, available [here](https://github.com/qmk/qmk_firmware/tree/master/keyboards/redox) and also build by Mattia Dal Ben (thank you!).
35- This layout uses [QMK keyboard controller firmware](https://github.com/qmk/qmk_firmware/).
36
37I've also read posts by [Gergely Nagy](https://asylum.madhouse-project.org/blog/2016/10/15/multi-purpose-keys/), [Rebecca Le](https://sevenseacat.net/posts/2018/unicode-in-qmk-on-osx/), and [Justin Rogers](https://implementsblog.com/2016/10/16/my-ergodox-ezs-custom-layout/#comments) for inspiration.
diff --git a/keyboards/redox/keymaps/jeherve/rules.mk b/keyboards/redox/keymaps/jeherve/rules.mk
new file mode 100644
index 000000000..ac2496b8c
--- /dev/null
+++ b/keyboards/redox/keymaps/jeherve/rules.mk
@@ -0,0 +1,3 @@
1RGBLIGHT_ENABLE = yes
2UNICODE_ENABLE = yes
3AUDIO_ENABLE = yes