Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2021-05-14 22:44:36 +00:00
commit 1dca3a8e3a
25 changed files with 1099 additions and 88 deletions

View File

@ -0,0 +1,70 @@
/* Copyright 2021 BB-66
*
* 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 0x4D52
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0001
#define MANUFACTURER BB-66
#define PRODUCT Minshara Marauder
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
/*
* 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 { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 }
#define DIODE_DIRECTION COL2ROW
#define RGB_DI_PIN D1
#ifdef RGB_DI_PIN
#define RGBLED_NUM 20
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== all animations enable ==*/
#define RGBLIGHT_ANIMATIONS
// /*== or choose animations ==*/
// #define RGBLIGHT_EFFECT_BREATHING
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
// #define RGBLIGHT_EFFECT_SNAKE
// #define RGBLIGHT_EFFECT_KNIGHT
// #define RGBLIGHT_EFFECT_CHRISTMAS
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
// #define RGBLIGHT_EFFECT_RGB_TEST
// #define RGBLIGHT_EFFECT_ALTERNATING
#endif
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

@ -0,0 +1,108 @@
{
"keyboard_name": "Minshara Marauder",
"url": "https://imgur.com/a/TvsXpq5",
"maintainer": "BB-66",
"width": 19.25,
"height": 6.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K00 (D0,B6)", "x":0, "y":0},
{"label":"K01 (D0,B2)", "x":2, "y":0},
{"label":"K02 (D0,B3)", "x":3, "y":0},
{"label":"K03 (D0,B1)", "x":4, "y":0},
{"label":"K04 (D0,F7)", "x":5, "y":0},
{"label":"K05 (D0,F6)", "x":6.5, "y":0},
{"label":"K06 (D0,F5)", "x":7.5, "y":0},
{"label":"K07 (D0,F4)", "x":8.5, "y":0},
{"label":"K08 (D0,B0)", "x":9.5, "y":0},
{"label":"K68 (B5,B0)", "x":11, "y":0},
{"label":"K67 (B5,F4)", "x":12, "y":0},
{"label":"K66 (B5,F5)", "x":13, "y":0},
{"label":"K65 (B5,F6)", "x":14, "y":0},
{"label":"K63 (B5,B1)", "x":15.25, "y":0},
{"label":"K62 (B5,B3)", "x":16.25, "y":0},
{"label":"K61 (B5,B2)", "x":17.25, "y":0},
{"label":"K60 (B5,B6)", "x":18.25, "y":0},
{"label":"K10 (D4,B6)", "x":0, "y":1.5},
{"label":"K11 (D4,B2)", "x":1, "y":1.5},
{"label":"K12 (D4,B3)", "x":2, "y":1.5},
{"label":"K13 (D4,B1)", "x":3, "y":1.5},
{"label":"K14 (D4,F7)", "x":4, "y":1.5},
{"label":"K15 (D4,F6)", "x":5, "y":1.5},
{"label":"K16 (D4,F5)", "x":6, "y":1.5},
{"label":"K17 (D4,F4)", "x":7, "y":1.5},
{"label":"K18 (D4,B0)", "x":8, "y":1.5},
{"label":"K78 (B7,B0)", "x":9, "y":1.5},
{"label":"K77 (B7,F4)", "x":10, "y":1.5},
{"label":"K76 (B7,F5)", "x":11, "y":1.5},
{"label":"K75 (B7,F6)", "x":12, "y":1.5},
{"label":"K74 (B7,F7)", "x":13, "y":1.5, "w":2},
{"label":"K73 (B7,B1)", "x":15.25, "y":1.5},
{"label":"K72 (B7,B3)", "x":16.25, "y":1.5},
{"label":"K71 (B7,B2)", "x":17.25, "y":1.5},
{"label":"K70 (B7,B6)", "x":18.25, "y":1.5},
{"label":"K20 (C6,B6)", "x":0, "y":2.5, "w":1.5},
{"label":"K21 (C6,B2)", "x":1.5, "y":2.5},
{"label":"K22 (C6,B3)", "x":2.5, "y":2.5},
{"label":"K23 (C6,B1)", "x":3.5, "y":2.5},
{"label":"K24 (C6,F7)", "x":4.5, "y":2.5},
{"label":"K25 (C6,F6)", "x":5.5, "y":2.5},
{"label":"K26 (C6,F5)", "x":6.5, "y":2.5},
{"label":"K27 (C6,F4)", "x":7.5, "y":2.5},
{"label":"K28 (C6,B0)", "x":8.5, "y":2.5},
{"label":"K88 (D5,B0)", "x":9.5, "y":2.5},
{"label":"K87 (D5,F4)", "x":10.5, "y":2.5},
{"label":"K86 (D5,F5)", "x":11.5, "y":2.5},
{"label":"K85 (D5,F6)", "x":12.5, "y":2.5},
{"label":"K84 (D5,F7)", "x":13.5, "y":2.5, "w":1.5},
{"label":"K83 (D5,B1)", "x":15.25, "y":2.5},
{"label":"K82 (D5,B3)", "x":16.25, "y":2.5},
{"label":"K81 (D5,B2)", "x":17.25, "y":2.5},
{"label":"K80 (D5,B6)", "x":18.25, "y":2.5, "h":2},
{"label":"K30 (D7,B6)", "x":0, "y":3.5, "w":1.75},
{"label":"K31 (D7,B2)", "x":1.75, "y":3.5},
{"label":"K32 (D7,B3)", "x":2.75, "y":3.5},
{"label":"K33 (D7,B1)", "x":3.75, "y":3.5},
{"label":"K34 (D7,F7)", "x":4.75, "y":3.5},
{"label":"K35 (D7,F6)", "x":5.75, "y":3.5},
{"label":"K36 (D7,F5)", "x":6.75, "y":3.5},
{"label":"K37 (D7,F4)", "x":7.75, "y":3.5},
{"label":"K38 (D7,B0)", "x":8.75, "y":3.5},
{"label":"K98 (C7,B0)", "x":9.75, "y":3.5},
{"label":"K97 (C7,F4)", "x":10.75, "y":3.5},
{"label":"K96 (C7,F5)", "x":11.75, "y":3.5},
{"label":"K95 (C7,F6)", "x":12.75, "y":3.5, "w":2.25},
{"label":"K93 (C7,B1)", "x":15.25, "y":3.5},
{"label":"K92 (C7,B3)", "x":16.25, "y":3.5},
{"label":"K91 (C7,B2)", "x":17.25, "y":3.5},
{"label":"K40 (E6,B6)", "x":0, "y":4.5, "w":2.25},
{"label":"K41 (E6,B2)", "x":2.25, "y":4.5},
{"label":"K42 (E6,B3)", "x":3.25, "y":4.5},
{"label":"K43 (E6,B1)", "x":4.25, "y":4.5},
{"label":"K44 (E6,F7)", "x":5.25, "y":4.5},
{"label":"K45 (E6,F6)", "x":6.25, "y":4.5},
{"label":"K46 (E6,F5)", "x":7.25, "y":4.5},
{"label":"K47 (E6,F4)", "x":8.25, "y":4.5},
{"label":"K48 (E6,B0)", "x":9.25, "y":4.5},
{"label":"KA8 (F1,B0)", "x":10.25, "y":4.5},
{"label":"KA7 (F1,F4)", "x":11.25, "y":4.5},
{"label":"KA6 (F1,F5)", "x":12.25, "y":4.5, "w":2.75},
{"label":"KA3 (F1,B1)", "x":15.25, "y":4.5},
{"label":"KA2 (F1,B3)", "x":16.25, "y":4.5},
{"label":"KA1 (F1,B2)", "x":17.25, "y":4.5},
{"label":"KA0 (F1,B6)", "x":18.25, "y":4.5, "h":2},
{"label":"K50 (B4,B6)", "x":0, "y":5.5, "w":1.5},
{"label":"K51 (B4,B2)", "x":1.5, "y":5.5},
{"label":"K52 (B4,B3)", "x":2.5, "y":5.5, "w":1.5},
{"label":"K56 (B4,F5)", "x":4, "y":5.5, "w":7},
{"label":"KB7 (F0,F4)", "x":11, "y":5.5, "w":1.5},
{"label":"KB6 (F0,F5)", "x":12.5, "y":5.5},
{"label":"KB4 (F0,F7)", "x":13.5, "y":5.5, "w":1.5},
{"label":"KB3 (F0,B1)", "x":15.25, "y":5.5, "w":2},
{"label":"KB1 (F0,B2)", "x":17.25, "y":5.5}
]
}
}
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}

View File

@ -0,0 +1,29 @@
/* Copyright 2021 BB-66
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_KP_SLSH, KC__KP_ASTR, KC_KP_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_KP_4, KC_KP_5, KC_CP_6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC__PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT
),
};

View File

@ -0,0 +1,20 @@
/* Copyright 2021 BB-66
*
* 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 "marauder.h"
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

@ -0,0 +1,44 @@
/* Copyright 2021 BB-66
*
* 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( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K66, K65, K63, K62, K61, K60, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K76, K75, K74, K73, K72, K71, K70, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K86, K85, K84, K83, K82, K81, K80, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K96, K95, K93, K92, K91, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA6, KA3, KA2, KA1, KA0, \
K50, K51, K52, K56, KB7, KB6, KB4, KB3, KB1 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \
{ K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO }, \
{ K60, K61, K62, K63, KC_NO, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, K74, K75, K76, K77, K78 }, \
{ K80, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, K91, K92, K93, KC_NO, K95, K96, K97, K98 }, \
{ KA0, KA1, KA2, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \
{ KC_NO, KB1, KC_NO, KB3, KB4, KC_NO, KB6, KB7, KC_NO }, \
}
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

@ -0,0 +1,26 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # 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 = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes # Link Time Optimization, shrinks the output slightly
# generated by KBFirmware JSON to QMK Parser
# https://noroadsleft.github.io/kbf_qmk_converter/

View File

@ -0,0 +1,63 @@
/* Copyright 2021 duoshock
*
* 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 "config_common.h"
#define VENDOR_ID 0x4D65
#define PRODUCT_ID 0x3222
#define DEVICE_VER 0x0001
#define MANUFACTURER Merge
#define PRODUCT UM-70
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define SOFT_SERIAL_PIN D2
#define SPLIT_USB_DETECT
#define MASTER_LEFT
#define SPLIT_MODS_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_SPLIT
#define RGBLED_NUM 83
#define RGBLED_SPLIT { 39, 44 }
#ifdef RGB_MATRIX_ENABLE
# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGB_MATRIX_SPLIT RGBLED_SPLIT
#endif
#define RGBLIGHT_SLEEP
#define RGBLIGHT_LIMIT_VAL 150
#define DEBOUNCE 5
#define B6_AUDIO
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(STARTUP_SOUND)
#endif
#define ENCODERS_PAD_A { B4 }
#define ENCODERS_PAD_B { B5 }
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0

View File

@ -0,0 +1,21 @@
{
"keyboard_name": "UM-70",
"url": "https://mergedesign.store/um-70",
"maintainer": "duoshock",
"width": 18.75,
"height": 5.25,
"layouts": {
"LAYOUT_rspace_2u_bksp": {
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0, "w":2}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}]
},
"LAYOUT_rspace_split_bksp": {
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}]
},
"LAYOUT_lspace_2u_bksp": {
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0, "w":2}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"x":7.5, "y":4, "w":1.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}]
},
"LAYOUT_lspace_split_bksp": {
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"x":7.5, "y":4, "w":1.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}]
}
}
}

View File

@ -0,0 +1,182 @@
/* Copyright 2021 duoshock
*
* 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
#include <stdio.h>
enum layer_names {
_BASE,
_ONE,
_TWO,
_THREE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* .---------------------------. .-------------------------------. .---.
* |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =| Bsp | |EC |
* |-------------------------. .---------------------------------| |---|
* |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom|
* .---. |-------------------------. '---------------------------------| |---|
* |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End|
* |---| |----------------------------. '--------------------------------| .---. '---'
* |M1 | |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
* |---| |----------------------------| |---------------------------' .-----------.
* |M2 | |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
* '---' '----------------------------' '-----------------------' '-----------'
*/
[_BASE] = LAYOUT_rspace_2u_bksp(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_3, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_ONE] = LAYOUT_rspace_2u_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_TWO] = LAYOUT_rspace_2u_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_THREE] = LAYOUT_rspace_2u_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* Master Left */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (index == 1) { /* Master Right */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
}
#ifdef OLED_DRIVER_ENABLE
void suspend_power_down_user(void) {
oled_off();
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) {
return OLED_ROTATION_90;
}
return rotation;
}
static void render_logo(void) {
static const char PROGMEM raw_logo[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,248,224,192,128,224,248,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 14, 14, 14, 14,142,238,254,254,126, 30, 4,224,248,252, 62, 30, 14, 14, 14, 30, 62,252,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 63,124,112,112,112,112,124, 63, 63, 15, 0, 0, 0,127,127,127, 0, 1, 7, 15, 15, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,126, 63, 15, 3, 1, 0, 0, 0, 15, 31, 63,124,120,112,112,112,120,124, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
oled_write_raw_P(raw_logo, sizeof(raw_logo));
}
// 32 * 18 Merge logos
static const char PROGMEM merge_logo[] = {
0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e,
0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0,
0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f,
0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
};
int current_wpm = 0;
static void print_status_narrow(void) {
oled_set_cursor(0,1);
oled_write_raw_P(merge_logo, sizeof(merge_logo));
oled_set_cursor(0,5);
oled_write_P(PSTR("-----"), false);
oled_set_cursor(0,6);
oled_write_P(PSTR("LYR "), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("0"), false);
break;
case _ONE:
oled_write_P(PSTR("1"), false);
break;
case _TWO:
oled_write_P(PSTR("2"), false);
break;
case _THREE:
oled_write_P(PSTR("3"), false);
break;
default:
oled_write_ln_P(PSTR("Undef"), false);
}
led_t led_usb_state = host_keyboard_led_state();
oled_write_ln_P(PSTR(" "), false);
oled_write_P(PSTR("CAP "), false);
oled_write_P(PSTR("."), led_usb_state.caps_lock);
oled_write_P(PSTR("NUM "), false);
oled_write_P(PSTR("."), led_usb_state.num_lock);
oled_write_P(PSTR("SCR "), false);
oled_write_P(PSTR("."), led_usb_state.scroll_lock);
//oled_write_ln_P(PSTR(" "), false);
oled_write_P(PSTR("-----"), false);
// WPM counter Start (Need #include <stdio.h> to work)
char wpm_str[8];
oled_set_cursor(0,13);
sprintf(wpm_str, " %03d", current_wpm);
oled_write(wpm_str, false);
oled_set_cursor(0,14);
oled_write(" WPM ", false);
// WPM counter End
}
void oled_task_user(void) {
current_wpm = get_current_wpm();
if (is_keyboard_master()) {
print_status_narrow();
//render_logo();
} else {
render_logo();
//print_status_narrow();
}
}
#endif

View File

@ -0,0 +1,5 @@
# Default UM-70 Layout
![UM-70 Layout Image](https://i.imgur.com/5lucSbi.jpg)
This is the default layout that comes flashed on every UM-70.

View File

@ -0,0 +1,2 @@
WPM_ENABLE = yes
LTO_ENABLE = yes

View File

@ -0,0 +1,20 @@
/* Copyright 2021 duoshock
*
* 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/>.
*/
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE

View File

@ -0,0 +1,182 @@
/* Copyright 2021 duoshock
*
* 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
#include <stdio.h>
enum layer_names {
_BASE,
_ONE,
_TWO,
_THREE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* .---------------------------. .-------------------------------. .---.
* |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |EC |
* |-------------------------. .---------------------------------| |---|
* |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom|
* .---. |-------------------------. '---------------------------------| |---|
* |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End|
* |---| |----------------------------. '--------------------------------| .---. '---'
* |M1 | |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
* |---| |----------------------------| |---------------------------' .-----------.
* |M2 | |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
* '---' '----------------------------' '-----------------------' '-----------'
*/
[_BASE] = LAYOUT_rspace_split_bksp(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_3, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_ONE] = LAYOUT_rspace_split_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_TWO] = LAYOUT_rspace_split_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_THREE] = LAYOUT_rspace_split_bksp(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* Master Left */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (index == 1) { /* Master Right */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
}
#ifdef OLED_DRIVER_ENABLE
void suspend_power_down_user(void) {
oled_off();
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) {
return OLED_ROTATION_90;
}
return rotation;
}
static void render_logo(void) {
static const char PROGMEM raw_logo[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,248,224,192,128,224,248,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 14, 14, 14, 14,142,238,254,254,126, 30, 4,224,248,252, 62, 30, 14, 14, 14, 30, 62,252,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 63,124,112,112,112,112,124, 63, 63, 15, 0, 0, 0,127,127,127, 0, 1, 7, 15, 15, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,126, 63, 15, 3, 1, 0, 0, 0, 15, 31, 63,124,120,112,112,112,120,124, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
oled_write_raw_P(raw_logo, sizeof(raw_logo));
}
// 32 * 18 Merge logos
static const char PROGMEM merge_logo[] = {
0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e,
0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0,
0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f,
0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
};
int current_wpm = 0;
static void print_status_narrow(void) {
oled_set_cursor(0,1);
oled_write_raw_P(merge_logo, sizeof(merge_logo));
oled_set_cursor(0,5);
oled_write_P(PSTR("-----"), false);
oled_set_cursor(0,6);
oled_write_P(PSTR("LYR "), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("0"), false);
break;
case _ONE:
oled_write_P(PSTR("1"), false);
break;
case _TWO:
oled_write_P(PSTR("2"), false);
break;
case _THREE:
oled_write_P(PSTR("3"), false);
break;
default:
oled_write_ln_P(PSTR("Undef"), false);
}
led_t led_usb_state = host_keyboard_led_state();
oled_write_ln_P(PSTR(" "), false);
oled_write_P(PSTR("CAP "), false);
oled_write_P(PSTR("."), led_usb_state.caps_lock);
oled_write_P(PSTR("NUM "), false);
oled_write_P(PSTR("."), led_usb_state.num_lock);
oled_write_P(PSTR("SCR "), false);
oled_write_P(PSTR("."), led_usb_state.scroll_lock);
//oled_write_ln_P(PSTR(" "), false);
oled_write_P(PSTR("-----"), false);
// WPM counter Start (Need #include <stdio.h> to work)
char wpm_str[8];
oled_set_cursor(0,13);
sprintf(wpm_str, " %03d", current_wpm);
oled_write(wpm_str, false);
oled_set_cursor(0,14);
oled_write(" WPM ", false);
// WPM counter End
}
void oled_task_user(void) {
current_wpm = get_current_wpm();
if (is_keyboard_master()) {
print_status_narrow();
//render_logo();
} else {
render_logo();
//print_status_narrow();
}
}
#endif

View File

@ -0,0 +1,3 @@
VIA_ENABLE = yes
WPM_ENABLE = yes
LTO_ENABLE = yes

View File

@ -0,0 +1,14 @@
# UM-70
![UM-70](https://i.imgur.com/zrvMOZel.jpeg)
A 70 keys keyboard in 65% layout with encoder and OLED screen sold by Merge. [Product page](https://mergedesign.store/products/um-70)
* Keyboard Maintainer: [duoshock](https://github.com/duoshock)
* Hardware Availability: [Merge Store](https://mergedesign.store/products/um-70)
Make example for this keyboard (after setting up your build environment):
make merge/um70: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).

View File

@ -0,0 +1,25 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # 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 = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
SPLIT_KEYBOARD = yes
OLED_DRIVER_ENABLE = yes

View File

@ -0,0 +1,77 @@
/* Copyright 2021 duoshock
*
* 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 "um70.h"
#ifdef RGB_MATRIX_ENABLE
/*
Underglow Underglow 13,14 = split bksp, 14 = 2u bksp
07 08 09 10 11 12 13 01 01 07 08 09 10 11 12 13 14
14 15 16 17 18 19 02 02 15 16 17 18 19 20 21 22 23
20 21 22 23 24 25 26 03 03 24 25 26 27 28 29 30 31
27 28 29 30 31 32 33 04 04 32 33 34 35 36 37 38
34 35 36 37 38 39 05 05 39 40 41 42 43 44
06 06
*/
#define XX NO_LED
led_config_t g_led_config = { {
{ 6, 7, 8, 9, 10, 11, 12, XX },
{ 13, 14, 15, 16, 17, 18, XX, XX },
{ 20, 21, 22, 23, 24, 25, XX, XX },
{ 27, 28, 29, 30, 31, 32, XX, XX },
{ 34, 35, 36, 37, 38, 19, 26, 33 },
{ 45, 46, 47, 48, 49, 50, 51, 52 },
{ 53, 54, 55, 56, 57, 58, 59, 60 },
{ 62, 63, 64, 65, 66, 67, 68, XX },
{ 70, 71, 72, 73, 74, 75, 76, 61 },
{ 77, 78, 79, 80, 81, 82, XX, 69 },
}, {
{ 224, 0 }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, { 224, 64 },
{ 32, 0 }, { 64, 0 }, { 96, 0 }, { 128, 0 }, { 160, 0 }, { 192, 0 }, { 224, 0 },
{ 32, 16 }, { 64, 16 }, { 96, 16 }, { 128, 16 }, { 160, 16 }, { 192, 16 },
{ 0, 32 }, { 32, 32 }, { 64, 32 }, { 96, 32 }, { 128, 32 }, { 160, 32 }, { 192, 32 },
{ 0, 48 }, { 32, 48 }, { 64, 48 }, { 96, 48 }, { 128, 48 }, { 160, 48 }, { 192, 48 },
{ 0, 64 }, { 32, 64 }, { 64, 64 }, { 96, 64 }, { 128, 64 }, { 160, 64 },
{ 224, 0 }, { 224, 13 }, { 224, 26 }, { 148, 39 }, { 185, 52 }, { 224, 64 },
{ 0, 0 }, { 32, 0 }, { 64, 0 }, { 96, 0 }, { 128, 0 }, { 160, 0 }, { 192, 0 }, { 224, 0 },
{ 0, 16 }, { 32, 16 }, { 64, 16 }, { 96, 16 }, { 128, 16 }, { 160, 16 }, { 192, 16 }, { 223, 16 }, { 224, 16 },
{ 0, 32 }, { 32, 32 }, { 64, 32 }, { 96, 32 }, { 128, 32 }, { 160, 32 }, { 192, 32 }, { 223, 32 },
{ 0, 48 }, { 32, 48 }, { 64, 48 }, { 96, 48 }, { 128, 48 }, { 160, 48 }, { 192, 48 },
{ 0, 46 }, { 32, 46 }, { 64, 64 }, { 96, 64 }, { 128, 64 }, { 160, 64 }
}, {
2, 2, 2, 2, 2, 2,
4, 4, 4, 4, 4, 4, 4,
1, 4, 4, 4, 4, 4,
4, 1, 4, 4, 4, 4, 4,
4, 1, 4, 4, 4, 4, 4,
4, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2,
4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 4, 4, 4, 4, 1, 4,
4, 4, 4, 4, 4, 4, 1, 4,
4, 4, 4, 4, 4, 1, 4,
1, 1, 1, 4, 4, 4
} };
#endif

View File

@ -0,0 +1,97 @@
/* Copyright 2021 duoshock
*
* 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 XXX KC_NO
#define LAYOUT_rspace_split_bksp( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\
L47, L40, L41, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, XXX }, \
{ L10, L11, L12, L13, L14, L15, XXX, XXX }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX }, \
{ L30, L31, L32, L33, L34, L35, XXX, XXX }, \
{ L40, L41, L42, L43, L44, L45, L46, L47 }, \
{ R00, R01, R02, R03, R04, R05, R06, R07 }, \
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, R42, R43, R44, R45, XXX, R47 } \
}
#define LAYOUT_rspace_2u_bksp( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\
L47, L40, L41, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, XXX }, \
{ L10, L11, L12, L13, L14, L15, XXX, XXX }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX }, \
{ L30, L31, L32, L33, L34, L35, XXX, XXX }, \
{ L40, L41, L42, L43, L44, L45, L46, L47 }, \
{ R00, R01, R02, R03, R04, R05, XXX, R07 }, \
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, R42, R43, R44, R45, XXX, R47 } \
}
#define LAYOUT_lspace_2u_bksp( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\
L47, L40, L41, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, XXX }, \
{ L10, L11, L12, L13, L14, L15, XXX, XXX }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX }, \
{ L30, L31, L32, L33, L34, L35, XXX, XXX }, \
{ L40, L41, L42, L43, L44, L45, L46, L47 }, \
{ R00, R01, R02, R03, R04, R05, XXX, R07 }, \
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, R42, R43, R44, R45, XXX, R47 } \
}
#define LAYOUT_lspace_split_bksp( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
L46, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36,\
L47, L40, L41, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
) { \
{ L00, L01, L02, L03, L04, L05, L06, XXX }, \
{ L10, L11, L12, L13, L14, L15, XXX, XXX }, \
{ L20, L21, L22, L23, L24, L25, XXX, XXX }, \
{ L30, L31, L32, L33, L34, L35, XXX, XXX }, \
{ L40, L41, L42, L43, L44, L45, L46, L47 }, \
{ R00, R01, R02, R03, R04, R05, R06, R07 }, \
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, R42, R43, R44, R45, XXX, R47 } \
}

View File

@ -45,6 +45,20 @@
{ K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
} }
#define LAYOUT_60_iso_split_rshift( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
K400, K401, K402, K406, K410, K411, K412, K413 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC314 }, \
{ K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
}
#define LAYOUT_60_hhkb( \ #define LAYOUT_60_hhkb( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \

View File

@ -1,79 +1,87 @@
{ {
"keyboard_name": "TKC Portico", "keyboard_name": "TKC Portico",
"url": "", "url": "",
"maintainer": "TerryMathews", "maintainer": "TerryMathews",
"width": 16, "width": 16,
"height": 5, "height": 5,
"layout_aliases": {
"LAYOUT_all": "LAYOUT_65_ansi_blocker",
},
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT_65_ansi_blocker": {
"layout": [ "layout": [
{"label":"~", "x":0, "y":0}, {"label":"~", "x":0, "y":0},
{"label":"!", "x":1, "y":0}, {"label":"!", "x":1, "y":0},
{"label":"@", "x":2, "y":0}, {"label":"@", "x":2, "y":0},
{"label":"#", "x":3, "y":0}, {"label":"#", "x":3, "y":0},
{"label":"$", "x":4, "y":0}, {"label":"$", "x":4, "y":0},
{"label":"%", "x":5, "y":0}, {"label":"%", "x":5, "y":0},
{"label":"^", "x":6, "y":0}, {"label":"^", "x":6, "y":0},
{"label":"&", "x":7, "y":0}, {"label":"&", "x":7, "y":0},
{"label":"*", "x":8, "y":0}, {"label":"*", "x":8, "y":0},
{"label":"(", "x":9, "y":0}, {"label":"(", "x":9, "y":0},
{"label":")", "x":10, "y":0}, {"label":")", "x":10, "y":0},
{"label":"_", "x":11, "y":0}, {"label":"_", "x":11, "y":0},
{"label":"+", "x":12, "y":0}, {"label":"+", "x":12, "y":0},
{"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Backspace", "x":13, "y":0, "w":2},
{"label":"Home", "x":15, "y":0}, {"label":"Home", "x":15, "y":0},
{"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"Q", "x":1.5, "y":1}, {"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"W", "x":2.5, "y":1}, {"label":"Q", "x":1.5, "y":1},
{"label":"E", "x":3.5, "y":1}, {"label":"W", "x":2.5, "y":1},
{"label":"R", "x":4.5, "y":1}, {"label":"E", "x":3.5, "y":1},
{"label":"T", "x":5.5, "y":1}, {"label":"R", "x":4.5, "y":1},
{"label":"Y", "x":6.5, "y":1}, {"label":"T", "x":5.5, "y":1},
{"label":"U", "x":7.5, "y":1}, {"label":"Y", "x":6.5, "y":1},
{"label":"I", "x":8.5, "y":1}, {"label":"U", "x":7.5, "y":1},
{"label":"O", "x":9.5, "y":1}, {"label":"I", "x":8.5, "y":1},
{"label":"P", "x":10.5, "y":1}, {"label":"O", "x":9.5, "y":1},
{"label":"{", "x":11.5, "y":1}, {"label":"P", "x":10.5, "y":1},
{"label":"}", "x":12.5, "y":1}, {"label":"{", "x":11.5, "y":1},
{"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"}", "x":12.5, "y":1},
{"label":"PgUp", "x":15, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5},
{"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"PgUp", "x":15, "y":1},
{"label":"A", "x":1.75, "y":2},
{"label":"S", "x":2.75, "y":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
{"label":"D", "x":3.75, "y":2}, {"label":"A", "x":1.75, "y":2},
{"label":"F", "x":4.75, "y":2}, {"label":"S", "x":2.75, "y":2},
{"label":"G", "x":5.75, "y":2}, {"label":"D", "x":3.75, "y":2},
{"label":"H", "x":6.75, "y":2}, {"label":"F", "x":4.75, "y":2},
{"label":"J", "x":7.75, "y":2}, {"label":"G", "x":5.75, "y":2},
{"label":"K", "x":8.75, "y":2}, {"label":"H", "x":6.75, "y":2},
{"label":"L", "x":9.75, "y":2}, {"label":"J", "x":7.75, "y":2},
{"label":":", "x":10.75, "y":2}, {"label":"K", "x":8.75, "y":2},
{"label":"\"", "x":11.75, "y":2}, {"label":"L", "x":9.75, "y":2},
{"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":":", "x":10.75, "y":2},
{"label":"PgDn", "x":15, "y":2}, {"label":"\"", "x":11.75, "y":2},
{"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Enter", "x":12.75, "y":2, "w":2.25},
{"label":"Z", "x":2.25, "y":3}, {"label":"PgDn", "x":15, "y":2},
{"label":"X", "x":3.25, "y":3},
{"label":"C", "x":4.25, "y":3}, {"label":"Shift", "x":0, "y":3, "w":2.25},
{"label":"V", "x":5.25, "y":3}, {"label":"Z", "x":2.25, "y":3},
{"label":"B", "x":6.25, "y":3}, {"label":"X", "x":3.25, "y":3},
{"label":"N", "x":7.25, "y":3}, {"label":"C", "x":4.25, "y":3},
{"label":"M", "x":8.25, "y":3}, {"label":"V", "x":5.25, "y":3},
{"label":"<", "x":9.25, "y":3}, {"label":"B", "x":6.25, "y":3},
{"label":">", "x":10.25, "y":3}, {"label":"N", "x":7.25, "y":3},
{"label":"?", "x":11.25, "y":3}, {"label":"M", "x":8.25, "y":3},
{"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"<", "x":9.25, "y":3},
{"label":"<i class='kb kb-Arrows-Up'></i>", "x":14, "y":3}, {"label":">", "x":10.25, "y":3},
{"label":"End", "x":15, "y":3}, {"label":"?", "x":11.25, "y":3},
{"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Shift", "x":12.25, "y":3, "w":1.75},
{"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"<i class='kb kb-Arrows-Up'></i>", "x":14, "y":3},
{"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"End", "x":15, "y":3},
{"x":3.75, "y":4, "w":6.25},
{"label":"Fn", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25},
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25},
{"label":"<i class='kb kb-Arrows-Left'></i>", "x":13, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.25},
{"label":"<i class='kb kb-Arrows-Down'></i>", "x":14, "y":4}, {"x":3.75, "y":4, "w":6.25},
{"label":"<i class='kb kb-Arrows-Right'></i>", "x":15, "y":4}] {"label":"Fn", "x":10, "y":4, "w":1.25},
{"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
{"label":"<i class='kb kb-Arrows-Left'></i>", "x":13, "y":4},
{"label":"<i class='kb kb-Arrows-Down'></i>", "x":14, "y":4},
{"label":"<i class='kb kb-Arrows-Right'></i>", "x":15, "y":4}
]
} }
} }
} }

View File

@ -18,28 +18,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( [0] = LAYOUT_65_ansi_blocker(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_all( [1] = LAYOUT_65_ansi_blocker(
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN,
KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
), ),
[2] = LAYOUT_all( [2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
[3] = LAYOUT_all( [3] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,

View File

@ -18,28 +18,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( [0] = LAYOUT_65_ansi_blocker(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_all( [1] = LAYOUT_65_ansi_blocker(
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN,
KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
), ),
[2] = LAYOUT_all( [2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
[3] = LAYOUT_all( [3] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,

View File

@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define XXX KC_NO #define XXX KC_NO
#define LAYOUT_all( \ #define LAYOUT_65_ansi_blocker( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \

View File

@ -1,14 +1,13 @@
# TKC Portico # TKC Portico
![Photo](https://cdn.shopify.com/s/files/1/1679/2319/products/Portico_BoW_1_590x.png?v=1604373859) ![TKC Portico](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/tkc/portico/portico-clear_overhead_1024x1024.webp)
A 65% keyboard kit with per-key and underglow RGB lighting A 65% keyboard kit with per-key and underglow RGB lighting.
* Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews) * Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews)
* Hardware Supported: TKC Portico * Hardware Supported: TKC Portico (ATmega32U4)
* Hardware Availability: TBA * Hardware Availability: [TheKey.Company](https://thekey.company/products/portico-keyboard)
Reset board into bootloader by holding down Esc key while plugging in USB-C cable. Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):

View File

@ -22,3 +22,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_ENABLE = yes # Use RGB matrix
RGB_MATRIX_DRIVER = IS31FL3731 RGB_MATRIX_DRIVER = IS31FL3731
LAYOUTS = 65_ansi_blocker