* Added personal keymaps for Planck, Preonic, Vitamins Included by Juno * Removing redundancies as suggested * More removals that were missed out in the previous commits * Updated Preonic to use new layout * More redundancies missed out * Updated more optimal code for FN layer LED indicator. * Further codes clean up.pull/5284/head
@ -0,0 +1,41 @@ | |||||
#pragma once | |||||
#ifdef AUDIO_ENABLE | |||||
#define STARTUP_SONG SONG(PLANCK_SOUND) | |||||
// #define STARTUP_SONG SONG(NO_SOUND) | |||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ | |||||
SONG(COLEMAK_SOUND), \ | |||||
SONG(DVORAK_SOUND) \ | |||||
} | |||||
#endif | |||||
/* | |||||
* MIDI options | |||||
*/ | |||||
/* Prevent use of disabled MIDI features in the keymap */ | |||||
//#define MIDI_ENABLE_STRICT 1 | |||||
/* enable basic MIDI features: | |||||
- MIDI notes can be sent when in Music mode is on | |||||
*/ | |||||
#define MIDI_BASIC | |||||
/* enable advanced MIDI features: | |||||
- MIDI notes can be added to the keymap | |||||
- Octave shift and transpose | |||||
- Virtual sustain, portamento, and modulation wheel | |||||
- etc. | |||||
*/ | |||||
//#define MIDI_ADVANCED | |||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | |||||
//#define MIDI_TONE_KEYCODE_OCTAVES 2 | |||||
// Most tactile encoders have detents every 4 stages | |||||
#define ENCODER_RESOLUTION 4 | |||||
// Reduce power consumption for iOS compatibility | |||||
#define USB_MAX_POWER_CONSUMPTION 100 |
@ -0,0 +1,444 @@ | |||||
#include QMK_KEYBOARD_H | |||||
#include "muse.h" | |||||
extern keymap_config_t keymap_config; | |||||
enum planck_layers { | |||||
_QWERTY, | |||||
_COLEMAK, | |||||
_DVORAK, | |||||
_LOWER, | |||||
_RAISE, | |||||
_PLOVER, | |||||
_ADJUST, | |||||
_FN1, | |||||
_DPAD, | |||||
_DPADNUM | |||||
}; | |||||
enum planck_keycodes { | |||||
QWERTY = SAFE_RANGE, | |||||
COLEMAK, | |||||
DVORAK, | |||||
PLOVER, | |||||
BACKLIT, | |||||
EXT_PLV, | |||||
FN1, | |||||
DP_ON, | |||||
DP_OFF | |||||
}; | |||||
#define LOWER MO(_LOWER) | |||||
#define RAISE MO(_RAISE) | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* Qwerty | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Tab | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | App | Ctrl | GUI | Alt |Lower | SpaceFn |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_QWERTY] = LAYOUT_planck_grid( | |||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | |||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), | |||||
KC_APP, KC_LCTL, KC_LGUI, KC_LALT, LOWER, LT(_FN1, KC_SPC), | |||||
LT(_FN1, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT | |||||
), | |||||
/* Colemak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | R | S | T | D | H | N | E | I | O | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_COLEMAK] = LAYOUT_planck_grid( | |||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, | |||||
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , | |||||
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT | |||||
), | |||||
/* Dvorak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | O | E | U | I | D | H | T | N | S | / | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DVORAK] = LAYOUT_planck_grid( | |||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, | |||||
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, | |||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , | |||||
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT | |||||
), | |||||
/* Lower | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_LOWER] = LAYOUT_planck_grid( | |||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | |||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |||||
), | |||||
/* Raise | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_RAISE] = LAYOUT_planck_grid( | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | |||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |||||
), | |||||
/* Plover layer (http://opensteno.org) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | # | # | # | # | # | # | # | # | # | # | # | # | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | S | T | P | H | * | * | F | P | L | T | D | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | S | K | W | R | * | * | R | B | G | S | Z | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Exit | | | A | O | | E | U | | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_PLOVER] = LAYOUT_planck_grid( | |||||
KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , | |||||
XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, | |||||
XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |||||
EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX | |||||
), | |||||
/* Adjust (Lower + Raise) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | | Reset| | | | | | | | | | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | | | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_ADJUST] = LAYOUT_planck_grid( | |||||
_______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , | |||||
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, | |||||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||||
), | |||||
// Two personal additional layers below | |||||
/* Personal custom Fn layer | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | | Vol+ | PgUp | Up | PdDn | Ins | | | Up | | PScr | | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | Vol- | Left | Down | Right| Home | | Left | Down |Right | | Del | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | Prev | Play | Next | Brite| End | | | Vol- | Vol+ | Mute | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Caps | | | | | Space | | DP_ON| | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_FN1] = LAYOUT_planck_grid( | |||||
_______, KC_VOLU, KC_PGUP, KC_UP, KC_PGDN, KC_INS, _______, _______, KC_UP, _______, KC_PSCR, _______, | |||||
_______, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL , | |||||
_______, KC_MPRV, KC_MPLY, KC_MNXT, BACKLIT, KC_END, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, | |||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DP_ON, _______, _______, _______ | |||||
), | |||||
/* DPAD layer, to activate arrow cluster at the bottom right corner | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Tab | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Ctrl | GUI | Alt | |DNUM | Space | |DP_OFF| Left | Down |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DPAD] = LAYOUT_planck_grid( | |||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | |||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT , | |||||
KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_DPADNUM), | |||||
KC_SPC, KC_SPC, LOWER, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT | |||||
), | |||||
// Extended layer for weapon switching | |||||
[_DPADNUM] = LAYOUT_planck_grid( | |||||
XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, | |||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | |||||
_______, _______, _______, XXXXXXX, MO(_DPADNUM), | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | |||||
) | |||||
}; | |||||
#ifdef AUDIO_ENABLE | |||||
float plover_song[][2] = SONG(PLOVER_SOUND); | |||||
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); | |||||
// Borrowing audio from unused audio | |||||
// Caps Lock on and off sound too similar | |||||
float caps_song_on[][2] = SONG(NUM_LOCK_ON_SOUND); | |||||
float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND); | |||||
float dpad_song_on[][2] = SONG(ZELDA_PUZZLE); | |||||
float dpad_song_off[][2] = SONG(SONIC_RING); | |||||
#endif | |||||
uint32_t layer_state_set_user(uint32_t state) { | |||||
// LED control, lighting up when Fn layer is activated | |||||
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | |||||
switch (biton32(state)) { | |||||
case _QWERTY: | |||||
backlight_set(0); | |||||
break; | |||||
case _FN1: | |||||
backlight_set(3); | |||||
break; | |||||
case _DPAD: | |||||
backlight_set(3); | |||||
break; | |||||
} | |||||
return state; | |||||
} | |||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case QWERTY: | |||||
if (record->event.pressed) { | |||||
print("mode just switched to qwerty and this is a huge string\n"); | |||||
set_single_persistent_default_layer(_QWERTY); | |||||
} | |||||
return false; | |||||
break; | |||||
case COLEMAK: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_COLEMAK); | |||||
} | |||||
return false; | |||||
break; | |||||
case DVORAK: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_DVORAK); | |||||
} | |||||
return false; | |||||
break; | |||||
case BACKLIT: | |||||
if (record->event.pressed) { | |||||
register_code(KC_RSFT); | |||||
#ifdef BACKLIGHT_ENABLE | |||||
backlight_step(); | |||||
#endif | |||||
#ifdef KEYBOARD_planck_rev5 | |||||
PORTE &= ~(1<<6); | |||||
#endif | |||||
} else { | |||||
unregister_code(KC_RSFT); | |||||
#ifdef KEYBOARD_planck_rev5 | |||||
PORTE |= (1<<6); | |||||
#endif | |||||
} | |||||
return false; | |||||
break; | |||||
case PLOVER: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
stop_all_notes(); | |||||
PLAY_SONG(plover_song); | |||||
#endif | |||||
layer_off(_RAISE); | |||||
layer_off(_LOWER); | |||||
layer_off(_ADJUST); | |||||
layer_on(_PLOVER); | |||||
if (!eeconfig_is_enabled()) { | |||||
eeconfig_init(); | |||||
} | |||||
keymap_config.raw = eeconfig_read_keymap(); | |||||
keymap_config.nkro = 1; | |||||
eeconfig_update_keymap(keymap_config.raw); | |||||
} | |||||
return false; | |||||
break; | |||||
case EXT_PLV: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(plover_gb_song); | |||||
#endif | |||||
layer_off(_PLOVER); | |||||
} | |||||
return false; | |||||
break; | |||||
// Play audio upon switching Caps Lock and custom layers | |||||
case KC_CAPS: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { | |||||
PLAY_SONG(caps_song_off); | |||||
} else { | |||||
PLAY_SONG(caps_song_on); | |||||
} | |||||
#endif | |||||
} | |||||
return true; | |||||
case DP_ON: | |||||
if (record->event.pressed) { | |||||
} else { | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(dpad_song_on); | |||||
#endif | |||||
layer_off(_FN1); | |||||
layer_on(_DPAD); | |||||
} | |||||
case DP_OFF: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(dpad_song_off); | |||||
#endif | |||||
layer_off(_DPAD); | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
bool muse_mode = false; | |||||
uint8_t last_muse_note = 0; | |||||
uint16_t muse_counter = 0; | |||||
uint8_t muse_offset = 70; | |||||
uint16_t muse_tempo = 50; | |||||
void encoder_update(bool clockwise) { | |||||
if (muse_mode) { | |||||
if (IS_LAYER_ON(_RAISE)) { | |||||
if (clockwise) { | |||||
muse_offset++; | |||||
} else { | |||||
muse_offset--; | |||||
} | |||||
} else { | |||||
if (clockwise) { | |||||
muse_tempo+=1; | |||||
} else { | |||||
muse_tempo-=1; | |||||
} | |||||
} | |||||
} else { | |||||
if (clockwise) { | |||||
register_code(KC_PGDN); | |||||
unregister_code(KC_PGDN); | |||||
} else { | |||||
register_code(KC_PGUP); | |||||
unregister_code(KC_PGUP); | |||||
} | |||||
} | |||||
} | |||||
void dip_update(uint8_t index, bool active) { | |||||
switch (index) { | |||||
case 0: | |||||
if (active) { | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(plover_song); | |||||
#endif | |||||
layer_on(_ADJUST); | |||||
} else { | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(plover_gb_song); | |||||
#endif | |||||
layer_off(_ADJUST); | |||||
} | |||||
break; | |||||
case 1: | |||||
if (active) { | |||||
muse_mode = true; | |||||
} else { | |||||
muse_mode = false; | |||||
#ifdef AUDIO_ENABLE | |||||
stop_all_notes(); | |||||
#endif | |||||
} | |||||
} | |||||
} | |||||
void matrix_scan_user(void) { | |||||
#ifdef AUDIO_ENABLE | |||||
if (muse_mode) { | |||||
if (muse_counter == 0) { | |||||
uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; | |||||
if (muse_note != last_muse_note) { | |||||
stop_note(compute_freq_for_midi_note(last_muse_note)); | |||||
play_note(compute_freq_for_midi_note(muse_note), 0xF); | |||||
last_muse_note = muse_note; | |||||
} | |||||
} | |||||
muse_counter = (muse_counter + 1) % muse_tempo; | |||||
} | |||||
#endif | |||||
} | |||||
bool music_mask_user(uint16_t keycode) { | |||||
switch (keycode) { | |||||
case RAISE: | |||||
case LOWER: | |||||
return false; | |||||
default: | |||||
return true; | |||||
} | |||||
} |
@ -0,0 +1,8 @@ | |||||
# Juno Layout | |||||
created by Juno Nguyen | |||||
juno.ngx@gmail.com | |||||
## Feature: | |||||
* Pok3r-inspired functional layer. | |||||
* Rearranged numerics for maximum efficiency. | |||||
@ -0,0 +1,10 @@ | |||||
BACKLIGHT_ENABLE = yes | |||||
SRC += muse.c | |||||
MIDI_ENABLE=no | |||||
RGBLIGHT_ENABLE = no | |||||
MOUSEKEY_ENABLE = no # Mouse keys | |||||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||||
CONSOLE_ENABLE = no # Console for debug | |||||
COMMAND_ENABLE = no # Commands for debug and configuration |
@ -0,0 +1,37 @@ | |||||
#pragma once | |||||
#ifdef AUDIO_ENABLE | |||||
#define STARTUP_SONG SONG(PREONIC_SOUND) | |||||
// #define STARTUP_SONG SONG(NO_SOUND) | |||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ | |||||
SONG(COLEMAK_SOUND), \ | |||||
SONG(DVORAK_SOUND) \ | |||||
} | |||||
#endif | |||||
#define MUSIC_MASK (keycode != KC_NO) | |||||
/* | |||||
* MIDI options | |||||
*/ | |||||
/* Prevent use of disabled MIDI features in the keymap */ | |||||
//#define MIDI_ENABLE_STRICT 1 | |||||
/* enable basic MIDI features: | |||||
- MIDI notes can be sent when in Music mode is on | |||||
*/ | |||||
#define MIDI_BASIC | |||||
/* enable advanced MIDI features: | |||||
- MIDI notes can be added to the keymap | |||||
- Octave shift and transpose | |||||
- Virtual sustain, portamento, and modulation wheel | |||||
- etc. | |||||
*/ | |||||
//#define MIDI_ADVANCED | |||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | |||||
//#define MIDI_TONE_KEYCODE_OCTAVES 2 |
@ -0,0 +1,313 @@ | |||||
/* Juno's Preonic Layout */ | |||||
#include QMK_KEYBOARD_H | |||||
enum preonic_layers { | |||||
_QWERTY, | |||||
_COLEMAK, | |||||
_DVORAK, | |||||
_LOWER, | |||||
_RAISE, | |||||
_ADJUST, | |||||
_FN1, | |||||
_DPAD | |||||
}; | |||||
enum preonic_keycodes { | |||||
QWERTY = SAFE_RANGE, | |||||
COLEMAK, | |||||
DVORAK, | |||||
LOWER, | |||||
RAISE, | |||||
BACKLIT, | |||||
FN1, | |||||
DP_ON, | |||||
DP_OFF | |||||
}; | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* Qwerty | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | FN1 | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_QWERTY] = LAYOUT_preonic_grid( \ | |||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ | |||||
MO(_FN1),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ | |||||
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |||||
), | |||||
/* Colemak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | R | S | T | D | H | N | E | I | O | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_COLEMAK] = LAYOUT_preonic_grid( \ | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \ | |||||
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ | |||||
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |||||
), | |||||
/* Dvorak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Tab | " | , | . | P | Y | F | G | C | R | L | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | O | E | U | I | D | H | T | N | S | / | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DVORAK] = LAYOUT_preonic_grid( \ | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \ | |||||
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ | |||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ | |||||
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |||||
), | |||||
/* Lower | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_LOWER] = LAYOUT_preonic_grid( \ | |||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ | |||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ | |||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |||||
), | |||||
/* Raise | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_RAISE] = LAYOUT_preonic_grid( \ | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ | |||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |||||
), | |||||
/* Adjust (Lower + Raise) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | Reset| | | | | | | | | | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | | | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_ADJUST] = LAYOUT_preonic_grid( \ | |||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ | |||||
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \ | |||||
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ | |||||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |||||
), | |||||
/* Function (personal function layer) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | | | | | | | | | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | Vol- | | Vol+ | | | | PgUp | Up | PgDn | PScr | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | | | | | | Home | Left | Down |Right | Ins | Del | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Prev | Play | Next | Brite| | End | | Vol- | Vol+ | Mute | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Ctrl | GUI | Alt | Caps | | Space | | DP_ON| | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_FN1] = LAYOUT_preonic_grid( \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ | |||||
_______, KC_VOLD, _______, KC_VOLU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_DEL , \ | |||||
_______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL , \ | |||||
KC_LSFT, KC_MPRV, KC_MPLY, KC_MNXT, BACKLIT, _______, KC_END, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, \ | |||||
KC_LCTL, KC_LGUI, KC_LALT, KC_CAPS, _______, KC_SPC, KC_SPC, _______, DP_ON, _______, _______, _______ \ | |||||
), | |||||
/* DPAD layer, for active arrow cluster at the bottom right corner | |||||
* Use TG() to enable, but FUNC() to disable (defined at end of file) | |||||
* All layers clearing required | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Caps | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Ctrl | GUI | Alt | |Lower | Space |Raise |DP_OFF| Left | Down |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DPAD] = LAYOUT_preonic_grid( \ | |||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ | |||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT , \ | |||||
KC_LCTL, KC_LGUI, KC_LALT, _______, LOWER, KC_SPC, KC_SPC, RAISE, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT \ | |||||
) | |||||
}; | |||||
#ifdef AUDIO_ENABLE | |||||
float plover_song[][2] = SONG(PLOVER_SOUND); | |||||
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); | |||||
float caps_song_on[][2] = SONG(NUM_LOCK_ON_SOUND); | |||||
float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND); | |||||
float dpad_song_on[][2] = SONG(ZELDA_PUZZLE); | |||||
float dpad_song_off[][2] = SONG(SONIC_RING); | |||||
#endif | |||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||
switch (keycode) { | |||||
case QWERTY: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_QWERTY); | |||||
} | |||||
return false; | |||||
break; | |||||
case COLEMAK: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_COLEMAK); | |||||
} | |||||
return false; | |||||
break; | |||||
case DVORAK: | |||||
if (record->event.pressed) { | |||||
set_single_persistent_default_layer(_DVORAK); | |||||
} | |||||
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 BACKLIT: | |||||
if (record->event.pressed) { | |||||
register_code(KC_RSFT); | |||||
#ifdef BACKLIGHT_ENABLE | |||||
backlight_step(); | |||||
#endif | |||||
PORTE &= ~(1<<6); | |||||
} else { | |||||
unregister_code(KC_RSFT); | |||||
PORTE |= (1<<6); | |||||
} | |||||
return false; | |||||
break; | |||||
// Additional personal custom functions | |||||
case KC_CAPS: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { | |||||
PLAY_SONG(caps_song_off); | |||||
} else { | |||||
PLAY_SONG(caps_song_on); | |||||
} | |||||
#endif | |||||
} | |||||
return true; // process the actual function of Caps Lock | |||||
//break; | |||||
case DP_ON: | |||||
if (record->event.pressed) { | |||||
} else { | |||||
// activated upon release | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(dpad_song_on); | |||||
#endif | |||||
layer_off(_FN1); | |||||
layer_on(_DPAD); | |||||
} | |||||
case DP_OFF: | |||||
if (record->event.pressed) { | |||||
// deactivated upon pressdown | |||||
#ifdef AUDIO_ENABLE | |||||
PLAY_SONG(dpad_song_off); | |||||
#endif | |||||
//layer_off(_FN1); // do not put in this line | |||||
layer_off(_DPAD); | |||||
} | |||||
} | |||||
return true; | |||||
}; |
@ -0,0 +1 @@ | |||||
# The default Preonic layout - largely based on the Planck's |
@ -0,0 +1,293 @@ | |||||
#include QMK_KEYBOARD_H | |||||
#include "eeconfig.h" | |||||
extern keymap_config_t keymap_config; | |||||
#define _QWERTY 0 | |||||
#define _COLEMAK 1 | |||||
#define _DVORAK 2 | |||||
#define _LOWER 3 | |||||
#define _RAISE 4 | |||||
#define _ADJUST 16 | |||||
#define _FN1 5 | |||||
#define _DPAD 6 | |||||
#define _DPADNUM 7 | |||||
enum custom_keycodes { | |||||
QWERTY = SAFE_RANGE, | |||||
COLEMAK, | |||||
DVORAK, | |||||
LOWER, | |||||
RAISE, | |||||
ADJUST, | |||||
FN1, | |||||
DP_ON, | |||||
DP_OFF | |||||
}; | |||||
#define XXXXXXX KC_NO | |||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||
/* Qwerty | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Tab | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | App | Ctrl | GUI | Alt |Lower | SpaceFn |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_QWERTY] = LAYOUT_ortho_4x12( \ | |||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ | |||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), \ | |||||
KC_APP, KC_LCTL, KC_LGUI, KC_LALT, LOWER, LT(_FN1, KC_SPC), | |||||
LT(_FN1, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT \ | |||||
), | |||||
/* Colemak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | R | S | T | D | H | N | E | I | O | ' | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_COLEMAK] = LAYOUT_ortho_4x12( \ | |||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ | |||||
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ | |||||
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |||||
), | |||||
/* Dvorak | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Esc | A | O | E | U | I | D | H | T | N | S | / | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DVORAK] = LAYOUT_ortho_4x12( \ | |||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ | |||||
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ | |||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ | |||||
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |||||
), | |||||
/* Lower | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* |RESET | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_LOWER] = LAYOUT_ortho_4x12( \ | |||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ | |||||
RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |||||
), | |||||
/* Raise | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |RESET | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | Next | Vol- | Vol+ | Play | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_RAISE] = LAYOUT_ortho_4x12( \ | |||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | |||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ | |||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, RESET, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |||||
), | |||||
/* Adjust (Lower + Raise) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | | Reset| | | | | | | | | | Del | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | | | | | | | | | | | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | | | | | | | | | | |RGB_MOD| | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_ADJUST] = LAYOUT_ortho_4x12( \ | |||||
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ | |||||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ | |||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD \ | |||||
), | |||||
// Two personal additional layers below | |||||
// There's no brite key | |||||
/* Function (personal function layer) | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | | Vol+ | PgUp | Up | PdDn | Ins | | | Up | | PScr | | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | | Vol- | Left | Down | Right| Home | | Left | Down |Right | | Del | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | | Prev | Play | Next | | End | | | Vol- | Vol+ | Mute | | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Caps | | | | | Space | | DP_ON| | | | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_FN1] = LAYOUT_ortho_4x12( \ | |||||
_______, KC_VOLU, KC_PGUP, KC_UP, KC_PGDN, KC_INS, _______, _______, KC_UP, _______, KC_PSCR, _______, \ | |||||
_______, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL, \ | |||||
_______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_END, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, \ | |||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DP_ON, _______, _______, _______ \ | |||||
), | |||||
/* DPAD layer, for active arrow cluster at the bottom right corner | |||||
* ,-----------------------------------------------------------------------------------. | |||||
* | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||||
* | Tab | A | S | D | F | G | H | J | K | L | ; | " | | |||||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||||
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | | |||||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||||
* | Ctrl | GUI | Alt | |DNUM | Space | |DP_OFF| Left | Down |Right | | |||||
* `-----------------------------------------------------------------------------------' | |||||
*/ | |||||
[_DPAD] = LAYOUT_ortho_4x12( \ | |||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ | |||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ | |||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT , \ | |||||
KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_DPADNUM), | |||||
KC_SPC, KC_SPC, LOWER, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT \ | |||||
), | |||||
// Extended layer for weapon switchings | |||||
[_DPADNUM] = LAYOUT_ortho_4x12( \ | |||||
XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX , \ | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 , \ | |||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 , \ | |||||
_______, _______, _______, XXXXXXX, MO(_DPADNUM), | |||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | |||||
) | |||||
}; | |||||
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) { | |||||
switch (keycode) { | |||||
case QWERTY: | |||||
if (record->event.pressed) { | |||||
persistent_default_layer_set(1UL<<_QWERTY); | |||||
} | |||||
return false; | |||||
break; | |||||
case COLEMAK: | |||||
if (record->event.pressed) { | |||||
persistent_default_layer_set(1UL<<_COLEMAK); | |||||
} | |||||
return false; | |||||
break; | |||||
case DVORAK: | |||||
if (record->event.pressed) { | |||||
persistent_default_layer_set(1UL<<_DVORAK); | |||||
} | |||||
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; | |||||
// Additional personal custom functions | |||||
case KC_CAPS: | |||||
if (record->event.pressed) { | |||||
#ifdef AUDIO_ENABLE | |||||
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { | |||||
// PLAY_SONG(caps_song_off); | |||||
} else { | |||||
// PLAY_SONG(caps_song_on); | |||||
} | |||||
#endif | |||||
} | |||||
return true; // process the actual function of Caps Lock | |||||
//break; | |||||
case DP_ON: | |||||
if (record->event.pressed) { | |||||
} else { | |||||
// activated upon release | |||||
#ifdef AUDIO_ENABLE | |||||
// PLAY_SONG(dpad_song_on); | |||||
#endif | |||||
layer_off(_FN1); | |||||
layer_on(_DPAD); | |||||
} | |||||
case DP_OFF: | |||||
if (record->event.pressed) { | |||||
// deactivated upon pressdown | |||||
#ifdef AUDIO_ENABLE | |||||
// PLAY_SONG(dpad_song_off); | |||||
#endif | |||||
//layer_off(_FN1); // do not put in this line | |||||
layer_off(_DPAD); | |||||
} | |||||
} | |||||
return true; | |||||
} |
@ -0,0 +1,16 @@ | |||||
MIDI_ENABLE=no | |||||
BACKLIGHT_ENABLE = no | |||||
RGBLIGHT_ENABLE = no | |||||
NKRO_ENABLE = no # USB Nkey Rollover | |||||
AUDIO_ENABLE = no | |||||
## BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration | |||||
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) | |||||
MOUSEKEY_ENABLE = no # Mouse keys | |||||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||||
CONSOLE_ENABLE = no # Console for debug | |||||
COMMAND_ENABLE = no # Commands for debug and configuration | |||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend |