Merge branch 'personal_atomic_planck' of github.com:IBNobody/qmk_firmware

This commit is contained in:
Jack Humbert
2016-04-17 21:15:50 -04:00
12 changed files with 345 additions and 193 deletions

View File

@ -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();
}
}
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);
}

View File

@ -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.
*
*/

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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;

View File

@ -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);
};

View File

@ -351,7 +351,7 @@ void play_notes(float (*np)[][2], uint8_t n_count, bool n_repeat, float n_rest)
if (audio_config.enable) {
if (note)
if (note || notes)
stop_all_notes();
notes = true;
@ -406,7 +406,7 @@ void play_note(double freq, int vol) {
if (audio_config.enable && voices < 8) {
if (notes)
if (note || notes)
stop_all_notes();
note = true;
#ifdef PWM_AUDIO
@ -471,3 +471,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()
{
}
//------------------------------------------------------------------------------

View File

@ -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(&note_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style));
void play_goodbye_tone(void);
void play_startup_tone(void);
#endif

View File

@ -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]) };
}

View File

@ -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

View File

@ -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),
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),
#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

View File

@ -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;