diff options
| -rw-r--r-- | keyboards/navi10/info.json | 12 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/default/keymap.c | 131 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/default/readme.md | 11 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/default/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/emdarcher/keymap.c | 182 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/emdarcher/readme.md | 16 | ||||
| -rw-r--r-- | keyboards/navi10/keymaps/emdarcher/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/navi10/readme.md | 19 | ||||
| -rw-r--r-- | keyboards/navi10/rev0/config.h | 51 | ||||
| -rw-r--r-- | keyboards/navi10/rev0/rev0.c | 30 | ||||
| -rw-r--r-- | keyboards/navi10/rev0/rev0.h | 34 | ||||
| -rw-r--r-- | keyboards/navi10/rev0/rules.mk | 33 | ||||
| -rw-r--r-- | keyboards/navi10/rev2/config.h | 51 | ||||
| -rw-r--r-- | keyboards/navi10/rev2/rev2.c | 30 | ||||
| -rw-r--r-- | keyboards/navi10/rev2/rev2.h | 34 | ||||
| -rw-r--r-- | keyboards/navi10/rev2/rules.mk | 33 | ||||
| -rw-r--r-- | keyboards/navi10/rev3/config.h | 51 | ||||
| -rw-r--r-- | keyboards/navi10/rev3/rev3.c | 30 | ||||
| -rw-r--r-- | keyboards/navi10/rev3/rev3.h | 34 | ||||
| -rw-r--r-- | keyboards/navi10/rev3/rules.mk | 33 | ||||
| -rw-r--r-- | keyboards/navi10/rules.mk | 1 | 
21 files changed, 818 insertions, 0 deletions
| diff --git a/keyboards/navi10/info.json b/keyboards/navi10/info.json new file mode 100644 index 0000000000..dc92144d9d --- /dev/null +++ b/keyboards/navi10/info.json @@ -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}] +        } +    } +} diff --git a/keyboards/navi10/keymaps/default/keymap.c b/keyboards/navi10/keymaps/default/keymap.c new file mode 100644 index 0000000000..d1b3127760 --- /dev/null +++ b/keyboards/navi10/keymaps/default/keymap.c @@ -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) +}; diff --git a/keyboards/navi10/keymaps/default/readme.md b/keyboards/navi10/keymaps/default/readme.md new file mode 100644 index 0000000000..9e54a3f20a --- /dev/null +++ b/keyboards/navi10/keymaps/default/readme.md @@ -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. diff --git a/keyboards/navi10/keymaps/default/rules.mk b/keyboards/navi10/keymaps/default/rules.mk new file mode 100644 index 0000000000..e5ddcae8d9 --- /dev/null +++ b/keyboards/navi10/keymaps/default/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/navi10/keymaps/emdarcher/keymap.c b/keyboards/navi10/keymaps/emdarcher/keymap.c new file mode 100644 index 0000000000..40efed48d5 --- /dev/null +++ b/keyboards/navi10/keymaps/emdarcher/keymap.c @@ -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) +}; diff --git a/keyboards/navi10/keymaps/emdarcher/readme.md b/keyboards/navi10/keymaps/emdarcher/readme.md new file mode 100644 index 0000000000..b4ae6d75ff --- /dev/null +++ b/keyboards/navi10/keymaps/emdarcher/readme.md @@ -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. + + diff --git a/keyboards/navi10/keymaps/emdarcher/rules.mk b/keyboards/navi10/keymaps/emdarcher/rules.mk new file mode 100644 index 0000000000..e5ddcae8d9 --- /dev/null +++ b/keyboards/navi10/keymaps/emdarcher/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/navi10/readme.md b/keyboards/navi10/readme.md new file mode 100644 index 0000000000..58a94711f2 --- /dev/null +++ b/keyboards/navi10/readme.md @@ -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). diff --git a/keyboards/navi10/rev0/config.h b/keyboards/navi10/rev0/config.h new file mode 100644 index 0000000000..23fad9dbc3 --- /dev/null +++ b/keyboards/navi10/rev0/config.h @@ -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 + diff --git a/keyboards/navi10/rev0/rev0.c b/keyboards/navi10/rev0/rev0.c new file mode 100644 index 0000000000..f6c1f362ca --- /dev/null +++ b/keyboards/navi10/rev0/rev0.c @@ -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(); +} + diff --git a/keyboards/navi10/rev0/rev0.h b/keyboards/navi10/rev0/rev0.h new file mode 100644 index 0000000000..b162d14425 --- /dev/null +++ b/keyboards/navi10/rev0/rev0.h @@ -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}, \ +} + + diff --git a/keyboards/navi10/rev0/rules.mk b/keyboards/navi10/rev0/rules.mk new file mode 100644 index 0000000000..79950e2a8f --- /dev/null +++ b/keyboards/navi10/rev0/rules.mk @@ -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  diff --git a/keyboards/navi10/rev2/config.h b/keyboards/navi10/rev2/config.h new file mode 100644 index 0000000000..f739f2ce29 --- /dev/null +++ b/keyboards/navi10/rev2/config.h @@ -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 + diff --git a/keyboards/navi10/rev2/rev2.c b/keyboards/navi10/rev2/rev2.c new file mode 100644 index 0000000000..fed0e03897 --- /dev/null +++ b/keyboards/navi10/rev2/rev2.c @@ -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(); +} + diff --git a/keyboards/navi10/rev2/rev2.h b/keyboards/navi10/rev2/rev2.h new file mode 100644 index 0000000000..b162d14425 --- /dev/null +++ b/keyboards/navi10/rev2/rev2.h @@ -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}, \ +} + + diff --git a/keyboards/navi10/rev2/rules.mk b/keyboards/navi10/rev2/rules.mk new file mode 100644 index 0000000000..79950e2a8f --- /dev/null +++ b/keyboards/navi10/rev2/rules.mk @@ -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  diff --git a/keyboards/navi10/rev3/config.h b/keyboards/navi10/rev3/config.h new file mode 100644 index 0000000000..a203cf73b5 --- /dev/null +++ b/keyboards/navi10/rev3/config.h @@ -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 + diff --git a/keyboards/navi10/rev3/rev3.c b/keyboards/navi10/rev3/rev3.c new file mode 100644 index 0000000000..2b0355aa36 --- /dev/null +++ b/keyboards/navi10/rev3/rev3.c @@ -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(); +} + diff --git a/keyboards/navi10/rev3/rev3.h b/keyboards/navi10/rev3/rev3.h new file mode 100644 index 0000000000..b162d14425 --- /dev/null +++ b/keyboards/navi10/rev3/rev3.h @@ -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}, \ +} + + diff --git a/keyboards/navi10/rev3/rules.mk b/keyboards/navi10/rev3/rules.mk new file mode 100644 index 0000000000..b98e7eb2d6 --- /dev/null +++ b/keyboards/navi10/rev3/rules.mk @@ -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  diff --git a/keyboards/navi10/rules.mk b/keyboards/navi10/rules.mk new file mode 100644 index 0000000000..cc08312b77 --- /dev/null +++ b/keyboards/navi10/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = navi10/rev3 | 
