Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Personal user space and CRKBD R2G keymap #15888

Merged
merged 70 commits into from
Mar 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
7474bbe
r2g folder groundwork
e11i0t23 Nov 8, 2021
0631529
Default mb keymap featuring mb logos
e11i0t23 Nov 8, 2021
cf927c1
Migrate Oled to keyboard folder
e11i0t23 Nov 15, 2021
96dac1b
Move rules configs to support config better
e11i0t23 Nov 23, 2021
67f89bb
update readmes
e11i0t23 Nov 23, 2021
85851b5
Liscnece update
e11i0t23 Nov 23, 2021
91d4150
Update config and fix issues caused by redef errs
e11i0t23 Nov 23, 2021
00b9af0
funciton name adjusts, define specific rgb modes
e11i0t23 Nov 23, 2021
0601c17
move default oled font to postconfig
e11i0t23 Nov 27, 2021
58caead
update oled in line with develop merge
e11i0t23 Nov 27, 2021
674a2eb
fix return value
e11i0t23 Nov 28, 2021
c6a0c84
Add some default rgb matrix defines
e11i0t23 Nov 28, 2021
faf2269
del ugfx
e11i0t23 Nov 28, 2021
74b0603
remove #include <stdio.h>
e11i0t23 Nov 28, 2021
097ee4d
create personal keymap for r2g
RMeli Dec 1, 2021
b2afe51
reduce firmware size
RMeli Dec 1, 2021
87c6116
change keymap to follow physical layout
RMeli Dec 1, 2021
e6941a1
remove RGBlight config lines to make both sides work (@Dasky on Mechb…
RMeli Dec 1, 2021
38c08c7
strip down configuration, similar to crkbd/r2g:mb_via
RMeli Dec 2, 2021
7a54ef7
remove wrong oled code overwriting the r2g one
RMeli Dec 2, 2021
c8208ef
broken code with RGB matrix (briks right side)
RMeli Dec 2, 2021
f292c87
remove high max brightness limit
RMeli Dec 2, 2021
e909026
caps lock tap dance and RGB indicator for active caps lock
RMeli Dec 3, 2021
eac36b9
fix caps lock led on right side
RMeli Dec 3, 2021
96dbd70
add test macro
RMeli Dec 5, 2021
21f58c4
remove latex macro which is too slow
RMeli Dec 5, 2021
6da634f
move caps lock tap dance to RALT and add space cadet shift
RMeli Dec 5, 2021
9f06d39
switch CTL with ALT in first layer
RMeli Dec 5, 2021
69f3450
add tap dance for ESC/DEL
RMeli Dec 6, 2021
dd47bb2
space cadet tap dance with caps lock; shift works by needs a short pause
RMeli Dec 6, 2021
31abf01
add space cadet tap dance with caps lock on the right; shift works by…
RMeli Dec 6, 2021
3987e71
make more keys transparent
RMeli Dec 10, 2021
6cf1101
enable auto shift and use logo on both oleds
RMeli Dec 10, 2021
2e93e48
Merge branch 'master' into r2g
RMeli Dec 10, 2021
852de61
add user oled logo, slows down linking considerably
RMeli Dec 11, 2021
ec646db
oled name
RMeli Dec 11, 2021
187c495
add arrow keys in usual configuration and add linear configuration to…
RMeli Dec 12, 2021
ffcb109
add unicoede support
RMeli Dec 13, 2021
2526df8
add accents
RMeli Dec 14, 2021
5d84303
fix conflicts and merge
RMeli Dec 22, 2021
1228912
update to latest version
RMeli Jan 4, 2022
92b6196
add colemak dh layer
RMeli Jan 4, 2022
9edf98d
Merge branch 'master' into r2g
RMeli Jan 4, 2022
af9a276
report auto shift timeout
RMeli Jan 4, 2022
daf4c9c
define layer name shorcuts correctly
RMeli Jan 5, 2022
2b82d62
disable VIA to enable more layers
RMeli Jan 6, 2022
4831bb8
Merge pull request #1 from RMeli/r2g
RMeli Jan 9, 2022
eaa8ed8
Merge branch 'qmk:master' into master
RMeli Jan 9, 2022
6cf7bfa
enable NKRO
RMeli Jan 9, 2022
b971c74
move some rules and unicode to user space
RMeli Jan 9, 2022
06edc01
move oled and tap dances to user space
RMeli Jan 9, 2022
3855728
move tap dances fully out of keymap
RMeli Jan 10, 2022
1b4a55c
Merge remote-tracking branch 'upstream/master'
RMeli Jan 10, 2022
62a5b80
expand unicode map
RMeli Jan 10, 2022
e6be5e9
Merge branch 'qmk:master' into master
RMeli Jan 12, 2022
2adf597
Merge branch 'qmk:master' into master
RMeli Jan 12, 2022
29cc4ce
fix unicode code
RMeli Jan 14, 2022
147ca70
Merge branch 'master' of https://github.com/RMeli/qmk_firmware
RMeli Jan 14, 2022
bd5f322
Merge branch 'qmk:master' into master
RMeli Jan 15, 2022
bf18e08
revert changes to r2g, make it equal to merged code
RMeli Jan 15, 2022
4251df4
Merge branch 'master' of https://github.com/RMeli/qmk_firmware
RMeli Jan 15, 2022
4860e0a
revert changes to r2g, make it equal to merged code
RMeli Jan 15, 2022
90c36cb
clang-format userspace
RMeli Jan 15, 2022
260e92b
clang-format config file
RMeli Jan 15, 2022
03d8198
Update keyboards/crkbd/keymaps/rmeli/keymap.c
RMeli Jan 29, 2022
0c82a0e
replace define with enum
RMeli Jan 29, 2022
14235ef
add licenses
RMeli Jan 29, 2022
3601538
Merge remote-tracking branch 'upstream/master'
RMeli Jan 29, 2022
b648f47
Merge branch 'master' of https://github.com/RMeli/qmk_firmware
RMeli Jan 29, 2022
98f50fa
Merge remote-tracking branch 'upstream/master'
RMeli Feb 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions keyboards/crkbd/keymaps/rmeli/config.h
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
131 changes: 131 additions & 0 deletions keyboards/crkbd/keymaps/rmeli/keymap.c
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),
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______
//|--------------------------| |--------------------------|
)
};
12 changes: 12 additions & 0 deletions keyboards/crkbd/keymaps/rmeli/rules.mk
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
139 changes: 139 additions & 0 deletions users/rmeli/keyrecords/tap_dances.c
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"
RMeli marked this conversation as resolved.
Show resolved Hide resolved

// + ---------- +
// + 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;
}
Loading