diff options
| -rw-r--r-- | keyboards/atreus/atreus.h | 2 | ||||
| -rw-r--r-- | keyboards/atreus/keymaps/ibnuda/config.h | 5 | ||||
| -rw-r--r-- | keyboards/atreus/keymaps/ibnuda/keymap.c | 258 | ||||
| -rw-r--r-- | keyboards/atreus/keymaps/ibnuda/rules.mk | 7 | ||||
| -rw-r--r-- | keyboards/atreus/promicro/config.h | 40 | ||||
| -rw-r--r-- | keyboards/atreus/promicro/promicro.c | 16 | ||||
| -rw-r--r-- | keyboards/atreus/promicro/promicro.h | 17 | ||||
| -rw-r--r-- | keyboards/atreus/promicro/rules.mk | 12 | ||||
| -rw-r--r-- | keyboards/atreus/readme.md | 5 | 
9 files changed, 360 insertions, 2 deletions
| diff --git a/keyboards/atreus/atreus.h b/keyboards/atreus/atreus.h index 88dd4d9dc8..a3d3507759 100644 --- a/keyboards/atreus/atreus.h +++ b/keyboards/atreus/atreus.h @@ -24,6 +24,8 @@      #include "astar_mirrored.h"  #elif KEYBOARD_atreus_teensy2      #include "teensy2.h" +#elif KEYBOARD_atreus_promicro +    #include "promicro.h"  #endif  // This a shortcut to help you visually see your layout. diff --git a/keyboards/atreus/keymaps/ibnuda/config.h b/keyboards/atreus/keymaps/ibnuda/config.h new file mode 100644 index 0000000000..625abe488f --- /dev/null +++ b/keyboards/atreus/keymaps/ibnuda/config.h @@ -0,0 +1,5 @@ +#pragma once + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT +#define COMBO_COUNT 15 diff --git a/keyboards/atreus/keymaps/ibnuda/keymap.c b/keyboards/atreus/keymaps/ibnuda/keymap.c new file mode 100644 index 0000000000..3c1c0f4503 --- /dev/null +++ b/keyboards/atreus/keymaps/ibnuda/keymap.c @@ -0,0 +1,258 @@ +#include QMK_KEYBOARD_H + +typedef enum { +    SINGLE_TAP, +    SINGLE_HOLD, +    DOUBLE_TAP, +} td_state_t; + +static td_state_t td_state; + +int current_dance(qk_tap_dance_state_t *state); + +void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data); + +// enum for tap dances. +enum { +    TD_DLT_CTLDLT = 0, +    TD_SCLN_CLN, +    TD_LEFT_THUMB, +}; + +// enum for combos. +enum combos { +    // left hand combinations. +    COLON_COMMA, +    COMMA_DOT, +    DOT_P, +    Q_J, +    J_K, + +    // right hand combinations. +    L_R, +    R_C, +    C_G, +    V_W, +    W_M, + +    // both hands combinations. +    DOT_C, +    J_W, +    P_G, +    U_H, +    K_M, +}; + +enum { +    _BASE, +    _LOWER, +    _RAISE, +    _ADJUST, +    _MUIS +}; + +// thumb keys. +#define ALT_ENT   ALT_T(KC_ENT) +#define SFT_ESC   SFT_T(KC_ESC) + +// home row mods. +#define CT_O RCTL_T(KC_O) +#define CT_N RCTL_T(KC_N) +#define SH_A RSFT_T(KC_A) +#define SH_S RSFT_T(KC_S) +#define AL_E RALT_T(KC_E) +#define AL_T RALT_T(KC_T) +#define GU_I RGUI_T(KC_I) +#define GU_D RGUI_T(KC_D) + +// layer toggle. +#define LW_BSPC  LT(_LOWER, KC_BSPC) +#define RS_SPC   LT(_RAISE, KC_SPC) +#define RS_D     LT(_RAISE, KC_D) +#define LW_I     LT(_LOWER, KC_I) +#define MU_QUOT  LT(_MUIS, KC_QUOT) +#define MU_Z     LT(_MUIS, KC_Z) + +// idk, man. not used, i guess. +#define RAISE    MO(_RAISE) +#define LOWER    MO(_LOWER) +#define ADDDD    MO(_ADJUST) +#define MUIS     MO(_MUIS) + +// common shortcuts for windows and linux that i use. +#define NXTTAB LCTL(KC_PGDN) +#define PRVTAB LCTL(KC_PGUP) +#define UPTAB  LCTL(LSFT(KC_PGUP)) +#define DNTAB  LCTL(LSFT(KC_PGDN)) +#define NXTWIN LALT(KC_TAB) +#define PRVWIN LALT(LSFT(KC_TAB)) +#define CALDL  LCTL(LALT(KC_DELT)) +#define TSKMGR LCTL(LSFT(KC_ESC)) +#define EXPLR  LGUI(KC_E) +#define LCKGUI LGUI(KC_L) +#define CONPST LSFT(KC_INS) +#define CLSGUI LALT(KC_F4) + +// tap dances +#define CTL_DLT TD(TD_DLT_CTLDLT) +#define SM_CLN  TD(TD_SCLN_CLN) +#define LFT_TMB TD(TD_LEFT_THUMB) + +// left hand combinations. +const uint16_t PROGMEM colon_comma_combo[] = {KC_SCLN, KC_COMM, COMBO_END}; +const uint16_t PROGMEM comma_dot_combo[]   = {KC_COMM, KC_DOT, COMBO_END}; +const uint16_t PROGMEM dot_p_combo[]       = {KC_DOT, KC_P, COMBO_END}; +const uint16_t PROGMEM q_j_combo[]         = {KC_Q, KC_J, COMBO_END}; +const uint16_t PROGMEM j_k_combo[]         = {KC_J, KC_K, COMBO_END}; + +// right hand combinations. +const uint16_t PROGMEM l_r_combo[]         = {KC_L, KC_R, COMBO_END}; +const uint16_t PROGMEM r_c_combo[]         = {KC_R, KC_C, COMBO_END}; +const uint16_t PROGMEM c_g_combo[]         = {KC_C, KC_G, COMBO_END}; +const uint16_t PROGMEM v_w_combo[]         = {KC_V, KC_W, COMBO_END}; +const uint16_t PROGMEM w_m_combo[]         = {KC_W, KC_M, COMBO_END}; + +// both hand combinations. +const uint16_t PROGMEM dot_c_combo[]       = {KC_DOT, KC_C, COMBO_END}; +const uint16_t PROGMEM j_w_combo[]         = {KC_J, KC_W, COMBO_END}; +const uint16_t PROGMEM u_h_combo[]         = {KC_U, KC_H, COMBO_END}; +const uint16_t PROGMEM p_g_combo[]         = {KC_P, KC_G, COMBO_END}; +const uint16_t PROGMEM k_m_combo[]         = {KC_K, KC_M, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { +    // left hand combinations. +    [COLON_COMMA]   = COMBO(colon_comma_combo,  KC_TAB), +    [COMMA_DOT]     = COMBO(comma_dot_combo,    KC_QUES), +    [DOT_P]         = COMBO(dot_p_combo,        KC_UNDS), +    [Q_J]           = COMBO(q_j_combo,          LCTL(KC_W)), +    [J_K]           = COMBO(j_k_combo,          KC_DELT), + +    // right hand combinations. +    [L_R]           = COMBO(l_r_combo,          KC_BSPC), +    [R_C]           = COMBO(r_c_combo,          KC_SLSH), +    [C_G]           = COMBO(c_g_combo,          KC_MINS), +    [V_W]           = COMBO(v_w_combo,          KC_APP), +    [W_M]           = COMBO(w_m_combo,          KC_DELT), + +    // both hand combinations. +    [DOT_C]         = COMBO(dot_c_combo,        KC_PGUP), +    [J_W]           = COMBO(j_w_combo,          KC_PGDN), +    [U_H]           = COMBO(u_h_combo,          KC_ENT), +    [P_G]           = COMBO(p_g_combo,          KC_HOME), +    [K_M]           = COMBO(k_m_combo,          KC_END), +}; + +void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) { +    if (state->count == 1) { +        register_code16(KC_DELT); +    } else { +        register_code16(C(KC_DELT)); +    } +} + +void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) { +    if (state->count == 1) { +        unregister_code16(KC_DELT); +    } else { +        unregister_code16(C(KC_DELT)); +    } +} + +void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) { +    if (state->count == 1) { +        register_code(KC_LSFT); +    } +    register_code(KC_SCLN); +} + +void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) { +    if (state->count == 1) { +        unregister_code(KC_LSFT); +    } +    unregister_code(KC_SCLN); +} + +int current_dance(qk_tap_dance_state_t *state) { +    if (state->count == 1) { +        if (state->interrupted || !state->pressed) { +            return SINGLE_TAP; +        } else { +            return SINGLE_HOLD; +        } +    } +    if (state->count == 2) { +        return DOUBLE_TAP; +    } else { +        return 3; +    } +} + +void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) { +    td_state = current_dance(state); +    switch (td_state) { +        case SINGLE_TAP: +            register_code16(KC_ESC); +            break; +        case SINGLE_HOLD: +            register_mods(MOD_BIT(KC_LSFT)); +            break; +        case DOUBLE_TAP: +            register_code16(KC_DELT); +            break; +    } +} + +void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) { +    switch (td_state) { +        case SINGLE_TAP: +            unregister_code16(KC_ESC); +            break; +        case SINGLE_HOLD: +            unregister_mods(MOD_BIT(KC_LSFT)); +            break; +        case DOUBLE_TAP: +            unregister_code16(KC_DELT); +            break; +    } +} + +qk_tap_dance_action_t tap_dance_actions[] = { +    [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset), +    [TD_SCLN_CLN]   = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset), +    [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset), +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BASE] = LAYOUT( +    SM_CLN, KC_COMM,KC_DOT, KC_P,   KC_Y,                       KC_F,   KC_G,   KC_C,   KC_R,   KC_L, +    SH_A,   CT_O,   AL_E,   KC_U,   GU_I,                       GU_D,   KC_H,   AL_T,   CT_N,   SH_S, +    MU_QUOT,KC_Q,   KC_J,   KC_K,   KC_X,                       KC_B,   KC_M,   KC_W,   KC_V,   MU_Z, +    _______,_______,_______,_______,LW_BSPC,SFT_ESC,    ALT_ENT,RS_SPC, _______,_______,_______,_______ +), + +[_RAISE] = LAYOUT( +    KC_EXLM,KC_AT,  KC_UP,  KC_LCBR,KC_RCBR,                    KC_BSLS,KC_7,   KC_8,   KC_9,   KC_ASTR , +    KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR,                     KC_EQL, KC_4,   KC_5,   KC_6,   KC_TILD , +    KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR,                    KC_GRV, KC_1,   KC_2,   KC_3,   KC_PLUS , +    _______,_______,_______,_______,ADDDD,  _______,    ALT_ENT,RS_SPC, _______,KC_0,   _______,_______ +), +[_LOWER] = LAYOUT( +    KC_ESC, KC_QUES,KC_UNDS,KC_F1,  KC_F2,                      KC_F3,  KC_F4,  KC_MINS,KC_SLSH,KC_BSPC , +    KC_LSFT,KC_TAB, KC_PGUP,KC_F5,  KC_F6,                      KC_F7,  KC_F8,  KC_HOME,KC_LALT,KC_ENT  , +    KC_CLCK,KC_SLCK,KC_PGDN,KC_F9,  KC_F10,                     KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH , +    _______,_______,_______,_______,ADDDD,  _______,    KC_DELT,ADDDD,  _______,_______,_______,_______ +), +[_ADJUST] = LAYOUT( +    _______,EXPLR,  KC_UP,  PRVTAB, PRVWIN,                     NXTWIN, NXTTAB, _______,_______,LCKGUI, +    TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB,                      DNTAB,  KC_ENT, KC_LGUI,_______,CALDL, +    _______,CLSGUI, _______,CONPST, RESET,                      _______,_______,_______,_______,_______, +    _______,_______,_______,_______,_______,_______,    _______,_______,_______,_______,_______,_______ +), +[_MUIS] = LAYOUT( +    _______,KC_BTN2,KC_MS_U,KC_BTN1,_______,                    _______,KC_BTN1,KC_MS_U,KC_BTN2,_______, +    _______,KC_MS_L,KC_MS_D,KC_MS_R,_______,                    _______,KC_MS_L,KC_MS_D,KC_MS_R,_______, +    _______,_______,KC_WH_D,KC_WH_U,_______,                    _______,KC_WH_U,KC_WH_D,_______,_______, +    _______,_______,_______,_______,_______,_______,    _______,_______,_______,_______,_______,_______ +), +}; diff --git a/keyboards/atreus/keymaps/ibnuda/rules.mk b/keyboards/atreus/keymaps/ibnuda/rules.mk new file mode 100644 index 0000000000..ce80219d1a --- /dev/null +++ b/keyboards/atreus/keymaps/ibnuda/rules.mk @@ -0,0 +1,7 @@ +# Build Options +#   change yes to no to disable +# + +MOUSEKEY_ENABLE  = yes +COMBO_ENABLE	 = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/atreus/promicro/config.h b/keyboards/atreus/promicro/config.h new file mode 100644 index 0000000000..03b63f6ff3 --- /dev/null +++ b/keyboards/atreus/promicro/config.h @@ -0,0 +1,40 @@ +/* Copyright 2019 + * + * 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" + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F4, B2, B4, B5 } +#if defined(PCBDOWN) +  #define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B6, B3, B1, F7, F6, F5 } +#else +  #define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B6, E6, D7, C6, D4, D0 } +#endif +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus/promicro/promicro.c b/keyboards/atreus/promicro/promicro.c new file mode 100644 index 0000000000..ad08ac9f01 --- /dev/null +++ b/keyboards/atreus/promicro/promicro.c @@ -0,0 +1,16 @@ +/* Copyright 2020 + * + * 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 "promicro.h" diff --git a/keyboards/atreus/promicro/promicro.h b/keyboards/atreus/promicro/promicro.h new file mode 100644 index 0000000000..bf74ceb17f --- /dev/null +++ b/keyboards/atreus/promicro/promicro.h @@ -0,0 +1,17 @@ +/* Copyright 2019 + * + * 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 diff --git a/keyboards/atreus/promicro/rules.mk b/keyboards/atreus/promicro/rules.mk new file mode 100644 index 0000000000..e6fef51727 --- /dev/null +++ b/keyboards/atreus/promicro/rules.mk @@ -0,0 +1,12 @@ +# 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 diff --git a/keyboards/atreus/readme.md b/keyboards/atreus/readme.md index 0dbd098ca7..0f499ca2a2 100644 --- a/keyboards/atreus/readme.md +++ b/keyboards/atreus/readme.md @@ -16,8 +16,9 @@ Make example for this keyboard (after setting up your build environment):  If you would like to use one of the alternative controllers: -    make atreus/astar:default:avrdude -    make atreus/teensy2:default:teensy +    make atreus/astar:default:flash +    make atreus/teensy2:default:flash +    make atreus/promicro:default:flash  If your keyboard layout is a mirror image of what you expected (i.e. you do not get QWERTY on the left but YTREWQ on the right), then you have an A-Star powered Atreus (older than March 2016) with PCB labels facing *down* instead of up. Specify that by adding `PCBDOWN=yes` to your `make` commands, e.g. | 
