Add pcoves's userspace (#9354)
Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Pablo COVES <pablo.coves@anatoscope.com>pre-develop-merge-nov20
parent
071e0c2029
commit
facca23315
@ -0,0 +1,2 @@ |
|||||||
|
secret.h |
||||||
|
secret.c |
@ -0,0 +1,44 @@ |
|||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
enum { |
||||||
|
MIN, |
||||||
|
EQL, |
||||||
|
|
||||||
|
ESC, |
||||||
|
BSP, |
||||||
|
DEL, |
||||||
|
|
||||||
|
TAB, |
||||||
|
BSL, |
||||||
|
|
||||||
|
CUT, |
||||||
|
GRA, |
||||||
|
}; |
||||||
|
|
||||||
|
const uint16_t PROGMEM min[] = {KC_C, KC_V, COMBO_END}; |
||||||
|
const uint16_t PROGMEM eql[] = {KC_M, KC_COMM, COMBO_END}; |
||||||
|
|
||||||
|
const uint16_t PROGMEM esc[] = {KC_D, KC_F, COMBO_END}; |
||||||
|
const uint16_t PROGMEM bsp[] = {KC_J, KC_K, COMBO_END}; |
||||||
|
const uint16_t PROGMEM del[] = {KC_DOWN, KC_UP, COMBO_END}; |
||||||
|
|
||||||
|
const uint16_t PROGMEM tab[] = {KC_S, KC_F, COMBO_END}; |
||||||
|
const uint16_t PROGMEM bsl[] = {KC_J, KC_L, COMBO_END}; |
||||||
|
|
||||||
|
const uint16_t PROGMEM cut[] = {KC_K, KC_L, COMBO_END}; |
||||||
|
const uint16_t PROGMEM gra[] = {KC_S, KC_D, COMBO_END}; |
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = { |
||||||
|
[MIN] = COMBO(min, KC_MINS), |
||||||
|
[EQL] = COMBO(eql, KC_EQL), |
||||||
|
|
||||||
|
[ESC] = COMBO(esc, KC_ESC), |
||||||
|
[BSP] = COMBO(bsp, KC_BSPC), |
||||||
|
[DEL] = COMBO(del, KC_DEL), |
||||||
|
|
||||||
|
[TAB] = COMBO(tab, KC_TAB), |
||||||
|
[BSL] = COMBO(bsl, KC_BSLS), |
||||||
|
|
||||||
|
[CUT] = COMBO(cut, KC_QUOT), |
||||||
|
[GRA] = COMBO(gra, KC_GRAVE), |
||||||
|
}; |
@ -0,0 +1,2 @@ |
|||||||
|
#define COMBO_TERM 200 |
||||||
|
#define COMBO_COUNT 9 |
@ -0,0 +1,44 @@ |
|||||||
|
#include "pcoves.h" |
||||||
|
|
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE |
||||||
|
#include "rainbowUnicorn.h" |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef UNICODE_ENABLE |
||||||
|
#include "unicode.h" |
||||||
|
#endif |
||||||
|
|
||||||
|
#if SECRET_ENABLE |
||||||
|
#include "secret.h" |
||||||
|
#endif |
||||||
|
|
||||||
|
__attribute__((weak)) void eeconfig_init_keymap(void) {} |
||||||
|
|
||||||
|
void eeconfig_init_user(void) { |
||||||
|
#ifdef UNICODE_ENABLE |
||||||
|
set_unicode_input_mode(UC_LNX); |
||||||
|
#endif |
||||||
|
eeconfig_init_keymap(); |
||||||
|
} |
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } |
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
||||||
|
switch (keycode) { |
||||||
|
case AUTRUCHE: |
||||||
|
if (record->event.pressed) SEND_STRING("Autruche"); |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return process_record_keymap(keycode, record) |
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE |
||||||
|
&& process_record_rainbowUnicorn(keycode, record) |
||||||
|
#endif |
||||||
|
#ifdef UNICODE_ENABLE |
||||||
|
&& process_record_unicode(keycode, record) |
||||||
|
#endif |
||||||
|
#if SECRET_ENABLE |
||||||
|
&& process_record_secret(keycode, record) |
||||||
|
#endif |
||||||
|
; |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
#define SECRET_ENABLE (__has_include("secret.h") && !defined(NO_SECRET)) |
||||||
|
|
||||||
|
enum { |
||||||
|
AUTRUCHE = SAFE_RANGE, |
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE |
||||||
|
RAINBOW_UNICORN_TOGGLE, |
||||||
|
#endif |
||||||
|
#ifdef UNICODE_ENABLE |
||||||
|
EMOTE0, |
||||||
|
EMOTE1, |
||||||
|
EMOTE2, |
||||||
|
EMOTE3, |
||||||
|
#endif |
||||||
|
#if SECRET_ENABLE |
||||||
|
SECRET0, |
||||||
|
SECRET1, |
||||||
|
SECRET2, |
||||||
|
SECRET3, |
||||||
|
SECRET4, |
||||||
|
#endif |
||||||
|
PCOVES_SAFE_RANGE, |
||||||
|
}; |
||||||
|
|
||||||
|
__attribute__((weak)) void eeconfig_init_keymap(void); |
||||||
|
void eeconfig_init_user(void); |
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record); |
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record); |
@ -0,0 +1,42 @@ |
|||||||
|
#include "rainbowUnicorn.h" |
||||||
|
#include "pcoves.h" |
||||||
|
|
||||||
|
static struct { |
||||||
|
bool enabled; |
||||||
|
uint8_t color; |
||||||
|
char string[2]; |
||||||
|
uint8_t mods; |
||||||
|
} state = {false, 0}; |
||||||
|
|
||||||
|
bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* record) { |
||||||
|
if (keycode == RAINBOW_UNICORN_TOGGLE) { |
||||||
|
state.enabled ^= true; |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
if (!state.enabled) return true; |
||||||
|
|
||||||
|
switch (keycode) { |
||||||
|
case KC_A ... KC_Z: |
||||||
|
case KC_1 ... KC_0: |
||||||
|
case ALT_T(KC_A)... ALT_T(KC_Z): |
||||||
|
case CTL_T(KC_A)... CTL_T(KC_Z): |
||||||
|
case GUI_T(KC_A)... GUI_T(KC_Z): |
||||||
|
case SFT_T(KC_A)... SFT_T(KC_Z): |
||||||
|
if (record->event.pressed) { |
||||||
|
state.mods = get_mods(); |
||||||
|
clear_mods(); |
||||||
|
|
||||||
|
tap_code16(C(KC_C)); |
||||||
|
|
||||||
|
itoa(state.color + 3, state.string, 10); |
||||||
|
send_string(state.string); |
||||||
|
|
||||||
|
set_mods(state.mods); |
||||||
|
} else { |
||||||
|
state.color = (state.color + 1) % 11; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* keyrecord); |
@ -0,0 +1,14 @@ |
|||||||
|
Copyright 2020 @pcoves |
||||||
|
|
||||||
|
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/>. |
@ -0,0 +1,30 @@ |
|||||||
|
SRC += pcoves.c
|
||||||
|
|
||||||
|
RAINBOW_UNICORN_ENABLE ?= no
|
||||||
|
ifneq ($(strip $(RAINBOW_UNICORN_ENABLE)), no) |
||||||
|
SRC += rainbowUnicorn.c
|
||||||
|
OPT_DEFS += -DRAINBOW_UNICORN_ENABLE
|
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) |
||||||
|
SRC += tapDance.c
|
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(strip $(COMBO_ENABLE)), yes) |
||||||
|
SRC += combo.c
|
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(strip $(UNICODE_ENABLE)), yes) |
||||||
|
SRC += unicode.c
|
||||||
|
OPT_DEFS += -DUNICODE_ENABLE
|
||||||
|
endif |
||||||
|
|
||||||
|
ifneq ($(strip $(NO_SECRET)), yes) |
||||||
|
ifneq ("$(wildcard $(USER_PATH)/secret.c)","")
|
||||||
|
SRC += secret.c
|
||||||
|
else
|
||||||
|
OPT_DEFS += -DNO_SECRET
|
||||||
|
endif
|
||||||
|
else |
||||||
|
OPT_DEFS += -DNO_SECRET
|
||||||
|
endif |
@ -0,0 +1,127 @@ |
|||||||
|
#include "tapDance.h" |
||||||
|
|
||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
void left(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (state->count) { |
||||||
|
case 1: |
||||||
|
if (state->pressed) |
||||||
|
tap_code16(S(KC_LBRACKET)); |
||||||
|
else |
||||||
|
tap_code16(S(KC_9)); |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
if (state->pressed) |
||||||
|
tap_code16(S(KC_COMM)); |
||||||
|
else |
||||||
|
tap_code(KC_LBRACKET); |
||||||
|
break; |
||||||
|
default: |
||||||
|
reset_tap_dance(state); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void right(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (state->count) { |
||||||
|
case 1: |
||||||
|
if (state->pressed) |
||||||
|
tap_code16(S(KC_RBRACKET)); |
||||||
|
else |
||||||
|
tap_code16(S(KC_0)); |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
if (state->pressed) |
||||||
|
tap_code16(S(KC_DOT)); |
||||||
|
else |
||||||
|
tap_code(KC_RBRACKET); |
||||||
|
break; |
||||||
|
default: |
||||||
|
reset_tap_dance(state); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
enum { REST, HOLD1, HOLD2, HOLD3 }; |
||||||
|
|
||||||
|
static int Alt = REST; |
||||||
|
void altFinish(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (state->count) { |
||||||
|
case 1: |
||||||
|
if (state->pressed) { |
||||||
|
register_code(KC_LALT); |
||||||
|
Alt = HOLD1; |
||||||
|
} |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
if (state->pressed) { |
||||||
|
register_code(KC_RALT); |
||||||
|
Alt = HOLD2; |
||||||
|
} |
||||||
|
break; |
||||||
|
case 3: |
||||||
|
if (state->pressed) { |
||||||
|
register_code(KC_RALT); |
||||||
|
register_code(KC_RSHIFT); |
||||||
|
Alt = HOLD3; |
||||||
|
} |
||||||
|
break; |
||||||
|
default: |
||||||
|
reset_tap_dance(state); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void altReset(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (Alt) { |
||||||
|
case HOLD1: |
||||||
|
unregister_code(KC_LALT); |
||||||
|
break; |
||||||
|
case HOLD2: |
||||||
|
unregister_code(KC_RALT); |
||||||
|
break; |
||||||
|
case HOLD3: |
||||||
|
unregister_code(KC_RSHIFT); |
||||||
|
unregister_code(KC_RALT); |
||||||
|
break; |
||||||
|
} |
||||||
|
Alt = REST; |
||||||
|
} |
||||||
|
|
||||||
|
static int Ctrl = REST; |
||||||
|
void ctrlFinish(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (state->count) { |
||||||
|
case 1: |
||||||
|
if (state->pressed) { |
||||||
|
register_code(KC_LCTL); |
||||||
|
Ctrl = HOLD1; |
||||||
|
} else { |
||||||
|
tap_code(KC_ESC); |
||||||
|
} |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
if (state->pressed) { |
||||||
|
register_code(KC_LGUI); |
||||||
|
Ctrl = HOLD2; |
||||||
|
} |
||||||
|
break; |
||||||
|
default: |
||||||
|
reset_tap_dance(state); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void ctrlReset(qk_tap_dance_state_t* state, void* user_data) { |
||||||
|
switch (Ctrl) { |
||||||
|
case HOLD1: |
||||||
|
unregister_code(KC_LCTL); |
||||||
|
break; |
||||||
|
case HOLD2: |
||||||
|
unregister_code(KC_LGUI); |
||||||
|
break; |
||||||
|
} |
||||||
|
Ctrl = REST; |
||||||
|
} |
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = { |
||||||
|
[ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altFinish, altReset), |
||||||
|
[CTRL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlFinish, ctrlReset), |
||||||
|
[LEFT] = ACTION_TAP_DANCE_FN(left), |
||||||
|
[RIGHT] = ACTION_TAP_DANCE_FN(right), |
||||||
|
}; |
@ -0,0 +1,8 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
enum { |
||||||
|
ALT, |
||||||
|
CTRL, |
||||||
|
LEFT, |
||||||
|
RIGHT, |
||||||
|
}; |
@ -0,0 +1,20 @@ |
|||||||
|
#include "unicode.h" |
||||||
|
#include "pcoves.h" |
||||||
|
|
||||||
|
bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { |
||||||
|
switch (keycode) { |
||||||
|
case EMOTE0: |
||||||
|
if (record->event.pressed) send_unicode_string("(╯°□°)╯︵┻━┻"); |
||||||
|
return false; |
||||||
|
case EMOTE1: |
||||||
|
if (record->event.pressed) send_unicode_string("(ヘ・_・)ヘ┳━┳"); |
||||||
|
return false; |
||||||
|
case EMOTE2: |
||||||
|
if (record->event.pressed) send_unicode_string("¯\\_(ツ)_/¯"); |
||||||
|
return false; |
||||||
|
case EMOTE3: |
||||||
|
if (record->event.pressed) send_unicode_string("ಠ_ಠ"); |
||||||
|
return false; |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_unicode(uint16_t keycode, keyrecord_t *record); |
Loading…
Reference in new issue