Planck, Preonic, Atreus, Ergodoxpull/615/head
@ -0,0 +1,89 @@ | |||
// This is the personal keymap of Ian Sterling (@xyverz). It is based on the keymap by | |||
// Chris Gerber (@gerbercj), with the addition of persistent layers like the Planck and | |||
// Preonic keyboards by Jack Humbert. | |||
#include "atreus.h" | |||
#include "action_layer.h" | |||
#include "eeconfig.h" | |||
extern keymap_config_t keymap_config; | |||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | |||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | |||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | |||
// entirely and just use numbers. | |||
#define _DV 0 | |||
#define _QW 1 | |||
#define _CM 2 | |||
#define _L1 3 | |||
#define _L2 4 | |||
// Macro name shortcuts | |||
#define DVORAK M(_DV) | |||
#define QWERTY M(_QW) | |||
#define COLEMAK M(_CM) | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_DV] = { /* Dvorak */ | |||
{KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L }, | |||
{KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S }, | |||
{SFT_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, CTL_T(KC_DEL), KC_B, KC_M, KC_W, KC_V, SFT_T(KC_Z) }, | |||
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_EQL} | |||
}, | |||
[_QW] = { /* Qwerty */ | |||
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P }, | |||
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, | |||
{SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH) }, | |||
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT} | |||
}, | |||
[_CM] = { /* Colemak */ | |||
{KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN}, | |||
{KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O }, | |||
{SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_DEL), KC_K, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH) }, | |||
{KC_ESC, KC_TAB, KC_LGUI, MO(_L2), KC_BSPC, ALT_T(KC_ENT), KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT} | |||
}, | |||
[_L1] = { /* LAYER 1 */ | |||
{KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0 }, | |||
{KC_TAB, KC_INS, KC_UP, KC_DEL, KC_HOME, KC_NO, KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_EQL }, | |||
{KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS}, | |||
{KC_TRNS, KC_GRV, KC_LGUI, KC_TRNS, KC_DEL, KC_LALT, KC_SPC, KC_TRNS, KC_LBRC, KC_RBRC, KC_ENT } | |||
}, | |||
[_L2] = { /* LAYER 2 */ | |||
{KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN}, | |||
{KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 }, | |||
{KC_TRNS, KC_TRNS, DVORAK, QWERTY, COLEMAK, KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12 }, | |||
{KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET } | |||
} | |||
}; | |||
const uint16_t PROGMEM fn_actions[] = { | |||
}; | |||
void persistant_default_layer_set(uint16_t default_layer) { | |||
eeconfig_update_default_layer(default_layer); | |||
default_layer_set(default_layer); | |||
} | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
{ | |||
switch(id) { | |||
case _DV: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_DV); | |||
} | |||
break; | |||
case _QW: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_QW); | |||
} | |||
break; | |||
case _CM: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_CM); | |||
} | |||
break; | |||
} | |||
return MACRO_NONE; | |||
}; |
@ -0,0 +1,184 @@ | |||
#include "ergodox.h" | |||
#include "debug.h" | |||
#include "action_layer.h" | |||
#define BASE 0 // default layer | |||
#define SYMB 1 // symbols | |||
#define MDIA 2 // media keys | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* Keymap 0: Basic layer | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | \ | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | Del | ' | , | . | P | Y | L1 | | L1 | F | G | C | R | L | / | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | BkSp | A | O | E | U | I |------| |------| D | H | T | N |S / L2| - | | |||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| | |||
* | LShift |:/Ctrl| Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | App | LGui | | Alt |Ctrl/Esc| | |||
* ,------|------|------| |------+--------+------. | |||
* | | | Home | | PgUp | | | | |||
* | Space|Backsp|------| |------| Tab |Enter | | |||
* | |ace | End | | PgDn | | | | |||
* `--------------------' `----------------------' | |||
*/ | |||
// If it accepts an argument (i.e, is a function), it doesn't need KC_. | |||
// Otherwise, it needs KC_* | |||
[BASE] = KEYMAP( // layer 0 : default | |||
// left hand | |||
KC_RBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, | |||
KC_DELT, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(1), | |||
KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, | |||
KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), | |||
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, | |||
ALT_T(KC_APP), KC_LGUI, | |||
KC_HOME, | |||
KC_SPC,KC_BSPC,KC_END, | |||
// right hand | |||
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, | |||
TG(1), KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS, | |||
KC_D, KC_H, KC_T, KC_N, LT(MDIA, KC_S), KC_MINS, | |||
MEH_T(KC_NO),KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSFT, | |||
KC_UP, KC_DOWN,KC_SLSH,KC_EQL, KC_FN1, | |||
KC_LALT, CTL_T(KC_ESC), | |||
KC_PGUP, | |||
KC_PGDN,KC_TAB, KC_ENT | |||
), | |||
/* Keymap 1: Symbol Layer | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | | | | | | | | . | 0 | = | | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | | | | | | | |||
* ,------|------|------| |------+------+------. | |||
* | | | | | | | | | |||
* | | |------| |------| | | | |||
* | | | | | | | | | |||
* `--------------------' `--------------------' | |||
*/ | |||
// SYMBOLS | |||
[SYMB] = KEYMAP( | |||
// left hand | |||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, | |||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, | |||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, | |||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, | |||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, | |||
KC_TRNS,KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS,KC_TRNS,KC_TRNS, | |||
// right hand | |||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | |||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, | |||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, | |||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, | |||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS | |||
), | |||
/* Keymap 2: Media and mouse keys | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | | | | | | | | | | | | | | | | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | | | | MsUp | | | | | | | | | | | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | | | | | | | | | | | Prev | Next | | | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | | | | | | | |||
* ,------|------|------| |------+------+------. | |||
* | | | | | | |Brwser| | |||
* | | |------| |------| |Back | | |||
* | | | | | | | | | |||
* `--------------------' `--------------------' | |||
*/ | |||
// MEDIA AND MOUSE | |||
KEYMAP( | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, | |||
// right hand | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, | |||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_WBAK | |||
), | |||
}; | |||
const uint16_t PROGMEM fn_actions[] = { | |||
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) | |||
}; | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
{ | |||
// MACRODOWN only works in this function | |||
switch(id) { | |||
case 0: | |||
if (record->event.pressed) { | |||
register_code(KC_RSFT); | |||
} else { | |||
unregister_code(KC_RSFT); | |||
} | |||
break; | |||
} | |||
return MACRO_NONE; | |||
}; | |||
// Runs just one time when the keyboard initializes. | |||
void matrix_init_user(void) { | |||
}; | |||
// Runs constantly in the background, in a loop. | |||
void matrix_scan_user(void) { | |||
uint8_t layer = biton32(layer_state); | |||
ergodox_board_led_off(); | |||
ergodox_right_led_1_off(); | |||
ergodox_right_led_2_off(); | |||
ergodox_right_led_3_off(); | |||
switch (layer) { | |||
// TODO: Make this relevant to the ErgoDox EZ. | |||
case 1: | |||
ergodox_right_led_1_on(); | |||
break; | |||
case 2: | |||
ergodox_right_led_2_on(); | |||
break; | |||
default: | |||
// none | |||
break; | |||
} | |||
}; |
@ -0,0 +1,311 @@ | |||
#include "ergodox.h" | |||
#include "debug.h" | |||
#include "action_layer.h" | |||
extern keymap_config_t keymap_config; | |||
#define _DVORAK 0 // default layer | |||
#define _QWERTY 1 // symbols | |||
#define _LOWER 2 | |||
#define _RAISE 3 | |||
#define _ADJUST 16 | |||
// Fillers to make layering more clear | |||
#define _______ KC_TRNS | |||
#define XXXXXXX KC_NO | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* | |||
* Keymap 0: Dvorak | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | ] | 1 | 2 | 3 | 4 | 5 | Esc | | ESC | 6 | 7 | 8 | 9 | 0 | [ | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | Tab | ' | , | . | Y | Y |(Null)| |(Null)| F | G | C | R | L | \ | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | | |||
* |--------+------+------+------+------+------| FN1 | | FN2 |------+------+------+------+------+--------| | |||
* | LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | LCtr | LAlt | | Ralt | RCtr | | |||
* ,------|------|------| |------+------+------. | |||
* | | | Home | | PgUp | | | | |||
* | BkSp | Del |------| |------| Enter| Space| | |||
* | | | End | | PgDn | | | | |||
* `--------------------' `--------------------' | |||
* | |||
* | |||
***************************************************************************************************** | |||
* This Dvorak keyboard layout stems from my early Kinesis years, using the Contour PS/2 with a Dvorak | |||
* software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the cor- | |||
* ner keys. I've decided to continue using this layout with my ErgoDox. | |||
*/ | |||
[_DVORAK] = ( | |||
KC_RBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, | |||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, XXXXXXX, | |||
KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, | |||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, LOWER, | |||
KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, | |||
KC_LCTL, KC_LALT, | |||
KC_HOME, | |||
KC_BSPC, KC_DEL, KC_END, | |||
// right hand | |||
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, | |||
NO, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS, | |||
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, | |||
RAISE, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, | |||
KC_UP, KC_DOWN, KC_SLSH, KC_EQL, KC_RGUI, | |||
KC_RALT, KC_RCTL, | |||
KC_PGUP, | |||
KC_PGDN, KC_ENT, KC_SPC | |||
), | |||
/* Keymap 1: QWERTY | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | | |||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| | |||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | App | LGui | | Alt |Ctrl/Esc| | |||
* ,------|------|------| |------+--------+------. | |||
* | | | Home | | PgUp | | | | |||
* | Space|Backsp|------| |------| Tab |Enter | | |||
* | |ace | End | | PgDn | | | | |||
* `--------------------' `----------------------' | |||
*/ | |||
[_QWERTY] = ( | |||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, | |||
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, | |||
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, | |||
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, LOWER, | |||
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, | |||
{ALT_T(KC_APP), KC_LGUI, | |||
KC_HOME, | |||
KC_SPC,KC_BSPC,KC_END, | |||
// right hand | |||
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | |||
KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, | |||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), | |||
RAISE, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, | |||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, | |||
KC_LALT, CTL_T(KC_ESC), | |||
KC_PGUP, | |||
KC_PGDN,KC_TAB, KC_ENT | |||
), | |||
/* Lower 2: Symbol Layer | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | | | | | | | | . | 0 | = | | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | | | | | | | |||
* ,------|------|------| |------+------+------. | |||
* | | | | | | | | | |||
* | | |------| |------| | | | |||
* | | | | | | | | | |||
* `--------------------' `--------------------' | |||
*/ | |||
[_LOWER] = ( | |||
// left hand | |||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, | |||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, | |||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, | |||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, | |||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, | |||
KC_TRNS,KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS,KC_TRNS,KC_TRNS, | |||
// right hand | |||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | |||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, | |||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, | |||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, | |||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS | |||
), | |||
/* Raise 3: Media and mouse keys | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | | | | | | | | | | | | | | | | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | | | | MsUp | | | | | | | | | | | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | | | | | | | | | | | Prev | Next | | | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | | | | | | | |||
* ,------|------|------| |------+------+------. | |||
* | | | | | | |Brwser| | |||
* | | |------| |------| |Back | | |||
* | | | | | | | | | |||
* `--------------------' `--------------------' | |||
*/ | |||
// MEDIA AND MOUSE | |||
[_RAISE] = ( | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, | |||
// right hand | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, | |||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_WBAK | |||
), | |||
/* Adjust 16: Lower + Raise | |||
* | |||
* ,--------------------------------------------------. ,--------------------------------------------------. | |||
* | | Reset| | | | | | | | | | | | | | | |||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | |||
* | | | | | | | | | | | | | | | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | | | | | |------| |------| |Dvorak|Qwerty| | | | | |||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | |||
* | | | | | | | | | | | | | | | | | |||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | |||
* | | | | | | | | | | | | | |||
* `----------------------------------' `----------------------------------' | |||
* ,-------------. ,-------------. | |||
* | | | | | | | |||
* ,------|------|------| |------+------+------. | |||
* | | | | | | | | | |||
* | | |------| |------| | | | |||
* | | | | | | | | | |||
* `--------------------' `--------------------' | |||
*/ | |||
// MEDIA AND MOUSE | |||
[_ADJUST] = ( | |||
KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, | |||
// right hand | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, QWERTY, DVORAK, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, | |||
KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS | |||
), | |||
}; | |||
const uint16_t PROGMEM fn_actions[] = { | |||
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) | |||
}; | |||
void persistant_default_layer_set(uint16_t default_layer) { | |||
eeconfig_update_default_layer(default_layer); | |||
default_layer_set(default_layer); | |||
} | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
{ | |||
switch(id) { | |||
case _DVORAK: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_DVORAK); | |||
} | |||
break; | |||
case _QWERTY: | |||
if (record->event.pressed) { | |||
persistant_default_layer_set(1UL<<_QWERTY); | |||
} | |||
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); | |||
} | |||
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); | |||
} | |||
break; | |||
} | |||
return MACRO_NONE; | |||
}; | |||
// Runs just one time when the keyboard initializes. | |||
void matrix_init_user(void) { | |||
}; | |||
// Runs constantly in the background, in a loop. | |||
void matrix_scan_user(void) { | |||
uint8_t layer = biton32(layer_state); | |||
ergodox_board_led_off(); | |||
ergodox_right_led_1_off(); | |||
ergodox_right_led_2_off(); | |||
ergodox_right_led_3_off(); | |||
switch (layer) { | |||
// TODO: Make this relevant to the ErgoDox EZ. | |||
case 1: | |||
ergodox_right_led_1_on(); | |||
break; | |||
case 2: | |||
ergodox_right_led_2_on(); | |||
break; | |||
default: | |||
// none | |||
break; | |||
} | |||
}; |
@ -0,0 +1,10 @@ | |||
# ErgoDox EZ Default Configuration | |||
## Changelog | |||
* Feb 2, 2016 (V1.1): | |||
* Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). | |||
This is what we ship with out of the factory. :) The image says it all: | |||
![Default](default_highres.png) |
@ -0,0 +1,2 @@ | |||
# Zrevyx's Planck Layout | |||
@ -0,0 +1,379 @@ | |||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard, | |||
// this is the style you want to emulate. | |||
#include "planck.h" | |||
#include "action_layer.h" | |||
#ifdef AUDIO_ENABLE | |||
#include "audio.h" | |||
#endif | |||
#include "eeconfig.h" | |||
extern keymap_config_t keymap_config; | |||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | |||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | |||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | |||
// entirely and just use numbers. | |||
#define _QWERTY 0 | |||
#define _COLEMAK 1 | |||
#define _DVORAK 2 | |||
#define _LOWER 3 | |||
#define _RAISE 4 | |||
#define _MUSIC 5 | |||
#define _PLOVER 6 | |||
#define _ADJUST 16 | |||
// Macro name shortcuts | |||
#define QWERTY M(_QWERTY) | |||
#define COLEMAK M(_COLEMAK) | |||
#define DVORAK M(_DVORAK) | |||
#define LOWER M(_LOWER) | |||
#define RAISE M(_RAISE) | |||
#define M_BL 5 | |||
#define AUD_OFF M(6) | |||
#define AUD_ON M(7) | |||
#define MUS_OFF M(8) | |||
#define MUS_ON M(9) | |||
#define VC_IN M(10) | |||
#define VC_DE M(11) | |||
#define PLOVER M(12) | |||
#define EXT_PLV M(13) | |||
// Fillers to make layering more clear | |||
#define _______ KC_TRNS | |||
#define XXXXXXX KC_NO | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* Qwerty | |||
* ,-----------------------------------------------------------------------------------. | |||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Esc | 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] = { | |||
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, | |||
{KC_ESC, 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 }, | |||
{M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | |||
}, | |||
/* 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] = { | |||
{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 }, | |||
{M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | |||
}, | |||
/* Dvorak | |||
* ,-----------------------------------------------------------------------------------. | |||
* | Tab | " | , | . | P | Y | F | G | C | R | L | / | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Esc | A | O | E | U | I | D | H | T | N | S | - | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z | Shift| | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Ctrl | Alt | Left |Right |Lower | Bksp |Space |Raise | Up | Down | GUI |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_DVORAK] = { | |||
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH}, | |||
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, | |||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, | |||
{KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_UP, KC_DOWN, KC_RGUI, KC_ENT } | |||
}, | |||
/* Lower | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Mute | Vol- | Vol+ | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Del | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_LOWER] = { | |||
{KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______}, | |||
{KC_CAPS, 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_MUTE, KC_VOLD, KC_VOLU, _______, _______}, | |||
{M(M_BL), _______, KC_HOME, KC_END, _______, KC_DEL, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} | |||
}, | |||
/* Raise | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Prev | Play | Next | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Del | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_RAISE] = { | |||
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______}, | |||
{KC_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______}, | |||
{M(M_BL), _______, KC_HOME, KC_END, _______, KC_DEL, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} | |||
}, | |||
/* Music (reserved for process_action_user) | |||
* | |||
*/ | |||
[_MUSIC] = { | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} | |||
}, | |||
/* 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] = { | |||
{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| | | | | | | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | | | | | | | | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_ADJUST] = { | |||
{_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, | |||
{_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, | |||
{_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, | |||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |||
} | |||
}; | |||
const uint16_t PROGMEM fn_actions[] = { | |||
}; | |||
#ifdef AUDIO_ENABLE | |||
float tone_startup[][2] = { | |||
{440.0*pow(2.0,(31)/12.0), 12}, | |||
{440.0*pow(2.0,(28)/12.0), 8}, | |||
{440.0*pow(2.0,(19)/12.0), 8}, | |||
{440.0*pow(2.0,(24)/12.0), 8}, | |||
{440.0*pow(2.0,(28)/12.0), 20} | |||
}; | |||
float tone_qwerty[][2] = SONG(QWERTY_SOUND); | |||
float tone_dvorak[][2] = SONG(DVORAK_SOUND); | |||
float tone_colemak[][2] = SONG(COLEMAK_SOUND); | |||
float tone_plover[][2] = SONG(PLOVER_SOUND); | |||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); | |||
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); | |||
float goodbye[][2] = SONG(GOODBYE_SOUND); | |||
#endif | |||
void persistant_default_layer_set(uint16_t default_layer) { | |||
eeconfig_update_default_layer(default_layer); | |||
default_layer_set(default_layer); | |||
} | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
{ | |||
switch(id) { | |||
case _QWERTY: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_qwerty, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_QWERTY); | |||
} | |||
break; | |||
case _COLEMAK: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_colemak, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_COLEMAK); | |||
} | |||
break; | |||
case _DVORAK: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_dvorak, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_DVORAK); | |||
} | |||
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); | |||
} | |||
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); | |||
} | |||
break; | |||
case M_BL: | |||
if (record->event.pressed) { | |||
register_code(KC_RSFT); | |||
#ifdef BACKLIGHT_ENABLE | |||
backlight_step(); | |||
#endif | |||
} else { | |||
unregister_code(KC_RSFT); | |||
} | |||
break; | |||
case 6: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
audio_off(); | |||
#endif | |||
} | |||
break; | |||
case 7: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
audio_on(); | |||
PLAY_NOTE_ARRAY(tone_startup, false, 0); | |||
#endif | |||
} | |||
break; | |||
case 8: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
layer_off(_MUSIC); | |||
stop_all_notes(); | |||
#endif | |||
} | |||
break; | |||
case 9: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
layer_on(_MUSIC); | |||
#endif | |||
} | |||
break; | |||
case 10: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
voice_iterate(); | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
#endif | |||
} | |||
break; | |||
case 11: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
voice_deiterate(); | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
#endif | |||
} | |||
break; | |||
case 12: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_plover, false, 0); | |||
#endif | |||
layer_off(_RAISE); | |||
layer_off(_LOWER); | |||
layer_off(_ADJUST); | |||
layer_off(_MUSIC); | |||
stop_all_notes(); | |||
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); | |||
} | |||
break; | |||
case 13: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); | |||
#endif | |||
layer_off(_PLOVER); | |||
} | |||
break; | |||
} | |||
return MACRO_NONE; | |||
}; | |||
void matrix_init_user(void) { | |||
#ifdef AUDIO_ENABLE | |||
_delay_ms(20); // stops the tick | |||
PLAY_NOTE_ARRAY(tone_startup, false, 0); | |||
#endif | |||
} | |||
#ifdef AUDIO_ENABLE | |||
void play_goodbye_tone() | |||
{ | |||
PLAY_NOTE_ARRAY(goodbye, false, 0); | |||
_delay_ms(150); | |||
} | |||
uint8_t starting_note = 0x0C; | |||
int offset = 7; | |||
void process_action_user(keyrecord_t *record) { | |||
if (IS_LAYER_ON(_MUSIC)) { | |||
if (record->event.pressed) { | |||
play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); | |||
} else { | |||
stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); | |||
} | |||
} | |||
} | |||
#endif |
@ -0,0 +1,2 @@ | |||
AUDIO_ENABLE = yes | |||
NKRO_ENABLE = yes |
@ -0,0 +1,49 @@ | |||
# The default Preonic layout - largely based on the Planck's | |||
## QWERTY Layer: | |||
/* 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 | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | - | A | S | D | F | G | H | J | K | L | ; | " | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Ctrl | Alt | Left |Right |Lower | Space |Raise | Up | Down | GUI |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
## LOWER Layer: | |||
/* Lower | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Mute | Vol- | Vol+ | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
## RAISE Layer: | |||
/* Raise | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Prev | Play | Next | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ |
@ -0,0 +1,342 @@ | |||
#include "preonic.h" | |||
#include "action_layer.h" | |||
#include "eeconfig.h" | |||
#ifdef AUDIO_ENABLE | |||
#include "audio.h" | |||
#endif | |||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | |||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | |||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | |||
// entirely and just use numbers. | |||
#define _QWERTY 0 | |||
#define _COLEMAK 1 | |||
#define _DVORAK 2 | |||
#define _LOWER 3 | |||
#define _RAISE 4 | |||
#define _MUSIC 5 | |||
#define _ADJUST 16 | |||
// Macro name shortcuts | |||
#define QWERTY M(_QWERTY) | |||
#define COLEMAK M(_COLEMAK) | |||
#define DVORAK M(_DVORAK) | |||
#define LOWER M(_LOWER) | |||
#define RAISE M(_RAISE) | |||
#define M_BL 5 | |||
#define AUD_OFF M(6) | |||
#define AUD_ON M(7) | |||
#define MUS_OFF M(8) | |||
#define MUS_ON M(9) | |||
#define VC_IN M(10) | |||
#define VC_DE M(11) | |||
// Fillers to make layering more clear | |||
#define _______ KC_TRNS | |||
#define XXXXXXX KC_NO | |||
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 | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | - | A | S | D | F | G | H | J | K | L | ; | " | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Ctrl | Alt | Left |Right |Lower | Space |Raise | Up | Down | GUI |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_QWERTY] = { | |||
{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_MINS, 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_RSFT}, | |||
{KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER, KC_SPC, KC_SPC, RAISE, KC_UP, KC_DOWN, KC_RGUI, KC_ENT } | |||
}, | |||
/* 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] = { | |||
{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 }, | |||
{M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | |||
}, | |||
/* Dvorak | |||
* ,-----------------------------------------------------------------------------------. | |||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Tab | " | , | . | P | Y | F | G | C | R | L | / | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Esc | A | O | E | U | I | D | H | T | N | S | - | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z | Shift| | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Ctrl | Alt | Left |Right |Lower | Space |Raise | Up | Down | GUI |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_DVORAK] = { | |||
{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_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH}, | |||
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, | |||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, | |||
{KC_LCTL, KC_LALT, KC_LEFT, KC_RGHT, LOWER, KC_SPC, KC_SPC, RAISE, KC_UP, KC_DOWN, KC_RGUI, KC_ENT } | |||
}, | |||
/* Lower | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Mute | Vol- | Vol+ | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_LOWER] = { | |||
{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_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, | |||
{KC_CAPS, 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_MUTE, KC_VOLD, KC_VOLU, _______, _______}, | |||
{M(M_BL), _______, KC_HOME, KC_END, _______, KC_INS, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} | |||
}, | |||
/* Raise | |||
* ,-----------------------------------------------------------------------------------. | |||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | | F7 | F8 | F9 | F10 | F11 | F12 | | Prev | Play | Next | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | Brite| | Home | End | | Ins | | PgUp | PgDN | |Enter | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_RAISE] = { | |||
{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_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, | |||
{KC_CAPS, 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_MPRV, KC_MPLY, KC_MNXT, _______, _______}, | |||
{M(M_BL), _______, KC_HOME, KC_END, _______, KC_INS, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} | |||
}, | |||
/* Music (reserved for process_action_user) | |||
* | |||
*/ | |||
[_MUSIC] = { | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | |||
{XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} | |||
}, | |||
/* Adjust (Lower + Raise) | |||
* ,-----------------------------------------------------------------------------------. | |||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | | Reset| | | | | | | | | | Del | | |||
* |------+------+------+------+------+-------------+------+------+------+------+------| | |||
* | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | |||
* |------+------+------+------+------+------|------+------+------+------+------+------| | |||
* | |Voice-|Voice+|Musoff|Mus on| | | | | | | | | |||
* |------+------+------+------+------+------+------+------+------+------+------+------| | |||
* | | | | | | | | | | | | | |||
* `-----------------------------------------------------------------------------------' | |||
*/ | |||
[_ADJUST] = { | |||
{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, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, | |||
{_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, | |||
{_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, | |||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |||
} | |||
}; | |||
const uint16_t PROGMEM fn_actions[] = { | |||
}; | |||
#ifdef AUDIO_ENABLE | |||
float start_up[][2] = { | |||
{440.0*pow(2.0,(14)/12.0), 20}, | |||
{440.0*pow(2.0,(26)/12.0), 8}, | |||
{440.0*pow(2.0,(18)/12.0), 20}, | |||
{440.0*pow(2.0,(26)/12.0), 8} | |||
}; | |||
float tone_qwerty[][2] = SONG(QWERTY_SOUND); | |||
float tone_dvorak[][2] = SONG(DVORAK_SOUND); | |||
float tone_colemak[][2] = SONG(COLEMAK_SOUND); | |||
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); | |||
float goodbye[][2] = SONG(GOODBYE_SOUND); | |||
#endif | |||
void persistant_default_layer_set(uint16_t default_layer) { | |||
eeconfig_update_default_layer(default_layer); | |||
default_layer_set(default_layer); | |||
} | |||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
{ | |||
switch(id) { | |||
case _QWERTY: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_qwerty, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_QWERTY); | |||
} | |||
break; | |||
case _COLEMAK: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_colemak, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_COLEMAK); | |||
} | |||
break; | |||
case _DVORAK: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(tone_dvorak, false, 0); | |||
#endif | |||
persistant_default_layer_set(1UL<<_DVORAK); | |||
} | |||
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); | |||
} | |||
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); | |||
} | |||
break; | |||
case M_BL: | |||
if (record->event.pressed) { | |||
register_code(KC_RSFT); | |||
#ifdef BACKLIGHT_ENABLE | |||
backlight_step(); | |||
#endif | |||
} else { | |||
unregister_code(KC_RSFT); | |||
} | |||
break; | |||
case 6: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
audio_off(); | |||
#endif | |||
} | |||
break; | |||
case 7: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
audio_on(); | |||
PLAY_NOTE_ARRAY(start_up, false, 0); | |||
#endif | |||
} | |||
break; | |||
case 8: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
layer_off(_MUSIC); | |||
stop_all_notes(); | |||
#endif | |||
} | |||
break; | |||
case 9: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
layer_on(_MUSIC); | |||
#endif | |||
} | |||
break; | |||
case 10: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
voice_iterate(); | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
#endif | |||
} | |||
break; | |||
case 11: | |||
if (record->event.pressed) { | |||
#ifdef AUDIO_ENABLE | |||
voice_deiterate(); | |||
PLAY_NOTE_ARRAY(music_scale, false, 0); | |||
#endif | |||
} | |||
break; | |||
} | |||
return MACRO_NONE; | |||
}; | |||
void matrix_init_user(void) { | |||
#ifdef AUDIO_ENABLE | |||
_delay_ms(20); // gets rid of tick | |||
PLAY_NOTE_ARRAY(start_up, false, 0); | |||
#endif | |||
} | |||
#ifdef AUDIO_ENABLE | |||
uint8_t starting_note = 0x0C; | |||
int offset = 7; | |||
void process_action_user(keyrecord_t *record) { | |||
if (IS_LAYER_ON(_MUSIC)) { | |||
if (record->event.pressed) { | |||
play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); | |||
} else { | |||
stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); | |||
} | |||
} | |||
} | |||
void play_goodbye_tone() | |||
{ | |||
PLAY_NOTE_ARRAY(goodbye, false, 0); | |||
_delay_ms(150); | |||
} | |||
#endif |
@ -0,0 +1 @@ | |||
AUDIO_ENABLE = yes |