Migrated most code from keymaps to userspace (#1980)
* Add woodpad * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add woodpad * Add forced NKRO * Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow * Updated macros and added workman keymaps * Fixed RGB lighting for Workman layout * Add leader keys * Remove force NKRO * Add Viterbi one handed layout and minor tweaks to others * Finishing up Viterbi keyboard layout, and NKRO tweaks to other layouts * Made "make" keystroke universal * Clean up and updates of drashna keymaps * Add workman layer to planck * Update to keymaps * Fix makefile toggle code in ez keymap Finish adding RGB code to orthodox * Updated RGB Underglow layer indication code due to discovery of the layer_state_set_kb function * Remove unnecessary planck layout * Fixed Workman song * update make command and added lit reset * Fixed formatting to fall in line with official standards * Minor tweaks * Removed Leader Keys from Ergodox EZ Keymap Added KC_RESET that resets board and sets underglow to red * Tweak reset code * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add forced NKRO * Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow * Updated macros and added workman keymaps * Fixed RGB lighting for Workman layout * Add leader keys * Remove force NKRO * Add Viterbi one handed layout and minor tweaks to others * Finishing up Viterbi keyboard layout, and NKRO tweaks to other layouts * Made "make" keystroke universal * Clean up and updates of drashna keymaps * Add workman layer to planck * Update to keymaps * Fix makefile toggle code in ez keymap Finish adding RGB code to orthodox * Updated RGB Underglow layer indication code due to discovery of the layer_state_set_kb function * Remove unnecessary planck layout * Fixed Workman song * update make command and added lit reset * Fixed formatting to fall in line with official standards * Minor tweaks * Removed Leader Keys from Ergodox EZ Keymap Added KC_RESET that resets board and sets underglow to red * Tweak reset code * Fix rebasing issues * remove head files * Fix "macro" issue * Rename ez keymaps for userspace * Revert "Rename ez keymaps for userspace" This reverts commit c25425911852e41711a5f0273b5741adb16e5bd4. * Renamed Ergodox EZ layouts so that all of my personal layouts are on the same name, in prep for using userspaces * Fix ergodox code * Remove "drashna-ez" keymap as it's no longer needed * Migrate majority of code to Userspacesubvendor_ids
parent
ef2961798c
commit
363aa8aa2e
@ -0,0 +1,379 @@
|
|||||||
|
#include "drashna.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
#include "action.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_keymap(void) {}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_keymap(void) {}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
uint8_t default_layer = eeconfig_read_default_layer();
|
||||||
|
|
||||||
|
rgblight_enable();
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
if (default_layer & (1UL << _COLEMAK)) {
|
||||||
|
rgblight_set_magenta;
|
||||||
|
}
|
||||||
|
else if (default_layer & (1UL << _DVORAK)) {
|
||||||
|
rgblight_set_green;
|
||||||
|
}
|
||||||
|
else if (default_layer & (1UL << _WORKMAN)) {
|
||||||
|
rgblight_set_purple;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rgblight_set_teal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rgblight_set_red;
|
||||||
|
rgblight_mode(5);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
matrix_init_keymap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
matrix_scan_keymap();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||||
|
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||||
|
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||||
|
float tone_workman[][2] = SONG(PLOVER_SOUND);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
uint16_t kc;
|
||||||
|
if (is_overwatch) {
|
||||||
|
kc = KC_BSPC;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
kc = KC_ENTER;
|
||||||
|
}
|
||||||
|
#ifdef CONSOLE_ENABLE
|
||||||
|
xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(tone_qwerty);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL << _QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(tone_colemak);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL << _COLEMAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(tone_dvorak);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL << _DVORAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_WORKMAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(tone_workman);
|
||||||
|
#endif
|
||||||
|
persistent_default_layer_set(1UL << _WORKMAN);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case ADJUST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_ADJUST);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_OVERWATCH:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
is_overwatch = !is_overwatch;
|
||||||
|
}
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_SALT:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Salt, salt, salt...");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_MORESALT:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Please sir, can I have some more salt?!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_SALTHARD:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_GOODGAME:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Good game, everyone!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_GLHF:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Good luck, have fun!!!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_SYMM:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Left click to win!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_DOOMFIST:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Hey, look at me. I'm Doomfist, and I'm overpowered! All I do is spam punches all day! I'm DPS, tank and defense, rolled into one! All I need is team healing to be complete!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_JUSTGAME:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_TORB:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("That was positively riveting!");
|
||||||
|
register_code(KC_ENTER);
|
||||||
|
unregister_code(KC_ENTER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_AIM:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(kc);
|
||||||
|
unregister_code(kc);
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER));
|
||||||
|
_delay_ms(50);
|
||||||
|
SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_MAKE:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=yes" SS_TAP(X_ENTER));
|
||||||
|
#else
|
||||||
|
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_RESET:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_mode(1);
|
||||||
|
rgblight_setrgb(0xff, 0x00, 0x00);
|
||||||
|
#endif
|
||||||
|
reset_keyboard();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case EPRM:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_init();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case VRSN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case KC_P00:
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
register_code(KC_P0);
|
||||||
|
unregister_code(KC_P0);
|
||||||
|
register_code(KC_P0);
|
||||||
|
unregister_code(KC_P0);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return process_record_keymap(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t layer_state_set_kb(uint32_t state) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
uint8_t default_layer = eeconfig_read_default_layer();
|
||||||
|
|
||||||
|
switch (biton32(state)) {
|
||||||
|
case _NAV:
|
||||||
|
rgblight_set_blue;
|
||||||
|
rgblight_mode(1);
|
||||||
|
break;
|
||||||
|
case _SYMB:
|
||||||
|
rgblight_set_blue;
|
||||||
|
rgblight_mode(2);
|
||||||
|
break;
|
||||||
|
case _MOUS:
|
||||||
|
rgblight_set_yellow;
|
||||||
|
rgblight_mode(1);
|
||||||
|
break;
|
||||||
|
case _MACROS:
|
||||||
|
rgblight_set_orange;
|
||||||
|
is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
|
||||||
|
rgblight_mode(18);
|
||||||
|
break;
|
||||||
|
case _MEDIA:
|
||||||
|
rgblight_set_green;
|
||||||
|
rgblight_mode(22);
|
||||||
|
break;
|
||||||
|
case _OVERWATCH:
|
||||||
|
rgblight_set_orange;
|
||||||
|
rgblight_mode(17);
|
||||||
|
break;
|
||||||
|
case _DIABLO:
|
||||||
|
rgblight_set_red;
|
||||||
|
rgblight_mode(5);
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
rgblight_set_yellow;
|
||||||
|
rgblight_mode(5);
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
rgblight_set_orange;
|
||||||
|
rgblight_mode(5);
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
rgblight_set_red;
|
||||||
|
rgblight_mode(23);
|
||||||
|
break;
|
||||||
|
case _COVECUBE:
|
||||||
|
rgblight_set_green;
|
||||||
|
rgblight_mode(2);
|
||||||
|
default:
|
||||||
|
if (default_layer & (1UL << _COLEMAK)) {
|
||||||
|
rgblight_set_magenta;
|
||||||
|
}
|
||||||
|
else if (default_layer & (1UL << _DVORAK)) {
|
||||||
|
rgblight_set_green;
|
||||||
|
}
|
||||||
|
else if (default_layer & (1UL << _WORKMAN)) {
|
||||||
|
rgblight_set_purple;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rgblight_set_teal;
|
||||||
|
}
|
||||||
|
rgblight_mode(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return state;
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
#ifndef USERSPACE
|
||||||
|
#define USERSPACE
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// Define layer names
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _NUMLOCK 0
|
||||||
|
#define _COLEMAK 1
|
||||||
|
#define _DVORAK 2
|
||||||
|
#define _WORKMAN 3
|
||||||
|
#define _NAV 5
|
||||||
|
#define _COVECUBE 6
|
||||||
|
#define _SYMB 8
|
||||||
|
#define _OVERWATCH 9
|
||||||
|
#define _DIABLO 10
|
||||||
|
#define _MOUS 11
|
||||||
|
#define _MACROS 12
|
||||||
|
#define _MEDIA 13
|
||||||
|
#define _LOWER 14
|
||||||
|
#define _RAISE 15
|
||||||
|
#define _ADJUST 16
|
||||||
|
|
||||||
|
|
||||||
|
//define modifiers
|
||||||
|
#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||||
|
#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
|
||||||
|
#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF);
|
||||||
|
#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
bool is_overwatch = false;
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||||
|
EPRM,
|
||||||
|
VRSN,
|
||||||
|
KC_QWERTY,
|
||||||
|
KC_COLEMAK,
|
||||||
|
KC_DVORAK,
|
||||||
|
KC_WORKMAN,
|
||||||
|
LOWER,
|
||||||
|
RAISE,
|
||||||
|
ADJUST,
|
||||||
|
KC_DIABLO_CLEAR,
|
||||||
|
KC_OVERWATCH,
|
||||||
|
KC_SALT,
|
||||||
|
KC_MORESALT,
|
||||||
|
KC_SALTHARD,
|
||||||
|
KC_GOODGAME,
|
||||||
|
KC_SYMM,
|
||||||
|
KC_DOOMFIST,
|
||||||
|
KC_JUSTGAME,
|
||||||
|
KC_GLHF,
|
||||||
|
KC_TORB,
|
||||||
|
KC_AIM,
|
||||||
|
KC_MAKE,
|
||||||
|
KC_RESET,
|
||||||
|
KC_P00,
|
||||||
|
NEWPLACEHOLDER
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,14 @@
|
|||||||
|
Copyright 2017 Christopher Courtney <drashna@live.com> @drashna
|
||||||
|
|
||||||
|
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,2 @@
|
|||||||
|
|
||||||
|
SRC += drashna.c
|
Loading…
Reference in New Issue