update pvinis keymap (#8746)

* update a bunch of stuff

Better rules, better config, added encoders, lights, audio.

* some fmt

* more fmt
This commit is contained in:
Pavlos Vinieratos 2020-04-13 20:59:04 +02:00 committed by GitHub
parent 6fb048fdaf
commit f6b40da7f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 620 additions and 481 deletions

View File

@ -1,29 +1,27 @@
// pvinis ergodox ez
// ,------------------------------------. ,------------------------------------.
// | | | | | | | | | | | | | | | |
// |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
// | | | | | | | | | | | | | | | |
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
// | | | | | | |----| |----| | | | | | |
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
// | | | | | | | | | | | | | | | |
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
// | | | | | | | | | | | |
// `------------------------' `------------------------'
// ,---------. ,---------.
// | | | | | |
// ,----+----+----| |----+----+----.
// | | | | | | | |
// | | |----| |----| | |
// | | | | | | | |
// `--------------' `--------------'
// ,------------------------------------. ┌────┬────┬────┬────┬────┬────┬──────┐
// | | | | | | | | │ │ │ │ │ │ │ │
// |------+----+----+----+----+---------| ├────┼────┼────┼────┼────┼────┼──────┤
// | | | | | | | | │ │ │ │ │ │ │ │
// |------+----+----+----x----x----| | │ ├────╆━━━━╅────┼────┼────┼──────┤
// | | | | | | |----| ├────┤ ┃ ┃ │ │ │ │
// |------+----+----+----x----x----| | │ ├────╄━━━━╃────┼────┼────┼──────┤
// | | | | | | | | │ │ │ │ │ │ │ │
// `------+----+----+----+----+---------' └────┴────┼────┼────┼────┼────┼────┬─┘
// | | | | | | │ │ │ │ │ │
// `------------------------' └────┴────┴────┴────┴────┘
// ,---------. ┌────┬────┐
// | | | │ │ │
// ,----+----+----| ├────┼────┼────┐
// | | | | │ │ │ │
// | | |----| ├────┤ │ │
// | | | | │ │ │ │
// `--------------' └────┴────┴────┘
#include QMK_KEYBOARD_H
#include "pvinis.h"
#include "mousekey.h"
// layers
enum {
MOUSE = 8,
@ -41,7 +39,6 @@ enum {
#define AP_XCOD ALLM(KC_X)
#define AP_MSGR ALLM(KC_M)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ,------------------------------------. ,------------------------------------.
// |4xFLSH| | | | | |Opt | | | | | | | | |
@ -52,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// |------+----+----+----x----x----| | | |----x----x----+----+----+------|
// |LShift| | | | | | | | | | | | | |RShift|
// `------+----+----+----+----+---------' `---------+----+----+----+----+------'
// | | | | |Cmd | | | | | | |
// | | | |Cmd |LOWR| |RASE|RAlt| | | |
// `------------------------' `------------------------'
// ,---------. ,---------.
// |QWER| | | | |
@ -62,6 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// | spc| ft | | | | | |
// `--------------' `--------------'
[LR_BASE] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______,
KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
@ -70,6 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QWERTY , CARPALX, _______, _______,
_______, _______,
KC_BSPC, _______, _______, _______, _______, KC_SPC
// clang-format on
),
// ,------------------------------------. ,------------------------------------.
@ -92,6 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `--------------' `--------------'
// See `users/pvinis/pvinis.h`
[LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL ,
_______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______,
_______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
@ -100,6 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______,
_______, _______, _______, _______, _______, _______
// clang-format off
),
// ,------------------------------------. ,------------------------------------.
@ -122,6 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `--------------' `--------------'
// See `users/pvinis/pvinis.h`
[LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______,
_______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______,
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
@ -130,10 +132,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
// See `users/pvinis/pvinis.h`
[LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
_______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______,
_______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______,
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
@ -142,10 +146,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______,
_______, _______, _______, _______, _______, _______
// clang-format off
),
// See `users/pvinis/pvinis.h`
[LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
@ -155,10 +161,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
// See `users/pvinis/pvinis.h`
[LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper(
// clang-format off
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX,
@ -168,6 +176,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
// clang-format on
),
/* MOUSE
@ -193,6 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
[MOUSE] = LAYOUT_ergodox_pretty(
// clang-format off
KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
@ -212,12 +222,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_NO ,KC_NO
,KC_NO
,KC_NO ,KC_NO ,KC_NO
// clang-format on
),
};
// keyboard initialization
void keyboard_post_init_user_local(void) {
void keyboard_post_init_user_keymap(void) {
ergodox_led_all_on();
for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
ergodox_led_all_set(i);
@ -235,7 +245,7 @@ void keyboard_post_init_user_local(void) {
}
// light up leds based on the layer
uint32_t layer_state_set_user_local(uint32_t state) {
uint32_t layer_state_set_user_keymap(uint32_t state) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
@ -249,7 +259,8 @@ uint32_t layer_state_set_user_local(uint32_t state) {
case LR_SYMBOL:
ergodox_right_led_2_on(); // green
break;
default: break;
default:
break;
}
return state;
}

View File

@ -1,24 +1,36 @@
#pragma once
#ifdef PRODUCT
# undef PRODUCT
# define PRODUCT Iris Keyboard - pvinis
#endif
// Use I2C or Serial, not both
// Use I2C or Serial, not both.
#define USE_SERIAL
// #define USE_I2C
// Select hand configuration
#define MASTER_LEFT
// #define MASTER_RIGHT
// Select hand configuration.
// #define MASTER_LEFT
#define MASTER_RIGHT
// #define EE_HANDS
// choose pin to use for audio. c6 is the one iris uses.
// Choose pin to use for audio. C6 is the one iris uses.
#ifdef AUDIO_ENABLE
# define C6_AUDIO
# define STARTUP_SONG SONG(NO_SOUND) // No startup song.
#endif
#ifdef RGBLIGHT_ENABLE
# undef RGBLED_NUM
# define RGBLED_NUM 16
#endif
#ifdef ENCODER_ENABLE
# define ENCODERS_PAD_A \
{ F5 } // I connected the encoder to F4 and F5.
# define ENCODERS_PAD_B \
{ F4 }
// #define ENCODERS_PAD_A_RIGHT { B5 }
// #define ENCODERS_PAD_B_RIGHT { C6 }
# define ENCODER_RESOLUTION 2
#endif

View File

@ -1,16 +1,16 @@
// pvinis iris
// ,-----------------------------. ,-----------------------------.
// | | | | | | | | | | | | | |
// |----+----+----+----+----+----| |----+----+----+----+----+----|
// | | | | | | | | | | | | | |
// |----+----+----+----x----x----| |----x----x----+----+----+----|
// | | | | | | | | | | | | | |
// |----+----+----+----x----x----+----. ,----|----x----x----+----+----+----|
// | | | | | | | | | | | | | | | |
// `-------------------+----+----+----/ \----+----+----+-------------------'
// | | | | | | | |
// `----+---------' `--------------'
// make keebio/iris/rev2:pvinis:avrdude
// ,-----------------------------. ┌────┬────┬────┬────┬────┬────┐
// | | | | | | | │ │ │ │ │ │ │
// |----+----+----+----+----+----| ├────┼────┼────┼────┼────┼────┤
// | | | | | | | │ │ │ │ │ │ │
// |----+----+----+----x----x----| ├────╆━━━━╅────┼────┼────┼────┤
// | | | | | | | │ ┃ ┃ │ │ │ │
// |----+----+----+----x----x----+----. ┌────┼────╄━━━━╃────┼────┼────┼────┤
// | | | | | | | | │ │ │ │ │ │ │ │
// `-------------------+----+----+----/ └┬───┴┬───┴┬───┴┬───┴────┴────┴────┘
// | | | | │ │ │ │
// `----+---------' └────┴────┴────┘
#include QMK_KEYBOARD_H
#include "pvinis.h"
@ -27,20 +27,33 @@
#endif
#ifdef AUDIO_ENABLE
float tone_sonic[][2] = SONG(IN_LIKE_FLINT);
float tone_1[][2] = SONG(QWERTY_SOUND);
float tone_2[][2] = SONG(OLD_SPICE);
float tone_3[][2] = SONG(OVERWATCH_THEME);
float tone_4[][2] = SONG(QWERTY_SOUND);
// float n04[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
// float n10[][2] = SONG(STARTUP_SOUND);
// float n11[][2] = SONG(GOODBYE_SOUND);
// float n12[][2] = SONG(PLANCK_SOUND);
// float n19[][2] = SONG(MUSIC_ON_SOUND);
// float n20[][2] = SONG(AUDIO_ON_SOUND);
// float n29[][2] = SONG(CAPS_LOCK_ON_SOUND);
// float n30[][2] = SONG(CAPS_LOCK_OFF_SOUND);
// float n31[][2] = SONG(SCROLL_LOCK_ON_SOUND);
// float n32[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
// float n33[][2] = SONG(NUM_LOCK_ON_SOUND);
// float n34[][2] = SONG(NUM_LOCK_OFF_SOUND);
// float n40[][2] = SONG(ONE_UP_SOUND);
// float n49[][2] = SONG(E1M1_DOOM);
// float n53[][2] = SONG(OLD_SPICE);
// float n56[][2] = SONG(RICK_ROLL);
// float n57[][2] = SONG(FF_PRELUDE);
// RGB_MODE_KNIGHT
// float n78[][2] = SONG(KATAMARI_ROLLING_STAR);
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ,-----------------------------. ,-----------------------------.
// | | | | | |QWER| | | | | | | |
// | | | | |GAME|QWER| | | | | | | |
// |----+----+----+----+----+----| |----+----+----+----+----+----|
// |Tab | | | | |CARP| | | | | | |Del |
// |Tab | | | | |CRPL| | | | | | |Del |
// |----+----+----+----x----x----| |----x----x----+----+----+----|
// |EscC| | | | | | | | | | | |Ent |
// |----+----+----+----x----x----+----. ,----|----x----x----+----+----+----|
@ -49,11 +62,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// |Cmd |LOWR|Bspc| |Spc |RASE|RAlt|
// `----+---------' `--------------'
[LR_BASE] = LAYOUT_wrapper(
_______, _______, _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______,
KC_TAB , _______, _______, _______, _______, CARPALX, _______, _______, _______, _______, _______, KC_DEL ,
PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
// clang-format off
KC_MUTE, _______, _______, _______, GAME1 , QWERTY , KC_1 , _______, _______, _______, _______, _______,
KC_TAB , ___________________________________________, ___________________________________________, KC_DEL ,
PV_ESCC, ___________________________________________, ___________________________________________, KC_ENT ,
KC_LSFT, ___________________________________________, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
KC_LGUI, SYMBOL , KC_BSPC, KC_SPC , SYSCTL , KC_RALT
// clang-format on
),
// ,-----------------------------. ,-----------------------------.
@ -68,11 +83,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// | | | | | | | |
// `----+---------' `--------------'
[LR_QWERTY] = LAYOUT_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
_______, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _______,
_______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______,
_______, _____________MOD_QWERTY_L2_________________, _________________QWERTY_R2_________________, _______,
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
// ,-----------------------------. ,-----------------------------.
@ -87,34 +104,94 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// | | | | | | | |
// `----+---------' `--------------'
[LR_CARPALX] = LAYOUT_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, _______,
_______, ________________CARPALX_L1_________________, ________________CARPALX_R1_________________, _______,
_______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
_______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
[LR_SYMBOL] = LAYOUT_wrapper(
// clang-format off
KC_F12 , ______________________F_L__________________, ______________________F_R__________________, KC_F11 ,
_______, _________________SYMBOL_L1_________________, _________________SYMBOL_R1_________________, _______,
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
[LR_SYSCTL] = LAYOUT_wrapper(
// clang-format off
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
_______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
_______, _________________SYSCTL_L1_________________, _________________SYSCTL_R1_________________, _______,
_______, _________________SYSCTL_L2_________________, _________________SYSCTL_R2_________________, _______,
_______, _________________SYSCTL_L3_________________, _______, _______, _________________SYSCTL_R3_________________, _______,
_______, _______, _______, _______, _______, _______
// clang-format on
),
[LR_KBCTL] = LAYOUT_wrapper(
// clang-format off
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, __________________KBCTL_L1_________________, __________________KBCTL_R1_________________, XXXXXXX,
XXXXXXX, __________________KBCTL_L2_________________, __________________KBCTL_R2_________________, XXXXXXX,
BASE , __________________KBCTL_L3_________________, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX
)
// clang-format on
),
// ,-----------------------------. ,-----------------------------.
// | | NUMBERS_L | | NUMBERS_R | |
// |----+----+----+----+----+----| |----+----+----+----+----+----|
// | | | | | |
// |----+ | | +----|
// |ESC | QWERTY_L | | QWERTY_R | |
// |----+ +----. ,----| +----|
// | | | | | | | |
// `-------------------+----+----+----/ \----+----+----+-------------------'
// | |SPC | | | | | |
// `----+---------' `--------------'
[LR_GAME1] = LAYOUT_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_BSPC,
_______, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, QWERTY ,
KC_ESC , _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _______,
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
_______, _______, KC_SPC , _______, _______, _______
// clang-format on
),
[LR_GAME2] = LAYOUT_wrapper(
// clang-format off
_______, ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_BSPC,
_______, _________________QWERTY_L1_________________, KC_Y , KC_U , KC_UP , KC_O , KC_P , QWERTY ,
KC_ESC , _________________QWERTY_L2_________________, KC_H , KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, _______,
_______, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, _______,
_______, _______, KC_SPC , _______, _______, _______
// clang-format on
),
};
#ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) {
// if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
// }
}
#endif
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
#ifdef AUDIO_ENABLE
// case PV_S04: if (record->event.pressed) PLAY_SONG(n04); return false; break;
#endif
}
return true; // Process everything else normally
}

View File

@ -1,2 +1,9 @@
AUDIO_ENABLE = no # off for now
RGBLIGHT_ENABLE = no # off for now
TAP_DANCE_ENABLE = yes
AUDIO_ENABLE = no # piezo speaker sounds
RGBLIGHT_ENABLE = yes # rgb leds underlight
ENCODER_ENABLE = yes # rotary knob
# Some extra stuff to make firmware smaller.
LINK_TIME_OPTIMIZATION_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no

View File

@ -1,10 +1,9 @@
#pragma once
#ifdef AUDIO_ENABLE
// #define STARTUP_SONG SONG(SONIC_RING)
// #define DAC_SAMPLE_MAX 65535U // maybe this works for volume?
#endif
// allow rolling when keys have hold functionality
#define IGNORE_MOD_TAP_INTERRUPT
// #define TAPPING_TERM 150
#if defined(MOUSE_KEYS)
# define MOUSEKEY_WHEEL_TIME_TO_MAX 1
#endif

View File

@ -3,33 +3,25 @@
#ifdef AUDIO_ENABLE
# include "audio.h"
#endif // AUDIO_ENABLE
#ifdef AUDIO_ENABLE
// float tone_katamari_rolling_star[][2] = SONG(KATAMARI_ROLLING_STAR);
#endif // AUDIO_ENABLE
float song_sonic_ring[][2] = SONG(SONIC_RING);
float song_coin_sound[][2] = SONG(COIN_SOUND);
float song_test[][2] = SONG(QWERTY_SOUND);
#endif
// SYMBOL + SYSCTL = KBCTL
uint32_t layer_state_set_user(uint32_t state) {
uint32_t intermediate_state = update_tri_layer_state(state, LR_SYMBOL, LR_SYSCTL, LR_KBCTL);
intermediate_state = layer_state_set_user_local(intermediate_state);
intermediate_state = layer_state_set_user_keymap(intermediate_state);
return intermediate_state;
}
// functions for the individual keymaps to implement if they need something extra
__attribute__ ((weak))
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
// handle my own keycodes
// Handle my own keycodes.
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case PV_VRSN:
if (record->event.pressed) {
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
@ -37,6 +29,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case PV_MAKE:
// make ergodox_ez:pvinis:teensy
if (!record->event.pressed) {
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
@ -46,8 +39,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#elif defined(BOOTLOADER_CATERINA)
":avrdude"
#endif
SS_TAP(X_ENTER)
);
SS_TAP(X_ENTER));
}
return false;
@ -55,10 +47,26 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
reset_keyboard();
return false;
case PV_KTMR:
case PV_SSNC:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
// PLAY_SONG(tone_katamari_rolling_star);
PLAY_SONG(song_sonic_ring);
#endif
}
return false;
case PV_SCIN:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_SONG(song_coin_sound);
#endif
}
return false;
case PV_TEST:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_SONG(song_test);
#endif
}
return false;
@ -66,24 +74,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return process_record_keymap(keycode, record);
}
#ifdef TAP_DANCE_ENABLE
qk_tap_dance_action_t tap_dance_actions[] = {
};
#endif // TAP_DANCE_ENABLE
qk_tap_dance_action_t tap_dance_actions[] = {};
#endif
void keyboard_post_init_rgb_light(void) {
rgblight_sethsv(HSV_GOLD);
rgblight_mode(RGBLIGHT_MODE_BREATHING);
// rgblight_mode(RGBLIGHT_MODE_KNIGHT+1);
}
// init stuff
// Init stuff.
void keyboard_post_init_user(void) {
keyboard_post_init_user_local();
#if defined(RGBLIGHT_ENABLE)
keyboard_post_init_rgb_light();
#endif
keyboard_post_init_user_keymap();
}
// Default functions.
__attribute__((weak)) void keyboard_post_init_user_keymap(void) {}
// default functions
__attribute__ ((weak))
void keyboard_post_init_user_local(void) {}
__attribute__ ((weak))
uint32_t layer_state_set_user_local(uint32_t state) {
return state;
}
__attribute__((weak)) uint32_t layer_state_set_user_keymap(uint32_t state) { return state; }

View File

@ -2,17 +2,20 @@
#include "quantum.h"
// my own keycodes
// My own keycodes.
enum userspace_custom_keycodes {
PV_ = SAFE_RANGE,
PV_VRSN, // prints firmware version
PV_MAKE, // prints the make command of the keyboard
PV_FLSH, // resets keyboard
PV_KTMR, // play katamari music
PV_VRSN, // Print firmware version.
PV_MAKE, // Print the make command of the keyboard.
PV_FLSH, // Reset keyboard.
PV_SAFE_RANGE, // used for extra keycodes in the individual keymaps
PV_SSNC, // Play Sonic Ring.
PV_SCIN, // Play Coin Sound.
PV_TEST, // For quick testing purposes.
PV_SAFE_RANGE, // Used for extra keycodes in individual keymaps.
};
enum tap_dance_indexes {
@ -20,56 +23,67 @@ enum tap_dance_indexes {
TD_FLSH, // flash keyboard (as if the physical flash key was pressed)
};
#define ALLM(kc) LCAG(kc) // easier name for left ctrl-alt-gui
#define PV_ESCC CTL_T(KC_ESC) // esc on tap, ctrl on hold
#define PV_LOCK LCTL(LSFT(KC_PWR)) // lock computer
#define TD_3FLS TD(TD_FLSH) // tap dance 3 times for flash
#define ALLM(kc) LCAG(kc) // Easier name for left ctrl-alt-gui.
#define PV_ESCC CTL_T(KC_ESC) // esc on tap, ctrl on hold.
#define PV_LOCK LCTL(LSFT(KC_PWR)) // Lock computer.
#define TD_3FLS TD(TD_FLSH) // Tap dance 3 times for flash.
// layers
// Layers.
enum {
LR_BASE = 0, // used for basic keys like the surrounding ctrl, cmd, etc
LR_QWERTY,
LR_CARPALX,
LR_GAME1, // game layout (space on the left thumb, no modifiers, etc)
LR_GAME2, // game layout (space on the left thumb, no modifiers, etc, arrows)
LR_SYMBOL, // symbol input (!, @, #, etc)
LR_SYSCTL, // system control (music, volume, keyboard flash, etc)
LR_KBCTL, // keyboard control (version, make, flash, etc)
};
// layer switchers
// Layer switchers.
#define BASE TO(LR_BASE)
#define QWERTY TO(LR_QWERTY)
#define CARPALX TO(LR_CARPALX)
#define GAME1 TO(LR_GAME1)
#define GAME2 TO(LR_GAME2)
#define SYMBOL MO(LR_SYMBOL)
#define SYSCTL MO(LR_SYSCTL)
#define KBCTL MO(LR_KBCTL)
// Layout parts for easy reuse between keyboard keymaps.
// layout parts for easy reuse between keyboard keymaps
// Transparent.
// ┌─────┬─────┬─────┬─────┬─────┐
// │ │ │ │ │ │
// └─────┴─────┴─────┴─────┴─────┘
#define ___________________________________________ _______, _______, _______, _______, _______
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// Numbers.
// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
// │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │
// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
#define ________________NUMBERS_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5
#define ________________NUMBERS_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// F keys.
// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
// │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10 │
// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
#define ______________________F_L__________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
#define ______________________F_R__________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// | Q | W | E | R | T | | Y | U | I | O | P |
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// | A | S | D | F | G | | H | J | K | L | ; |
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// | Z | X | C | V | B | | N | M | , | . | / |
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// QWERTY.
// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
// │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │
// ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤
// │ A │ S │ D ┃ F ┃ G │ │ H ┃ J ┃ K │ L │ ; │
// ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤
// │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │
// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
@ -78,7 +92,12 @@ enum {
#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
#define _____________MOD_QWERTY_L2_________________ CTL_T(KC_A), SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G
// QWERTY with mods.
// ┌───────┬───────┬───────┲━━━━━━━┱───────┐ ┌───────┲━━━━━━━┱───────┬───────┬───────┐
// │ ctl/A │ sft/S │ cmd/D ┃ opt/F ┃ G │ │ H ┃ opt/J ┃ cmd/K │ sft/L │ ctl/; │
// └───────┴───────┴───────┺━━━━━━━┹───────┘ └───────┺━━━━━━━┹───────┴───────┴───────┘
// #define _____________MOD_QWERTY_L2_________________ CTL_T(KC_A), SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G
#define _____________MOD_QWERTY_L2_________________ KC_A, KC_S, KC_D, ALT_T(KC_F), KC_G
#define _____________MOD_QWERTY_R2_________________ KC_H, ALT_T(KC_J), GUI_T(KC_K), SFT_T(KC_L), CTL_T(KC_SCLN)
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
@ -111,16 +130,18 @@ enum {
#define _________________SYMBOL_R2_________________ KC_EQL, KC_AMPR, KC_QUOT, KC_DQUO, KC_PIPE
#define _________________SYMBOL_R3_________________ KC_ASTR, KC_TILD, KC_LABK, KC_RABK, KC_SLSH
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// | | | | | | |MUTE |HOME | ^ | END | |
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// | | | | | | |VOLUP| < | v | > | |
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// | | | | | | |VOLDN|MPREV|MPLAY|MNEXT| |
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
#define _________________SYSCTL_L1_________________
#define _________________SYSCTL_L2_________________
#define _________________SYSCTL_L3_________________
// System Control.
// vol ↓ ctl ↓
// ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
// │ │ │ │ │ │ │MUTE │HOME │ ↑ │ END │LOCK │
// ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤
// │ │ │ ┃ ┃ │ │VOLUP┃ ← ┃ ↓ │ → │SLEEP│ ← arrows
// ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤
// │ │ │ │ │ │ │VOLDN│MPREV│MPLAY│MNEXT│ PWR │ ← music
// └─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┘
#define _________________SYSCTL_L1_________________ XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_BTN1, XXXXXXX
#define _________________SYSCTL_L2_________________ XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_RIGHT, KC_MS_WH_UP
#define _________________SYSCTL_L3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_DOWN
// vol v ctl v
#define _________________SYSCTL_R1_________________ KC_MUTE, KC_HOME, KC_UP, KC_END, PV_LOCK
@ -128,25 +149,24 @@ enum {
#define _________________SYSCTL_R3_________________ KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT /* < music */, KC_PWR
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
// |GAME |CRPLX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|VERSN|MAKE |FLASH|XXXXX|
// ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
// |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
// ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
#define __________________KBCTL_L1_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_L2_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_L3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_L1_________________ PV_SSNC, PV_SCIN, PV_TEST, XXXXXXX, XXXXXXX
#define __________________KBCTL_L2_________________ RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_L3_________________ RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_R1_________________ XXXXXXX, XXXXXXX, XXXXXXX, PV_KTMR, XXXXXXX
#define __________________KBCTL_R1_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
#define __________________KBCTL_R2_________________ XXXXXXX, PV_VRSN, PV_MAKE, PV_FLSH, XXXXXXX
#define __________________KBCTL_R3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
// we need wrappers in order for these definitions, because they need to be expanded before being used as arguments to the LAYOUT_xxx macro
// We need wrappers in order for these definitions, because they need to be expanded before being used as arguments to the LAYOUT_xxx macro.
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
// extra stuff that might be needed
void keyboard_post_init_user_local(void);
uint32_t layer_state_set_user_local(uint32_t state);
// Extra stuff that might be needed.
void keyboard_post_init_user_keymap(void);
uint32_t layer_state_set_user_keymap(uint32_t state);

View File

@ -1,15 +1,19 @@
# add userspace file
SRC += pvinis.c
SRC += pvinis.c # add userspace file
AUDIO_ENABLE = no # piezo speaker sounds
RGBLIGHT_ENABLE = no # rgb leds underlight
TAP_DANCE_ENABLE = yes
BACKLIGHT_ENABLE = no # leds under keycaps
#MOUSEKEY_ENABLE = no
#SLEEP_LED_ENABLE = no # no led blinking while sleeping
#NKRO_ENABLE = yes
# make firmware smaller
LINK_TIME_OPTIMIZATION_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
## Use the stuff below on the keyboard keymaps, not here.
## If they are used here, they will replace the keymap's rules, since this file is eval'd later.
# TAP_DANCE_ENABLE = yes
# AUDIO_ENABLE = yes # piezo speaker sounds
# RGBLIGHT_ENABLE = yes # rgb leds underlight
# BACKLIGHT_ENABLE = no # leds under keycaps
# MOUSEKEY_ENABLE = yes
# LEEP_LED_ENABLE = no # no led blinking while sleeping
# KRO_ENABLE = yes
## Some extra stuff to make firmware smaller.
# LINK_TIME_OPTIMIZATION_ENABLE = yes
# CONSOLE_ENABLE = no
# COMMAND_ENABLE = no