diff options
| -rw-r--r-- | keyboard/atomic/atomic.c | 31 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/config.h | 10 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/keymap.c | 665 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/makefile.mk | 2 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/pvc_planck.c | 24 | ||||
| -rw-r--r-- | keyboard/retro_refit/retro_refit.c | 32 | ||||
| -rw-r--r-- | quantum/audio.c | 15 | ||||
| -rw-r--r-- | quantum/audio.h | 2 | ||||
| -rw-r--r-- | quantum/keymap_common.c | 14 | ||||
| -rw-r--r-- | quantum/musical_notes.h | 5 | ||||
| -rw-r--r-- | quantum/song_list.h | 104 | ||||
| -rw-r--r-- | tmk_core/common/avr/suspend.c | 12 | ||||
| -rw-r--r-- | tmk_core/common/command.c | 7 | 
13 files changed, 599 insertions, 324 deletions
| diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index 30e8122893..5e31264e68 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c @@ -2,12 +2,22 @@  __attribute__ ((weak))  void matrix_init_user(void) { -	// leave these blank -} +	// leave this function blank - it can be defined in a keymap file +};  __attribute__ ((weak))  void matrix_scan_user(void) { -	// leave these blank +	// leave this function blank - it can be defined in a keymap file +} + +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) { +	// leave this function blank - it can be defined in a keymap file +} + +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) { +	// leave this function blank - it can be defined in a keymap file  }  void matrix_init_kb(void) { @@ -33,4 +43,17 @@ void matrix_scan_kb(void) {  	// runs every cycle (a lot)  	matrix_scan_user(); -}
\ No newline at end of file +} + +void process_action_kb(keyrecord_t *record) { +	// put your per-action keyboard code here +	// runs for every action, just before processing by the firmware + +	process_action_user(record); +} + +void led_set_kb(uint8_t usb_led) { +	// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + +	led_set_user(usb_led); +} diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index 8449fa06de..cb0b78e447 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -41,7 +41,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.   * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)   *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)   * -*/  +*/  #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }  #define ROWS (int []){ D0, D5, B5, B6, B3 } @@ -62,17 +62,17 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  /* Locking resynchronize hack */  #define LOCKING_RESYNC_ENABLE -/*  +/*   * Force NKRO   * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved  + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved   * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the   * makefile for this to work.)   *   * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)   * until the next keyboard reset.   * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is  + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is   * fully operational during normal computer usage.   *   * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) @@ -90,7 +90,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.   * the keyboard. They are best used in combination with the HID Listen program,   * found here: https://www.pjrc.com/teensy/hid_listen.html   * - * The options below allow the magic key functionality to be changed. This is  + * The options below allow the magic key functionality to be changed. This is   * useful if your keyboard/keypad is missing keys and you want magic key support.   *   */ diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index aaef6b041d..36098f1eba 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -1,36 +1,78 @@  #include "atomic.h"  #include "action_layer.h" +#include "eeconfig.h" +#include "led.h"  #ifdef AUDIO_ENABLE -#include "audio.h" -#include "song_list.h" +    #include "audio.h" +    #include "song_list.h"  #endif - -#define _QW 0 -#define _LW 1 -#define _RS 2 -#define _AD 3 -#define _FN 4 - -#define M_QW 0 -#define M_LW 1 -#define M_RS 2 -#define M_FN 3 -#define M_T1 4 -#define M_T2 5 -#define M_T3 6 -#define M_T4 7 -#define M_TU 8 -#define M_TD 9 -#define M_DF 10 - - -#define _______ KC_TRNS -#define ___T___ KC_TRNS -#define XXXXXXX KC_NO - -/* +#define LAYER_QWERTY         0 +#define LAYER_COLEMAK        1 +#define LAYER_DVORAK         2 +#define LAYER_LOWER          3 +#define LAYER_RAISE          4 +#define LAYER_ADJUST         5 +#define LAYER_FUNCTION       6 +#define LAYER_MUSIC          7 + +#define MACRO_QWERTY         0 +#define MACRO_COLEMAK        1 +#define MACRO_DVORAK         2 +#define MACRO_LOWER          3 +#define MACRO_RAISE          4 +#define MACRO_FUNCTION       5 +#define MACRO_TIMBRE_1       6 +#define MACRO_TIMBRE_2       7 +#define MACRO_TIMBRE_3       8 +#define MACRO_TIMBRE_4       9 +#define MACRO_TEMPO_U       10 +#define MACRO_TEMPO_D       11 +#define MACRO_TONE_DEFAULT  12 +#define MACRO_MUSIC_ON      13 +#define MACRO_MUSIC_OFF     14 +#define MACRO_AUDIO_ON      15 +#define MACRO_AUDIO_OFF     16 + +#define M_QWRTY             M(MACRO_QWERTY) +#define M_COLMK             M(MACRO_COLEMAK) +#define M_DVORK             M(MACRO_DVORAK) +#define M_LOWER             M(MACRO_LOWER) +#define M_RAISE             M(MACRO_RAISE) +#define M_FUNCT             M(MACRO_FUNCTION) +#define TIMBR_1             M(MACRO_TIMBRE_1) +#define TIMBR_2             M(MACRO_TIMBRE_2) +#define TIMBR_3             M(MACRO_TIMBRE_3) +#define TIMBR_4             M(MACRO_TIMBRE_4) +#define TMPO_UP             M(MACRO_TEMPO_U) +#define TMPO_DN             M(MACRO_TEMPO_D) +#define TMPO_DF             M(MACRO_TONE_DEFAULT) + + +#define MUS_ON              M(MACRO_MUSIC_ON) +#define MUS_OFF             M(MACRO_MUSIC_OFF) +#define AUD_OFF             M(MACRO_AUDIO_OFF) +#define AUD_ON              M(MACRO_AUDIO_ON) + + +#define SC_UNDO             LCTL(KC_Z) +#define SC_REDO             LCTL(KC_Y) +#define SC_CUT              LCTL(KC_X) +#define SC_COPY             LCTL(KC_C) +#define SC_PSTE             LCTL(KC_V) +#define SC_SELA             LCTL(KC_A) +#define SC_SAVE             LCTL(KC_S) +#define SC_OPEN             LCTL(KC_O) +#define SC_ACLS             LALT(KC_F4) +#define SC_CCLS             LCTL(KC_F4) + + +#define _______             KC_TRNS +#define ___T___             KC_TRNS +#define XXXXXXX             KC_NO + +/* QWERTY   * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.   * | ESC    | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | -      | =      | XXXXXX . BACKSP |   * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| @@ -45,270 +87,383 @@   */  const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* QWERTY */ + [LAYER_QWERTY] = { /* QWERTY */    { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, XXXXXXX  },    { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, 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_ENT,  XXXXXXX, KC_PGUP  },    { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, XXXXXXX, KC_UP,   KC_PGDN  }, -  { KC_LCTL, KC_LGUI, M(M_FN), KC_LALT, M(M_RS), KC_SPC,  XXXXXXX, M(M_LW), KC_RALT, KC_HOME, KC_END,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT  }, +  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  XXXXXXX, M_LOWER, KC_RALT, KC_HOME, KC_END,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT  }, + }, + + /* COLEMAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC    | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | -      | =      | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB    | Q      | W      | F      | P      | G      | J      | L      | U      | Y      | ;      | [      | ]      | \      | DEL    | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS   | A      | R      | S      | T      | D      | H      | N      | E      | I      | O      | '      | XXXXXX . ENTER  | PG UP  | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z      | X      | C      | V      | B      | K      | M      | ,      | .      | /      | XXXXXX . RSHIFT | UP     | PG DN  | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL  | LWIN   | FN     | LALT   | RAISED | XXXXXX . SPACE  | LOWER  | RALT   | HOME   | END    | RCTRL  | LEFT   | DOWN   | RIGHT  | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_COLEMAK] = { /* COLEMAK */ +  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, 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_LBRC, KC_RBRC, KC_BSLS, KC_DEL   }, +  { KC_CAPS, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, KC_ENT,  KC_ENT,  KC_PGUP  }, +  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,   KC_PGDN  }, +  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  XXXXXXX, M_LOWER, KC_RALT, KC_HOME, KC_END,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT  },   }, - [_LW] = { /* LOWERED */ + +/* DVORAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC    | 1      | 2      | 3      | 4      | 5      | 6      | 7      | 8      | 9      | 0      | [      | ]      | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB    | '      | ,      | .      | P      | Y      | F      | G      | C      | R      | L      | /      | =      | \      | DEL    | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS   | A      | O      | E      | U      | I      | D      | H      | T      | N      | S      | -      | XXXXXX . ENTER  | PG UP  | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ;      | Q      | J      | K      | X      | B      | M      | W      | V      | Z      | XXXXXX . RSHIFT | UP     | PG DN  | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL  | LWIN   | FN     | LALT   | RAISED | XXXXXX . SPACE  | LOWER  | RALT   | HOME   | END    | RCTRL  | LEFT   | DOWN   | RIGHT  | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_DVORAK] = { /* DVORAK */ +  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC, KC_BSPC, 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_EQL,  KC_BSLS, KC_DEL   }, +  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_MINS, KC_ENT,  KC_ENT,  KC_PGUP  }, +  { 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_RSFT, KC_UP,   KC_PGDN  }, +  { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC,  XXXXXXX, M_LOWER, KC_RALT, KC_HOME, KC_END,  KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT  }, + }, + + + [LAYER_LOWER] = { /* LOWERED */    { KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___, ___T___  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS   }, +  { _______, _______, _______, _______, SC_CCLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS   },    { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  }, +  { _______, SC_REDO, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, +  { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______  },   }, - [_RS] = { /* RAISED */ + + [LAYER_RAISE] = { /* RAISED */    { KC_TILD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___, ___T___  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS   }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  }, +  { _______, _______, _______, _______, SC_ACLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS   }, +  { _______, SC_SELA, SC_SAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  }, +  { _______, SC_UNDO, SC_CUT,  SC_COPY, SC_PSTE, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, +  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, _______, _______  },   }, - [_FN] = { /* FUNCTION */ + + [LAYER_FUNCTION] = { /* FUNCTION */    { KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___, ___T___  },    { KC_SLCK, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_PAUS, KC_PSCR  },    { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U  }, -  { _______, M(M_T1), M(M_T2), M(M_T3), M(M_T4), M(M_TU), M(M_TD), M(M_DF), _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D  }, +  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D  },    { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R  },   }, - [_AD] = { /* ADJUST */ + + [LAYER_ADJUST] = { /* ADJUST */ +  { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON,  MUS_OFF, AUD_ON,  AUD_OFF, ___T___, ___T___  }, +  { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  }, +  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  }, +  { _______, _______, _______, _______, _______, RESET,   _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, +  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, _______, _______  }, + }, + + [LAYER_MUSIC] = {    { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___  },    { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },    { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  },    { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  }, -  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  }, +  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, _______, _______  },   },  }; - -  #ifdef AUDIO_ENABLE -float start_up[][2] = SONG(ODE_TO_JOY); - -float tone_lw[][2] = { - -	Q__NOTE(_C4   ) , -	Q__NOTE(_CS4  ) , -	Q__NOTE(_D4   ) , -	Q__NOTE(_DS4  ) , -	Q__NOTE(_E4   ) , -	Q__NOTE(_F4   ) , -	Q__NOTE(_FS4  ) , -	Q__NOTE(_G4   ) , -	Q__NOTE(_GS4  ) , -	Q__NOTE(_A4   ) , -	Q__NOTE(_AS4  ) , - -	Q__NOTE(_B1   ) , - -	Q__NOTE(_C2   ) , -	Q__NOTE(_CS2  ) , -	Q__NOTE(_D2   ) , -	Q__NOTE(_DS2  ) , -	Q__NOTE(_E2   ) , -	Q__NOTE(_F2   ) , -	Q__NOTE(_FS2  ) , -	Q__NOTE(_G2   ) , -	Q__NOTE(_GS2  ) , -	Q__NOTE(_A2   ) , -	Q__NOTE(_AS2  ) , -	Q__NOTE(_B2   ) , -	Q__NOTE(_C3   ) , -	Q__NOTE(_CS3  ) , -	Q__NOTE(_D3   ) , -	Q__NOTE(_DS3  ) , -	Q__NOTE(_E3   ) , -	Q__NOTE(_F3   ) , -	Q__NOTE(_FS3  ) , -	Q__NOTE(_G3   ) , -	Q__NOTE(_GS3  ) , -	Q__NOTE(_A3   ) , -	Q__NOTE(_AS3  ) , -	Q__NOTE(_B3   ) , -	Q__NOTE(_C4   ) , -	Q__NOTE(_CS4  ) , -	Q__NOTE(_D4   ) , -	Q__NOTE(_DS4  ) , -	Q__NOTE(_E4   ) , -	Q__NOTE(_F4   ) , -	Q__NOTE(_FS4  ) , -	Q__NOTE(_G4   ) , -	Q__NOTE(_GS4  ) , -	Q__NOTE(_A4   ) , -	Q__NOTE(_AS4  ) , -	Q__NOTE(_B4   ) , -	Q__NOTE(_C5   ) , -	Q__NOTE(_CS5  ) , -	Q__NOTE(_D5   ) , -	Q__NOTE(_DS5  ) , -	Q__NOTE(_E5   ) , -	Q__NOTE(_F5   ) , -	Q__NOTE(_FS5  ) , -	Q__NOTE(_G5   ) , -	Q__NOTE(_GS5  ) , -	Q__NOTE(_A5   ) , -	Q__NOTE(_AS5  ) , -	Q__NOTE(_B5   ) , -	Q__NOTE(_C6   ) , -	Q__NOTE(_CS6  ) , -	Q__NOTE(_D6   ) , -	Q__NOTE(_DS6  ) , -	Q__NOTE(_E6   ) , -	Q__NOTE(_F6   ) , -	Q__NOTE(_FS6  ) , -	Q__NOTE(_G6   ) , -	Q__NOTE(_GS6  ) , -	Q__NOTE(_A6   ) , -	Q__NOTE(_AS6  ) , -	Q__NOTE(_B6   ) , -	Q__NOTE(_C7   ) , -	Q__NOTE(_CS7  ) , -	Q__NOTE(_D7   ) , -	Q__NOTE(_DS7  ) , -	Q__NOTE(_E7   ) , -	Q__NOTE(_F7   ) , -	Q__NOTE(_FS7  ) , -	Q__NOTE(_G7   ) , -	Q__NOTE(_GS7  ) , -	Q__NOTE(_A7   ) , -	Q__NOTE(_AS7  ) , -	Q__NOTE(_B7   ) , -	Q__NOTE(_C8   ) , -	Q__NOTE(_CS8  ) , -	Q__NOTE(_D8   ) , -	Q__NOTE(_DS8  ) , -	Q__NOTE(_E8   ) , -	Q__NOTE(_F8   ) , -	Q__NOTE(_FS8  ) , -	Q__NOTE(_G8   ) , -	Q__NOTE(_GS8  ) , -	Q__NOTE(_A8   ) , -	Q__NOTE(_AS8  ) , -	Q__NOTE(_B8   ) , -}; +float tone_my_startup[][2] = SONG(ODE_TO_JOY); +float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); -float tone_rs[][2] = SONG(ROCK_A_BYE_BABY); +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(COLEMAK_SOUND); +float tone_colemak[][2]    = SONG(DVORAK_SOUND); -void matrix_init_user(void) { -	init_notes(); -	PLAY_NOTE_ARRAY(start_up, false, STACCATO); -	println("Matrix Init"); -} - -#endif +float tone_audio_on[][2]   = SONG(CLOSE_ENCOUNTERS_5_NOTE); +float tone_music_on[][2]   = SONG(DOE_A_DEER); +float tone_caps_on[][2]    = SONG(CAPS_LOCK_ON_SOUND); +float tone_caps_off[][2]   = SONG(CAPS_LOCK_OFF_SOUND); +float tone_numlk_on[][2]   = SONG(NUM_LOCK_ON_SOUND); +float tone_numlk_off[][2]  = SONG(NUM_LOCK_OFF_SOUND); +float tone_scroll_on[][2]  = SONG(SCROLL_LOCK_ON_SOUND); +float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); +#endif /* AUDIO_ENABLE */ +/*  void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)  { -	if (order) -	{ -		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) -		{ -			layer_on(layer3); -		} -		else -		{ -		    layer_off(layer3); -		    layer_off(layer4); -		} -	} -	else -	{ -		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) -		{ -			layer_on(layer4); -		} -		else -		{ -			layer_off(layer3); -		    layer_off(layer4); -		} -	} +    if (order) +    { +        if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) +        { +            layer_on(layer3); +        } +        else +        { +            layer_off(layer3); +            layer_off(layer4); +        } +    } +    else +    { +        if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) +        { +            layer_on(layer4); +        } +        else +        { +            layer_off(layer3); +            layer_off(layer4); +        } +    }  } +*/ +void persistant_default_layer_set(uint16_t default_layer) +{ +    eeconfig_write_default_layer(default_layer); +    default_layer_set(default_layer); +}  const uint16_t PROGMEM fn_actions[] = {  }; -  const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)  { -	// MACRODOWN only works in this function -	switch(id) -	{ -		case M_LW: -			if (record->event.pressed) { -				#ifdef AUDIO_ENABLE -				PLAY_NOTE_ARRAY(tone_lw, false, STACCATO); -				#endif -				layer_on(_LW); -				update_tri_layer(_LW, _RS, _AD); -			} else { -				layer_off(_LW); -				update_tri_layer(_LW, _RS, _AD); -			} -			break; -		case M_RS: -			if (record->event.pressed) { -				#ifdef AUDIO_ENABLE -				PLAY_NOTE_ARRAY(tone_rs, false, LEGATO); -				#endif -				layer_on(_RS); -				update_tri_layer(_LW, _RS, _AD); -			} else { -				layer_off(_RS); -				update_tri_layer(_LW, _RS, _AD); -			} -			break; - -		case M_FN: -			if (record->event.pressed) { -				layer_on(_FN); -			} else { -				layer_off(_FN); -			} -			break; - -		case M_T1: -			if (record->event.pressed) set_timbre(TIMBRE_12); -			break; - -		case M_T2: -			if (record->event.pressed) set_timbre(TIMBRE_25); -			break; - -		case M_T3: -			if (record->event.pressed) set_timbre(TIMBRE_50); -			break; - -		case M_T4: -			if (record->event.pressed) set_timbre(TIMBRE_75); -			break; - - -		case M_TU: -			if (record->event.pressed) increase_tempo(10); -			break; - -		case M_TD: -			if (record->event.pressed) decrease_tempo(10); -			break; - -		case M_DF: -			if (record->event.pressed) -			{ -				set_timbre(TIMBRE_DEFAULT); -				set_tempo(TEMPO_DEFAULT); -			} -			break; - -		default: -			break; - -	} -	return MACRO_NONE; -};
\ No newline at end of file +    // MACRODOWN only works in this function +    switch(id) +    { + +        case MACRO_QWERTY: +            if (record->event.pressed) +            { +                persistant_default_layer_set(1UL<<LAYER_QWERTY); +                PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO); +            } +            break; + +        case MACRO_COLEMAK: +            if (record->event.pressed) +            { +                persistant_default_layer_set(1UL<<LAYER_COLEMAK); +                PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO); +            } +            break; + +        case MACRO_DVORAK: +            if (record->event.pressed) +            { +                persistant_default_layer_set(1UL<<LAYER_DVORAK); +                PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO); +            } +            break; + + +        case MACRO_LOWER: +            if (record->event.pressed) +            { +                layer_on(LAYER_LOWER); +                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); +            } +            else +            { +                layer_off(LAYER_LOWER); +                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); +            } +            break; + +        case MACRO_RAISE: +            if (record->event.pressed) +            { +                layer_on(LAYER_RAISE); +                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); +            } +            else +            { +                layer_off(LAYER_RAISE); +                update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); +            } +            break; + +        case MACRO_FUNCTION: +            if (record->event.pressed) +            { +                layer_on(LAYER_FUNCTION); +            } +            else +            { +                layer_off(LAYER_FUNCTION); +            } +            break; + +        case MACRO_TIMBRE_1: +            if (record->event.pressed) set_timbre(TIMBRE_12); +            break; + +        case MACRO_TIMBRE_2: +            if (record->event.pressed) set_timbre(TIMBRE_25); +            break; + +        case MACRO_TIMBRE_3: +            if (record->event.pressed) set_timbre(TIMBRE_50); +            break; + +        case MACRO_TIMBRE_4: +            if (record->event.pressed) set_timbre(TIMBRE_75); +            break; + +        case MACRO_TEMPO_U: +            if (record->event.pressed) increase_tempo(10); +            break; + +        case MACRO_TEMPO_D: +            if (record->event.pressed) decrease_tempo(10); +            break; + +        case MACRO_TONE_DEFAULT: +            if (record->event.pressed) +            { +                set_timbre(TIMBRE_DEFAULT); +                set_tempo(TEMPO_DEFAULT); +            } +            break; + +        case MACRO_AUDIO_OFF: +            if (record->event.pressed) +            { +                #ifdef AUDIO_ENABLE +                    audio_off(); +                #endif +            } +            break; + +        case MACRO_AUDIO_ON: +            if (record->event.pressed) +            { +                #ifdef AUDIO_ENABLE +                    audio_on(); +                PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); +                #endif +            } +            break; + +        case MACRO_MUSIC_ON: +            if (record->event.pressed) +            { +                #ifdef AUDIO_ENABLE +                    PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); +                    layer_on(LAYER_MUSIC); +                #endif +            } +            break; + +        case MACRO_MUSIC_OFF: +            if (record->event.pressed) +            { +                #ifdef AUDIO_ENABLE +                    layer_off(LAYER_MUSIC); +                    stop_all_notes(); +                #endif +            } +            break; + +        default: +            break; + +    } +    return MACRO_NONE; +}; + + +#ifdef AUDIO_ENABLE + +uint8_t starting_note = 0x0C; +int offset = 7; + + +void process_action_user(keyrecord_t *record) +{ +    if (IS_LAYER_ON(LAYER_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 matrix_init_user(void) +{ +    init_notes(); +    play_startup_tone(); +    println("Matrix Init"); +} + +void led_set_user(uint8_t usb_led) +{ +    static uint8_t old_usb_led = 0; + +    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) +    { +            // If CAPS LK LED is turning on... +            PLAY_NOTE_ARRAY(tone_caps_on,  false, LEGATO); +    } +    else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) +    { +            // If CAPS LK LED is turning off... +            PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); +    } +    else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) +    { +            // If NUM LK LED is turning on... +            PLAY_NOTE_ARRAY(tone_numlk_on,  false, LEGATO); +    } +    else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) +    { +            // If NUM LED is turning off... +            PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); +    } +    else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) +    { +            // If SCROLL LK LED is turning on... +            PLAY_NOTE_ARRAY(tone_scroll_on,  false, LEGATO); +    } +    else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) +    { +            // If SCROLL LED is turning off... +            PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); +    } +    old_usb_led = usb_led; +} + + +void play_startup_tone() +{ +    PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); +} + +void play_goodbye_tone() +{ +    PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); +    _delay_ms(2000); +} + +#endif /* AUDIO_ENABLE */ diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index d469966501..eefa42855f 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -1,7 +1,7 @@  BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)  MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)  EXTRAKEY_ENABLE  = yes # Audio control and System control(+450) -CONSOLE_ENABLE   = yes # Console for debug(+400) +CONSOLE_ENABLE   = no  # Console for debug(+400)  COMMAND_ENABLE   = yes # Commands for debug and configuration  NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work  BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality diff --git a/keyboard/planck/keymaps/pvc_planck.c b/keyboard/planck/keymaps/pvc_planck.c index 20bb5d86d7..1de8acb1ea 100644 --- a/keyboard/planck/keymaps/pvc_planck.c +++ b/keyboard/planck/keymaps/pvc_planck.c @@ -131,8 +131,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {   */  [_FN] = {    {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, -  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    MG_H, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},    {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, +  {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},    {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}  }  }; @@ -142,16 +142,6 @@ const uint16_t PROGMEM fn_actions[] = {  }; -int tri_layer = 0; -void update_tri_layer(int layer) { -  if (tri_layer > 1) { -    layer_on(layer); -  } else { -    layer_off(layer); -  } -} - -  const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)  {  	// MACRODOWN only works in this function @@ -161,13 +151,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)  			if (record->event.pressed) {  				print("RS_DN");  				layer_on(_RS); -				tri_layer++; -				update_tri_layer(_FN); +				update_tri_layer(_RS, _LW, _FN);  			} else {  				print("RS_UP");  				layer_off(_RS); -				tri_layer--; -				update_tri_layer(_FN); +				update_tri_layer(_RS, _LW, _FN);  				phex(layer_state);  			}  			break; @@ -176,13 +164,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)  			if (record->event.pressed) {  				print("LW_DN");  				layer_on(_LW); -				tri_layer++; -				update_tri_layer(_FN); +				update_tri_layer(_RS, _LW, _FN);  			} else {  				print("LW_UP");  				layer_off(_LW); -				tri_layer--; -				update_tri_layer(_FN); +				update_tri_layer(_RS, _LW, _FN);  			}  			break; diff --git a/keyboard/retro_refit/retro_refit.c b/keyboard/retro_refit/retro_refit.c index 0b13eb8301..78b6edca75 100644 --- a/keyboard/retro_refit/retro_refit.c +++ b/keyboard/retro_refit/retro_refit.c @@ -2,39 +2,39 @@  __attribute__ ((weak))  void matrix_init_user(void) { -	// leave this function blank - it can be defined in a keymap file +    // leave this function blank - it can be defined in a keymap file  };  __attribute__ ((weak))  void matrix_scan_user(void) { -	// leave this function blank - it can be defined in a keymap file +    // leave this function blank - it can be defined in a keymap file  };  __attribute__ ((weak))  void led_set_user(uint8_t usb_led) { -	// leave this function blank - it can be defined in a keymap file +    // leave this function blank - it can be defined in a keymap file  };  void matrix_init_kb(void) { -	// put your keyboard start-up code here -	// runs once when the firmware starts up -	 -	// Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS) -	DDRD |= (1<<6); -	PORTD |= (1<<6); -	 -	matrix_init_user(); +    // put your keyboard start-up code here +    // runs once when the firmware starts up + +    // Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS) +    DDRD |= (1<<6); +    PORTD |= (1<<6); + +    matrix_init_user();  };  void amatrix_scan_kb(void) {      // put your looping keyboard code here      // runs every cycle (a lot) -	matrix_scan_user(); +    matrix_scan_user();  };  void led_set_kb(uint8_t usb_led) { -	// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here +    // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here      if (usb_led & (1<<USB_LED_CAPS_LOCK)) {          // output low @@ -62,7 +62,7 @@ void led_set_kb(uint8_t usb_led) {          // Hi-Z          DDRC &= ~(1<<6);          PORTC &= ~(1<<6); -    }	 -	 -	led_set_user(usb_led); +    } + +    led_set_user(usb_led);  };
\ No newline at end of file diff --git a/quantum/audio.c b/quantum/audio.c index e0413051a0..627e3d80a1 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -351,6 +351,7 @@ void play_notes(float (*np)[][2], uint8_t n_count, bool n_repeat, float n_rest)  if (audio_config.enable) { +	// Cancel note if a note is playing      if (note)          stop_all_notes();      notes = true; @@ -406,6 +407,7 @@ void play_note(double freq, int vol) {  if (audio_config.enable && voices < 8) { +    // Cancel notes if notes are playing      if (notes)          stop_all_notes();      note = true; @@ -471,3 +473,16 @@ void increase_tempo(uint8_t tempo_change)  		}  } +//------------------------------------------------------------------------------ +// Override these functions in your keymap file to play different tunes on +// startup and bootloader jump +__attribute__ ((weak)) +void play_startup_tone() +{ +} + +__attribute__ ((weak)) +void play_goodbye_tone() +{ +} +//------------------------------------------------------------------------------ diff --git a/quantum/audio.h b/quantum/audio.h index 05d314c940..44cafccd68 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -44,5 +44,7 @@ void decrease_tempo(uint8_t tempo_change);  #define NOTE_ARRAY_SIZE(x) ((int)(sizeof(x) / (sizeof(x[0]))))  #define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); +void play_goodbye_tone(void); +void play_startup_tone(void);  #endif
\ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 2001438b90..4ee290ad03 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -34,12 +34,6 @@ extern keymap_config_t keymap_config;  #include <inttypes.h>  #ifdef AUDIO_ENABLE      #include "audio.h" - -    #ifndef TONE_GOODBYE -    	#define TONE_GOODBYE OLKB_GOODBYE -    #endif /*! TONE_GOODBYE */ - -    float tone_goodbye[][2] = SONG(TONE_GOODBYE);  #endif /* AUDIO_ENABLE */  static action_t keycode_to_action(uint16_t keycode); @@ -47,7 +41,7 @@ static action_t keycode_to_action(uint16_t keycode);  /* converts key to action */  action_t action_for_key(uint8_t layer, keypos_t key)  { -	// 16bit keycodes - important +    // 16bit keycodes - important      uint16_t keycode = keymap_key_to_keycode(layer, key);      switch (keycode) { @@ -190,7 +184,7 @@ static action_t keycode_to_action(uint16_t keycode)          case RESET: ; // RESET is 0x5000, which is why this is here              clear_keyboard();              #ifdef AUDIO_ENABLE -                PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +                play_goodbye_tone();              #endif              _delay_ms(250);              #ifdef ATREUS_ASTAR @@ -303,7 +297,7 @@ static action_t keycode_to_action(uint16_t keycode)  /* translates key to keycode */  uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)  { -	// Read entire word (16bits) +    // Read entire word (16bits)      return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);  } @@ -315,7 +309,7 @@ action_t keymap_fn_to_action(uint16_t keycode)  action_t keymap_func_to_action(uint16_t keycode)  { -	// For FUNC without 8bit limit +    // For FUNC without 8bit limit      return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };  } diff --git a/quantum/musical_notes.h b/quantum/musical_notes.h index ccdc34f270..b08d16a6fa 100644 --- a/quantum/musical_notes.h +++ b/quantum/musical_notes.h @@ -51,7 +51,10 @@  // Notes - # = Octave +  #define NOTE_REST         0.00 + +/* These notes are currently bugged  #define NOTE_C0          16.35  #define NOTE_CS0         17.32  #define NOTE_D0          18.35 @@ -75,6 +78,8 @@  #define NOTE_GS1         51.91  #define NOTE_A1          55.00  #define NOTE_AS1         58.27 +*/ +  #define NOTE_B1          61.74  #define NOTE_C2          65.41  #define NOTE_CS2         69.30 diff --git a/quantum/song_list.h b/quantum/song_list.h index b626c3fa6b..e992bd18a2 100644 --- a/quantum/song_list.h +++ b/quantum/song_list.h @@ -4,20 +4,98 @@  #define SONG_LIST_H  #define ODE_TO_JOY                                          \ -	Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ -	Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ -	Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \ -	QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4), +    Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ +    Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ +    Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \ +    QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4),  #define ROCK_A_BYE_BABY                            \ -	QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5),      \ -	H__NOTE(_A5), Q__NOTE(_G5),                    \ -	QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5),      \ -	H__NOTE(_FS5), - -#define OLKB_GOODBYE \ -	E__NOTE(_E7),    \ -	E__NOTE(_A6),    \ -	ED_NOTE(_E6), +    QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5),      \ +    H__NOTE(_A5), Q__NOTE(_G5),                    \ +    QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5),      \ +    H__NOTE(_FS5), + +#define CLOSE_ENCOUNTERS_5_NOTE  \ +	Q__NOTE(_D5),                \ +	Q__NOTE(_E5),                \ +	Q__NOTE(_C5),                \ +	Q__NOTE(_C4),                \ +	Q__NOTE(_G4), + +#define DOE_A_DEER              \ +	QD_NOTE(_C4), E__NOTE(_D4), \ +	QD_NOTE(_E4), E__NOTE(_C4), \ +	Q__NOTE(_E4), Q__NOTE(_C4), \ +	Q__NOTE(_E4), + +#define GOODBYE_SOUND \ +    E__NOTE(_E7),     \ +    E__NOTE(_A6),     \ +    ED_NOTE(_E6), + +#define STARTUP_SOUND  \ +    ED_NOTE(_E7 ),     \ +    E__NOTE(_CS7),     \ +    E__NOTE(_E6 ),     \ +    E__NOTE(_A6 ),     \ +    M__NOTE(_CS7, 20), + +#define QWERTY_SOUND \ +    E__NOTE(_GS6 ),  \ +    E__NOTE(_A6  ),  \ +    S__NOTE(_REST),  \ +    Q__NOTE(_E7  ), + +#define COLEMAK_SOUND \ +    E__NOTE(_GS6 ),   \ +    E__NOTE(_A6  ),   \ +    S__NOTE(_REST),   \ +    ED_NOTE(_E7  ),   \ +    S__NOTE(_REST),   \ +    ED_NOTE(_GS7 ), + +#define DVORAK_SOUND \ +    E__NOTE(_GS6 ),  \ +    E__NOTE(_A6  ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_E7  ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_FS7 ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_E7  ), + +#define MUSIC_SCALE_SOUND \ +    E__NOTE(_A5 ),        \ +    E__NOTE(_B5 ),        \ +    E__NOTE(_CS6),        \ +    E__NOTE(_D6 ),        \ +    E__NOTE(_E6 ),        \ +    E__NOTE(_FS6),        \ +    E__NOTE(_GS6),        \ +    E__NOTE(_A6 ), + +#define CAPS_LOCK_ON_SOUND \ +    E__NOTE(_A3),          \ +    E__NOTE(_B3), + +#define CAPS_LOCK_OFF_SOUND \ +    E__NOTE(_B3),           \ +    E__NOTE(_A3), + +#define SCROLL_LOCK_ON_SOUND \ +    E__NOTE(_D4),            \ +    E__NOTE(_E4), + +#define SCROLL_LOCK_OFF_SOUND \ +    E__NOTE(_E4),             \ +    E__NOTE(_D4), + +#define NUM_LOCK_ON_SOUND \ +    E__NOTE(_D5),         \ +    E__NOTE(_E5), + +#define NUM_LOCK_OFF_SOUND \ +    E__NOTE(_E5),          \ +    E__NOTE(_D5),  #endif diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index c07c2801d5..e295dbe18b 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -9,10 +9,16 @@  #include "suspend.h"  #include "timer.h"  #include "led.h" +  #ifdef PROTOCOL_LUFA -#include "lufa.h" +	#include "lufa.h"  #endif +#ifdef AUDIO_ENABLE +    #include "audio.h" +#endif /* AUDIO_ENABLE */ + +  #define wdt_intr_enable(value)   \  __asm__ __volatile__ (  \ @@ -72,6 +78,10 @@ static void power_down(uint8_t wdto)  	// Turn off LED indicators  	led_set(0); +	#ifdef AUDIO_ENABLE +		stop_all_notes(); +	#endif /* AUDIO_ENABLE */ +      // TODO: more power saving      // See PicoPower application note      // - I/O port input with pullup diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 7572b95979..f06abaf7f0 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -49,6 +49,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #   include "usbdrv.h"  #endif +#ifdef AUDIO_ENABLE +    #include "audio.h" +#endif /* AUDIO_ENABLE */ +  static bool command_common(uint8_t code);  static void command_common_help(void); @@ -352,6 +356,9 @@ static bool command_common(uint8_t code)          case MAGIC_KC(MAGIC_KEY_BOOTLOADER):              clear_keyboard(); // clear to prevent stuck keys              print("\n\nJumping to bootloader... "); +            #ifdef AUDIO_ENABLE +                play_goodbye_tone(); +            #endif              _delay_ms(1000);              bootloader_jump(); // not return              break; | 
