forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 107
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Personal user space and CRKBD R2G keymap (qmk#15888)
* r2g folder groundwork * Default mb keymap featuring mb logos * Migrate Oled to keyboard folder * Move rules configs to support config better * update readmes * Liscnece update * Update config and fix issues caused by redef errs * funciton name adjusts, define specific rgb modes * move default oled font to postconfig * update oled in line with develop merge * fix return value * Add some default rgb matrix defines * del ugfx * remove #include <stdio.h> * create personal keymap for r2g * reduce firmware size * change keymap to follow physical layout * remove RGBlight config lines to make both sides work (@Dasky on MechboardsUK Discord) * strip down configuration, similar to crkbd/r2g:mb_via * remove wrong oled code overwriting the r2g one * broken code with RGB matrix (briks right side) * remove high max brightness limit * caps lock tap dance and RGB indicator for active caps lock * fix caps lock led on right side * add test macro * remove latex macro which is too slow * move caps lock tap dance to RALT and add space cadet shift * switch CTL with ALT in first layer * add tap dance for ESC/DEL * space cadet tap dance with caps lock; shift works by needs a short pause * add space cadet tap dance with caps lock on the right; shift works by needs a short pause and does not hold * make more keys transparent * enable auto shift and use logo on both oleds * add user oled logo, slows down linking considerably * oled name * add arrow keys in usual configuration and add linear configuration to symbol layer * add unicoede support * add accents * update to latest version * add colemak dh layer * report auto shift timeout * define layer name shorcuts correctly * disable VIA to enable more layers * enable NKRO * move some rules and unicode to user space * move oled and tap dances to user space * move tap dances fully out of keymap * expand unicode map * fix unicode code * revert changes to r2g, make it equal to merged code * revert changes to r2g, make it equal to merged code * clang-format userspace * clang-format config file * Update keyboards/crkbd/keymaps/rmeli/keymap.c * replace define with enum * add licenses
- Loading branch information
Showing
11 changed files
with
701 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* | ||
This is the c configuration file for the keymap | ||
Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
Copyright 2015 Jack Humbert | ||
Copyright 2021 Rocco Meli <@RMeli> | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 2 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#define MASTER_LEFT // Left side is the master | ||
#define SPLIT_LED_STATE_ENABLE | ||
|
||
#define TAPPING_TERM 200 | ||
|
||
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX | ||
|
||
#define AUTO_SHIFT_REPEAT | ||
|
||
#ifdef RGBLIGHT_ENABLE | ||
# define RGBLIGHT_LIMIT_VAL 120 | ||
# define RGBLIGHT_HUE_STEP 10 | ||
# define RGBLIGHT_SAT_STEP 17 | ||
# define RGBLIGHT_VAL_STEP 17 | ||
#endif | ||
|
||
#ifdef RGB_MATRIX_ENABLE | ||
// RGB matrix options | ||
# define RGB_MATRIX_KEYPRESSES // enable keypress effects | ||
# define RGB_MATRIX_LED_FLUSH_LIMIT 16 | ||
# define RGB_DISABLE_WHEN_USB_SUSPENDED | ||
// Disable unwanted R2G effects (from r2g/config.h) | ||
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS | ||
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN | ||
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT | ||
# undef ENABLE_RGB_MATRIX_BREATHING | ||
# undef ENABLE_RGB_MATRIX_BAND_SAT | ||
# undef ENABLE_RGB_MATRIX_BAND_VAL | ||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT | ||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL | ||
# undef ENABLE_RGB_MATRIX_CYCLE_ALL | ||
# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON | ||
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL | ||
# undef ENABLE_RGB_MATRIX_RAINDROPS | ||
# undef ENABLE_RGB_MATRIX_HUE_BREATHING | ||
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL | ||
//# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE | ||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS | ||
# undef ENABLE_RGB_MATRIX_SPLASH | ||
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH | ||
// Enable effects | ||
# define ENABLE_RGB_MATRIX_SOLID_COLOR | ||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE | ||
// Default effect | ||
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR | ||
# define RGB_MATRIX_STARTUP_HUE 10 | ||
# define RGB_MATRIX_STARTUP_SAT 255 | ||
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS | ||
#endif | ||
|
||
// https://github.com/qmk/qmk_firmware/blob/develop/docs/squeezing_avr.md | ||
#undef LOCKING_SUPPORT_ENABLE | ||
#undef LOCKING_RESYNC_ENABLE | ||
#define NO_MUSIC_MODE | ||
#define LAYER_STATE_8BIT // Limit to 8 layers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
/* | ||
Copyright 2019 @foostan | ||
Copyright 2020 Drashna Jaelre <@drashna> | ||
Copyright 2021 Rocco Meli <@RMeli> | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 2 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include QMK_KEYBOARD_H | ||
|
||
#include "rmeli.h" | ||
|
||
// + -------------------- + | ||
// + RGB MATRIX CALLBACKS | | ||
// + -------------------- + | ||
|
||
// LED numbers: | ||
// https://github.com/foostan/crkbd/blob/main/corne-classic/doc/buildguide_en.md | ||
|
||
// Change LED color to red when CAPS LOCK is active | ||
void rgb_matrix_indicators_user(void) { | ||
if (host_keyboard_led_state().caps_lock) { | ||
rgb_matrix_set_color(26, 255, 0, 0); | ||
// Only works with SPLIT_LED_STATE_ENABLE | ||
rgb_matrix_set_color(53, 255, 0, 0); | ||
} | ||
} | ||
|
||
// + ---- + | ||
// + OLED | | ||
// + ---- + | ||
|
||
bool oled_task_user(void) { | ||
if (is_keyboard_master()) { | ||
oled_render_rocco(); | ||
} else { | ||
oled_render_meli(); | ||
} | ||
return false; | ||
} | ||
|
||
// + ------- + | ||
// + KEY MAP | | ||
// + ------- + | ||
|
||
// Layer names | ||
enum layer_names { | ||
_QWERTY, | ||
_COLEMAK_DH, | ||
_DWN, | ||
_UP, | ||
_CONFIG, | ||
}; | ||
|
||
// Layer names shortcuts | ||
#define _QWY 0 | ||
#define _CMK 1 | ||
#define _CFG 4 | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[_QWERTY] = LAYOUT_split_3x6_3( | ||
//|-----------------------------------------------------| |-----------------------------------------------------| | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
TD_ED, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
TD_LSPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC, | ||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | ||
KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL | ||
//|--------------------------| |--------------------------| | ||
), | ||
|
||
[_COLEMAK_DH] = LAYOUT_split_3x6_3( | ||
//|-----------------------------------------------------| |-----------------------------------------------------| | ||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_SCLN, KC_P, KC_BSPC, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
TD_ED, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
TD_LSPC, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, TD_RSPC, | ||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | ||
KC_LGUI,MO(_DWN), KC_SPC, KC_ENT,MO(_UP), KC_RCTL | ||
//|--------------------------| |--------------------------| | ||
), | ||
|
||
[_DWN] = LAYOUT_split_3x6_3( | ||
//|-----------------------------------------------------| |-----------------------------------------------------| | ||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
_______, A_GRV, E_GRV, I_GRV, O_GRV, U_GRV, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, XXXXXXX, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
_______, A_UML, E_ACT, I_CIR, O_UML, U_UML, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_PGDN, _______, | ||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | ||
KC_LGUI, _______, _______, _______,MO(_CFG), _______ | ||
//|--------------------------| |--------------------------| | ||
), | ||
|
||
[_UP] = LAYOUT_split_3x6_3( | ||
//|-----------------------------------------------------| |-----------------------------------------------------| | ||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
_______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, | ||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | ||
_______,MO(_CFG), _______, _______, _______, _______ | ||
//|--------------------------| |--------------------------| | ||
), | ||
|
||
[_CONFIG] = LAYOUT_split_3x6_3( | ||
//|-----------------------------------------------------| |-----------------------------------------------------| | ||
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_MOD, KC_ASUP, NK_ON, XXXXXXX, XXXXXXX,DF(_QWY), | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, KC_ASTG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, | ||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| | ||
XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, UC_RMOD, KC_ASDN, NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK), | ||
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| | ||
_______, _______, _______, _______, _______, _______ | ||
//|--------------------------| |--------------------------| | ||
) | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
OLED_ENABLE = yes | ||
OLED_DRIVER = SSD1306 | ||
|
||
TAP_DANCE_ENABLE = yes | ||
AUTO_SHIFT_ENABLE = yes | ||
|
||
UNICODEMAP_ENABLE = yes | ||
|
||
RGBLIGHT_ENABLE = no | ||
RGB_MATRIX_ENABLE = yes | ||
|
||
NKRO_ENABLE = yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
/* | ||
Copyright 2021-2022 Rocco Meli <@RMeli> | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 2 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "keyrecords/tap_dances.h" | ||
|
||
// + ---------- + | ||
// + TAP DANCES | | ||
// + ---------- + | ||
|
||
// Tap dances definitions | ||
// Need to needs to be defined in a .c file to avoid a linker error (multiple definitions) | ||
qk_tap_dance_action_t tap_dance_actions[] = { | ||
[TD_LSPO_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, LSPO_CAPS_finished, LSPO_CAPS_reset), | ||
[TD_RSPC_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, RSPC_CAPS_finished, RSPC_CAPS_reset), | ||
[TD_ESC_DEL] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_DEL), | ||
}; | ||
|
||
// + ------ + | ||
// + DANCES | | ||
// + ------ + | ||
|
||
// https://github.com/qmk/qmk_firmware/blob/9294258c02d3e025e01935a06c4d9f1997535bda/users/gordon/gordon.c#L112-L135 | ||
td_state_t hold_cur_dance(qk_tap_dance_state_t *state) { | ||
if (state->count == 1) { | ||
if (state->interrupted) { | ||
if (!state->pressed) | ||
return TD_SINGLE_TAP; | ||
else | ||
return TD_SINGLE_HOLD; | ||
} else { | ||
if (!state->pressed) | ||
return TD_SINGLE_TAP; | ||
else | ||
return TD_SINGLE_HOLD; | ||
} | ||
} else if (state->count == 2) { | ||
if (state->pressed) | ||
return TD_NONE; | ||
else | ||
return TD_DOUBLE_TAP; | ||
} else | ||
return TD_NONE; | ||
} | ||
|
||
// + ------------------------------------------------ + | ||
// + LEFT SHIFT PARENTHESIS OPEN (LSPO) AND CAPS LOCK | | ||
// + ------------------------------------------------ + | ||
|
||
// Create an instance of 'td_tap_t' for the 'LSPO_CAPS' tap dance. | ||
static td_tap_t LSPO_CAPS_state = {.is_press_action = true, .state = TD_NONE}; | ||
|
||
void LSPO_CAPS_finished(qk_tap_dance_state_t *state, void *user_data) { | ||
LSPO_CAPS_state.state = hold_cur_dance(state); | ||
switch (LSPO_CAPS_state.state) { | ||
case TD_SINGLE_TAP: | ||
register_code16(KC_LPRN); | ||
break; | ||
case TD_SINGLE_HOLD: | ||
register_code16(KC_LSFT); | ||
break; | ||
case TD_DOUBLE_TAP: | ||
register_code16(KC_CAPS); | ||
break; | ||
case TD_NONE: | ||
break; | ||
} | ||
} | ||
|
||
void LSPO_CAPS_reset(qk_tap_dance_state_t *state, void *user_data) { | ||
switch (LSPO_CAPS_state.state) { | ||
case TD_SINGLE_TAP: | ||
unregister_code16(KC_LPRN); | ||
break; | ||
case TD_SINGLE_HOLD: | ||
unregister_code16(KC_LSFT); | ||
break; | ||
case TD_DOUBLE_TAP: | ||
unregister_code16(KC_CAPS); | ||
break; | ||
case TD_NONE: | ||
break; | ||
} | ||
LSPO_CAPS_state.state = TD_NONE; | ||
} | ||
|
||
// + -------------------------------------------------- + | ||
// + RIGHT SHIFT PARENTHESIS CLOSE (RSPC) AND CAPS LOCK | | ||
// + -------------------------------------------------- + | ||
|
||
// Create an instance of 'td_tap_t' for the 'RSPC_CAPS' tap dance. | ||
static td_tap_t RSPC_CAPS_state = {.is_press_action = true, .state = TD_NONE}; | ||
|
||
void RSPC_CAPS_finished(qk_tap_dance_state_t *state, void *user_data) { | ||
RSPC_CAPS_state.state = hold_cur_dance(state); | ||
switch (RSPC_CAPS_state.state) { | ||
case TD_SINGLE_TAP: | ||
register_code16(KC_RPRN); | ||
break; | ||
case TD_SINGLE_HOLD: | ||
register_code16(KC_RSFT); | ||
break; | ||
case TD_DOUBLE_TAP: | ||
register_code16(KC_CAPS); | ||
break; | ||
case TD_NONE: | ||
break; | ||
} | ||
} | ||
|
||
void RSPC_CAPS_reset(qk_tap_dance_state_t *state, void *user_data) { | ||
switch (RSPC_CAPS_state.state) { | ||
case TD_SINGLE_TAP: | ||
unregister_code16(KC_RPRN); | ||
break; | ||
case TD_SINGLE_HOLD: | ||
unregister_code16(KC_RSFT); | ||
break; | ||
case TD_DOUBLE_TAP: | ||
unregister_code16(KC_CAPS); | ||
break; | ||
case TD_NONE: | ||
break; | ||
} | ||
RSPC_CAPS_state.state = TD_NONE; | ||
} |
Oops, something went wrong.