Merge pull request #256 from jackhumbert/new_defaults
New default planck layout, audio fixes, makefile overwrites, tri-layer quantum-wide
This commit is contained in:
		
						commit
						9111963663
					
				
					 11 changed files with 241 additions and 72 deletions
				
			
		
							
								
								
									
										14
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
										
									
									
									
								
							|  | @ -16,13 +16,21 @@ The documentation below explains QMK customizations and elaborates on some of th | |||
| * If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there. | ||||
| * If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh <project_name>`, which will create `/keyboard/<project_name>` with all the necessary components for a Quantum project. | ||||
| 
 | ||||
| ### Makefile Options | ||||
| 
 | ||||
| You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. | ||||
| 
 | ||||
|     BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality | ||||
|     MIDI_ENABLE = yes      # MIDI controls | ||||
|     # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // | ||||
|     UNICODE_ENABLE = no    # <-- This is how you disable an option, just set it to "no" | ||||
|     BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| 
 | ||||
| ### Customizing Makefile options on a per-keymap basis | ||||
| 
 | ||||
| If your keymap directory has a file called `makefile.mk` (note the lowercase filename, and the `.mk` extension), any Makefile options you set in that file will take precedence over other Makefile options (those set for Quantum as a whole or for your particular keyboard). | ||||
| 
 | ||||
| So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`. | ||||
| 
 | ||||
| ## Quick aliases to common actions | ||||
| 
 | ||||
| Your keymap can include shortcuts to common operations (called "function actions" in tmk). | ||||
|  | @ -199,6 +207,10 @@ This will clear all mods currently pressed. | |||
| 
 | ||||
| This will clear all keys besides the mods currently pressed. | ||||
| 
 | ||||
| * `update_tri_layer(layer_1, layer_2, layer_3);` | ||||
| 
 | ||||
| If the user attempts to activate layer 1 AND layer 2 at the same time (for example, by hitting their respective layer keys), layer 3 will be activated. Layers 1 and 2 will _also_ be activated, for the purposes of fallbacks (so a given key will fall back from 3 to 2, to 1 -- and only then to 0). | ||||
| 
 | ||||
| #### Timer functionality | ||||
| 
 | ||||
| It's possible to start timers and read values for time-specific events - here's an example: | ||||
|  |  | |||
|  | @ -41,7 +41,6 @@ | |||
| # Target file name (without extension).
 | ||||
| TARGET = planck | ||||
| 
 | ||||
| 
 | ||||
| # Directory common source filess exist
 | ||||
| TOP_DIR = ../.. | ||||
| TMK_DIR = ../../tmk_core | ||||
|  | @ -62,17 +61,28 @@ ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") | |||
| else | ||||
| ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") | ||||
| 	KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c | ||||
| ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") | ||||
| 	include keymaps/$(KEYMAP)/makefile.mk | ||||
| endif | ||||
| else | ||||
| $(error Keymap file does not exist) | ||||
| endif  | ||||
| endif | ||||
| endif | ||||
| 
 | ||||
| else | ||||
| 
 | ||||
| ifneq ("$(wildcard keymaps/default.c)","") | ||||
| 	KEYMAP_FILE = keymaps/default.c | ||||
| else | ||||
| 	KEYMAP_FILE = keymaps/default/keymap.c | ||||
| endif | ||||
| 
 | ||||
| ifneq ("$(wildcard keymaps/default/makefile.mk)","") | ||||
| 	include keymaps/default/makefile.mk | ||||
| endif | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| SRC := $(KEYMAP_FILE) $(SRC) | ||||
| 
 | ||||
| CONFIG_H = config.h | ||||
|  | @ -94,7 +104,6 @@ MCU = atmega32u4 | |||
| #     software delays.
 | ||||
| F_CPU = 16000000 | ||||
| 
 | ||||
| 
 | ||||
| #
 | ||||
| # LUFA specific
 | ||||
| #
 | ||||
|  | @ -126,31 +135,45 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | |||
| #   USBaspLoader     2048
 | ||||
| OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||||
| 
 | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   comment out to disable the options.
 | ||||
| #   change to "no" to disable the options, or define them in the makefile.mk in 
 | ||||
| #   the appropriate keymap folder that will get included automatically
 | ||||
| #
 | ||||
| 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) | ||||
| COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||
| # NKRO_ENABLE = yes         # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | ||||
| NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||
| BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality | ||||
| # MIDI_ENABLE = yes         # MIDI controls
 | ||||
| # AUDIO_ENABLE = yes        # Audio output on port C6
 | ||||
| # UNICODE_ENABLE = yes      # Unicode
 | ||||
| # BLUETOOTH_ENABLE = ye     # Enable Bluetooth with the Adafruit EZ-Key HID
 | ||||
| # RGBLIGHT_ENABLE = yes     # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 | ||||
| MIDI_ENABLE = no            # MIDI controls | ||||
| AUDIO_ENABLE = no           # Audio output on port C6 | ||||
| UNICODE_ENABLE = no         # Unicode | ||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. | ||||
| 
 | ||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||
| #SLEEP_LED_ENABLE = yes    # Breathing sleep LED during USB suspend
 | ||||
| SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | ||||
| 
 | ||||
| ifdef KEYMAP | ||||
| 
 | ||||
| ifdef BACKLIGHT_ENABLE | ||||
| 	SRC += backlight.c | ||||
| ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") | ||||
| ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") | ||||
| 	include keymaps/$(KEYMAP)/makefile.mk | ||||
| endif  | ||||
| endif | ||||
| 
 | ||||
| else | ||||
| 
 | ||||
| ifneq ("$(wildcard keymaps/default/makefile.mk)","") | ||||
| 	include keymaps/default/makefile.mk | ||||
| endif | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) | ||||
| 	SRC := backlight.c $(SRC) | ||||
| endif | ||||
| 
 | ||||
| # Optimize size but this may cause error "relocation truncated to fit"
 | ||||
| #EXTRALDFLAGS = -Wl,--relax
 | ||||
|  |  | |||
|  | @ -73,10 +73,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|  */ | ||||
| 
 | ||||
| /* disable debug print */ | ||||
| #define NO_DEBUG | ||||
| //#define NO_DEBUG
 | ||||
| 
 | ||||
| /* disable print */ | ||||
| #define NO_PRINT | ||||
| //#define NO_PRINT
 | ||||
| 
 | ||||
| /* disable action features */ | ||||
| //#define NO_ACTION_LAYER
 | ||||
|  |  | |||
|  | @ -2,8 +2,9 @@ | |||
| // this is the style you want to emulate.
 | ||||
| 
 | ||||
| #include "planck.h" | ||||
| #ifdef BACKLIGHT_ENABLE | ||||
|   #include "backlight.h" | ||||
| #include "action_layer.h" | ||||
| #ifdef AUDIO_ENABLE | ||||
|   #include "audio.h" | ||||
| #endif | ||||
| 
 | ||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||
|  | @ -15,6 +16,15 @@ | |||
| #define _DV 2 | ||||
| #define _LW 3 | ||||
| #define _RS 4 | ||||
| #define _AD 5 | ||||
| 
 | ||||
| // Macro name shortcuts
 | ||||
| #define M_QW 0 | ||||
| #define M_CM 1 | ||||
| #define M_DV 2 | ||||
| #define M_LW 3 | ||||
| #define M_RS 4 | ||||
| #define M_BL 5 | ||||
| 
 | ||||
| // Fillers to make layering more clear
 | ||||
| #define _______ KC_TRNS | ||||
|  | @ -37,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
|   {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(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
|   {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC,  KC_SPC,  M(M_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| /* Colemak
 | ||||
|  | @ -55,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
|   {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(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
|   {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC,  KC_SPC,  M(M_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| /* Dvorak
 | ||||
|  | @ -73,43 +83,61 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
|   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC}, | ||||
|   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH}, | ||||
|   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT }, | ||||
|   {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| /* Raise
 | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | | ||||
|  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||
|  * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | | ||||
|  * |------+------+------+------+------+------|------+------+------+------+------+------| | ||||
|  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter | | ||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||
|  * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Next | Vol- | Vol+ | Play | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
| [_RS] = { | ||||
|   {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_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,  DF(_QW), DF(_CM), DF(_DV), RESET,   _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||||
|   {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC,  KC_SPC,  M(M_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| /* Lower
 | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | | ||||
|  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||
|  * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   | | ||||
|  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   | | ||||
|  * |------+------+------+------+------+------|------+------+------+------+------+------| | ||||
|  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter | | ||||
|  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter | | ||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||
|  * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Next | Vol- | Vol+ | Play | | ||||
|  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
| [_LW] = { | ||||
|   {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, | ||||
|   {_______, KC_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,  DF(_QW), DF(_CM), DF(_DV), RESET,   _______}, | ||||
|   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, | ||||
|   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||||
| }, | ||||
| 
 | ||||
| /* Raise
 | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | | ||||
|  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||
|  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | | ||||
|  * |------+------+------+------+------+------|------+------+------+------+------+------| | ||||
|  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter | | ||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||
|  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
| [_RS] = { | ||||
|   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, | ||||
|   {KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS}, | ||||
|   {_______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||||
| }, | ||||
| 
 | ||||
| /* Adjust (Lower + Raise)
 | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |      | Reset|      |      |      |      |      |      |      |      |      |  Del | | ||||
|  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||
|  * |      |      |      |      |      |      |      |Qwerty|Colemk|Dvorak|      |      | | ||||
|  * |------+------+------+------+------+------|------+------+------+------+------+------| | ||||
|  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||
|  * |      |      |      |      |      |             |      |      |      |      |      | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
| [_AD] = { | ||||
|   {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||||
| } | ||||
| }; | ||||
| 
 | ||||
|  | @ -117,11 +145,83 @@ const uint16_t PROGMEM fn_actions[] = { | |||
| 
 | ||||
| }; | ||||
| 
 | ||||
| #ifdef AUDIO_ENABLE | ||||
| float tone_qw[][2] = { | ||||
|   {440.0*pow(2.0,(59)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(60)/12.0), 8}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(67)/12.0), 16} | ||||
| }; | ||||
| 
 | ||||
| float tone_cm[][2] = { | ||||
|   {440.0*pow(2.0,(59)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(60)/12.0), 8}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(67)/12.0), 16}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(71)/12.0), 16} | ||||
| }; | ||||
| 
 | ||||
| float tone_dv[][2] = { | ||||
|   {440.0*pow(2.0,(59)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(60)/12.0), 8}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(67)/12.0), 16}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(69)/12.0), 16}, | ||||
|   {0, 4}, | ||||
|   {440.0*pow(2.0,(67)/12.0), 16} | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| 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: | ||||
|         case M_QW: | ||||
|           if (record->event.pressed) { | ||||
|             #ifdef AUDIO_ENABLE | ||||
|               play_notes(&tone_qw, 4, false); | ||||
|             #endif | ||||
|             default_layer_set(1UL<<_QW); | ||||
|           } | ||||
|           break; | ||||
|         case M_CM: | ||||
|           if (record->event.pressed) { | ||||
|             #ifdef AUDIO_ENABLE | ||||
|               play_notes(&tone_cm, 6, false); | ||||
|             #endif | ||||
|             default_layer_set(1UL<<_CM); | ||||
|           } | ||||
|           break; | ||||
|         case M_DV: | ||||
|           if (record->event.pressed) { | ||||
|             #ifdef AUDIO_ENABLE | ||||
|               play_notes(&tone_dv, 8, false); | ||||
|             #endif | ||||
|             default_layer_set(1UL<<_DV); | ||||
|           } | ||||
|           break; | ||||
|         case M_LW: | ||||
|           if (record->event.pressed) { | ||||
|             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) { | ||||
|             layer_on(_RS); | ||||
|             update_tri_layer(_LW, _RS, _AD); | ||||
|           } else { | ||||
|             layer_off(_RS); | ||||
|             update_tri_layer(_LW, _RS, _AD); | ||||
|           } | ||||
|           break; | ||||
|         case M_BL: | ||||
|           if (record->event.pressed) { | ||||
|             register_code(KC_RSFT); | ||||
|             #ifdef BACKLIGHT_ENABLE | ||||
|  | @ -134,3 +234,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
|       } | ||||
|     return MACRO_NONE; | ||||
| }; | ||||
| 
 | ||||
| #ifdef AUDIO_ENABLE | ||||
| float start_up[][2] = { | ||||
|   {440.0*pow(2.0,(67)/12.0), 12}, | ||||
|   {440.0*pow(2.0,(64)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(55)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(60)/12.0), 8}, | ||||
|   {440.0*pow(2.0,(64)/12.0), 20} | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| void matrix_init_user(void) { | ||||
|   #ifdef AUDIO_ENABLE | ||||
|     init_notes(); | ||||
|     play_notes(&start_up, 5, false); | ||||
|   #endif | ||||
| } | ||||
|  |  | |||
							
								
								
									
										1
									
								
								keyboard/planck/keymaps/default/makefile.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboard/planck/keymaps/default/makefile.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| AUDIO_ENABLE = yes  | ||||
|  | @ -255,7 +255,12 @@ ISR(TIMER3_COMPA_vect) { | |||
| 
 | ||||
| 
 | ||||
|         note_position++; | ||||
|         if (note_position >= note_length) { | ||||
|         bool end_of_note = false; | ||||
|         if (ICR3 > 0)  | ||||
|             end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); | ||||
|         else  | ||||
|             end_of_note = (note_position >= (note_length * 0x7FF)); | ||||
|         if (end_of_note) { | ||||
|             current_note++; | ||||
|             if (current_note >= notes_length) { | ||||
|                 if (notes_repeat) { | ||||
|  |  | |||
|  | @ -33,11 +33,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
|     #include "audio.h" | ||||
| 
 | ||||
|     float goodbye[][2] = { | ||||
|         {440.0*pow(2.0,(67)/12.0), 400}, | ||||
|         {0, 50}, | ||||
|         {440.0*pow(2.0,(60)/12.0), 400}, | ||||
|         {0, 50}, | ||||
|         {440.0*pow(2.0,(55)/12.0), 600}, | ||||
|         {440.0*pow(2.0,(67)/12.0), 8}, | ||||
|         {440.0*pow(2.0,(60)/12.0), 8}, | ||||
|         {440.0*pow(2.0,(55)/12.0), 12}, | ||||
|     }; | ||||
| #endif | ||||
| 
 | ||||
|  | @ -90,7 +88,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) | |||
|     	action_t action; | ||||
|         clear_keyboard(); | ||||
|         #ifdef AUDIO_ENABLE | ||||
|             play_notes(&goodbye, 5, false); | ||||
|             play_notes(&goodbye, 3, false); | ||||
|         #endif | ||||
|         _delay_ms(250); | ||||
|         #ifdef ATREUS_ASTAR | ||||
|  | @ -293,3 +291,11 @@ action_t keymap_func_to_action(uint16_t keycode) | |||
| 	// For FUNC without 8bit limit
 | ||||
|     return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) }; | ||||
| } | ||||
| 
 | ||||
| void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { | ||||
|   if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { | ||||
|     layer_on(layer3); | ||||
|   } else { | ||||
|     layer_off(layer3); | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -208,5 +208,9 @@ extern const uint16_t fn_actions[]; | |||
| #define UNICODE(n) (n | 0x8000) | ||||
| #define UC(n) UNICODE(n) | ||||
| 
 | ||||
| // For tri-layer
 | ||||
| void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); | ||||
| #define IS_LAYER_ON(layer)  ((layer_state) & (1UL<<(layer))) | ||||
| #define IS_LAYER_OFF(layer) ((!layer_state) & (1UL<<(layer))) | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -23,19 +23,19 @@ ifndef CUSTOM_MATRIX | |||
| 	SRC += $(QUANTUM_DIR)/matrix.c | ||||
| endif | ||||
| 
 | ||||
| ifdef MIDI_ENABLE | ||||
| ifeq ($(strip $(MIDI_ENABLE)), yes) | ||||
| 	SRC += $(QUANTUM_DIR)/keymap_midi.c | ||||
| endif | ||||
| 
 | ||||
| ifdef AUDIO_ENABLE | ||||
| ifeq ($(strip $(AUDIO_ENABLE)), yes) | ||||
| 	SRC += $(QUANTUM_DIR)/audio.c | ||||
| endif | ||||
| 
 | ||||
| ifdef UNICODE_ENABLE | ||||
| ifeq ($(strip $(UNICODE_ENABLE)), yes) | ||||
| 	SRC += $(QUANTUM_DIR)/keymap_unicode.c | ||||
| endif | ||||
| 
 | ||||
| ifdef RGBLIGHT_ENABLE | ||||
| ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) | ||||
| 	SRC += $(QUANTUM_DIR)/light_ws2812.c | ||||
| 	SRC += $(QUANTUM_DIR)/rgblight.c | ||||
| 	OPT_DEFS += -DRGBLIGHT_ENABLE | ||||
|  |  | |||
|  | @ -17,66 +17,67 @@ SRC +=	$(COMMON_DIR)/host.c \ | |||
| 
 | ||||
| 
 | ||||
| # Option modules
 | ||||
| ifdef BOOTMAGIC_ENABLE | ||||
| ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) | ||||
|     SRC += $(COMMON_DIR)/bootmagic.c | ||||
|     SRC += $(COMMON_DIR)/avr/eeconfig.c | ||||
|     OPT_DEFS += -DBOOTMAGIC_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef MOUSEKEY_ENABLE | ||||
| ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) | ||||
|     SRC += $(COMMON_DIR)/mousekey.c | ||||
|     OPT_DEFS += -DMOUSEKEY_ENABLE | ||||
|     OPT_DEFS += -DMOUSE_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef EXTRAKEY_ENABLE | ||||
| ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) | ||||
|     OPT_DEFS += -DEXTRAKEY_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef CONSOLE_ENABLE | ||||
| ifeq ($(strip $(CONSOLE_ENABLE)), yes) | ||||
|     OPT_DEFS += -DCONSOLE_ENABLE | ||||
| else | ||||
|     OPT_DEFS += -DNO_PRINT | ||||
|     OPT_DEFS += -DNO_DEBUG | ||||
| endif | ||||
| 
 | ||||
| ifdef COMMAND_ENABLE | ||||
| ifeq ($(strip $(COMMAND_ENABLE)), yes) | ||||
|     SRC += $(COMMON_DIR)/command.c | ||||
|     OPT_DEFS += -DCOMMAND_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef NKRO_ENABLE | ||||
| ifeq ($(strip $(NKRO_ENABLE)), yes) | ||||
|     OPT_DEFS += -DNKRO_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef MIDI_ENABLE | ||||
| ifeq ($(strip $(MIDI_ENABLE)), yes) | ||||
|     OPT_DEFS += -DMIDI_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef AUDIO_ENABLE | ||||
| ifeq ($(strip $(AUDIO_ENABLE)), yes) | ||||
|     OPT_DEFS += -DAUDIO_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef USB_6KRO_ENABLE | ||||
| ifeq ($(strip $(USB_6KRO_ENABLE)), yes) | ||||
|     OPT_DEFS += -DUSB_6KRO_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef SLEEP_LED_ENABLE | ||||
| ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) | ||||
|     SRC += $(COMMON_DIR)/sleep_led.c | ||||
|     OPT_DEFS += -DSLEEP_LED_ENABLE | ||||
|     OPT_DEFS += -DNO_SUSPEND_POWER_DOWN | ||||
| endif | ||||
| 
 | ||||
| ifdef BACKLIGHT_ENABLE | ||||
| ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) | ||||
|     SRC += $(COMMON_DIR)/backlight.c | ||||
|     SRC += $(COMMON_DIR)/avr/eeconfig.c | ||||
|     OPT_DEFS += -DBACKLIGHT_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef BLUETOOTH_ENABLE | ||||
| ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) | ||||
|     OPT_DEFS += -DBLUETOOTH_ENABLE | ||||
| endif | ||||
| 
 | ||||
| ifdef KEYMAP_SECTION_ENABLE | ||||
| ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) | ||||
|     OPT_DEFS += -DKEYMAP_SECTION_ENABLE | ||||
| 
 | ||||
|     ifeq ($(strip $(MCU)),atmega32u2) | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ LUFA_SRC = $(LUFA_DIR)/lufa.c \ | |||
| 	   $(LUFA_DIR)/descriptor.c \
 | ||||
| 	   $(LUFA_SRC_USB) | ||||
| 
 | ||||
| ifdef MIDI_ENABLE | ||||
| ifeq ($(strip $(MIDI_ENABLE)), yes) | ||||
| 	LUFA_SRC += $(LUFA_DIR)/midi/midi.c \
 | ||||
| 	   $(LUFA_DIR)/midi/midi_device.c \
 | ||||
| 	   $(LUFA_DIR)/midi/bytequeue/bytequeue.c \
 | ||||
|  | @ -25,7 +25,7 @@ ifdef MIDI_ENABLE | |||
| 	   $(LUFA_SRC_USBCLASS) | ||||
| endif | ||||
| 
 | ||||
| ifdef BLUETOOTH_ENABLE | ||||
| ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) | ||||
| 	LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
 | ||||
| 	$(TMK_DIR)/protocol/serial_uart.c | ||||
| endif | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jack Humbert
						Jack Humbert