Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f9b7b9768 | ||
|
|
c9eaf1ac2b | ||
|
|
d949932c08 | ||
|
|
2f9eb4cd22 | ||
|
|
bad662b830 | ||
|
|
c3ab20511d | ||
|
|
78362b1dc1 | ||
|
|
eb84f134c1 | ||
|
|
b3987d7b3a | ||
|
|
1f09fcaa69 |
No files matched your search
@@ -0,0 +1,108 @@
|
|||||||
|
/* Copyright 2019 Maarten Dekkers <[email protected]>
|
||||||
|
*
|
||||||
|
* 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 0x4705
|
||||||
|
#define PRODUCT_ID 0x0187
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Pink Labs
|
||||||
|
#define PRODUCT e88
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 17
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { B7, D7, B4, C6, B5, B6 }
|
||||||
|
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D0, D1, D2, D3, B3, B2, B1, E6, D5, D6, D4 }
|
||||||
|
|
||||||
|
#define UNUSED_PINS {B0}
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
#define QMK_ESC_OUTPUT F0 // usually COL
|
||||||
|
#define QMK_ESC_INPUT B7 // usually ROW
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2019 Maarten Dekkers <[email protected]>
|
||||||
|
*
|
||||||
|
* 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 "e88.h"
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2019 Maarten Dekkers <[email protected]>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* This a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
|
||||||
|
k50, k51, k52, k56, k5a, k5b, k5c, k5d, k5e, k5f, k5g \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX, XXX, XXX }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, XXX, k4f, XXX }, \
|
||||||
|
{ k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d, k5e, k5f, k5g } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "e88",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "2-n",
|
||||||
|
"width": 18.25,
|
||||||
|
"height": 6.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 1.25, "y": 0},
|
||||||
|
{"x": 2.25, "y": 0},
|
||||||
|
{"x": 3.25, "y": 0},
|
||||||
|
{"x": 4.25, "y": 0},
|
||||||
|
{"x": 5.5, "y": 0},
|
||||||
|
{"x": 6.5, "y": 0},
|
||||||
|
{"x": 7.5, "y": 0},
|
||||||
|
{"x": 8.5, "y": 0},
|
||||||
|
{"x": 9.75, "y": 0},
|
||||||
|
{"x": 10.75, "y": 0},
|
||||||
|
{"x": 11.75, "y": 0},
|
||||||
|
{"x": 12.75, "y": 0},
|
||||||
|
{"x": 14, "y": 0},
|
||||||
|
{"x": 15.25, "y": 0},
|
||||||
|
{"x": 16.25, "y": 0},
|
||||||
|
{"x": 17.25, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1.25},
|
||||||
|
{"x": 1, "y": 1.25},
|
||||||
|
{"x": 2, "y": 1.25},
|
||||||
|
{"x": 3, "y": 1.25},
|
||||||
|
{"x": 4, "y": 1.25},
|
||||||
|
{"x": 5, "y": 1.25},
|
||||||
|
{"x": 6, "y": 1.25},
|
||||||
|
{"x": 7, "y": 1.25},
|
||||||
|
{"x": 8, "y": 1.25},
|
||||||
|
{"x": 9, "y": 1.25},
|
||||||
|
{"x": 10, "y": 1.25},
|
||||||
|
{"x": 11, "y": 1.25},
|
||||||
|
{"x": 12, "y": 1.25},
|
||||||
|
{"x": 13, "y": 1.25, "w": 2},
|
||||||
|
{"x": 15.25, "y": 1.25},
|
||||||
|
{"x": 16.25, "y": 1.25},
|
||||||
|
{"x": 17.25, "y": 1.25},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2.25, "w": 1.5},
|
||||||
|
{"x": 1.5, "y": 2.25},
|
||||||
|
{"x": 2.5, "y": 2.25},
|
||||||
|
{"x": 3.5, "y": 2.25},
|
||||||
|
{"x": 4.5, "y": 2.25},
|
||||||
|
{"x": 5.5, "y": 2.25},
|
||||||
|
{"x": 6.5, "y": 2.25},
|
||||||
|
{"x": 7.5, "y": 2.25},
|
||||||
|
{"x": 8.5, "y": 2.25},
|
||||||
|
{"x": 9.5, "y": 2.25},
|
||||||
|
{"x": 10.5, "y": 2.25},
|
||||||
|
{"x": 11.5, "y": 2.25},
|
||||||
|
{"x": 12.5, "y": 2.25},
|
||||||
|
{"x": 13.5, "y": 2.25, "w": 1.5},
|
||||||
|
{"x": 15.25, "y": 2.25},
|
||||||
|
{"x": 16.25, "y": 2.25},
|
||||||
|
{"x": 17.25, "y": 2.25},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3.25, "w": 1.75},
|
||||||
|
{"x": 1.75, "y": 3.25},
|
||||||
|
{"x": 2.75, "y": 3.25},
|
||||||
|
{"x": 3.75, "y": 3.25},
|
||||||
|
{"x": 4.75, "y": 3.25},
|
||||||
|
{"x": 5.75, "y": 3.25},
|
||||||
|
{"x": 6.75, "y": 3.25},
|
||||||
|
{"x": 7.75, "y": 3.25},
|
||||||
|
{"x": 8.75, "y": 3.25},
|
||||||
|
{"x": 9.75, "y": 3.25},
|
||||||
|
{"x": 10.75, "y": 3.25},
|
||||||
|
{"x": 11.75, "y": 3.25},
|
||||||
|
{"x": 12.75, "y": 3.25},
|
||||||
|
{"x": 13.75, "y": 3.25, "w": 1.25},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4.25, "w": 1.25},
|
||||||
|
{"x": 1.25, "y": 4.25},
|
||||||
|
{"x": 2.25, "y": 4.25},
|
||||||
|
{"x": 3.25, "y": 4.25},
|
||||||
|
{"x": 4.25, "y": 4.25},
|
||||||
|
{"x": 5.25, "y": 4.25},
|
||||||
|
{"x": 6.25, "y": 4.25},
|
||||||
|
{"x": 7.25, "y": 4.25},
|
||||||
|
{"x": 8.25, "y": 4.25},
|
||||||
|
{"x": 9.25, "y": 4.25},
|
||||||
|
{"x": 10.25, "y": 4.25},
|
||||||
|
{"x": 11.25, "y": 4.25},
|
||||||
|
{"x": 12.25, "y": 4.25, "w": 1.75},
|
||||||
|
{"x": 14, "y": 4.25},
|
||||||
|
{"x": 16.25, "y": 4.25},
|
||||||
|
|
||||||
|
{"x": 0, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 1.25, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 2.5, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 3.75, "y": 5.25, "w": 6.25},
|
||||||
|
{"x": 10, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 11.25, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 12.5, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 13.75, "y": 5.25, "w": 1.25},
|
||||||
|
{"x": 15.25, "y": 5.25},
|
||||||
|
{"x": 16.25, "y": 5.25},
|
||||||
|
{"x": 17.25, "y": 5.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2019 Maarten Dekkers <[email protected]>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_MA, //Main layer
|
||||||
|
_FN //Function layer
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_MA] = LAYOUT_all(
|
||||||
|
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_LGUI, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
|
||||||
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), KC_UP,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, RESET, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
[_FN] = LAYOUT_all(
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Default e88 firmware.
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# e88
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A tenkeyless PCB featuring the DK Saver layout, as designed for the Bliss keyboard by Pink Labs.
|
||||||
|
|
||||||
|
* Maintainer: [elli](https://github.com/2-n)
|
||||||
|
* Hardware Supported: e88 f13 PCB (proto and final rev)
|
||||||
|
* Hardware Availability: [labs.pink](http://www.labs.pink/)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make e88:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make e88:default:flash
|
||||||
|
|
||||||
|
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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = qmk-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 = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 Paul James ([email protected])
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0xF22C
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Peej
|
||||||
|
#define PRODUCT For Science
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { F6, B1, B3, B2, B6 }
|
||||||
|
#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
|
||||||
|
//#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
|
||||||
|
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
//#define USE_I2C
|
||||||
|
#define SOFT_SERIAL_PIN D0
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
//#define MASTER_RIGHT
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
/* defined by default; to change, uncomment and set to the combination you want */
|
||||||
|
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2017 Paul James ([email protected])
|
||||||
|
*
|
||||||
|
* 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 "for_science.h"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* Copyright 2017 Paul James ([email protected])
|
||||||
|
*
|
||||||
|
* 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_split_4x5_3( \
|
||||||
|
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
|
||||||
|
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
|
||||||
|
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
|
||||||
|
L30, L31, L32, L33, L34, R30, R31, R32, R33, R34, \
|
||||||
|
LT1, LT2, LT3, RT1, RT2, RT3 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L00, L01, L02, L03, L04 }, \
|
||||||
|
{ L10, L11, L12, L13, L14 }, \
|
||||||
|
{ L20, L21, L22, L23, L24 }, \
|
||||||
|
{ L30, L31, L32, L33, L34 }, \
|
||||||
|
{ KC_NO, KC_NO, LT1, LT2, LT3 }, \
|
||||||
|
{ R04, R03, R02, R01, R00 }, \
|
||||||
|
{ R14, R13, R12, R11, R10 }, \
|
||||||
|
{ R24, R23, R22, R21, R20 }, \
|
||||||
|
{ R34, R33, R32, R31, R30 }, \
|
||||||
|
{ KC_NO, KC_NO, RT3, RT2, RT1 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "For Science",
|
||||||
|
"url": "https://github.com/peej/for-science-keyboard",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 11.25,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_split_4x5_3": {
|
||||||
|
"layout": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 9.25,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 10.25,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"y": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 3,
|
||||||
|
"y": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4,
|
||||||
|
"y": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6.25,
|
||||||
|
"y": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7.25,
|
||||||
|
"y": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 8.25,
|
||||||
|
"y": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/* Copyright 2017 Paul James ([email protected])
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
// Defines names for use in layer keycodes and the keymap
|
||||||
|
enum layer_names {
|
||||||
|
_BASE,
|
||||||
|
_LAYER,
|
||||||
|
_MOD_LAYER,
|
||||||
|
_FUNCT
|
||||||
|
};
|
||||||
|
|
||||||
|
#define SFT_A SFT_T(KC_A)
|
||||||
|
#define SFT_F1 SFT_T(KC_F1)
|
||||||
|
#define SFT_Z SFT_T(KC_Z)
|
||||||
|
#define SFT_F6 SFT_T(KC_F6)
|
||||||
|
#define LAY_X LT(_LAYER, KC_X)
|
||||||
|
#define LAY_F7 LT(_LAYER, KC_F7)
|
||||||
|
#define LAY_SLS LT(_LAYER, KC_SLSH)
|
||||||
|
#define LAY_SPC LT(_LAYER, KC_SPACE)
|
||||||
|
|
||||||
|
#define LOCK LGUI(KC_L)
|
||||||
|
#define MAC_LCK LGUI(LCTL(KC_Q))
|
||||||
|
|
||||||
|
#define LAYER MO(_LAYER)
|
||||||
|
#define FUNCT MO(_FUNCT)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ,---------------------------------------- ----------------------------------------.
|
||||||
|
* | Tab | Esc | ( | { | [ | | ] | } | ) | ' | BkSp |
|
||||||
|
* | ~ | ` | < | _ | - | | + | = | > | \ | Del |
|
||||||
|
* |-------+-------+-------+-------+-------+ |-------+-------+-------+-------+-------|
|
||||||
|
* | Q | W | E | R | T | | Y | U | I | O | P |
|
||||||
|
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
||||||
|
* |-------+-------+-------+-------+-------+ |-------+-------+-------+-------+-------|
|
||||||
|
* | A | S | D | F | G | | H | J | K | L | Enter |
|
||||||
|
* | F1 | F2 F3 | F4 | F5 | | PgUp | Home | Up | End | ; |
|
||||||
|
* |-Shift-+-------+-------+-------+-------+ |-------+-------+-------+-------+-------|
|
||||||
|
* | Z | X | C | V | B | | N | M | , | . | / |
|
||||||
|
* | F6 | F7 | F8 | F9 | F10 | | PgDn | Left | Down | Right | |
|
||||||
|
* `-Shift---Layer-+-------+-------+-------+ |-------+-------+-------+---------Layer-'
|
||||||
|
* | Ctrl | Gui | Alt | | Space | Layer | Shift |
|
||||||
|
* | | | | | Funct | | |
|
||||||
|
* `------------------------ `-Layer-----------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_BASE] = LAYOUT_split_4x5_3(
|
||||||
|
KC_TAB, KC_ESC, KC_LPRN, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, KC_RPRN, KC_QUOT, KC_BSPC,
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
SFT_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
|
SFT_Z, LAY_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LAY_SLS,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, LAY_SPC, LAYER, KC_RSFT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LAYER] = LAYOUT_split_4x5_3(
|
||||||
|
KC_TILD, KC_GRV, KC_LABK, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_RABK, KC_BSLS, KC_DEL,
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
|
SFT_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_SCLN,
|
||||||
|
SFT_F6, LAY_F7, KC_F8, KC_F9, KC_F10, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
||||||
|
_______, _______, _______, FUNCT, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_MOD_LAYER] = LAYOUT_split_4x5_3(
|
||||||
|
KC_TILD, _______, _______, _______, _______, KC_Q, _______, _______, _______, _______,
|
||||||
|
KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_FUNCT] = LAYOUT_split_4x5_3(
|
||||||
|
RESET, _______, _______, _______, LOCK, MAC_LCK, _______, _______, _______, MAGIC_SWAP_LALT_LGUI,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
if (get_mods() & MOD_MASK_CAG) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_MOD_LAYER);
|
||||||
|
} else {
|
||||||
|
layer_off(_MOD_LAYER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (keycode == KC_BSPC && (get_mods() & MOD_MASK_ALT)) {
|
||||||
|
tap_code(KC_DEL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# Default layout for For Science
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# For Science
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A split ergo 4x5 keyboard with 3 thumb keys where each half is smaller than the 100x100mm cheap PCB production size.
|
||||||
|
Designed to be easy to build, it only supports serial communication over a TRRS cable and no LED support.
|
||||||
|
The PCB is reversible, meaning that you use the same PCB for both the left and right halves and thus need two PCBs to create a full keyboard.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Peej](https://github.com/peej)
|
||||||
|
* Hardware Supported: Pro Micro
|
||||||
|
* Hardware Availability: [Github](https://github.com/peej/for-science-keyboard)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make for_science: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).
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# 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 = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/* Copyright 2020 Fidel Coria
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6060
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER QMK Community
|
||||||
|
#define PRODUCT Pteron38 Keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
/* key matrix pins */
|
||||||
|
#define MATRIX_ROW_PINS { E6, B4, B5, B6 }
|
||||||
|
#define MATRIX_COL_PINS { F6, F5, F7, B1, B3, C6, D4, D0, D1, D2 }
|
||||||
|
#define UNUSED_PINS { D7, F4, D3 }
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5 /* 5 is default */
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "pteron38",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "fidelcoria",
|
||||||
|
"width": 17,
|
||||||
|
"height": 5.95,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_split_3x5_4": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K101", "x":1, "y":1.75},
|
||||||
|
{"label":"K102", "x":2, "y":1.25},
|
||||||
|
{"label":"K103", "x":3, "y":1},
|
||||||
|
{"label":"K104", "x":4, "y":1.35},
|
||||||
|
{"label":"K105", "x":5, "y":1.45},
|
||||||
|
|
||||||
|
{"label":"K106", "x":11, "y":1.45},
|
||||||
|
{"label":"K107", "x":12, "y":1.35},
|
||||||
|
{"label":"K108", "x":13, "y":1},
|
||||||
|
{"label":"K109", "x":14, "y":1.25},
|
||||||
|
{"label":"K110", "x":15, "y":1.75},
|
||||||
|
|
||||||
|
{"label":"K201", "x":1, "y":2.75},
|
||||||
|
{"label":"K202", "x":2, "y":2.25},
|
||||||
|
{"label":"K203", "x":3, "y":2},
|
||||||
|
{"label":"K204", "x":4, "y":2.35},
|
||||||
|
{"label":"K205", "x":5, "y":2.45},
|
||||||
|
|
||||||
|
{"label":"K206", "x":11, "y":2.45},
|
||||||
|
{"label":"K207", "x":12, "y":2.35},
|
||||||
|
{"label":"K208", "x":13, "y":2},
|
||||||
|
{"label":"K209", "x":14, "y":2.25},
|
||||||
|
{"label":"K210", "x":15, "y":2.75},
|
||||||
|
|
||||||
|
{"label":"K301", "x":1, "y":3.75},
|
||||||
|
{"label":"K302", "x":2, "y":3.25},
|
||||||
|
{"label":"K303", "x":3, "y":3},
|
||||||
|
{"label":"K304", "x":4, "y":3.35},
|
||||||
|
{"label":"K305", "x":5, "y":3.45},
|
||||||
|
|
||||||
|
{"label":"K306", "x":11, "y":3.45},
|
||||||
|
{"label":"K307", "x":12, "y":3.35},
|
||||||
|
{"label":"K308", "x":13, "y":3},
|
||||||
|
{"label":"K309", "x":14, "y":3.25},
|
||||||
|
{"label":"K310", "x":15, "y":3.75},
|
||||||
|
|
||||||
|
{"label":"K402", "x":4, "y":4.35},
|
||||||
|
{"label":"K403", "x":5, "y":4.45},
|
||||||
|
{"label":"K404", "x":6, "y":4.65},
|
||||||
|
{"label":"K405", "x":7, "y":4.95},
|
||||||
|
|
||||||
|
{"label":"K406", "x":9, "y":4.95},
|
||||||
|
{"label":"K407", "x":10, "y":4.65},
|
||||||
|
{"label":"K408", "x":11, "y":4.45},
|
||||||
|
{"label":"K409", "x":12, "y":4.35}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/* Copyright 2020 Fidel Coria
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#define SFT_Z LSFT_T(KC_Z)
|
||||||
|
#define SFT_FSL RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
|
#define UNLOCK LCA(KC_DEL)
|
||||||
|
#define LOCK RGUI(KC_L)
|
||||||
|
#define CTL_S RCTL(KC_RSFT) // used with arrow keys for word highlight
|
||||||
|
#define G_SHFT RGUI(KC_RSFT) // plus arrow to switch window to other screen
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_split_3x5_4(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
||||||
|
SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, SFT_FSL,
|
||||||
|
MO(1), KC_BSPC,MO(2), KC_LCTL, KC_RSFT,KC_ENT, KC_SPC, KC_RALT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_split_3x5_4(
|
||||||
|
KC_TAB, KC_HOME,KC_UP, KC_END, UNLOCK, KC_GRV, KC_LPRN,KC_RPRN,KC_MINS,KC_EQL,
|
||||||
|
KC_ESC, KC_LEFT,KC_DOWN,KC_RGHT,LOCK, KC_QUOT,KC_LCBR,KC_RCBR,KC_RGUI,KC_QUOT,
|
||||||
|
_______,KC_DEL, KC_ENT, KC_SPC, KC_CAPS, CTL_S, KC_LBRC,KC_RBRC,G_SHFT, KC_BSLS,
|
||||||
|
_______,_______,_______,_______, _______,_______,KC_RCTL,KC_RALT
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_split_3x5_4(
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
|
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_INS, _______,RESET, _______,_______,
|
||||||
|
_______,_______,_______,_______, _______,_______,KC_RCTL,KC_RALT
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 Fidel Coria
|
||||||
|
*
|
||||||
|
* 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 "pteron38.h"
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright 2020 Fidel Coria
|
||||||
|
*
|
||||||
|
* 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_split_3x5_4( \
|
||||||
|
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
|
||||||
|
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
|
||||||
|
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, \
|
||||||
|
K402, K403, K404, K405, K406, K407, K408, K409 \
|
||||||
|
) { \
|
||||||
|
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
|
||||||
|
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
|
||||||
|
{ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310 }, \
|
||||||
|
{ KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, KC_NO } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Pteron38
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
An ergonomic keyboard heavily inspired by the [Atreus](https://github.com/technomancy/atreus), [Iris](https://github.com/keebio/iris-case) and [Atreis](https://github.com/dekonnection/atreis) keyboards. More info and files for laser cutting plates and case are in the [Pteron repository](https://github.com/FSund/pteron-keyboard).
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Fidel Coria](https://github.com/fidelcoria)
|
||||||
|
* Hardware Supported: Elite C
|
||||||
|
* Hardware Availability: Handwired, no PCB's available (for now)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make handwired/pteron38: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).
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # 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 = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"keyboard_name": "zergo",
|
"keyboard_name": "zergo",
|
||||||
"url": "",
|
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/zergo",
|
||||||
"maintainer": "greenjack",
|
"maintainer": "greenjack",
|
||||||
"width": 15,
|
"width": 15,
|
||||||
"height": 6.25,
|
"height": 6.25,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"Esc", "x":0, "y":0},
|
{"label":"Esc", "x":0, "y":0},
|
||||||
{"label":"F1", "x":2, "y":0},
|
{"label":"F1", "x":2, "y":0},
|
||||||
{"label":"F2", "x":3, "y":0},
|
{"label":"F2", "x":3, "y":0},
|
||||||
{"label":"F3", "x":4, "y":0},
|
{"label":"F3", "x":4, "y":0},
|
||||||
@@ -20,28 +20,28 @@
|
|||||||
{"label":"F10", "x":12, "y":0},
|
{"label":"F10", "x":12, "y":0},
|
||||||
{"label":"F11", "x":13, "y":0},
|
{"label":"F11", "x":13, "y":0},
|
||||||
{"label":"F12", "x":14, "y":0},
|
{"label":"F12", "x":14, "y":0},
|
||||||
{"label":"Home", "x":0, "y":1.25},
|
{"label":"Del", "x":0, "y":1.25},
|
||||||
{"label":"~", "x":1, "y":1.25},
|
{"label":"`", "x":1, "y":1.25},
|
||||||
{"label":"!", "x":2, "y":1.25},
|
{"label":"1", "x":2, "y":1.25},
|
||||||
{"label":"@", "x":3, "y":1.25},
|
{"label":"2", "x":3, "y":1.25},
|
||||||
{"label":"#", "x":4, "y":1.25},
|
{"label":"3", "x":4, "y":1.25},
|
||||||
{"label":"$", "x":5, "y":1.25},
|
{"label":"4", "x":5, "y":1.25},
|
||||||
{"label":"%", "x":6, "y":1.25},
|
{"label":"5", "x":6, "y":1.25},
|
||||||
{"label":"^", "x":7, "y":1.25},
|
{"label":"6", "x":7, "y":1.25},
|
||||||
{"label":"&", "x":8, "y":1.25},
|
{"label":"7", "x":8, "y":1.25},
|
||||||
{"label":"*", "x":9, "y":1.25},
|
{"label":"8", "x":9, "y":1.25},
|
||||||
{"label":"(", "x":10, "y":1.25},
|
{"label":"9", "x":10, "y":1.25},
|
||||||
{"label":")", "x":11, "y":1.25},
|
{"label":"0", "x":11, "y":1.25},
|
||||||
{"label":"_", "x":12, "y":1.25},
|
{"label":"-", "x":12, "y":1.25},
|
||||||
{"label":"+", "x":13, "y":1.25},
|
{"label":"=", "x":13, "y":1.25},
|
||||||
{"label":"PgUp", "x":14, "y":1.25},
|
{"label":"Backspace", "x":14, "y":1.25},
|
||||||
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
|
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
|
||||||
{"label":"Q", "x":1.5, "y":2.25},
|
{"label":"Q", "x":1.5, "y":2.25},
|
||||||
{"label":"W", "x":2.5, "y":2.25},
|
{"label":"W", "x":2.5, "y":2.25},
|
||||||
{"label":"E", "x":3.5, "y":2.25},
|
{"label":"E", "x":3.5, "y":2.25},
|
||||||
{"label":"R", "x":4.5, "y":2.25},
|
{"label":"R", "x":4.5, "y":2.25},
|
||||||
{"label":"T", "x":5.5, "y":2.25},
|
{"label":"T", "x":5.5, "y":2.25},
|
||||||
{"label":"}", "x":6.5, "y":2.25},
|
{"label":"modifier", "x":6.5, "y":2.25},
|
||||||
{"label":"Y", "x":7.5, "y":2.25},
|
{"label":"Y", "x":7.5, "y":2.25},
|
||||||
{"label":"U", "x":8.5, "y":2.25},
|
{"label":"U", "x":8.5, "y":2.25},
|
||||||
{"label":"I", "x":9.5, "y":2.25},
|
{"label":"I", "x":9.5, "y":2.25},
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
{"label":"P", "x":11.5, "y":2.25},
|
{"label":"P", "x":11.5, "y":2.25},
|
||||||
{"label":"{", "x":12.5, "y":2.25},
|
{"label":"{", "x":12.5, "y":2.25},
|
||||||
{"label":"|", "x":13.5, "y":2.25, "w":1.5},
|
{"label":"|", "x":13.5, "y":2.25, "w":1.5},
|
||||||
{"label":"Ctrl", "x":0, "y":3.25, "w":1.25},
|
{"label":"modifier", "x":0, "y":3.25, "w":1.25},
|
||||||
{"label":"A", "x":1.25, "y":3.25},
|
{"label":"A", "x":1.25, "y":3.25},
|
||||||
{"label":"S", "x":2.25, "y":3.25},
|
{"label":"S", "x":2.25, "y":3.25},
|
||||||
{"label":"D", "x":3.25, "y":3.25},
|
{"label":"D", "x":3.25, "y":3.25},
|
||||||
@@ -61,32 +61,32 @@
|
|||||||
{"label":"L", "x":10.75, "y":3.25},
|
{"label":"L", "x":10.75, "y":3.25},
|
||||||
{"label":":", "x":11.75, "y":3.25},
|
{"label":":", "x":11.75, "y":3.25},
|
||||||
{"label":"\"", "x":12.75, "y":3.25},
|
{"label":"\"", "x":12.75, "y":3.25},
|
||||||
{"label":"Ctrl", "x":13.75, "y":3.25, "w":1.25},
|
{"label":"modifier", "x":13.75, "y":3.25, "w":1.25},
|
||||||
{"label":"End", "x":0, "y":4.25},
|
{"label":"LShift", "x":0, "y":4.25},
|
||||||
{"label":"\u2191", "x":1, "y":4.25},
|
{"label":"Z", "x":1, "y":4.25},
|
||||||
{"label":"Z", "x":2, "y":4.25},
|
{"label":"X", "x":2, "y":4.25},
|
||||||
{"label":"X", "x":3, "y":4.25},
|
{"label":"C", "x":3, "y":4.25},
|
||||||
{"label":"C", "x":4, "y":4.25},
|
{"label":"V", "x":4, "y":4.25},
|
||||||
{"label":"V", "x":5, "y":4.25},
|
{"label":"B", "x":5, "y":4.25},
|
||||||
{"label":"Enter", "x":6, "y":4.25, "w":2},
|
{"label":"Backspace", "x":6, "y":4.25, "w":2},
|
||||||
{"label":"B", "x":8, "y":4.25},
|
{"label":"N", "x":8, "y":4.25},
|
||||||
{"label":"N", "x":9, "y":4.25},
|
{"label":"M", "x":9, "y":4.25},
|
||||||
{"label":"M", "x":10, "y":4.25},
|
{"label":"<", "x":10, "y":4.25},
|
||||||
{"label":"<", "x":11, "y":4.25},
|
{"label":">", "x":11, "y":4.25},
|
||||||
{"label":">", "x":12, "y":4.25},
|
{"label":"?", "x":12, "y":4.25},
|
||||||
{"label":"?", "x":13, "y":4.25},
|
{"label":"}", "x":13, "y":4.25},
|
||||||
{"label":"PgDn", "x":14, "y":4.25},
|
{"label":"Rshift", "x":14, "y":4.25},
|
||||||
{"label":"\u2190", "x":0, "y":5.25},
|
{"label":"LControl", "x":0, "y":5.25},
|
||||||
{"label":"\u2193", "x":1, "y":5.25},
|
{"label":"free-1", "x":1, "y":5.25},
|
||||||
{"label":"\u2192", "x":2, "y":5.25},
|
{"label":"free-2", "x":2, "y":5.25},
|
||||||
{"label":"Alt", "x":3, "y":5.25, "w":1.25},
|
{"label":"LAlt", "x":3, "y":5.25, "w":1.25},
|
||||||
{"label":"Space", "x":4.25, "y":5.25, "w":2.25},
|
{"label":"Space", "x":4.25, "y":5.25, "w":2.25},
|
||||||
{"label":"Bsp", "x":6.5, "y":5.25},
|
{"label":"Enter", "x":6.5, "y":5.25},
|
||||||
{"label":"Space", "x":7.5, "y":5.25, "w":2.75},
|
{"label":"Space", "x":7.5, "y":5.25, "w":2.75},
|
||||||
{"label":"Alt", "x":10.25, "y":5.25, "w":1.25},
|
{"label":"RAlt", "x":10.25, "y":5.25, "w":1.25},
|
||||||
{"label":"Win", "x":11.5, "y":5.25, "w":1.25},
|
{"label":"Win", "x":11.5, "y":5.25, "w":1.25},
|
||||||
{"label":"Menu", "x":12.75, "y":5.25, "w":1.25},
|
{"label":"Menu", "x":12.75, "y":5.25, "w":1.25},
|
||||||
{"label":"Fn", "x":14, "y":5.25}
|
{"label":"RControl", "x":14, "y":5.25}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,17 +20,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
LAYOUT(
|
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_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_HOME, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PGUP,
|
KC_DEL, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_5, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSLS,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSLS,
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LCTL,
|
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RCTL,
|
||||||
MT(MOD_LSFT, KC_END), KC_UP, KC_Z, KC_X, KC_C, KC_V, KC_ENT, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_PGDN),
|
MT(MOD_LSFT, KC_HOME), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC, MT(MOD_RSFT, KC_PGUP),
|
||||||
KC_LEFT, KC_DOWN, KC_RGHT, KC_LALT, KC_SPC, KC_BSPC, KC_SPC, KC_RALT, KC_LGUI, KC_RGUI, LT(1, KC_NO)),
|
MT(MOD_LCTL, KC_END), KC_DOWN, KC_RGHT, KC_LALT, KC_SPC, KC_ENT, KC_SPC, KC_RALT, KC_LGUI, KC_MENU, MT(MOD_RCTL, KC_PGDN)),
|
||||||
|
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
TG(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_UP, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
|
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
|
||||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
|
K100, K101, K102, K103, K104, K105, K206, K106, K107, K108, K109, K110, K111, K112, K113, \
|
||||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
K200, K201, K202, K203, K204, K205, K306, K207, K208, K209, K210, K211, K212, K213, \
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
|
K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311, K312, K313, \
|
||||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
|
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
|
||||||
K500, K501, K502, K503, K505, K506, K507, K509, K511, K512, K513 \
|
K500, K501, K502, K503, K505, K506, K507, K509, K511, K512, K513 \
|
||||||
) { \
|
) { \
|
||||||
|
|||||||
@@ -95,17 +95,7 @@ led_config_t g_led_config = { {
|
|||||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||||
1, 1, 1, 4, 1, 1, 1, 1, 1
|
1, 1, 1, 4, 1, 1, 1, 1, 1
|
||||||
} };
|
} };
|
||||||
#endif
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
matrix_init_user();
|
|
||||||
}
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return process_record_user(keycode, record);
|
|
||||||
}
|
|
||||||
void suspend_power_down_kb(void)
|
void suspend_power_down_kb(void)
|
||||||
{
|
{
|
||||||
rgb_matrix_set_suspend_state(true);
|
rgb_matrix_set_suspend_state(true);
|
||||||
@@ -126,6 +116,4 @@ void rgb_matrix_indicators_user(void)
|
|||||||
rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF);
|
rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
# Default _33 Layout
|
|
||||||
|
|
||||||
This is the recommended default layout. It is not a fully functional layout without backspace, tab, esc and so on. It is recommended to use combos to access the additional modifiers when using the large spacebar layout option, however combos are not enabled in the default firmware.
|
|
||||||
@@ -2,14 +2,18 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
A little bitty 30% (10x4) ortholinear keyboard designed by tominabox1. The board supports an RGB LED strip with DI on port B6. There is an error on the initial 25 PCBs that incorrectly indicates PF0 for the RGB. The appropriate port is commented out in config.h for proper LED support.
|
A little bitty 30% (10x4) ortholinear keyboard designed by tominabox1. The R1 version of the board supports an RGB LED strip with DI on port B6. There is an error on the initial 25 PCBs that incorrectly indicates PF0 for the RGB. The R2 version is correctly labeled for RGB on D6. The appropriate port is commented out in config.h for proper LED support.
|
||||||
|
|
||||||
* Keyboard Maintainer: [TJ Campie](https://github.com/tominabox1)
|
* Keyboard Maintainer: [TJ Campie](https://github.com/tominabox1)
|
||||||
* Hardware Supported: _33 PCB and Plate limited buy (Open source available ca. Apirl 2020)
|
* Hardware Supported: [_33 r1 and r2 PCBs](https://github.com/tominabox1/_33-Keyboard)
|
||||||
* Hardware Availability: [3D printed open sourced](https://github.com/tominabox1/_33-Keyboard)
|
* Hardware Availability: [3D printed open sourced](https://github.com/tominabox1/_33-Keyboard)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make underscore33:default
|
make underscore33/rev2:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make underscore33/rev2:default:flash
|
||||||
|
|
||||||
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).
|
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).
|
||||||
@@ -1,10 +1,25 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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
|
#pragma once
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x7431
|
||||||
#define PRODUCT_ID 0x6A50
|
#define PRODUCT_ID 0x3301 // _33 rev1
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER tominabox1
|
#define MANUFACTURER tominabox1
|
||||||
#define PRODUCT underscore33
|
#define PRODUCT underscore33
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "underscore33",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "tominabox1",
|
||||||
|
"width": 10,
|
||||||
|
"height": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_33_big_space": {
|
||||||
|
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
|
||||||
|
},
|
||||||
|
|
||||||
|
"LAYOUT_33_split_space": {
|
||||||
|
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":2.25}, {"label":"", "x":4.15, "y":3, "w":1.75}, {"label":"", "x":5.9, "y":3, "w":2.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* Combos */
|
||||||
|
#define COMBO_COUNT 5
|
||||||
|
#define COMBO_TERM 50
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
enum layers{
|
||||||
|
_BASE,
|
||||||
|
_NUM_SYM,
|
||||||
|
_NAV
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes{
|
||||||
|
RGBRST = SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
|
||||||
|
#define KC_NAV_ENT LT(_NAV, KC_ENT)
|
||||||
|
#define KC_GA LGUI_T(KC_A)
|
||||||
|
#define KC_AS LALT_T(KC_S)
|
||||||
|
#define KC_CD LCTL_T(KC_D)
|
||||||
|
#define KC_SF LSFT_T(KC_F)
|
||||||
|
#define KC_SJ RSFT_T(KC_J)
|
||||||
|
#define KC_CK RCTL_T(KC_K)
|
||||||
|
#define KC_AL RALT_T(KC_L)
|
||||||
|
#define KC_GSCLN RGUI_T(KC_SCLN)
|
||||||
|
|
||||||
|
enum combo_events {
|
||||||
|
COMBO_BSPC,
|
||||||
|
COMBO_NUMBAK,
|
||||||
|
COMBO_TAB,
|
||||||
|
COMBO_ESC,
|
||||||
|
COMBO_DEL,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT_33_split_space(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
KC_GA, KC_AS, KC_CD, KC_SF, KC_G, KC_H, KC_SJ, KC_CK, KC_AL, KC_GSCLN,
|
||||||
|
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||||
|
KC_LCTL, KC_NAV_ENT, KC_RGUI, KC_NUM_SPC, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
[_NUM_SYM] = LAYOUT_33_split_space(
|
||||||
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
|
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS,
|
||||||
|
KC_BSLS, KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_RPRN, KC_RBRC, KC_RCBR, KC_DOT, KC_GRV,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[_NAV] = LAYOUT_33_split_space(
|
||||||
|
RESET, RGBRST, AG_NORM, AG_SWAP, DEBUG, KC_GRV, KC_PGDN, KC_UP, KC_PGUP, KC_SCLN,
|
||||||
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
|
||||||
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_BSLS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef COMBO_ENABLE
|
||||||
|
const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_tab[] = {KC_Q, KC_W, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_esc[] = {KC_E, KC_W, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END};
|
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {
|
||||||
|
[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||||
|
[COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC),
|
||||||
|
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||||
|
[COMBO_ESC] = COMBO(combo_esc,KC_ESC),
|
||||||
|
[COMBO_DEL] = COMBO(combo_del,KC_DEL),
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default _33 Rev1 Layout
|
||||||
|
|
||||||
|
This is the recommended default layout.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
COMBO_ENABLE = yes
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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_33_split_space(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
|
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPACE, KC_RGUI, KC_RALT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[3] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# VIA _33 Rev1 Layout
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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 "rev1.h"
|
||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# 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 = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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 0x7431
|
||||||
|
#define PRODUCT_ID 0x3302 // _33 rev2
|
||||||
|
#define DEVICE_VER 0x0002
|
||||||
|
#define MANUFACTURER tominabox1
|
||||||
|
#define PRODUCT underscore33
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 4
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 { C4, B0, B1, B2 }
|
||||||
|
#define MATRIX_COL_PINS { C5, C6, C7, B7, B6, B5, B4, B3, C2, D0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define RGB_DI_PIN D6
|
||||||
|
#define RGBLED_NUM 12
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"LAYOUT_33_split_space": {
|
"LAYOUT_33_split_space": {
|
||||||
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":2.25}, {"label":"", "x":4.15, "y":3, "w":1.75}, {"label":"", "x":5.9, "y":3, "w":2.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
|
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1}, {"label":"", "x":1.65, "y":3, "w":1.25}, {"label":"", "x":2.9, "y":3, "w":2.25}, {"label":"", "x":5.15, "y":3, "w":2}, {"label":"", "x":7.15, "y":3, "w":1.25}, {"label":"", "x":8.4, "y":3, "w":1}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
/* Combos */
|
||||||
|
#define COMBO_COUNT 5
|
||||||
|
#define COMBO_TERM 50
|
||||||
+45
-3
@@ -1,3 +1,18 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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 QMK_KEYBOARD_H
|
||||||
|
|
||||||
enum layers{
|
enum layers{
|
||||||
@@ -11,6 +26,7 @@ enum custom_keycodes{
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
|
#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
|
||||||
|
#define KC_NAV_ENT LT(_NAV, KC_ENT)
|
||||||
#define KC_GA LGUI_T(KC_A)
|
#define KC_GA LGUI_T(KC_A)
|
||||||
#define KC_AS LALT_T(KC_S)
|
#define KC_AS LALT_T(KC_S)
|
||||||
#define KC_CD LCTL_T(KC_D)
|
#define KC_CD LCTL_T(KC_D)
|
||||||
@@ -20,25 +36,51 @@ enum custom_keycodes{
|
|||||||
#define KC_AL RALT_T(KC_L)
|
#define KC_AL RALT_T(KC_L)
|
||||||
#define KC_GSCLN RGUI_T(KC_SCLN)
|
#define KC_GSCLN RGUI_T(KC_SCLN)
|
||||||
|
|
||||||
|
enum combo_events {
|
||||||
|
COMBO_BSPC,
|
||||||
|
COMBO_NUMBAK,
|
||||||
|
COMBO_TAB,
|
||||||
|
COMBO_ESC,
|
||||||
|
COMBO_DEL,
|
||||||
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_BASE] = LAYOUT_33_split_space(
|
[_BASE] = LAYOUT_33_split_space(
|
||||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
KC_GA, KC_AS, KC_CD, KC_SF, KC_G, KC_H, KC_SJ, KC_CK, KC_AL, KC_GSCLN,
|
KC_GA, KC_AS, KC_CD, KC_SF, KC_G, KC_H, KC_SJ, KC_CK, KC_AL, KC_GSCLN,
|
||||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||||
KC_LCTL, KC_LALT, KC_NUM_SPC, MO(_NAV), KC_RGUI
|
KC_LCTL, KC_LALT, KC_NAV_ENT, KC_NUM_SPC, KC_RGUI, KC_RCTL
|
||||||
),
|
),
|
||||||
|
|
||||||
[_NUM_SYM] = LAYOUT_33_split_space(
|
[_NUM_SYM] = LAYOUT_33_split_space(
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS,
|
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS,
|
||||||
KC_BSLS, KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_RPRN, KC_RBRC, KC_RCBR, KC_DOT, KC_GRV,
|
KC_BSLS, KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_RPRN, KC_RBRC, KC_RCBR, KC_DOT, KC_GRV,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
[_NAV] = LAYOUT_33_split_space(
|
[_NAV] = LAYOUT_33_split_space(
|
||||||
RESET, RGBRST, AG_NORM, AG_SWAP, DEBUG, KC_GRV, KC_PGDN, KC_UP, KC_PGUP, KC_SCLN,
|
RESET, RGBRST, AG_NORM, AG_SWAP, DEBUG, KC_GRV, KC_PGDN, KC_UP, KC_PGUP, KC_SCLN,
|
||||||
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
|
||||||
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_BSLS,
|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_BSLS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef COMBO_ENABLE
|
||||||
|
const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_tab[] = {KC_Q, KC_W, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_esc[] = {KC_E, KC_W, COMBO_END};
|
||||||
|
const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END};
|
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {
|
||||||
|
[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||||
|
[COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC),
|
||||||
|
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||||
|
[COMBO_ESC] = COMBO(combo_esc,KC_ESC),
|
||||||
|
[COMBO_DEL] = COMBO(combo_del,KC_DEL),
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default _33 Rev2 Layout
|
||||||
|
|
||||||
|
This is the recommended default layout.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
COMBO_ENABLE = yes
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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_33_split_space(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||||
|
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||||
|
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||||
|
KC_LCTL, KC_LALT, KC_SPACE, KC_SPACE, KC_RGUI, KC_RALT
|
||||||
|
),
|
||||||
|
|
||||||
|
[1] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
[2] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[3] = LAYOUT_33_split_space(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# VIA Layout
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include "rev2.h"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/* Copyright 2020 tominabox1
|
||||||
|
*
|
||||||
|
* 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_33_big_space( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
|
||||||
|
K31, K34, K38 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
|
||||||
|
{ XXX, K31, XXX, XXX, K34, XXX, XXX, XXX, K38, XXX } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_33_split_space( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
|
||||||
|
K31, K32, K33, K35, K37, K38 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
|
||||||
|
{ XXX, K31, K32, K33, XXX, K35, XXX, K37, K38, XXX } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# 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 = 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 = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
@@ -1,25 +1 @@
|
|||||||
# MCU name
|
DEFAULT_FOLDER = underscore33/rev1
|
||||||
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 = atmel-dfu
|
|
||||||
|
|
||||||
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 = no # Enable keyboard RGB underglow
|
|
||||||
TAP_DANCE_ENABLE = no
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#include "underscore33.h"
|
|
||||||
@@ -7,6 +7,7 @@ import subprocess
|
|||||||
import shlex
|
import shlex
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
from milc import cli
|
||||||
import qmk.keymap
|
import qmk.keymap
|
||||||
|
|
||||||
|
|
||||||
@@ -83,4 +84,6 @@ def run(command, *args, **kwargs):
|
|||||||
safecmd = ' '.join(safecmd)
|
safecmd = ' '.join(safecmd)
|
||||||
command = [os.environ['SHELL'], '-c', safecmd]
|
command = [os.environ['SHELL'], '-c', safecmd]
|
||||||
|
|
||||||
|
cli.log.debug('Running command: %s', command)
|
||||||
|
|
||||||
return subprocess.run(command, *args, **kwargs)
|
return subprocess.run(command, *args, **kwargs)
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "mousekey.h"
|
#include "mousekey.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
#include "suspend.h"
|
#include "suspend.h"
|
||||||
|
#include "led.h"
|
||||||
#include "wait.h"
|
#include "wait.h"
|
||||||
|
|
||||||
#ifdef BACKLIGHT_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
@@ -47,6 +48,20 @@ __attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user
|
|||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
*/
|
*/
|
||||||
void suspend_power_down(void) {
|
void suspend_power_down(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_set(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Turn off LED indicators
|
||||||
|
uint8_t leds_off = 0;
|
||||||
|
#if defined(BACKLIGHT_CAPS_LOCK) && defined(BACKLIGHT_ENABLE)
|
||||||
|
if (is_backlight_enabled()) {
|
||||||
|
// Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off
|
||||||
|
leds_off |= (1 << USB_LED_CAPS_LOCK);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
led_set(leds_off);
|
||||||
|
|
||||||
// TODO: figure out what to power down and how
|
// TODO: figure out what to power down and how
|
||||||
// shouldn't power down TPM/FTM if we want a breathing LED
|
// shouldn't power down TPM/FTM if we want a breathing LED
|
||||||
// also shouldn't power down USB
|
// also shouldn't power down USB
|
||||||
@@ -119,6 +134,7 @@ void suspend_wakeup_init(void) {
|
|||||||
#ifdef BACKLIGHT_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
backlight_init();
|
backlight_init();
|
||||||
#endif /* BACKLIGHT_ENABLE */
|
#endif /* BACKLIGHT_ENABLE */
|
||||||
|
led_set(host_keyboard_leds());
|
||||||
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
|
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
|
||||||
is_suspended = false;
|
is_suspended = false;
|
||||||
if (rgblight_enabled) {
|
if (rgblight_enabled) {
|
||||||
|
|||||||
Reference in new issue
Block a user