mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 19:40:29 +08:00
Add pcoves's userspace (#9354)
Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Pablo COVES <pablo.coves@anatoscope.com>
This commit is contained in:
parent
071e0c2029
commit
facca23315
2
users/pcoves/.gitignore
vendored
Normal file
2
users/pcoves/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
secret.h
|
||||||
|
secret.c
|
44
users/pcoves/combo.c
Normal file
44
users/pcoves/combo.c
Normal file
|
@ -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),
|
||||||
|
};
|
2
users/pcoves/config.h
Normal file
2
users/pcoves/config.h
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#define COMBO_TERM 200
|
||||||
|
#define COMBO_COUNT 9
|
44
users/pcoves/pcoves.c
Normal file
44
users/pcoves/pcoves.c
Normal file
|
@ -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
|
||||||
|
;
|
||||||
|
}
|
32
users/pcoves/pcoves.h
Normal file
32
users/pcoves/pcoves.h
Normal file
|
@ -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);
|
42
users/pcoves/rainbowUnicorn.c
Normal file
42
users/pcoves/rainbowUnicorn.c
Normal file
|
@ -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;
|
||||||
|
}
|
5
users/pcoves/rainbowUnicorn.h
Normal file
5
users/pcoves/rainbowUnicorn.h
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* keyrecord);
|
14
users/pcoves/readme.md
Normal file
14
users/pcoves/readme.md
Normal file
|
@ -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/>.
|
30
users/pcoves/rules.mk
Normal file
30
users/pcoves/rules.mk
Normal file
|
@ -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
|
127
users/pcoves/tapDance.c
Normal file
127
users/pcoves/tapDance.c
Normal file
|
@ -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),
|
||||||
|
};
|
8
users/pcoves/tapDance.h
Normal file
8
users/pcoves/tapDance.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ALT,
|
||||||
|
CTRL,
|
||||||
|
LEFT,
|
||||||
|
RIGHT,
|
||||||
|
};
|
20
users/pcoves/unicode.c
Normal file
20
users/pcoves/unicode.c
Normal file
|
@ -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;
|
||||||
|
}
|
5
users/pcoves/unicode.h
Normal file
5
users/pcoves/unicode.h
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
|
Loading…
Reference in a new issue