Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Atreus Pro Micro variant #8059

Merged
merged 6 commits into from
Feb 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions keyboards/atreus/atreus.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
5 changes: 5 additions & 0 deletions keyboards/atreus/keymaps/ibnuda/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#pragma once

#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT
#define COMBO_COUNT 15
258 changes: 258 additions & 0 deletions keyboards/atreus/keymaps/ibnuda/keymap.c
Original file line number Diff line number Diff line change
@@ -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,_______,_______,
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
),
};
7 changes: 7 additions & 0 deletions keyboards/atreus/keymaps/ibnuda/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Build Options
# change yes to no to disable
#

MOUSEKEY_ENABLE = yes
COMBO_ENABLE = yes
TAP_DANCE_ENABLE = yes
40 changes: 40 additions & 0 deletions keyboards/atreus/promicro/config.h
Original file line number Diff line number Diff line change
@@ -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"

/*
ibnuda marked this conversation as resolved.
Show resolved Hide resolved
* 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
16 changes: 16 additions & 0 deletions keyboards/atreus/promicro/promicro.c
Original file line number Diff line number Diff line change
@@ -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"
17 changes: 17 additions & 0 deletions keyboards/atreus/promicro/promicro.h
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions keyboards/atreus/promicro/rules.mk
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions keyboards/atreus/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down