Yet another update to drashna keymaps and userspace (#3787)
* Make tap function inline * Use better makefile keyboard detection * Remove Copy-Paste macro * Add F11/F12 to Iris * Minor tweaks to userspace config * Set audio clicky randomness to 1.5 * Set NO_DEBUG to only be set if console is not enabled * Move NO_MUSIC_MODE to userspace config.h * Reduce Ergodox Debounce * Add Planck Light config * Use OSM for ortho 4x12 * Music Mode changes for planck light * Cleanup do to shutdown user and other fixes in Master * Add and use 'shutdown_user' fzunction * Remove global NO_MUSIC_MODE define * Add NO_MUSIC_MODE to individual keymaps * Change layer colors * Remove NO_PRINT and NO_DEBUG from userspace config.h Since these are automatically disabled if the console isn't enabled. * Remove backlight code if backlight isn't enabled * Remove Twinkle from Ergodox * Disable RGB twinkling and enable PSM * Clean up RGB matrix code * Clean up planck light indicators * Clean up tap code * Rules cleanup for ortho 4x12 * Fix up userspace template * Revert "Clean up tap code" This reverts commit 09f64d6d67aa021c3b5ac86a9a739a5ca2b9c1ec. * Organize includes * userspace cleanup * Fix modifier spelling error * Fix userspace rules * Disable Permissive Hold again * Minor clean up * Fix Tap stuff * Viterbi Updates for file size
This commit is contained in:
parent
661ca4440c
commit
e4bbe057f2
19 changed files with 280 additions and 222 deletions
|
@ -11,8 +11,10 @@
|
|||
SONG(OVERWATCH_THEME) \
|
||||
}
|
||||
|
||||
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f
|
||||
|
||||
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
||||
// #ifdef RGBLIGHT_ENABLE
|
||||
// #define NO_MUSIC_MODE
|
||||
// #endif //RGBLIGHT_ENABLE
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
|
@ -40,8 +42,8 @@
|
|||
// and when this option isn't enabled, z rapidly followed by x
|
||||
// actually sends Ctrl-x. That's bad.)
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
#undef PERMISSIVE_HOLD
|
||||
#undef PREVENT_STUCK_MODIFIERS
|
||||
#undef PERMISSIVE_HOLD
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
// #define TAPPING_FORCE_HOLD
|
||||
//#define RETRO_TAPPING
|
||||
|
||||
|
@ -59,12 +61,6 @@
|
|||
|
||||
// Disable action_get_macro and fn_actions, since we don't use these
|
||||
// and it saves on space in the firmware.
|
||||
#ifndef NO_DEBUG
|
||||
#define NO_DEBUG
|
||||
#endif // !NO_DEBUG
|
||||
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
|
||||
#define NO_PRINT
|
||||
#endif // !NO_PRINT
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
|
||||
|
|
|
@ -16,16 +16,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/
|
||||
|
||||
#include "drashna.h"
|
||||
#include "version.h"
|
||||
#include "eeprom.h"
|
||||
#include "tap_dances.h"
|
||||
#include "rgb_stuff.h"
|
||||
|
||||
|
||||
float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND);
|
||||
float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
|
||||
|
||||
static uint16_t copy_paste_timer;
|
||||
userspace_config_t userspace_config;
|
||||
|
||||
// Helper Functions
|
||||
|
@ -35,8 +28,14 @@ userspace_config_t userspace_config;
|
|||
// the same thing, but with differring text sent.
|
||||
bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
|
||||
if (!record->event.pressed || override) {
|
||||
uint16_t keycode;
|
||||
if (userspace_config.is_overwatch) {
|
||||
keycode = KC_BSPC;
|
||||
} else {
|
||||
keycode = KC_ENTER;
|
||||
}
|
||||
clear_keyboard();
|
||||
tap(userspace_config.is_overwatch ? KC_BSPC : KC_ENTER);
|
||||
tap(keycode);
|
||||
wait_ms(50);
|
||||
send_string_with_delay(str, MACRO_TIMER);
|
||||
wait_ms(50);
|
||||
|
@ -46,8 +45,6 @@ bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
|
|||
return false;
|
||||
}
|
||||
|
||||
void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };
|
||||
|
||||
bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
|
||||
static uint16_t this_timer;
|
||||
if(pressed) {
|
||||
|
@ -93,6 +90,9 @@ void matrix_init_keymap(void) {}
|
|||
__attribute__ ((weak))
|
||||
void startup_keymap(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void shutdown_keymap(void) {}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void suspend_power_down_keymap(void) {}
|
||||
|
||||
|
@ -127,6 +127,7 @@ __attribute__ ((weak))
|
|||
void led_set_keymap(uint8_t usb_led) {}
|
||||
|
||||
|
||||
|
||||
// Call user matrix init, set default RGB colors and then
|
||||
// call the keymap's init function
|
||||
void matrix_init_user(void) {
|
||||
|
@ -158,6 +159,24 @@ void startup_user (void) {
|
|||
startup_keymap();
|
||||
}
|
||||
|
||||
void shutdown_user (void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb_red();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_rgb_leds[i];
|
||||
if (led.matrix_co.raw < 0xFF) {
|
||||
rgb_matrix_set_color( i, 0xFF, 0x00, 0x00 );
|
||||
}
|
||||
}
|
||||
#endif //RGB_MATRIX_ENABLE
|
||||
shutdown_keymap();
|
||||
}
|
||||
|
||||
void suspend_power_down_user(void)
|
||||
{
|
||||
suspend_power_down_keymap();
|
||||
|
@ -246,20 +265,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
return false;
|
||||
break;
|
||||
|
||||
|
||||
case KC_RESET: // Custom RESET code that sets RGBLights to RED
|
||||
if (!record->event.pressed) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb_red();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
reset_keyboard();
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
|
||||
case EPRM: // Resets EEPROM
|
||||
if (record->event.pressed) {
|
||||
eeconfig_init();
|
||||
|
@ -333,28 +338,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
return false; break;
|
||||
|
||||
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if(record->event.pressed){
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
register_code(KC_LCTL);
|
||||
tap(KC_C);
|
||||
unregister_code(KC_LCTL);
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_copy);
|
||||
#endif
|
||||
} else { // Tap, paste
|
||||
register_code(KC_LCTL);
|
||||
tap(KC_V);
|
||||
unregister_code(KC_LCTL);
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_SONG(tone_paste);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case CLICKY_TOGGLE:
|
||||
#ifdef AUDIO_CLICKY
|
||||
userspace_config.clicky_enable = clicky_enable;
|
||||
|
|
|
@ -15,11 +15,13 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef USERSPACE
|
||||
#define USERSPACE
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
|
||||
#include "version.h"
|
||||
#include "eeprom.h"
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#include "rgb_matrix.h"
|
||||
#endif
|
||||
// Define layer names
|
||||
enum userspace_layers {
|
||||
_QWERTY = 0,
|
||||
|
@ -53,7 +55,7 @@ extern bool clicky_enable;
|
|||
void rgblight_sethsv_default_helper(uint8_t index);
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
void tap(uint16_t keycode);
|
||||
inline void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };
|
||||
bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed);
|
||||
bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
|
||||
|
||||
|
@ -90,7 +92,6 @@ enum userspace_custom_keycodes {
|
|||
KC_C9,
|
||||
KC_GGEZ,
|
||||
KC_MAKE, // Run keyboard's customized make command
|
||||
KC_RESET, // Resets keyboard, with red underglow
|
||||
KC_RGB_T, // Toggles RGB Layer Indication mode
|
||||
KC_SECRET_1, // test1
|
||||
KC_SECRET_2, // test2
|
||||
|
@ -123,6 +124,7 @@ enum userspace_custom_keycodes {
|
|||
#define COLEMAK KC_COLEMAK
|
||||
#define WORKMAN KC_WORKMAN
|
||||
|
||||
#define KC_RESET RESET
|
||||
#define KC_RST KC_RESET
|
||||
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
|
@ -131,6 +133,11 @@ enum userspace_custom_keycodes {
|
|||
#define KC_C1R3 KC_BSPC
|
||||
#endif // SWAP_HANDS_ENABLE
|
||||
|
||||
#define BK_LWER LT(_LOWER, KC_BSPC)
|
||||
#define SP_LWER LT(_LOWER, KC_SPC)
|
||||
#define DL_RAIS LT(_RAISE, KC_DEL)
|
||||
#define ET_RAIS LT(_RAISE, KC_ENTER)
|
||||
|
||||
// OSM keycodes, to keep things clean and easy to change
|
||||
#define KC_MLSF OSM(MOD_LSFT)
|
||||
#define KC_MRSF OSM(MOD_RSFT)
|
||||
|
@ -325,7 +332,7 @@ enum {
|
|||
|
||||
|
||||
#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
|
||||
#define _________________ADJUST_L2_________________ _______, CK_TOGG, AU_ON, AU_OFF, AG_NORM
|
||||
#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, AG_NORM
|
||||
#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
|
||||
|
||||
#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
|
||||
|
@ -350,4 +357,3 @@ enum {
|
|||
LT(_LOWER, KC_SPACE),KC_BSPC, KC_END, KC_PGDN, KC_DEL, LT(_RAISE, KC_ENTER)
|
||||
|
||||
|
||||
#endif // !USERSPACE
|
||||
|
|
|
@ -267,7 +267,7 @@ void matrix_init_rgb(void) {
|
|||
case _COLEMAK:
|
||||
rgblight_sethsv_noeeprom_magenta(); break;
|
||||
case _DVORAK:
|
||||
rgblight_sethsv_noeeprom_green(); break;
|
||||
rgblight_sethsv_noeeprom_springgreen(); break;
|
||||
case _WORKMAN:
|
||||
rgblight_sethsv_noeeprom_goldenrod(); break;
|
||||
default:
|
||||
|
@ -313,7 +313,7 @@ uint32_t layer_state_set_rgb(uint32_t state) {
|
|||
rgblight_mode_noeeprom(5);
|
||||
break;
|
||||
case _LOWER:
|
||||
rgblight_sethsv_noeeprom_orange();
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(5);
|
||||
break;
|
||||
case _ADJUST:
|
||||
|
@ -325,7 +325,7 @@ uint32_t layer_state_set_rgb(uint32_t state) {
|
|||
case _COLEMAK:
|
||||
rgblight_sethsv_noeeprom_magenta(); break;
|
||||
case _DVORAK:
|
||||
rgblight_sethsv_noeeprom_green(); break;
|
||||
rgblight_sethsv_noeeprom_springgreen(); break;
|
||||
case _WORKMAN:
|
||||
rgblight_sethsv_noeeprom_goldenrod(); break;
|
||||
default:
|
||||
|
|
|
@ -13,4 +13,3 @@ void matrix_init_rgb(void);
|
|||
void matrix_scan_rgb(void);
|
||||
uint32_t layer_state_set_rgb(uint32_t state);
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#include "drashna.h"
|
||||
#include "quantum.h"
|
||||
#include "action.h"
|
||||
#include "version.h"
|
||||
#include "template.h"
|
||||
|
||||
|
||||
// Add reconfigurable functions here, for keymap customization
|
||||
// This allows for a global, userspace functions, and continued
|
||||
|
@ -10,25 +8,15 @@
|
|||
__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;
|
||||
}
|
||||
__attribute__ ((weak))
|
||||
uint32_t layer_state_set_keymap (uint32_t state) {
|
||||
return state;
|
||||
}
|
||||
__attribute__ ((weak))
|
||||
void led_set_keymap(uint8_t usb_led) {}
|
||||
|
||||
// Call user matrix init, then call the keymap's init function
|
||||
void matrix_init_user(void) {
|
||||
matrix_init_keymap();
|
||||
}
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_keymap(void) {}
|
||||
|
||||
// No global matrix scan code, so just run keymap's matix
|
||||
// scan function
|
||||
void matrix_scan_user(void) {
|
||||
|
@ -36,11 +24,16 @@ void matrix_scan_user(void) {
|
|||
}
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Defines actions tor my global custom keycodes. Defined in drashna.h file
|
||||
// Then runs the _keymap's recod handier if not processed here,
|
||||
// And use "NEWPLACEHOLDER" for new safe range
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
|
||||
switch (keycode) {
|
||||
case KC_MAKE:
|
||||
if (!record->event.pressed) {
|
||||
|
@ -56,12 +49,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
}
|
||||
return false;
|
||||
break;
|
||||
case KC_RESET:
|
||||
if (!record->event.pressed) {
|
||||
reset_keyboard();
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case EPRM:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_init();
|
||||
|
@ -78,13 +66,66 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
return process_record_keymap(keycode, record);
|
||||
}
|
||||
|
||||
// Runs state check and changes underglow color and animation
|
||||
// on layer change, no matter where the change was initiated
|
||||
// Then runs keymap's layer change check
|
||||
|
||||
__attribute__ ((weak))
|
||||
uint32_t layer_state_set_keymap (uint32_t state) {
|
||||
return state;
|
||||
}
|
||||
|
||||
uint32_t layer_state_set_user (uint32_t state) {
|
||||
return layer_state_set_keymap (state);
|
||||
}
|
||||
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void led_set_keymap(uint8_t usb_led) {}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
led_set_keymap(usb_led);
|
||||
}
|
||||
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void suspend_power_down_keymap(void) {}
|
||||
|
||||
void suspend_power_down_user(void)
|
||||
{
|
||||
suspend_power_down_keymap();
|
||||
}
|
||||
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void suspend_wakeup_init_keymap(void) {}
|
||||
|
||||
void suspend_wakeup_init_user(void)
|
||||
{
|
||||
suspend_wakeup_init_keymap();
|
||||
#ifdef KEYBOARD_ergodox_ez
|
||||
wait_ms(10);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void startup_keymap(void) {}
|
||||
|
||||
void startup_user (void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
matrix_init_rgb();
|
||||
#endif //RGBLIGHT_ENABLE
|
||||
startup_keymap();
|
||||
}
|
||||
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void shutdown_keymap(void) {}
|
||||
|
||||
void shutdown_user (void) {
|
||||
shutdown_keymap();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
#define USERSPACE
|
||||
|
||||
#include "quantum.h"
|
||||
#include "version.h"
|
||||
#include "eeprom.h"
|
||||
|
||||
// Define layer names
|
||||
// Define layer names
|
||||
#define BASE 0
|
||||
|
||||
enum custom_keycodes {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue