mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	[Keyboard] Adding Navi10 macropad (#7556)
* working on keymap and files for the navi10 * fixing and modifying tap dance keys and layers * cleanup, and adding my separate keymap * edited and simplified the default keymap * cleaned up files and added support for future rev2 board * readme edits * moved rev0 specific keymap to it's own folder * added revision data to the config files * added DEFAULT_FOLDER * added note on compiling for a specific revision * documentation and readme edits * moved keymaps around and cleaned up * added photo * formatting and cleanup * fixing whitespace * moving the tap dance enable to keymap folders
This commit is contained in:
		
							parent
							
								
									b3c7864990
								
							
						
					
					
						commit
						6c834dea7b
					
				
							
								
								
									
										12
									
								
								keyboards/navi10/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								keyboards/navi10/info.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| { | ||||
|     "keyboard_name": "Navi10",  | ||||
|     "url": "",  | ||||
|     "maintainer": "emdarcher",  | ||||
|     "width": 3,  | ||||
|     "height": 5,  | ||||
|     "layouts": { | ||||
|         "LAYOUT": { | ||||
|             "layout": [{"label":"Fn", "x":0, "y":0}, {"label":"Home", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"Del", "x":0, "y":1}, {"label":"End", "x":1, "y":1}, {"label":"PgDn", "x":2, "y":1}, {"label":"Up", "x":1, "y":3}, {"label":"Left", "x":0, "y":4}, {"label":"Down", "x":1, "y":4}, {"label":"Right", "x":2, "y":4}] | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										131
									
								
								keyboards/navi10/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								keyboards/navi10/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,131 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| //create the tap type
 | ||||
| typedef struct { | ||||
|     bool is_press_action; | ||||
|     int state; | ||||
| } tap; | ||||
| 
 | ||||
| //tap dance states
 | ||||
| enum { | ||||
|     SINGLE_TAP = 1, | ||||
|     SINGLE_HOLD = 2, | ||||
| }; | ||||
| 
 | ||||
| //tap dance keys
 | ||||
| enum { | ||||
|     TAPPY_KEY = 0 | ||||
| }; | ||||
| 
 | ||||
| //function to handle all the tap dances
 | ||||
| int cur_dance(qk_tap_dance_state_t *state); | ||||
| 
 | ||||
| //functions for each tap dance
 | ||||
| void tk_finished(qk_tap_dance_state_t *state, void *user_data); | ||||
| void tk_reset(qk_tap_dance_state_t *state, void *user_data); | ||||
| 
 | ||||
| #define INDICATOR_LED   B5 | ||||
| 
 | ||||
| #define _FN0    1 | ||||
| #define _ML1    2 | ||||
| 
 | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|     [0] = LAYOUT(/* Base */ | ||||
|                  TD(TAPPY_KEY),KC_HOME, KC_PGUP, | ||||
|                  KC_DEL,    KC_END,     KC_PGDN, | ||||
|                   | ||||
|                             KC_UP, | ||||
|                  KC_LEFT,   KC_DOWN,    KC_RIGHT), | ||||
|     [_FN0] = LAYOUT(/* function layer */ | ||||
|                  KC_TRNS,   KC_PAUS,    KC_VOLU, | ||||
|                  KC_ENTER,  KC_SLCK,    KC_VOLD, | ||||
|                   | ||||
|                             KC_TRNS, | ||||
|                  KC_TRNS,   KC_TRNS,    KC_TRNS), | ||||
|     [_ML1] = LAYOUT(/* media function layer, toggled on a single tap */ | ||||
|                  KC_TRNS,   KC_TRNS,    KC_VOLU,  | ||||
|                  KC_MUTE,   KC_TRNS,    KC_VOLD, | ||||
|                   | ||||
|                             KC_SPC, | ||||
|                  KC_MRWD,   KC_MPLY,    KC_MFFD), | ||||
| }; | ||||
| 
 | ||||
| //determine the current tap dance state
 | ||||
| int cur_dance (qk_tap_dance_state_t *state){ | ||||
|     if(state->count == 1){ | ||||
|         //if a tap was registered
 | ||||
|         if(!state->pressed){ | ||||
|             //if not still pressed, then was a single tap
 | ||||
|             return SINGLE_TAP; | ||||
|         } else { | ||||
|             //if still pressed/held down, then it's a single hold
 | ||||
|             return SINGLE_HOLD; | ||||
|         } | ||||
|     } else { | ||||
|         return 8; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| //initialize the tap structure for the tap key
 | ||||
| static tap tk_tap_state = { | ||||
|     .is_press_action = true, | ||||
|     .state = 0 | ||||
| }; | ||||
| 
 | ||||
| //functions that control what our tap dance key does
 | ||||
| void tk_finished(qk_tap_dance_state_t *state, void *user_data){ | ||||
|     tk_tap_state.state = cur_dance(state); | ||||
|     switch(tk_tap_state.state){ | ||||
|         case SINGLE_TAP: | ||||
|             //send desired key when tapped:
 | ||||
|             //setting to the media layer
 | ||||
|             if(layer_state_is(_ML1)){ | ||||
|                 //if already active, toggle it to off
 | ||||
|                 layer_off(_ML1); | ||||
|                 //turn off the indicator LED
 | ||||
|                 //set LED HI to turn it off
 | ||||
|                 writePinHigh(INDICATOR_LED); | ||||
|             } else { | ||||
|                 //turn on the media layer
 | ||||
|                 layer_on(_ML1); | ||||
|                 //turn on the indicator LED
 | ||||
|                 //set LED pin to LOW to turn it on
 | ||||
|                 writePinLow(INDICATOR_LED); | ||||
|             } | ||||
|             break; | ||||
|         case SINGLE_HOLD: | ||||
|             //set to desired layer when held:
 | ||||
|             //setting to the function layer
 | ||||
|             layer_on(_FN0); | ||||
|             break; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void tk_reset(qk_tap_dance_state_t *state, void *user_data){ | ||||
|     //if held and released, leave the layer
 | ||||
|     if(tk_tap_state.state == SINGLE_HOLD){ | ||||
|         layer_off(_FN0); | ||||
|     } | ||||
|     //reset the state
 | ||||
|     tk_tap_state.state = 0;  | ||||
| } | ||||
| 
 | ||||
| //associate the tap dance key with its functionality
 | ||||
| qk_tap_dance_action_t tap_dance_actions[] = { | ||||
|     [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, 275) | ||||
| }; | ||||
							
								
								
									
										11
									
								
								keyboards/navi10/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								keyboards/navi10/keymaps/default/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| # The default keymap for the Navi10 | ||||
| 
 | ||||
| This keymap keeps a basic Navigation Cluster layout, but utilizes the Insert key as a FN/Tap key to access 2 layers. | ||||
| 
 | ||||
| - Base Layer:  | ||||
|   * Navigation Cluster (sans Insert Key) | ||||
| - Hold Insert -> Function Layer:  | ||||
|   * Maps Volume Control on PgUp/PgDN, Pause/Scroll-Lock on Home/End (MacOS brightness), and Delete to Enter.  | ||||
| - Tap Insert Once -> Media Layer (Tap again to leave):  | ||||
|   * Has mappings for Audio control on MacOS using the arrow keys, PgUp/PgDn, and Delete. | ||||
|   * Lights up the Central 3mm indicator LED. | ||||
							
								
								
									
										1
									
								
								keyboards/navi10/keymaps/default/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/navi10/keymaps/default/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| TAP_DANCE_ENABLE = yes | ||||
							
								
								
									
										182
									
								
								keyboards/navi10/keymaps/emdarcher/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								keyboards/navi10/keymaps/emdarcher/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,182 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #include QMK_KEYBOARD_H | ||||
| 
 | ||||
| typedef struct { | ||||
|     bool is_press_action; | ||||
|     int state; | ||||
| } tap; | ||||
| 
 | ||||
| //tap dance states
 | ||||
| enum { | ||||
|     SINGLE_TAP = 1, | ||||
|     SINGLE_HOLD = 2, | ||||
|     DOUBLE_TAP = 3, | ||||
|     TRIPLE_TAP = 4 | ||||
| }; | ||||
| 
 | ||||
| //tap dance keys
 | ||||
| enum { | ||||
|     TAPPY_KEY = 0 | ||||
| }; | ||||
| 
 | ||||
| //function to handle all the tap dances
 | ||||
| int cur_dance(qk_tap_dance_state_t *state); | ||||
| 
 | ||||
| //functions for each tap dance
 | ||||
| void tk_finished(qk_tap_dance_state_t *state, void *user_data); | ||||
| void tk_reset(qk_tap_dance_state_t *state, void *user_data); | ||||
| 
 | ||||
| #define INDICATOR_LED   B5 | ||||
| #define TX_LED          D5 | ||||
| #define RX_LED          B0 | ||||
| 
 | ||||
| #define _FN0    1 | ||||
| #define _ML1    2 | ||||
| #define _CL0    3 | ||||
| 
 | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|     [0] = LAYOUT(/* Base */ | ||||
|                  TD(TAPPY_KEY),KC_HOME, KC_PGUP, | ||||
|                  KC_DEL,    KC_END,     KC_PGDN, | ||||
|                   | ||||
|                             KC_UP, | ||||
|                  KC_LEFT,   KC_DOWN,    KC_RIGHT), | ||||
|     [_FN0] = LAYOUT(/* function layer */ | ||||
|                  KC_TRNS,   KC_PAUS,    KC_VOLU, | ||||
|                  KC_ENTER,  KC_SLCK,    KC_VOLD, | ||||
|                   | ||||
|                             KC_TRNS, | ||||
|                  KC_TRNS,   KC_TRNS,    KC_TRNS), | ||||
|     [_ML1] = LAYOUT(/* media function layer on double tap */ | ||||
|                  KC_TRNS,   KC_TRNS,    KC_VOLU,  | ||||
|                  KC_MUTE,   KC_TRNS,    KC_VOLD, | ||||
|                   | ||||
|                             KC_SPC, | ||||
|                  KC_MRWD,   KC_MPLY,    KC_MFFD), | ||||
|     [_CL0] = LAYOUT(/* control layer on single tap */ | ||||
|                  KC_TRNS,   KC_TRNS,    KC_TRNS, | ||||
|                  KC_TRNS,   KC_TRNS,    KC_TRNS, | ||||
| 
 | ||||
|                                 LCTL(KC_UP), | ||||
|                  LCTL(KC_LEFT), LCTL(KC_DOWN), LCTL(KC_RIGHT) ), | ||||
| }; | ||||
| 
 | ||||
| void matrix_init_user(void) { | ||||
|     //init the Pro Micro on-board LEDs
 | ||||
|     setPinOutput(TX_LED); | ||||
|     setPinOutput(RX_LED); | ||||
|     //set to off
 | ||||
|     writePinHigh(TX_LED); | ||||
|     writePinHigh(RX_LED); | ||||
| } | ||||
| 
 | ||||
| //determine the current tap dance state
 | ||||
| int cur_dance (qk_tap_dance_state_t *state){ | ||||
|     if(state->count == 1){ | ||||
|         //if a tap was registered
 | ||||
|         if(!state->pressed){ | ||||
|             //if not still pressed, then was a single tap
 | ||||
|             return SINGLE_TAP; | ||||
|         } else { | ||||
|             //if still pressed/held down, then it's a single hold
 | ||||
|             return SINGLE_HOLD; | ||||
|         } | ||||
|     } else if(state->count == 2){ | ||||
|         //if tapped twice, set to double tap
 | ||||
|         return DOUBLE_TAP; | ||||
|     } else if(state->count == 3){ | ||||
|         //if tapped thrice, set to triple tap
 | ||||
|         return TRIPLE_TAP; | ||||
|     } else { | ||||
|         return 8; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //initialize the tap structure for the tap key
 | ||||
| static tap tk_tap_state = { | ||||
|     .is_press_action = true, | ||||
|     .state = 0 | ||||
| }; | ||||
| 
 | ||||
| //functions that control what our tap dance key does
 | ||||
| void tk_finished(qk_tap_dance_state_t *state, void *user_data){ | ||||
|     tk_tap_state.state = cur_dance(state); | ||||
|     switch(tk_tap_state.state){ | ||||
|         case SINGLE_TAP: | ||||
|             //toggle desired layer when tapped:
 | ||||
|             if(layer_state_is(_CL0)){ | ||||
|                 //if already active, toggle it to off
 | ||||
|                 layer_off(_CL0); | ||||
|                 //turn off LEDs
 | ||||
|                 writePinHigh(TX_LED); | ||||
|                 writePinHigh(RX_LED); | ||||
|             } else { | ||||
|                 //turn on the command layer
 | ||||
|                 layer_on(_CL0); | ||||
|                 //turn on the LEDs
 | ||||
|                 writePinLow(TX_LED); | ||||
|                 writePinLow(RX_LED); | ||||
|             } | ||||
|             break; | ||||
|         case SINGLE_HOLD: | ||||
|             //set to desired layer when held:
 | ||||
|             //setting to the function layer
 | ||||
|             layer_on(_FN0); | ||||
|             break; | ||||
|         case DOUBLE_TAP: | ||||
|             //set to desired layer when double tapped:
 | ||||
|             //setting to the media layer
 | ||||
|             if(layer_state_is(_ML1)){ | ||||
|                 //if already active, toggle it to off
 | ||||
|                 layer_off(_ML1); | ||||
|                 //turn off the indicator LED
 | ||||
|                 //set LED HI to turn it off
 | ||||
|                 writePinHigh(INDICATOR_LED); | ||||
|             } else { | ||||
|                 //turn on the media layer
 | ||||
|                 layer_on(_ML1); | ||||
|                 //turn on the indicator LED
 | ||||
|                 //set LED pin to LOW to turn it on
 | ||||
|                 writePinLow(INDICATOR_LED); | ||||
|             } | ||||
|             break; | ||||
|         case TRIPLE_TAP: | ||||
|             //reset all layers
 | ||||
|             layer_clear(); | ||||
|             //set all LEDs off
 | ||||
|             writePinHigh(TX_LED); | ||||
|             writePinHigh(RX_LED); | ||||
|             writePinHigh(INDICATOR_LED); | ||||
|             break; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void tk_reset(qk_tap_dance_state_t *state, void *user_data){ | ||||
|     //if held and released, leave the layer
 | ||||
|     if(tk_tap_state.state == SINGLE_HOLD){ | ||||
|         layer_off(_FN0); | ||||
|     } | ||||
|     //reset the state
 | ||||
|     tk_tap_state.state = 0;  | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //associate the tap dance key with its functionality
 | ||||
| qk_tap_dance_action_t tap_dance_actions[] = { | ||||
|     [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, 275) | ||||
| }; | ||||
							
								
								
									
										16
									
								
								keyboards/navi10/keymaps/emdarcher/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								keyboards/navi10/keymaps/emdarcher/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| # emdarcher's keymap for the Navi10 | ||||
| 
 | ||||
| This is my personal keymap for the Navi10, developed for the original Rev0 prototype. It uses Tap Dance extensively on the INSERT key to access different layers. | ||||
| 
 | ||||
| - Base Layer:  | ||||
|   * Regular Navigation Cluster except for the INSERT key which is for tapping. | ||||
| - Hold Insert -> Function Layer:  | ||||
|   * Maps Volume Control on PgUp/PgDN, Pause/Scroll-Lock on Home/End (MacOS brightness), and Delete to Enter.  | ||||
| - 2 Taps -> Media Layer:  | ||||
|   * Has mappings for Audio control on MacOS using the arrow keys, PgUp/PgDn, and Delete. | ||||
|   * Lights up the Central 3mm indicator LED. | ||||
| - 1 Tap -> Control Layer:  | ||||
|   * Binds the arrow keys as LCTRL + Arrow Key for use in changing workspaces in MacOS. | ||||
|   * Lights the Pro Micro TX/RX LEDs. These are visible through the board if you use clear PCB mount switch bases. | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										1
									
								
								keyboards/navi10/keymaps/emdarcher/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/navi10/keymaps/emdarcher/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| TAP_DANCE_ENABLE = yes | ||||
							
								
								
									
										19
									
								
								keyboards/navi10/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/navi10/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| # Navi10 / ナビ10 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| A simple and fun navigation cluster macropad with exposed components. | ||||
| 
 | ||||
| * Keyboard Maintainer: [emdarcher](https://github.com/emdarcher) | ||||
| * Hardware Supported: Navi10 | ||||
| * Hardware Availability: [KeyHive](https://www.keyhive.xyz/) | ||||
| 
 | ||||
| Make example for this keyboard (after setting up your build environment): | ||||
| 
 | ||||
|     make navi10:default | ||||
| 
 | ||||
| Make example for a specific revision (ex. rev2): | ||||
| 
 | ||||
|     make navi10/rev2:default | ||||
| 
 | ||||
| See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | ||||
							
								
								
									
										51
									
								
								keyboards/navi10/rev0/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								keyboards/navi10/rev0/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| /*
 | ||||
| Copyright 2019 Ethan Durrant (emdarcher) | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "config_common.h" | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID           0xFEED | ||||
| #define PRODUCT_ID          0x0000 | ||||
| #define DEVICE_VER          0x0001 | ||||
| #define MANUFACTURER        emdarcher | ||||
| #define PRODUCT             Navi10 | ||||
| #define DESCRIPTION         A simple and fun navigation cluster macropad with retro Sci-Fi vibes. | ||||
| 
 | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 4 | ||||
| #define MATRIX_COLS 3 | ||||
| 
 | ||||
| /* Keyboard Matrix Assignments */ | ||||
| #define MATRIX_ROW_PINS \ | ||||
|     { B6, B2, B3, B4 } | ||||
| #define MATRIX_COL_PINS \ | ||||
|     { D1, D0, F6 } | ||||
| #define UNUSED_PINS | ||||
| 
 | ||||
| /* COL2ROW, ROW2COL*/ | ||||
| #define DIODE_DIRECTION COL2ROW | ||||
| 
 | ||||
| /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||
| #define DEBOUNCE 5 | ||||
| 
 | ||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||
| #define LOCKING_SUPPORT_ENABLE | ||||
| /* Locking resynchronize hack */ | ||||
| #define LOCKING_RESYNC_ENABLE | ||||
| 
 | ||||
							
								
								
									
										30
									
								
								keyboards/navi10/rev0/rev0.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/navi10/rev0/rev0.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #include "rev0.h" | ||||
| 
 | ||||
| void matrix_init_kb(void) { | ||||
|   // put your keyboard start-up code here
 | ||||
|   // runs once when the firmware starts up
 | ||||
| 
 | ||||
|   //set the indicator LED pin to Output
 | ||||
|   setPinOutput(B5); | ||||
|   //set HIGH for off.
 | ||||
|   writePinHigh(B5); | ||||
| 
 | ||||
|   //call any user functions
 | ||||
|   matrix_init_user(); | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										34
									
								
								keyboards/navi10/rev0/rev0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/navi10/rev0/rev0.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "quantum.h" | ||||
| 
 | ||||
| #define LAYOUT( \ | ||||
|     k0, k1, k2, \ | ||||
|     k3, k4, k5, \ | ||||
|                 \ | ||||
|         k6, \ | ||||
|     k7, k8, k9 \ | ||||
| ) \ | ||||
| { \ | ||||
|     {k0, k1, k2}, \ | ||||
|     {k3, k4, k5}, \ | ||||
|     {KC_NO, k6, KC_NO}, \ | ||||
|     {k7, k8, k9}, \ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										33
									
								
								keyboards/navi10/rev0/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/navi10/rev0/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| # MCU name
 | ||||
| MCU = atmega32u4 | ||||
| 
 | ||||
| # Bootloader selection
 | ||||
| #   Teensy       halfkay
 | ||||
| #   Pro Micro    caterina
 | ||||
| #   Atmel DFU    atmel-dfu
 | ||||
| #   LUFA DFU     lufa-dfu
 | ||||
| #   QMK DFU      qmk-dfu
 | ||||
| #   ATmega32A    bootloadHID
 | ||||
| #   ATmega328P   USBasp
 | ||||
| BOOTLOADER = caterina | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   change yes to no to disable
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration | ||||
| MOUSEKEY_ENABLE = no        # Mouse keys | ||||
| EXTRAKEY_ENABLE = yes       # Audio control and System control | ||||
| CONSOLE_ENABLE = yes        # Console for debug | ||||
| COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||
| SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend | ||||
| # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | ||||
| NKRO_ENABLE = no            # USB Nkey Rollover | ||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||
| RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||
| MIDI_ENABLE = no            # MIDI support  | ||||
| UNICODE_ENABLE = no         # Unicode | ||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| AUDIO_ENABLE = no           # Audio output on port C6 | ||||
| FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches | ||||
| HD44780_ENABLE = no         # Enable support for HD44780 based LCDs  | ||||
							
								
								
									
										51
									
								
								keyboards/navi10/rev2/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								keyboards/navi10/rev2/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| /*
 | ||||
| Copyright 2019 Ethan Durrant (emdarcher) | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "config_common.h" | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID           0xFEED | ||||
| #define PRODUCT_ID          0x0000 | ||||
| #define DEVICE_VER          0x0002 | ||||
| #define MANUFACTURER        emdarcher | ||||
| #define PRODUCT             Navi10 | ||||
| #define DESCRIPTION         A simple and fun navigation cluster macropad with exposed components. | ||||
| 
 | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 4 | ||||
| #define MATRIX_COLS 3 | ||||
| 
 | ||||
| /* Keyboard Matrix Assignments */ | ||||
| #define MATRIX_ROW_PINS \ | ||||
|     { B6, B2, B3, B4 } | ||||
| #define MATRIX_COL_PINS \ | ||||
|     { D4, C6, B1 } | ||||
| #define UNUSED_PINS | ||||
| 
 | ||||
| /* COL2ROW, ROW2COL*/ | ||||
| #define DIODE_DIRECTION COL2ROW | ||||
| 
 | ||||
| /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||
| #define DEBOUNCE 5 | ||||
| 
 | ||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||
| #define LOCKING_SUPPORT_ENABLE | ||||
| /* Locking resynchronize hack */ | ||||
| #define LOCKING_RESYNC_ENABLE | ||||
| 
 | ||||
							
								
								
									
										30
									
								
								keyboards/navi10/rev2/rev2.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/navi10/rev2/rev2.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #include "rev2.h" | ||||
| 
 | ||||
| void matrix_init_kb(void) { | ||||
|   // put your keyboard start-up code here
 | ||||
|   // runs once when the firmware starts up
 | ||||
| 
 | ||||
|   //set the indicator LED pin to Output
 | ||||
|   setPinOutput(B5); | ||||
|   //set HIGH for off.
 | ||||
|   writePinHigh(B5); | ||||
| 
 | ||||
|   //call any user functions
 | ||||
|   matrix_init_user(); | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										34
									
								
								keyboards/navi10/rev2/rev2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/navi10/rev2/rev2.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "quantum.h" | ||||
| 
 | ||||
| #define LAYOUT( \ | ||||
|     k0, k1, k2, \ | ||||
|     k3, k4, k5, \ | ||||
|                 \ | ||||
|         k6, \ | ||||
|     k7, k8, k9 \ | ||||
| ) \ | ||||
| { \ | ||||
|     {k0, k1, k2}, \ | ||||
|     {k3, k4, k5}, \ | ||||
|     {KC_NO, k6, KC_NO}, \ | ||||
|     {k7, k8, k9}, \ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										33
									
								
								keyboards/navi10/rev2/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/navi10/rev2/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| # MCU name
 | ||||
| MCU = atmega32u4 | ||||
| 
 | ||||
| # Bootloader selection
 | ||||
| #   Teensy       halfkay
 | ||||
| #   Pro Micro    caterina
 | ||||
| #   Atmel DFU    atmel-dfu
 | ||||
| #   LUFA DFU     lufa-dfu
 | ||||
| #   QMK DFU      qmk-dfu
 | ||||
| #   ATmega32A    bootloadHID
 | ||||
| #   ATmega328P   USBasp
 | ||||
| BOOTLOADER = caterina | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   change yes to no to disable
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration | ||||
| MOUSEKEY_ENABLE = no        # Mouse keys | ||||
| EXTRAKEY_ENABLE = yes       # Audio control and System control | ||||
| CONSOLE_ENABLE = yes        # Console for debug | ||||
| COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||
| SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend | ||||
| # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | ||||
| NKRO_ENABLE = no            # USB Nkey Rollover | ||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||
| RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||
| MIDI_ENABLE = no            # MIDI support  | ||||
| UNICODE_ENABLE = no         # Unicode | ||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| AUDIO_ENABLE = no           # Audio output on port C6 | ||||
| FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches | ||||
| HD44780_ENABLE = no         # Enable support for HD44780 based LCDs  | ||||
							
								
								
									
										51
									
								
								keyboards/navi10/rev3/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								keyboards/navi10/rev3/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| /*
 | ||||
| Copyright 2019 Ethan Durrant (emdarcher) | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "config_common.h" | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID           0xFEED | ||||
| #define PRODUCT_ID          0x0000 | ||||
| #define DEVICE_VER          0x0003 | ||||
| #define MANUFACTURER        emdarcher | ||||
| #define PRODUCT             Navi10 | ||||
| #define DESCRIPTION         A simple and fun navigation cluster macropad with exposed components. | ||||
| 
 | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 4 | ||||
| #define MATRIX_COLS 3 | ||||
| 
 | ||||
| /* Keyboard Matrix Assignments */ | ||||
| #define MATRIX_ROW_PINS \ | ||||
|     { B6, B2, B3, B4 } | ||||
| #define MATRIX_COL_PINS \ | ||||
|     { D4, E6, B1 } | ||||
| #define UNUSED_PINS | ||||
| 
 | ||||
| /* COL2ROW, ROW2COL*/ | ||||
| #define DIODE_DIRECTION COL2ROW | ||||
| 
 | ||||
| /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||
| #define DEBOUNCE 5 | ||||
| 
 | ||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||
| #define LOCKING_SUPPORT_ENABLE | ||||
| /* Locking resynchronize hack */ | ||||
| #define LOCKING_RESYNC_ENABLE | ||||
| 
 | ||||
							
								
								
									
										30
									
								
								keyboards/navi10/rev3/rev3.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/navi10/rev3/rev3.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #include "rev3.h" | ||||
| 
 | ||||
| void matrix_init_kb(void) { | ||||
|   // put your keyboard start-up code here
 | ||||
|   // runs once when the firmware starts up
 | ||||
| 
 | ||||
|   //set the indicator LED pin to Output
 | ||||
|   setPinOutput(B5); | ||||
|   //set HIGH for off.
 | ||||
|   writePinHigh(B5); | ||||
| 
 | ||||
|   //call any user functions
 | ||||
|   matrix_init_user(); | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										34
									
								
								keyboards/navi10/rev3/rev3.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/navi10/rev3/rev3.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| /* Copyright 2019 Ethan Durrant (emdarcher)
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "quantum.h" | ||||
| 
 | ||||
| #define LAYOUT( \ | ||||
|     k0, k1, k2, \ | ||||
|     k3, k4, k5, \ | ||||
|                 \ | ||||
|         k6, \ | ||||
|     k7, k8, k9 \ | ||||
| ) \ | ||||
| { \ | ||||
|     {k0, k1, k2}, \ | ||||
|     {k3, k4, k5}, \ | ||||
|     {KC_NO, k6, KC_NO}, \ | ||||
|     {k7, k8, k9}, \ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										33
									
								
								keyboards/navi10/rev3/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/navi10/rev3/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| # MCU name
 | ||||
| MCU = atmega32u4 | ||||
| 
 | ||||
| # Bootloader selection
 | ||||
| #   Teensy       halfkay
 | ||||
| #   Pro Micro    caterina
 | ||||
| #   Atmel DFU    atmel-dfu
 | ||||
| #   LUFA DFU     lufa-dfu
 | ||||
| #   QMK DFU      qmk-dfu
 | ||||
| #   ATmega32A    bootloadHID
 | ||||
| #   ATmega328P   USBasp
 | ||||
| BOOTLOADER = caterina | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   change yes to no to disable
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration | ||||
| MOUSEKEY_ENABLE = no        # Mouse keys | ||||
| EXTRAKEY_ENABLE = yes       # Audio control and System control | ||||
| CONSOLE_ENABLE = yes        # Console for debug | ||||
| COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||
| SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend | ||||
| # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | ||||
| NKRO_ENABLE = no            # USB Nkey Rollover | ||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||
| RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||
| MIDI_ENABLE = no            # MIDI support  | ||||
| UNICODE_ENABLE = no         # Unicode | ||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| AUDIO_ENABLE = yes          # Audio output on port C6 | ||||
| FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches | ||||
| HD44780_ENABLE = no         # Enable support for HD44780 based LCDs  | ||||
							
								
								
									
										1
									
								
								keyboards/navi10/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/navi10/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| DEFAULT_FOLDER = navi10/rev3 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Ethan Durrant
						Ethan Durrant