Added Johan von Konow 3DPCB Keyboard (#209)

* Added Johan von Konow 3DPCB Keyboard

* Added Johan von Konow 3DPCB Keyboard

* Solve comments https://github.com/vial-kb/vial-qmk/pull/209#discussion_r928191530 & https://github.com/vial-kb/vial-qmk/pull/209#discussion_r928191540 & added EXTRAFLAGS += -flto

* Solve comments https://github.com/vial-kb/vial-qmk/pull/209#discussion_r928191530 & https://github.com/vial-kb/vial-qmk/pull/209#discussion_r928191540 & added EXTRAFLAGS += -flto
This commit is contained in:
Juan Pablo Kutianski 2022-07-24 02:42:17 -03:00 committed by GitHub
parent a1736b792a
commit 3b165ed51b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 320 additions and 0 deletions

View File

@ -0,0 +1,49 @@
#include "3dpcb.h"
static uint16_t led_timer;
bool led_layer_state = false;
// Blink at layer 1, 2 or 3
void matrix_scan_kb(void) {
uint8_t layer = biton32(layer_state);
uint8_t usb_led = host_keyboard_leds();
if (timer_elapsed(led_timer) > LAYER_BLINK_TIME) {
switch (layer) {
case 1:
if (!led_layer_state) {
led_set(0);
} else {
led_set(2);
}
led_layer_state = !led_layer_state;
break;
case 2:
if (!led_layer_state) {
led_set(0);
} else {
led_set(1);
}
led_layer_state = !led_layer_state;
break;
case 3:
if (!led_layer_state) {
led_set(0);
} else {
led_set(3);
}
led_layer_state = !led_layer_state;
break;
default:
led_set(usb_led);
led_layer_state = false;
}
led_timer = timer_read();
}
matrix_scan_user();
};

View File

@ -0,0 +1,19 @@
#pragma once
#include "quantum.h"
#define XXX KC_NO
#define LAYOUT( \
K00, K01, K02, K03, K04, K05, \
K10, K11, K12, K13, K14, K15, \
K20, K21, K22, K23, K24, K25, K26, \
K30, K31, K32, K33, K34, K35, K36, \
K40, K41, K42, K43, K44, K45, K46 \
) { \
{ K00, K01, K02, K03, K04, K05, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX }, \
{ K20, K21, K22, K23, K24, K25, K26 }, \
{ K30, K31, K32, K33, K34, K35, K36 }, \
{ K40, K41, K42, K43, K44, K45, K46 } \
}

View File

@ -0,0 +1,46 @@
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Johan von Konow
#define PRODUCT 3DPCB Keyboard
/* Layers */
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
/* key matrix pins */
#define MATRIX_ROW_PINS { D7, E6, B1, B2, B6 }
#define MATRIX_COL_PINS { D4, C6, F6, B5, F7, B4, B3 }
#define UNUSED_PINS
// Leds definition
#define LED_NUM_LOCK_PIN B0
#define LED_CAPS_LOCK_PIN D5
#define LED_PIN_ON_STATE 0
#define LAYER_BLINK_TIME 200
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
/* 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
/* Define MIDI level */
#define MIDI_ADVANCED
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* Use 1000hz polling */
#define USB_POLLING_INTERVAL_MS 1

View File

@ -0,0 +1,116 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, LCTL(LSFT(KC_F1)), LCTL(LSFT(KC_F4)), LCTL(LALT(KC_E)), KC_F10, LCTL(LSFT(KC_F9)),
LCTL(LALT(KC_M)), LCTL(KC_T), LCTL(LSFT(KC_M)), LCTL(KC_J), LCTL(KC_0), LCTL(LSFT(KC_A)),
LCTL(LALT(KC_P)), LCTL(KC_3), LCTL(KC_5), LCTL(KC_7), LCTL(KC_8), LCTL(LSFT(KC_1)), LCTL(KC_F1),
KC_LSFT, LCTL(LSFT(KC_3)), LCTL(LSFT(KC_5)), LCTL(LSFT(KC_8)), LCTL(LALT(KC_0)), LCTL(LALT(KC_3)), LCTL(KC_F4),
KC_LCTL, MO(0), MO(1), LCTL(KC_Z), LCTL(KC_C), LCTL(KC_G), KC_DEL),
[1] = LAYOUT(
KC_TRNS, LCTL(LSFT(KC_F2)), LCTL(LSFT(KC_F5)), LCTL(LSFT(KC_F6)), LCTL(LSFT(KC_F8)), LCTL(LSFT(KC_F10)),
LCTL(LALT(KC_3)), LCTL(LSFT(KC_S)), LCTL(LSFT(KC_R)), LCTL(LSFT(KC_J)), LCTL(KC_1), LCTL(LSFT(KC_P)),
LCTL(LALT(KC_C)), LCTL(KC_4), LCTL(KC_6), KC_TRNS, LCTL(KC_9), LCTL(LSFT(KC_2)), LCTL(KC_F2),
KC_TRNS, LCTL(LSFT(KC_4)), LCTL(LSFT(KC_6)), LCTL(LSFT(KC_9)), LCTL(LALT(KC_1)), KC_TRNS, LCTL(KC_M),
KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_Y), LCTL(KC_V), LCTL(LSFT(KC_G)), KC_TRNS),
[2] = LAYOUT(
KC_TRNS, LCTL(LSFT(KC_F3)), KC_TRNS, LCTL(LSFT(KC_F7)), KC_TRNS, KC_TRNS,
LCTL(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_2), KC_TRNS,
LCTL(KC_E), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_F3),
KC_TRNS, KC_TRNS, LCTL(LSFT(KC_7)), KC_TRNS, LCTL(LALT(KC_2)), KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_U), LCTL(KC_X), LCTL(KC_A), KC_TRNS),
[3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[4] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[5] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[6] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[7] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[8] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[9] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[10] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[11] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[12] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[13] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[14] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[15] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@ -0,0 +1,4 @@
/* Vial */
#define VIAL_KEYBOARD_UID {0x5E, 0x87, 0x5B, 0x94, 0x49, 0x4C, 0xED, 0x6D}
#define VIAL_UNLOCK_COMBO_ROWS {0,0};
#define VIAL_UNLOCK_COMBO_COLS {0,5};

View File

@ -0,0 +1,60 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, LCTL(LSFT(KC_F1)), LCTL(LSFT(KC_F4)), LCTL(LALT(KC_E)), KC_F10, LCTL(LSFT(KC_F9)),
LCTL(LALT(KC_M)), LCTL(KC_T), LCTL(LSFT(KC_M)), LCTL(KC_J), LCTL(KC_0), LCTL(LSFT(KC_A)),
LCTL(LALT(KC_P)), LCTL(KC_3), LCTL(KC_5), LCTL(KC_7), LCTL(KC_8), LCTL(LSFT(KC_1)), LCTL(KC_F1),
KC_LSFT, LCTL(LSFT(KC_3)), LCTL(LSFT(KC_5)), LCTL(LSFT(KC_8)), LCTL(LALT(KC_0)), LCTL(LALT(KC_3)), LCTL(KC_F4),
KC_LCTL, FN_MO13, FN_MO23, LCTL(KC_Z), LCTL(KC_C), LCTL(KC_G), KC_DEL),
[1] = LAYOUT(
KC_TRNS, LCTL(LSFT(KC_F2)), LCTL(LSFT(KC_F5)), LCTL(LSFT(KC_F6)), LCTL(LSFT(KC_F8)), LCTL(LSFT(KC_F10)),
LCTL(LALT(KC_3)), LCTL(LSFT(KC_S)), LCTL(LSFT(KC_R)), LCTL(LSFT(KC_J)), LCTL(KC_1), LCTL(LSFT(KC_P)),
LCTL(LALT(KC_C)), LCTL(KC_4), LCTL(KC_6), KC_TRNS, LCTL(KC_9), LCTL(LSFT(KC_2)), LCTL(KC_F2),
KC_TRNS, LCTL(LSFT(KC_4)), LCTL(LSFT(KC_6)), LCTL(LSFT(KC_9)), LCTL(LALT(KC_1)), KC_TRNS, LCTL(KC_M),
KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_Y), LCTL(KC_V), LCTL(LSFT(KC_G)), KC_TRNS),
[2] = LAYOUT(
KC_TRNS, LCTL(LSFT(KC_F3)), KC_TRNS, LCTL(LSFT(KC_F7)), KC_TRNS, KC_TRNS,
LCTL(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_2), KC_TRNS,
LCTL(KC_E), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_F3),
KC_TRNS, KC_TRNS, LCTL(LSFT(KC_7)), KC_TRNS, LCTL(LALT(KC_2)), KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_U), LCTL(KC_X), LCTL(KC_A), KC_TRNS),
[3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[4] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[5] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[6] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[7] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};

View File

@ -0,0 +1,6 @@
VIA_ENABLE = yes # Enable Via
VIAL_ENABLE = yes # Enable Vial
TAP_DANCE_ENABLE = no
COMBO_ENABLE = no
KEY_OVERRIDE_ENABLE = no

View File

@ -0,0 +1,20 @@
# MCU name
MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= no # Console for debug(+400)
COMMAND_ENABLE ?= no # Commands for debug and configuration
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
MIDI_ENABLE = yes # MIDI controls
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
AUDIO_ENABLE ?= no
RGBLIGHT_ENABLE ?= no
EXTRAFLAGS += -flto