Compare commits

...
12 Commits
Author SHA1 Message Date
Ryan 3d922e6257 Add a handful of consumer/gendesk page usages (#12811) 2021-05-06 17:16:07 +01:00
Mateusz Piotrowski 38b9f67c3b Fix qmk flash on FreeBSD (#12085)
When the USB device is connected, FreeBSD creates not one, but three
device nodes in /dev, e.g.: /dev/ttyU0, /dev/ttyU0.init, and
/dev/ttyU0.lock.

As a result, this leads to the USB variable containing 3 paths
(and therefore, whitespace) and messages like this one:

    Device /dev/ttyU0
    /dev/ttyU0.init
    /dev/ttyU0.lock has appeared; assuming it is the controller.

This changes fixes the use of the -z flag of "[" (see test(1)). Also, it
removes undesired paths from the USB variable, leaving only
one path there (i.e., "/dev/ttyU0").
2021-05-06 09:26:50 +10:00
Andrew Kannan c6778dde82 [Keyboard] ai03 Andromeda (#12676)
* Add andromeda to qmk

* Fix

* Another fix

* Fix via map

* Update andromeda

* Update confs for new qmk master

* Apply suggestions from code review

* Remove the ch hal and mcu conf as the andromeda does not need extra peripherals

* Update keyboards/ai03/andromeda/rules.mk

* Apply suggestions from code review

* Add bootloader note to readme
2021-05-04 12:38:38 -07:00
Matrix Zou c27a458799 [Keyboard] added Time 80 Reforged by Fox Lab (#11996)
* [Keyboard] added Time 80 Reforged by Fox Lab

* added Time 80 Reforged by Fox Lab
* split to two sub directories for universal and hotswap pcb
* Apply suggestions from code review

* Modified codes as suggested

* update code as suggested

* rgb log light keymaps added

* update code as suggested

* enable rgblight right to TIME logo, and add keymaps for it's control
* Apply suggestions from code review

* enable built-in switch LED support
* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review
2021-05-04 01:40:26 -07:00
James Young 8ed1addd1e Update noroadsleft userspace and keymaps (2021-05-03) (#12796)
* Set Dvorak as the standard base layer

* Remove unneeded includes

* Remove custom handling for Quake 2

Have now rewritten my in-game configuration to use Dvorak mapping instead of QWERTY, which means I don't need any of this stuff.

* Clean up comments in KC60 keymap
2021-05-03 17:31:36 -07:00
Joel Challis 25c97e0019 Shim cli to new keyboard script (#12780)
* Shim cli to new keyboard script

* Shim cli to new keyboard script

* Add docs
2021-05-02 16:59:10 +01:00
Joel Challis 0fd8faa1ad Fix unused import in recent generation code (#12781) 2021-05-02 08:43:40 -07:00
Joel Challis fc2b51194c Allow <keyboard>.h to be optional when going data driven (#12706)
* Allow <keyboard>.h to be optional when going data driven

* Remove stub files as no longer required

* Rename function

* Remove include of layouts.h for now

* Take advantage of type=keyboard_folder

* Take advantage of type=keyboard_folder - kb should still be mandatory
2021-05-01 02:00:04 +01:00
k.bigwheel 18dc12cd78 [Keyboard] Fix bootloader rule for meishi2 keyboard (#12740) 2021-05-01 06:23:39 +10:00
489c814a48 Add breeze variants (#12596)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Adrian <[email protected]>
2021-04-30 19:45:36 +02:00
James Young 8190a795ed DracuLad: add Configurator data and rework layout macro (#12727)
* add info.json file

* refactor keymaps for readability

* rework layout macro

Arranges the layout macro and keycodes to resemble the physical layout.

* readme touch-up

Corrections to capitalization and spelling, and removal of extra white space.
2021-04-29 11:25:30 -07:00
d3963a61cb Add firmware for CozyKeys Bloomer keyboard (#12639)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2021-04-29 18:55:01 +02:00
98 changed files with 2837 additions and 325 deletions

No files matched your search

+5 -1
View File
@@ -205,6 +205,7 @@ endif
# #
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
# #
QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
endif endif
@@ -296,10 +297,13 @@ CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES) $(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
bin/qmk generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES) $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
.INTERMEDIATE : generated-files .INTERMEDIATE : generated-files
+12
View File
@@ -228,6 +228,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a
qmk list-keymaps -kb planck/ez qmk list-keymaps -kb planck/ez
``` ```
## `qmk new-keyboard`
This command creates a new keyboard based on available templates.
This command will prompt for input to guide you though the generation process.
**Usage**:
```
qmk new-keyboard
```
## `qmk new-keymap` ## `qmk new-keymap`
This command creates a new keymap based on a keyboard's existing default keymap. This command creates a new keymap based on a keyboard's existing default keymap.
@@ -70,4 +70,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
) )
}; };
+1 -1
View File
@@ -1,4 +1,4 @@
/* Copyright 2021 eithanshavit /* Copyright 2021 Afternoon Labs
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -0,0 +1,22 @@
/* Copyright 2021 Afternoon Labs
*
* 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"
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
@@ -0,0 +1,72 @@
/* Copyright 2021 Afternoon Labs
*
* 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 layer_names {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_UP, 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_LEFT, KC_DOWN, KC_RIGHT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
};
@@ -0,0 +1,3 @@
# Default Southern Breeze Layout
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
@@ -0,0 +1,9 @@
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,86 @@
/* Copyright 2021 Afternoon Labs
*
* 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 layer_names {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_UP, 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_LEFT, KC_DOWN, KC_RIGHT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[3] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};
@@ -0,0 +1,3 @@
# Default Southern Breeze Layout
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
@@ -0,0 +1,10 @@
VIA_ENABLE = yes
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,49 @@
/* Copyright 2021 Afternoon Labs
*
* 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
/* USB Device descriptor parameter */
#define VENDOR_ID 0x616C
#define PRODUCT_ID 0x0005
#define DEVICE_VER 0x0001
#define MANUFACTURER AfternoonLabs
#define PRODUCT Southern Breeze
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
// wiring of each half
#define MATRIX_ROW_PINS \
{ F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS \
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define SPLIT_HAND_PIN B3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define SOFT_SERIAL_PIN D2
#define DIODE_DIRECTION COL2ROW
#define BOOTMAGIC_LITE_ROW_RIGHT 0
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
#define BOOTMAGIC_LITE_ROW_LEFT 0
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
@@ -0,0 +1,84 @@
{
"keyboard_name": "Southern Breeze",
"url": "afternoonlabs.com/breeze",
"productId": "0x0005",
"maintainer": "eithanshavit",
"width": 19,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0.375},
{"x":1, "y":0.375},
{"x":2, "y":0.375},
{"x":3.25, "y":0.375},
{"x":4.25, "y":0.375},
{"x":5.25, "y":0.125},
{"x":6.25, "y":0},
{"x":7.25, "y":0.125},
{"x":8.25, "y":0.25},
{"x":13, "y":0.25},
{"x":14, "y":0.125},
{"x":15, "y":0},
{"x":16, "y":0.125},
{"x":17, "y":0.375},
{"x":18, "y":0.375},
{"x":0, "y":1.375},
{"x":1, "y":1.375},
{"x":2, "y":1.375},
{"x":3.25, "y":1.375},
{"x":4.25, "y":1.375},
{"x":5.25, "y":1.125},
{"x":6.25, "y":1},
{"x":7.25, "y":1.125},
{"x":8.25, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.125},
{"x":15, "y":1},
{"x":16, "y":1.125},
{"x":17, "y":1.375},
{"x":18, "y":1.375},
{"x":1, "y":2.375},
{"x":3.25, "y":2.375},
{"x":4.25, "y":2.375},
{"x":5.25, "y":2.125},
{"x":6.25, "y":2},
{"x":7.25, "y":2.125},
{"x":8.25, "y":2.25},
{"x":13, "y":2.25},
{"x":14, "y":2.125},
{"x":15, "y":2},
{"x":16, "y":2.125},
{"x":17, "y":2.375},
{"x":18, "y":2.375},
{"x":0, "y":3.375},
{"x":1, "y":3.375},
{"x":2, "y":3.375},
{"x":3.25, "y":3.375},
{"x":4.25, "y":3.375},
{"x":5.25, "y":3.125},
{"x":6.25, "y":3},
{"x":7.25, "y":3.125},
{"x":8.25, "y":3.25},
{"x":13, "y":3.25},
{"x":14, "y":3.125},
{"x":15, "y":3},
{"x":16, "y":3.125},
{"x":17, "y":3.375},
{"x":18, "y":3.375},
{"x":5.75, "y":4.25},
{"x":6.75, "y":4.25},
{"x":7.75, "y":4.5},
{"x":9.5, "y":3.75, "h":2, "r":30},
{"x":11.75, "y":3.75, "h":2, "r":-30},
{"x":13.5, "y":4.5},
{"x":14.5, "y":4.25},
{"x":15.5, "y":4.25}
]
}
}
}
@@ -0,0 +1,15 @@
# Southern Breeze
![Breeze](https://i.imgur.com/O8FJWD6.jpeg)
Split ergonomics meets productivity. Southern Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered.
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
* Hardware Supported: Breeze Rev1 PCB
* Hardware Availability: Coming soon
Make example for this keyboard (after setting up your build environment):
make afternoonlabs/southern_breeze/rev1: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).
@@ -1,4 +1,4 @@
/* Copyright 2021 zvecr<[email protected]> /* Copyright 2021 Afternoon Labs
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -13,4 +13,5 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "forever65.h"
#include "rev1.h"
@@ -0,0 +1,41 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "southern_breeze.h"
#include "quantum.h"
#define LAYOUT( \
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
LWUP, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
LWLT, LWDN, LWRT, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
) \
{ \
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
{ L25, L24, L23, L22, L21, L20, KC_NO, LWUP, KC_NO }, \
{ L35, L34, L33, L32, L31, L30, LWRT, LWDN, LWLT }, \
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ R00, R01, R02, R03, R04, R05, KC_NO, KC_NO, KC_NO }, \
{ R10, R11, R12, R13, R14, R15, KC_NO, KC_NO, KC_NO }, \
{ R20, R21, R22, R23, R24, R25, KC_NO, KC_NO, KC_NO }, \
{ R30, R31, R32, R33, R34, R35, KC_NO, KC_NO, KC_NO }, \
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
}
@@ -0,0 +1,23 @@
# 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 = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # 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 = 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
SPLIT_KEYBOARD = yes
@@ -1,4 +1,4 @@
/* Copyright 2021 zvecr<[email protected]> /* Copyright 2021 Afternoon Labs
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -13,6 +13,5 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#pragma once
#include "quantum.h" #include "southern_breeze.h"
@@ -0,0 +1,21 @@
/* Copyright 2021 Afternoon Labs
*
* 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
#ifdef KEYBOARD_afternoonlabs_southern_breeze_rev1
# include "rev1.h"
#endif
@@ -0,0 +1,22 @@
/* Copyright 2021 Afternoon Labs
*
* 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"
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
@@ -0,0 +1,71 @@
/* Copyright 2021 Afternoon Labs
*
* 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 layer_names {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_U, 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_UP,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_L, KC_MS_D, KC_MS_R, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
};
@@ -0,0 +1,3 @@
# Default Summer Breeze Layout
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
@@ -0,0 +1,9 @@
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,86 @@
/* Copyright 2021 Afternoon Labs
*
* 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 layer_names {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_U, 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_UP,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_L, KC_MS_D, KC_MS_R, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[3] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};
@@ -0,0 +1,3 @@
# Default Summer Breeze Layout
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
@@ -0,0 +1,10 @@
VIA_ENABLE = yes
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,49 @@
/* Copyright 2021 Afternoon Labs
*
* 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
/* USB Device descriptor parameter */
#define VENDOR_ID 0x616C
#define PRODUCT_ID 0x0004
#define DEVICE_VER 0x0001
#define MANUFACTURER AfternoonLabs
#define PRODUCT Summer Breeze
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
// wiring of each half
#define MATRIX_ROW_PINS \
{ F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS \
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define SPLIT_HAND_PIN B3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define SOFT_SERIAL_PIN D2
#define DIODE_DIRECTION COL2ROW
#define BOOTMAGIC_LITE_ROW_RIGHT 0
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
#define BOOTMAGIC_LITE_ROW_LEFT 0
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
@@ -0,0 +1,94 @@
{
"keyboard_name": "Summer Breeze",
"url": "afternoonlabs.com/breeze",
"productId": "0x0004",
"maintainer": "eithanshavit",
"width": 19,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0.375},
{"x":1, "y":0.375},
{"x":2, "y":0.375},
{"x":3.25, "y":0.375},
{"x":4.25, "y":0.375},
{"x":5.25, "y":0.125},
{"x":6.25, "y":0},
{"x":7.25, "y":0.125},
{"x":8.25, "y":0.25},
{"x":13, "y":0.25},
{"x":14, "y":0.125},
{"x":15, "y":0},
{"x":16, "y":0.125},
{"x":17, "y":0.375},
{"x":18, "y":0.375},
{"x":19.25, "y":0.375},
{"x":20.25, "y":0.375},
{"x":21.25, "y":0.375},
{"x":0, "y":1.375},
{"x":1, "y":1.375},
{"x":2, "y":1.375},
{"x":3.25, "y":1.375},
{"x":4.25, "y":1.375},
{"x":5.25, "y":1.125},
{"x":6.25, "y":1},
{"x":7.25, "y":1.125},
{"x":8.25, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.125},
{"x":15, "y":1},
{"x":16, "y":1.125},
{"x":17, "y":1.375},
{"x":18, "y":1.375},
{"x":19.25, "y":1.375},
{"x":20.25, "y":1.375},
{"x":21.25, "y":1.375},
{"x":1, "y":2.375},
{"x":3.25, "y":2.375},
{"x":4.25, "y":2.375},
{"x":5.25, "y":2.125},
{"x":6.25, "y":2},
{"x":7.25, "y":2.125},
{"x":8.25, "y":2.25},
{"x":13, "y":2.25},
{"x":14, "y":2.125},
{"x":15, "y":2},
{"x":16, "y":2.125},
{"x":17, "y":2.375},
{"x":18, "y":2.375},
{"x":20.25, "y":2.375},
{"x":0, "y":3.375},
{"x":1, "y":3.375},
{"x":2, "y":3.375},
{"x":3.25, "y":3.375},
{"x":4.25, "y":3.375},
{"x":5.25, "y":3.125},
{"x":6.25, "y":3},
{"x":7.25, "y":3.125},
{"x":8.25, "y":3.25},
{"x":13, "y":3.25},
{"x":14, "y":3.125},
{"x":15, "y":3},
{"x":16, "y":3.125},
{"x":17, "y":3.375},
{"x":18, "y":3.375},
{"x":19.25, "y":3.375},
{"x":20.25, "y":3.375},
{"x":21.25, "y":3.375},
{"x":5.75, "y":4.25},
{"x":6.75, "y":4.25},
{"x":7.75, "y":4.5},
{"x":9.5, "y":3.75, "h":2, "r":30},
{"x":11.75, "y":3.75, "h":2, "r":-30},
{"x":13.5, "y":4.5},
{"x":14.5, "y":4.25},
{"x":15.5, "y":4.25}
]
}
}
}
@@ -0,0 +1,15 @@
# Summer Breeze
![Breeze](https://i.imgur.com/O8FJWD6.jpeg)
Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb clusters, arrow keys, and two 6 key macro clusters, with ortholinear column-staggered.
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
* Hardware Supported: Breeze Rev1 PCB
* Hardware Availability: Coming soon
Make example for this keyboard (after setting up your build environment):
make afternoonlabs/summer_breeze/rev1: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,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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"
@@ -0,0 +1,41 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "summer_breeze.h"
#include "quantum.h"
#define LAYOUT( \
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \
LW21, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \
LW30, LW31, LW32, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
) \
{ \
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
{ L25, L24, L23, L22, L21, L20, KC_NO, LW01, KC_NO }, \
{ L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \
{ R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \
{ R20, R21, R22, R23, R24, R25, KC_NO, AUP, KC_NO }, \
{ R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
}
@@ -0,0 +1,23 @@
# 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 = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # 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 = 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
SPLIT_KEYBOARD = yes
@@ -0,0 +1,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "summer_breeze.h"
@@ -0,0 +1,21 @@
/* Copyright 2021 Afternoon Labs
*
* 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
#ifdef KEYBOARD_afternoonlabs_summer_breeze_rev1
# include "rev1.h"
#endif
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright 2021 Andrew Kannan
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 "andromeda.h"
+35
View File
@@ -0,0 +1,35 @@
/*
Copyright 2021 Andrew Kannan
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_tkl_ansi_wkl( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \
K500, K502, K507, K511, K513, K514, K515, K516 \
) { \
{ K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 , K214, K215, K216 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \
{ K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, KC_NO, K507, KC_NO, KC_NO, KC_NO, K511, KC_NO, K513, K514, K515, K516 } \
}
+43
View File
@@ -0,0 +1,43 @@
/*
Copyright 2021 Andrew Kannan
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
/* USB Device descriptor parameter */
#define VENDOR_ID 0xA103
#define PRODUCT_ID 0x000A
#define DEVICE_VER 0x0001
#define MANUFACTURER ai03 Design Studio
#define PRODUCT Andromeda
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, B5, B8, B9 }
#define MATRIX_ROW_PINS { B4, B3, A15, A3, A4, A5 }
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't 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
+12
View File
@@ -0,0 +1,12 @@
{
"keyboard_name": "Andromeda",
"url": "",
"maintainer": "ai03",
"width": 18.25,
"height": 6.25,
"layouts": {
"LAYOUT_tkl_ansi_wkl": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
}
}
}
@@ -0,0 +1,33 @@
/*
Copyright 2012,2013 Jun Wako <[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
enum layer_names {
_BASE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_tkl_ansi_wkl(
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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
@@ -0,0 +1,65 @@
/*
Copyright 2012,2013 Jun Wako <[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
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_tkl_ansi_wkl(
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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_FN2] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_FN3] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ENABLE = yes
+12
View File
@@ -0,0 +1,12 @@
# ai03 Andromeda
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
* Hardware Supported: Andromeda PCB
Make example for this keyboard (after setting up your build environment):
make ai03/andromeda: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).
Press and hold the reset button for at least 5 seconds before releasing to enter the bootloader mode.
+22
View File
@@ -0,0 +1,22 @@
# MCU name
MCU = STM32F072
# 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 = 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
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
@@ -15,11 +15,10 @@
*/ */
#include "noroadsleft.h" #include "noroadsleft.h"
#include "sendstring_dvorak.h"
enum layer_names { enum layer_names {
_QW,
_DV, _DV,
_QW,
_NP, _NP,
_FN, _FN,
_SY _SY
@@ -30,14 +29,6 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_65_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_DV] = LAYOUT_65_ansi( [_DV] = LAYOUT_65_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP,
@@ -46,6 +37,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[_QW] = LAYOUT_65_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_NP] = LAYOUT_65_ansi( [_NP] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______,
@@ -63,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
[_SY] = LAYOUT_65_ansi( [_SY] = LAYOUT_65_ansi(
TG(_SY), TO(_QW), TO(_DV), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright 2021 Paul Ewing
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 "bloomer.h"
+23
View File
@@ -0,0 +1,23 @@
/*
Copyright 2021 Paul Ewing
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
#if defined(KEYBOARD_cozykeys_bloomer_v2)
#include "v2.h"
#elif defined(KEYBOARD_cozykeys_bloomer_v3)
#include "v3.h"
#endif
+53
View File
@@ -0,0 +1,53 @@
/*
Copyright 2021 Paul Ewing
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 0x1191
#define MANUFACTURER CozyKeys
#define PRODUCT Bloomer
// Key matrix size
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
// Enable RGB backlight
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D7
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 255
#define RGBLIGHT_SLEEP
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_BREATHE_TABLE_SIZE 256
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85
#define RGBLIGHT_EFFECT_BREATHE_MAX 255
#endif
// 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
+23
View File
@@ -0,0 +1,23 @@
# Bloomer
![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg)
- Keyboard Maintainer: [Paul Ewing](https://github.com/pcewing)
- Hardware Supported: ItsyBitsy 32u4 5V 16MHz
- Hardware Availability: [Bloomer Repository](https://github.com/cozykeys/bloomer)
Make example for this keyboard (after setting up your build environment):
make cozykeys/bloomer/v2:default # for Bloomer v2
make cozykeys/bloomer/v3:default # for Bloomer v3
Flashing example for this keyboard:
make cozykeys/bloomer/v2:default:flash # for Bloomer v2
make cozykeys/bloomer/v3:default:flash # for Bloomer v3
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).
## Flashing the Firmware
See the QMK docs for handwiring a keyboard; there is a section with instructions on how to flash the *.hex* file to the Teensy 2.0 controller.
+29
View File
@@ -0,0 +1,29 @@
/*
Copyright 2021 Paul Ewing
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 DEVICE_VER 0x0002
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 }
#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
+100
View File
@@ -0,0 +1,100 @@
{
"keyboard_name": "Bloomer",
"url": "https://github.com/cozykeys/bloomer",
"maintainer": "pcewing",
"width": 15,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "k00", "x": 0.868, "y": 0.0, "r": 10 },
{ "label": "k01", "x": 1.853, "y": 0.174, "r": 10 },
{ "label": "k02", "x": 2.856, "y": 0.244, "r": 10 },
{ "label": "k03", "x": 3.896, "y": 0.107, "r": 10 },
{ "label": "k04", "x": 4.826, "y": 0.591, "r": 10 },
{ "label": "k05", "x": 5.765, "y": 1.023, "r": 10 },
{ "label": "k06", "x": 7.031, "y": 0.724, "r": 0 },
{ "label": "k07", "x": 8.031, "y": 0.46, "r": 0 },
{ "label": "k08", "x": 9.031, "y": 0.724, "r": 0 },
{ "label": "k09", "x": 10.297, "y": 1.023, "r": -10 },
{ "label": "k10", "x": 11.236, "y": 0.591, "r": -10 },
{ "label": "k11", "x": 12.166, "y": 0.107, "r": -10 },
{ "label": "k12", "x": 13.196, "y": 0.192, "r": -10 },
{ "label": "k13", "x": 14.208, "y": 0.174, "r": -10 },
{ "label": "k14", "x": 15.193, "y": 0.0, "r": -10 },
{ "label": "k15", "x": 0.695, "y": 0.985, "r": 10 },
{ "label": "k16", "x": 1.679, "y": 1.158, "r": 10 },
{ "label": "k17", "x": 2.682, "y": 1.229, "r": 10 },
{ "label": "k18", "x": 3.722, "y": 1.092, "r": 10 },
{ "label": "k19", "x": 4.652, "y": 1.576, "r": 10 },
{ "label": "k20", "x": 5.591, "y": 2.008, "r": 10 },
{ "label": "k21", "x": 7.031, "y": 2.249, "r": 0 },
{ "label": "k22", "x": 8.031, "y": 1.985, "r": 0 },
{ "label": "k23", "x": 9.031, "y": 2.249, "r": 0 },
{ "label": "k24", "x": 10.47, "y": 2.008, "r": -10 },
{ "label": "k25", "x": 11.409, "y": 1.576, "r": -10 },
{ "label": "k26", "x": 12.34, "y": 1.092, "r": -10 },
{ "label": "k27", "x": 13.37, "y": 1.177, "r": -10 },
{ "label": "k28", "x": 14.382, "y": 1.158, "r": -10 },
{ "label": "k29", "x": 15.367, "y": 0.985, "r": -10 },
{ "label": "k30", "x": 0.521, "y": 1.97, "r": 10 },
{ "label": "k31", "x": 1.506, "y": 2.143, "r": 10 },
{ "label": "k32", "x": 2.509, "y": 2.214, "r": 10 },
{ "label": "k33", "x": 3.548, "y": 2.077, "r": 10 },
{ "label": "k34", "x": 4.478, "y": 2.561, "r": 10 },
{ "label": "k35", "x": 5.418, "y": 2.993, "r": 10 },
{ "label": "k36", "x": 7.031, "y": 3.249, "r": 0 },
{ "label": "k37", "x": 8.031, "y": 2.985, "r": 0 },
{ "label": "k38", "x": 9.031, "y": 3.249, "r": 0 },
{ "label": "k39", "x": 10.644, "y": 2.993, "r": -10 },
{ "label": "k40", "x": 11.583, "y": 2.561, "r": -10 },
{ "label": "k41", "x": 12.513, "y": 2.077, "r": -10 },
{ "label": "k42", "x": 13.544, "y": 2.162, "r": -10 },
{ "label": "k43", "x": 14.556, "y": 2.143, "r": -10 },
{ "label": "k44", "x": 15.541, "y": 1.97, "r": -10 },
{ "label": "k45", "x": 0.347, "y": 2.954, "r": 10 },
{ "label": "k46", "x": 1.332, "y": 3.128, "r": 10 },
{ "label": "k47", "x": 2.335, "y": 3.198, "r": 10 },
{ "label": "k48", "x": 3.375, "y": 3.062, "r": 10 },
{ "label": "k49", "x": 4.305, "y": 3.546, "r": 10 },
{ "label": "k50", "x": 5.244, "y": 3.978, "r": 10 },
{ "label": "k51", "x": 10.818, "y": 3.978, "r": -10 },
{ "label": "k52", "x": 11.757, "y": 3.546, "r": -10 },
{ "label": "k53", "x": 12.687, "y": 3.062, "r": -10 },
{ "label": "k54", "x": 13.717, "y": 3.147, "r": -10 },
{ "label": "k55", "x": 14.729, "y": 3.128, "r": -10 },
{ "label": "k56", "x": 15.714, "y": 2.954, "r": -10 },
{ "label": "k57", "x": 0.174, "y": 3.939, "r": 10 },
{ "label": "k58", "x": 1.158, "y": 4.113, "r": 10 },
{ "label": "k59", "x": 2.161, "y": 4.183, "r": 10 },
{ "label": "k60", "x": 3.201, "y": 4.047, "r": 10 },
{ "label": "k61", "x": 4.131, "y": 4.53, "r": 10 },
{ "label": "k62", "x": 5.07, "y": 4.963, "r": 10 },
{ "label": "k63", "x": 7.031, "y": 4.984, "r": 0 },
{ "label": "k64", "x": 8.031, "y": 4.51, "r": 0 },
{ "label": "k65", "x": 9.031, "y": 4.984, "r": 0 },
{ "label": "k66", "x": 10.991, "y": 4.963, "r": -10 },
{ "label": "k67", "x": 11.93, "y": 4.53, "r": -10 },
{ "label": "k68", "x": 12.861, "y": 4.047, "r": -10 },
{ "label": "k69", "x": 13.891, "y": 4.131, "r": -10 },
{ "label": "k70", "x": 14.903, "y": 4.113, "r": -10 },
{ "label": "k71", "x": 15.888, "y": 3.939, "r": -10 },
{ "label": "k72", "x": 0.0, "y": 4.924, "r": 10 },
{ "label": "k73", "x": 0.985, "y": 5.098, "r": 10 },
{ "label": "k74", "x": 1.988, "y": 5.168, "r": 10 },
{ "label": "k75", "x": 3.027, "y": 5.031, "r": 10 },
{ "label": "k76", "x": 3.957, "y": 5.515, "r": 10 },
{ "label": "k77", "x": 4.897, "y": 5.947, "r": 10 },
{ "label": "k78", "x": 5.883, "y": 6.115, "r": 10 },
{ "label": "k79", "x": 8.031, "y": 5.51, "r": 0 },
{ "label": "k80", "x": 10.179, "y": 6.115, "r": -10 },
{ "label": "k81", "x": 11.165, "y": 5.947, "r": -10 },
{ "label": "k82", "x": 12.104, "y": 5.515, "r": -10 },
{ "label": "k83", "x": 13.034, "y": 5.031, "r": -10 },
{ "label": "k84", "x": 14.065, "y": 5.116, "r": -10 },
{ "label": "k85", "x": 15.077, "y": 5.098, "r": -10 },
{ "label": "k86", "x": 16.062, "y": 4.924, "r": -10 }
]
}
}
}
@@ -0,0 +1,48 @@
/*
Copyright 2021 Paul Ewing
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 bloomer_layers {
DEFAULT,
FN
};
#define RGB_N RGB_MOD // Rotate to next RGB mode
#define RGB_P RGB_RMOD // Rotate to next RGB mode
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEFAULT] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PSCR, KC_SLCK, KC_PAUS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_INS, KC_HOME, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_CAPS, KC_END, KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_UP, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_DOWN, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL
),
[FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
_______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______,
_______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, RGB_P, RGB_TOG, RGB_N, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_M_P, _______, _______, _______, _______, _______, _______, _______
)
};
@@ -0,0 +1,10 @@
# CozyKeys Bloomer v2 Default Keymap
## Default Layer
![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_default.svg)
## Function Layer
![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v2/default/bloomer_layer_fn.svg)
+5
View File
@@ -0,0 +1,5 @@
# CozyKeys Bloomer v2
![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer/bloomer-angle-2_800x800.jpg)
For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory.
+22
View File
@@ -0,0 +1,22 @@
# 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 = 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 = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright 2021 Paul Ewing
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 "v2.h"
+38
View File
@@ -0,0 +1,38 @@
/*
Copyright 2021 Paul Ewing
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 ___ KC_NO
#define LAYOUT( \
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, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, \
k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, \
k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, \
k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86 \
) \
{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \
/* r0 */ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14 }, \
/* r1 */ { k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
/* r2 */ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44 }, \
/* r3 */ { k45, k46, k47, k48, k49, k50, ___, ___, ___, k51, k52, k53, k54, k55, k56 }, \
/* r4 */ { k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71 }, \
/* r5 */ { k72, k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86 }, \
}
+29
View File
@@ -0,0 +1,29 @@
/*
Copyright 2021 Paul Ewing
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 DEVICE_VER 0x0003
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 }
#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
+103
View File
@@ -0,0 +1,103 @@
{
"keyboard_name": "Bloomer",
"url": "https://github.com/cozykeys/bloomer",
"maintainer": "pcewing",
"width": 15,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "k00", "x": 0.868, "y": 0.0, "r": 10 },
{ "label": "k01", "x": 1.853, "y": 0.174, "r": 10 },
{ "label": "k02", "x": 2.856, "y": 0.244, "r": 10 },
{ "label": "k03", "x": 3.896, "y": 0.107, "r": 10 },
{ "label": "k04", "x": 4.826, "y": 0.591, "r": 10 },
{ "label": "k05", "x": 5.765, "y": 1.023, "r": 10 },
{ "label": "k06", "x": 10.507, "y": 1.023, "r": -10 },
{ "label": "k07", "x": 11.446, "y": 0.591, "r": -10 },
{ "label": "k08", "x": 12.376, "y": 0.107, "r": -10 },
{ "label": "k09", "x": 13.406, "y": 0.192, "r": -10 },
{ "label": "k10", "x": 14.418, "y": 0.174, "r": -10 },
{ "label": "k11", "x": 15.403, "y": 0.0, "r": -10 },
{ "label": "k12", "x": 0.695, "y": 0.985, "r": 10 },
{ "label": "k13", "x": 1.679, "y": 1.158, "r": 10 },
{ "label": "k14", "x": 2.682, "y": 1.229, "r": 10 },
{ "label": "k15", "x": 3.722, "y": 1.092, "r": 10 },
{ "label": "k16", "x": 4.652, "y": 1.576, "r": 10 },
{ "label": "k17", "x": 5.591, "y": 2.008, "r": 10 },
{ "label": "k18", "x": 10.68, "y": 2.008, "r": -10 },
{ "label": "k19", "x": 11.619, "y": 1.576, "r": -10 },
{ "label": "k20", "x": 12.55, "y": 1.092, "r": -10 },
{ "label": "k21", "x": 13.58, "y": 1.177, "r": -10 },
{ "label": "k22", "x": 14.592, "y": 1.158, "r": -10 },
{ "label": "k23", "x": 15.577, "y": 0.985, "r": -10 },
{ "label": "k24", "x": 0.521, "y": 1.97, "r": 10 },
{ "label": "k25", "x": 1.506, "y": 2.143, "r": 10 },
{ "label": "k26", "x": 2.509, "y": 2.214, "r": 10 },
{ "label": "k27", "x": 3.548, "y": 2.077, "r": 10 },
{ "label": "k28", "x": 4.478, "y": 2.561, "r": 10 },
{ "label": "k29", "x": 5.418, "y": 2.993, "r": 10 },
{ "label": "k30", "x": 6.402, "y": 3.167, "r": 10 },
{ "label": "k31", "x": 7.636, "y": 3.217, "r": 0 },
{ "label": "k32", "x": 8.636, "y": 3.217, "r": 0 },
{ "label": "k33", "x": 9.869, "y": 3.167, "r": -10 },
{ "label": "k34", "x": 10.854, "y": 2.993, "r": -10 },
{ "label": "k35", "x": 11.793, "y": 2.561, "r": -10 },
{ "label": "k36", "x": 12.723, "y": 2.077, "r": -10 },
{ "label": "k37", "x": 13.754, "y": 2.162, "r": -10 },
{ "label": "k38", "x": 14.766, "y": 2.143, "r": -10 },
{ "label": "k39", "x": 15.75, "y": 1.97, "r": -10 },
{ "label": "k40", "x": 0.347, "y": 2.954, "r": 10 },
{ "label": "k41", "x": 1.332, "y": 3.128, "r": 10 },
{ "label": "k42", "x": 2.335, "y": 3.198, "r": 10 },
{ "label": "k43", "x": 3.375, "y": 3.062, "r": 10 },
{ "label": "k44", "x": 4.305, "y": 3.546, "r": 10 },
{ "label": "k45", "x": 5.244, "y": 3.978, "r": 10 },
{ "label": "k46", "x": 6.229, "y": 4.151, "r": 10 },
{ "label": "k47", "x": 7.636, "y": 4.217, "r": 0 },
{ "label": "k48", "x": 8.636, "y": 4.217, "r": 0 },
{ "label": "k49", "x": 10.043, "y": 4.151, "r": -10 },
{ "label": "k50", "x": 11.027, "y": 3.978, "r": -10 },
{ "label": "k51", "x": 11.967, "y": 3.546, "r": -10 },
{ "label": "k52", "x": 12.897, "y": 3.062, "r": -10 },
{ "label": "k53", "x": 13.927, "y": 3.147, "r": -10 },
{ "label": "k54", "x": 14.939, "y": 3.128, "r": -10 },
{ "label": "k55", "x": 15.924, "y": 2.954, "r": -10 },
{ "label": "k56", "x": 0.174, "y": 3.939, "r": 10 },
{ "label": "k57", "x": 1.158, "y": 4.113, "r": 10 },
{ "label": "k58", "x": 2.161, "y": 4.183, "r": 10 },
{ "label": "k59", "x": 3.201, "y": 4.047, "r": 10 },
{ "label": "k60", "x": 4.131, "y": 4.53, "r": 10 },
{ "label": "k61", "x": 5.07, "y": 4.963, "r": 10 },
{ "label": "k62", "x": 6.055, "y": 5.136, "r": 10 },
{ "label": "k63", "x": 7.136, "y": 5.217, "r": 0 },
{ "label": "k64", "x": 8.136, "y": 5.217, "r": 0 },
{ "label": "k65", "x": 9.136, "y": 5.217, "r": 0 },
{ "label": "k66", "x": 10.216, "y": 5.136, "r": -10 },
{ "label": "k67", "x": 11.201, "y": 4.963, "r": -10 },
{ "label": "k68", "x": 12.14, "y": 4.53, "r": -10 },
{ "label": "k69", "x": 13.07, "y": 4.047, "r": -10 },
{ "label": "k70", "x": 14.101, "y": 4.131, "r": -10 },
{ "label": "k71", "x": 15.113, "y": 4.113, "r": -10 },
{ "label": "k72", "x": 16.098, "y": 3.939, "r": -10 },
{ "label": "k73", "x": 0.0, "y": 4.924, "r": 10 },
{ "label": "k74", "x": 0.985, "y": 5.098, "r": 10 },
{ "label": "k75", "x": 1.988, "y": 5.168, "r": 10 },
{ "label": "k76", "x": 3.027, "y": 5.031, "r": 10 },
{ "label": "k77", "x": 3.957, "y": 5.515, "r": 10 },
{ "label": "k78", "x": 4.897, "y": 5.947, "r": 10 },
{ "label": "k79", "x": 5.881, "y": 6.121, "r": 10 },
{ "label": "k80", "x": 7.136, "y": 6.217, "r": 0 },
{ "label": "k81", "x": 8.136, "y": 6.217, "r": 0 },
{ "label": "k82", "x": 9.136, "y": 6.217, "r": 0 },
{ "label": "k83", "x": 10.39, "y": 6.121, "r": -10 },
{ "label": "k84", "x": 11.375, "y": 5.947, "r": -10 },
{ "label": "k85", "x": 12.314, "y": 5.515, "r": -10 },
{ "label": "k86", "x": 13.244, "y": 5.031, "r": -10 },
{ "label": "k87", "x": 14.274, "y": 5.116, "r": -10 },
{ "label": "k88", "x": 15.287, "y": 5.098, "r": -10 },
{ "label": "k89", "x": 16.271, "y": 4.924, "r": -10 }
]
}
}
}
@@ -0,0 +1,48 @@
/*
Copyright 2021 Paul Ewing
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 bloomer_layers {
DEFAULT,
FN,
};
#define RGB_N RGB_MOD // Rotate to next RGB mode
#define RGB_P RGB_RMOD // Rotate to next RGB mode
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEFAULT] = LAYOUT(
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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_PSCR, KC_PAUS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PGUP, KC_SLCK, KC_NLCK, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_CAPS, KC_UP, KC_INS, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(FN), KC_BSPC, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL
),
[FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, RGB_M_P, _______, _______, KC_GRV, KC_LBRC, KC_RBRC, _______, _______,
_______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, RGB_P, RGB_N, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______
),
};
@@ -0,0 +1,10 @@
# CozyKeys Bloomer v3 Default Keymap
## Default Layer
![Default Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_default.svg)
## Function Layer
![Function Layer](https://raw.githubusercontent.com/cozykeys/bloomer/master/keymaps/v3/default/bloomer_layer_fn.svg)
+5
View File
@@ -0,0 +1,5 @@
# CozyKeys Bloomer v3
![Bloomer](http://assets.cozykeys.xyz/images/keyboards/bloomer-v3/bloomer-v3-angle_800x800.jpg)
For more information on the Bloomer and how to build/flash the firmware, see the [readme.md](../readme.md) in the parent directory.
+22
View File
@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# 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 = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright 2021 Paul Ewing
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 "v3.h"
+36
View File
@@ -0,0 +1,36 @@
/*
Copyright 2021 Paul Ewing
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, \
k56, k57, k58, k59, k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k70, k71, k72, \
k73, k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88, k89 \
) \
{ /* c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 */ \
/* r0 */ { k00, k01, k02, k03, k04, k05, k31, k63, k32, k06, k07, k08, k09, k10, k11 }, \
/* r1 */ { k12, k13, k14, k15, k16, k17, k47, k80, k48, k18, k19, k20, k21, k22, k23 }, \
/* r2 */ { k24, k25, k26, k27, k28, k29, k30, k64, k33, k34, k35, k36, k37, k38, k39 }, \
/* r3 */ { k40, k41, k42, k43, k44, k45, k46, k81, k49, k50, k51, k52, k53, k54, k55 }, \
/* r4 */ { k56, k57, k58, k59, k60, k61, k62, k65, k66, k67, k68, k69, k70, k71, k72 }, \
/* r5 */ { k73, k74, k75, k76, k77, k78, k79, k82, k83, k84, k85, k86, k87, k88, k89 } \
}
+2 -1
View File
@@ -25,7 +25,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
L30, L31, L32, L33, R30, R31, R32, R33 \ L30, R33, \
L31, L32, L33, R30, R31, R32 \
) \ ) \
{ \ { \
{ L00, L01, L02, L03, L04 }, \ { L00, L01, L02, L03, L04 }, \
+59
View File
@@ -0,0 +1,59 @@
{
"keyboard_name": "DracuLad",
"url": "",
"maintainer": "MangoIV",
"width": 13,
"height": 5.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"L00", "x":0, "y":1},
{"label":"L01", "x":1, "y":0.35},
{"label":"L02", "x":2, "y":0},
{"label":"L03", "x":3, "y":0.35},
{"label":"L04", "x":4, "y":0.5},
{"label":"R00", "x":8, "y":0.5},
{"label":"R01", "x":9, "y":0.35},
{"label":"R02", "x":10, "y":0},
{"label":"R03", "x":11, "y":0.35},
{"label":"R04", "x":12, "y":1},
{"label":"L10", "x":0, "y":2},
{"label":"L11", "x":1, "y":1.35},
{"label":"L12", "x":2, "y":1},
{"label":"L13", "x":3, "y":1.35},
{"label":"L14", "x":4, "y":1.5},
{"label":"R10", "x":8, "y":1.5},
{"label":"R11", "x":9, "y":1.35},
{"label":"R12", "x":10, "y":1},
{"label":"R13", "x":11, "y":1.35},
{"label":"R14", "x":12, "y":2},
{"label":"L20", "x":0, "y":3},
{"label":"L21", "x":1, "y":2.35},
{"label":"L22", "x":2, "y":2},
{"label":"L23", "x":3, "y":2.35},
{"label":"L24", "x":4, "y":2.5},
{"label":"R20", "x":8, "y":2.5},
{"label":"R21", "x":9, "y":2.35},
{"label":"R22", "x":10, "y":2},
{"label":"R23", "x":11, "y":2.35},
{"label":"R24", "x":12, "y":3},
{"label":"L30", "x":4.25, "y":3.5},
{"label":"R33", "x":7.75, "y":3.5},
{"label":"L31", "x":3, "y":4.5},
{"label":"L32", "x":4, "y":4.5},
{"label":"L33", "x":5, "y":4.5},
{"label":"R30", "x":7, "y":4.5},
{"label":"R31", "x":8, "y":4.5},
{"label":"R32", "x":9, "y":4.5}
]
}
}
}
+31 -26
View File
@@ -30,35 +30,40 @@ enum layer_number {
char wpm_as_str[8]; char wpm_as_str[8];
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT( [_BASE] = LAYOUT(
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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K , KC_L , KC_SCLN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB, KC_ENT), KC_CAPS, TG(_ADJ) KC_MUTE, TG(_ADJ),
), KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB,KC_ENT), KC_CAPS
[_NUM] = LAYOUT( ),
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, [_NUM] = LAYOUT(
KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT, KC_TAB, XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT,
XXXXXXX, XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO, KC_NO KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
), XXXXXXX, KC_NO,
[_SYMB] = LAYOUT( XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, ),
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, [_SYMB] = LAYOUT(
KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS,
XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO, KC_NO XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS,
KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
XXXXXXX, KC_NO,
KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO
), ),
[_MUS] = LAYOUT( [_MUS] = LAYOUT(
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX XXXXXXX, XXXXXXX,
), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
[_ADJ] = LAYOUT( [_ADJ] = LAYOUT(
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
) )
}; };
+29 -24
View File
@@ -42,35 +42,40 @@ enum custom_keycodes {
char wpm_as_str[8]; char wpm_as_str[8];
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT( [_BASE] = LAYOUT(
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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K , KC_L , KC_SCLN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB, KC_DEL), TG(_ADJ) KC_MUTE, TG(_ADJ),
), KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB,KC_DEL)
[_NUM] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT , KC_QUOT,
KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
XXXXXXX, KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT, KC_NO
), ),
[_SYMB] = LAYOUT( [_NUM] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX , KC_GRV , KC_BSLS, KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT,
KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______, KC_NO XXXXXXX, KC_NO,
KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT
),
[_SYMB] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_MINS,
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV, KC_BSLS,
KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
XXXXXXX, KC_NO,
KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______
), ),
[_MUS] = LAYOUT( [_MUS] = LAYOUT(
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1 , BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
), ),
[_ADJ] = LAYOUT( [_ADJ] = LAYOUT(
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX,
EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI , RGB_VAI , RGB_TOG, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
) )
}; };
+17 -19
View File
@@ -3,31 +3,29 @@
![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true) ![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true)
*A 34-36 key split keyboard* *A 34-36 key split keyboard*
- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. - 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders.
- bright RGB Underglow with ws2812b LEDs - bright RGB Underglow with WS2812B LEDs
- one ssd1306 OLED per side - one SSD1306 OLED per side
- aggressive pinky stagger similar to the kyria but with an alternative thumb cluster to raise comfort for large hands - aggressive pinky stagger similar to the Kyria but with an alternative thumb cluster to raise comfort for large hands
- support for mx and choc switches - support for MX and Choc switches
* keyboard Maintainer: [MangoIV](https://github.com/MangoIV) * Keyboard Maintainer: [MangoIV](https://github.com/MangoIV)
* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout) * Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the Pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout)
* Hardware availability: [check my github](https://github.com/MangoIV) * Hardware Availability: [MangoIV's GitHub](https://github.com/MangoIV/dracuLad)
Make example for this keyboard (after setting up your build env): Make example for this keyboard (after setting up your build env):
make draculad:default make draculad:default
or for the version using the pimoroni trackball or for the version using the Pimoroni trackball:
make draculad:pimoroni make draculad:pimoroni
Flashing example for dfu and catarina respectively (replace default with the name of your keymap)
make draculad:default:dfu
make draculad:default:flash
When flashing the first time using handedness by eeprom, use the [qmk guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) Flashing example for DFU and Caterina respectively (replace `default` with the name of your keymap):
make draculad:default:dfu
make draculad:default:flash
When flashing the first time using handedness by EEPROM, use the [QMK guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom).
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).
+64
View File
@@ -0,0 +1,64 @@
/*
Copyright 2021 DongXing
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 0x464C // "FL"
#define PRODUCT_ID 0x0006
#define DEVICE_VER 0x0001
#define MANUFACTURER Fox Lab
#define PRODUCT Time 80 Reforged
/* 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 { D1, D0, B3, B0, B2, B1 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 }
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 3
#define LED_CAPS_LOCK_PIN E6
#define LED_PIN_ON_STATE 0
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLED_NUM 5
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
#define RGBLIGHT_ANIMATIONS
#endif
@@ -0,0 +1,17 @@
/* Copyright 2021 DongXing
*
* 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 "hotswap.h"
@@ -0,0 +1,34 @@
/* Copyright 2021 DongXing
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT( \
K00, 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, K3E, 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, 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, KC_NO, 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, KC_NO, K3D, K3E, KC_NO, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
{ K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
}
+103
View File
@@ -0,0 +1,103 @@
{
"keyboard_name": "Time RE Hotswap",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K00 (D1,F0)", "x":0, "y":0},
{"label":"K02 (D1,F4)", "x":2, "y":0},
{"label":"K03 (D1,F5)", "x":3, "y":0},
{"label":"K04 (D1,F6)", "x":4, "y":0},
{"label":"K05 (D1,F7)", "x":5, "y":0},
{"label":"K06 (D1,C7)", "x":6.5, "y":0},
{"label":"K07 (D1,C6)", "x":7.5, "y":0},
{"label":"K08 (D1,B6)", "x":8.5, "y":0},
{"label":"K09 (D1,B5)", "x":9.5, "y":0},
{"label":"K0A (D1,B4)", "x":11, "y":0},
{"label":"K0B (D1,D7)", "x":12, "y":0},
{"label":"K0C (D1,D4)", "x":13, "y":0},
{"label":"K0D (D1,D6)", "x":14, "y":0},
{"label":"K0E (D1,D2)", "x":15.25, "y":0},
{"label":"K0F (D1,D3)", "x":16.25, "y":0},
{"label":"K0G (D1,D5)", "x":17.25, "y":0},
{"label":"K10 (D0,F0)", "x":0, "y":1.5},
{"label":"K11 (D0,F1)", "x":1, "y":1.5},
{"label":"K12 (D0,F4)", "x":2, "y":1.5},
{"label":"K13 (D0,F5)", "x":3, "y":1.5},
{"label":"K14 (D0,F6)", "x":4, "y":1.5},
{"label":"K15 (D0,F7)", "x":5, "y":1.5},
{"label":"K16 (D0,C7)", "x":6, "y":1.5},
{"label":"K17 (D0,C6)", "x":7, "y":1.5},
{"label":"K18 (D0,B6)", "x":8, "y":1.5},
{"label":"K19 (D0,B5)", "x":9, "y":1.5},
{"label":"K1A (D0,B4)", "x":10, "y":1.5},
{"label":"K1B (D0,D7)", "x":11, "y":1.5},
{"label":"K1C (D0,D4)", "x":12, "y":1.5},
{"label":"K1D (D0,D6)", "x":13, "y":1.5},
{"label":"K3E (B0,D2)", "x":14, "y":1.5},
{"label":"K1E (D0,D2)", "x":15.25, "y":1.5},
{"label":"K1F (D0,D3)", "x":16.25, "y":1.5},
{"label":"K1G (D0,D5)", "x":17.25, "y":1.5},
{"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5},
{"label":"K21 (B3,F1)", "x":1.5, "y":2.5},
{"label":"K22 (B3,F4)", "x":2.5, "y":2.5},
{"label":"K23 (B3,F5)", "x":3.5, "y":2.5},
{"label":"K24 (B3,F6)", "x":4.5, "y":2.5},
{"label":"K25 (B3,F7)", "x":5.5, "y":2.5},
{"label":"K26 (B3,C7)", "x":6.5, "y":2.5},
{"label":"K27 (B3,C6)", "x":7.5, "y":2.5},
{"label":"K28 (B3,B6)", "x":8.5, "y":2.5},
{"label":"K29 (B3,B5)", "x":9.5, "y":2.5},
{"label":"K2A (B3,B4)", "x":10.5, "y":2.5},
{"label":"K2B (B3,D7)", "x":11.5, "y":2.5},
{"label":"K2C (B3,D4)", "x":12.5, "y":2.5},
{"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5},
{"label":"K2E (B3,D2)", "x":15.25, "y":2.5},
{"label":"K2F (B3,D3)", "x":16.25, "y":2.5},
{"label":"K2G (B3,D5)", "x":17.25, "y":2.5},
{"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75},
{"label":"K31 (B0,F1)", "x":1.75, "y":3.5},
{"label":"K32 (B0,F4)", "x":2.75, "y":3.5},
{"label":"K33 (B0,F5)", "x":3.75, "y":3.5},
{"label":"K34 (B0,F6)", "x":4.75, "y":3.5},
{"label":"K35 (B0,F7)", "x":5.75, "y":3.5},
{"label":"K36 (B0,C7)", "x":6.75, "y":3.5},
{"label":"K37 (B0,C6)", "x":7.75, "y":3.5},
{"label":"K38 (B0,B6)", "x":8.75, "y":3.5},
{"label":"K39 (B0,B5)", "x":9.75, "y":3.5},
{"label":"K3A (B0,B4)", "x":10.75, "y":3.5},
{"label":"K3B (B0,D7)", "x":11.75, "y":3.5},
{"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25},
{"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25},
{"label":"K41 (B2,F1)", "x":1.25, "y":4.5},
{"label":"K42 (B2,F4)", "x":2.25, "y":4.5},
{"label":"K43 (B2,F5)", "x":3.25, "y":4.5},
{"label":"K44 (B2,F6)", "x":4.25, "y":4.5},
{"label":"K45 (B2,F7)", "x":5.25, "y":4.5},
{"label":"K46 (B2,C7)", "x":6.25, "y":4.5},
{"label":"K47 (B2,C6)", "x":7.25, "y":4.5},
{"label":"K48 (B2,B6)", "x":8.25, "y":4.5},
{"label":"K49 (B2,B5)", "x":9.25, "y":4.5},
{"label":"K4A (B2,B4)", "x":10.25, "y":4.5},
{"label":"K4B (B2,D7)", "x":11.25, "y":4.5},
{"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75},
{"label":"K4D (B2,D6)", "x":14, "y":4.5},
{"label":"K4F (B2,D3)", "x":16.25, "y":4.5},
{"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25},
{"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25},
{"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25},
{"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25},
{"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25},
{"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25},
{"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25},
{"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25},
{"label":"K5E (B1,D2)", "x":15.25, "y":5.5},
{"label":"K5F (B1,D3)", "x":16.25, "y":5.5},
{"label":"K5G (B1,D5)", "x":17.25, "y":5.5}
]
}
}
}
@@ -0,0 +1,36 @@
/* Copyright 2021 matrixzj <[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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), _______, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
@@ -0,0 +1,52 @@
/* Copyright 2021 matrixzj <[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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), _______, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
@@ -0,0 +1 @@
VIA_ENABLE = yes
@@ -0,0 +1,19 @@
# Foxlab Time 80 Reforged Hotswap
![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg)
Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view.
* Keyboard Maintainer: QMK
* Hardware Supported: Time 80 Reforged Hotswap PCB
* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330)
This version is for the hotswap variant with the layouts below available:
![PCB Layout](https://imgur.com/D8cQCwb.png)
![Plate Layout](https://imgur.com/aR1UnhK.png)
Make example for this keyboard (after setting up your build environment):
make foxlab/time_re/hotswap: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).
+22
View File
@@ -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 = 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 = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
@@ -0,0 +1,64 @@
/*
Copyright 2021 DongXing
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 0x464C // "FL"
#define PRODUCT_ID 0x0006
#define DEVICE_VER 0x0001
#define MANUFACTURER Fox Lab
#define PRODUCT Time 80 Reforged
/* 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 { D1, D0, B3, B0, B2, B1 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 }
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 3
#define LED_CAPS_LOCK_PIN E6
#define LED_PIN_ON_STATE 0
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLED_NUM 5
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
#define RGBLIGHT_ANIMATIONS
#endif
@@ -0,0 +1,103 @@
{
"keyboard_name": "Time RE Universal",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K00 (D1,F0)", "x":0, "y":0},
{"label":"K02 (D1,F4)", "x":2, "y":0},
{"label":"K03 (D1,F5)", "x":3, "y":0},
{"label":"K04 (D1,F6)", "x":4, "y":0},
{"label":"K05 (D1,F7)", "x":5, "y":0},
{"label":"K06 (D1,C7)", "x":6.5, "y":0},
{"label":"K07 (D1,C6)", "x":7.5, "y":0},
{"label":"K08 (D1,B6)", "x":8.5, "y":0},
{"label":"K09 (D1,B5)", "x":9.5, "y":0},
{"label":"K0A (D1,B4)", "x":11, "y":0},
{"label":"K0B (D1,D7)", "x":12, "y":0},
{"label":"K0C (D1,D4)", "x":13, "y":0},
{"label":"K0D (D1,D6)", "x":14, "y":0},
{"label":"K0E (D1,D2)", "x":15.25, "y":0},
{"label":"K0F (D1,D3)", "x":16.25, "y":0},
{"label":"K0G (D1,D5)", "x":17.25, "y":0},
{"label":"K10 (D0,F0)", "x":0, "y":1.5},
{"label":"K11 (D0,F1)", "x":1, "y":1.5},
{"label":"K12 (D0,F4)", "x":2, "y":1.5},
{"label":"K13 (D0,F5)", "x":3, "y":1.5},
{"label":"K14 (D0,F6)", "x":4, "y":1.5},
{"label":"K15 (D0,F7)", "x":5, "y":1.5},
{"label":"K16 (D0,C7)", "x":6, "y":1.5},
{"label":"K17 (D0,C6)", "x":7, "y":1.5},
{"label":"K18 (D0,B6)", "x":8, "y":1.5},
{"label":"K19 (D0,B5)", "x":9, "y":1.5},
{"label":"K1A (D0,B4)", "x":10, "y":1.5},
{"label":"K1B (D0,D7)", "x":11, "y":1.5},
{"label":"K1C (D0,D4)", "x":12, "y":1.5},
{"label":"K1D (D0,D6)", "x":13, "y":1.5},
{"label":"K3E (B0,D2)", "x":14, "y":1.5},
{"label":"K1E (D0,D2)", "x":15.25, "y":1.5},
{"label":"K1F (D0,D3)", "x":16.25, "y":1.5},
{"label":"K1G (D0,D5)", "x":17.25, "y":1.5},
{"label":"K20 (B3,F0)", "x":0, "y":2.5, "w":1.5},
{"label":"K21 (B3,F1)", "x":1.5, "y":2.5},
{"label":"K22 (B3,F4)", "x":2.5, "y":2.5},
{"label":"K23 (B3,F5)", "x":3.5, "y":2.5},
{"label":"K24 (B3,F6)", "x":4.5, "y":2.5},
{"label":"K25 (B3,F7)", "x":5.5, "y":2.5},
{"label":"K26 (B3,C7)", "x":6.5, "y":2.5},
{"label":"K27 (B3,C6)", "x":7.5, "y":2.5},
{"label":"K28 (B3,B6)", "x":8.5, "y":2.5},
{"label":"K29 (B3,B5)", "x":9.5, "y":2.5},
{"label":"K2A (B3,B4)", "x":10.5, "y":2.5},
{"label":"K2B (B3,D7)", "x":11.5, "y":2.5},
{"label":"K2C (B3,D4)", "x":12.5, "y":2.5},
{"label":"K2D (B3,D6)", "x":13.5, "y":2.5, "w":1.5},
{"label":"K2E (B3,D2)", "x":15.25, "y":2.5},
{"label":"K2F (B3,D3)", "x":16.25, "y":2.5},
{"label":"K2G (B3,D5)", "x":17.25, "y":2.5},
{"label":"K30 (B0,F0)", "x":0, "y":3.5, "w":1.75},
{"label":"K31 (B0,F1)", "x":1.75, "y":3.5},
{"label":"K32 (B0,F4)", "x":2.75, "y":3.5},
{"label":"K33 (B0,F5)", "x":3.75, "y":3.5},
{"label":"K34 (B0,F6)", "x":4.75, "y":3.5},
{"label":"K35 (B0,F7)", "x":5.75, "y":3.5},
{"label":"K36 (B0,C7)", "x":6.75, "y":3.5},
{"label":"K37 (B0,C6)", "x":7.75, "y":3.5},
{"label":"K38 (B0,B6)", "x":8.75, "y":3.5},
{"label":"K39 (B0,B5)", "x":9.75, "y":3.5},
{"label":"K3A (B0,B4)", "x":10.75, "y":3.5},
{"label":"K3B (B0,D7)", "x":11.75, "y":3.5},
{"label":"K3D (B0,D6)", "x":12.75, "y":3.5, "w":2.25},
{"label":"K40 (B2,F0)", "x":0, "y":4.5, "w":1.25},
{"label":"K41 (B2,F1)", "x":1.25, "y":4.5},
{"label":"K42 (B2,F4)", "x":2.25, "y":4.5},
{"label":"K43 (B2,F5)", "x":3.25, "y":4.5},
{"label":"K44 (B2,F6)", "x":4.25, "y":4.5},
{"label":"K45 (B2,F7)", "x":5.25, "y":4.5},
{"label":"K46 (B2,C7)", "x":6.25, "y":4.5},
{"label":"K47 (B2,C6)", "x":7.25, "y":4.5},
{"label":"K48 (B2,B6)", "x":8.25, "y":4.5},
{"label":"K49 (B2,B5)", "x":9.25, "y":4.5},
{"label":"K4A (B2,B4)", "x":10.25, "y":4.5},
{"label":"K4B (B2,D7)", "x":11.25, "y":4.5},
{"label":"K4C (B2,D4)", "x":12.25, "y":4.5, "w":1.75},
{"label":"K4D (B2,D6)", "x":14, "y":4.5},
{"label":"K4F (B2,D3)", "x":16.25, "y":4.5},
{"label":"K50 (B1,F0)", "x":0, "y":5.5, "w":1.25},
{"label":"K51 (B1,F1)", "x":1.25, "y":5.5, "w":1.25},
{"label":"K52 (B1,F4)", "x":2.5, "y":5.5, "w":1.25},
{"label":"K56 (B1,C7)", "x":3.75, "y":5.5, "w":6.25},
{"label":"K5A (B1,B4)", "x":10, "y":5.5, "w":1.25},
{"label":"K5B (B1,D7)", "x":11.25, "y":5.5, "w":1.25},
{"label":"K5C (B1,D4)", "x":12.5, "y":5.5, "w":1.25},
{"label":"K5D (B1,D6)", "x":13.75, "y":5.5, "w":1.25},
{"label":"K5E (B1,D2)", "x":15.25, "y":5.5},
{"label":"K5F (B1,D3)", "x":16.25, "y":5.5},
{"label":"K5G (B1,D5)", "x":17.25, "y":5.5}
]
}
}
}
@@ -0,0 +1,36 @@
/* Copyright 2021 matrixzj <[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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
@@ -0,0 +1,52 @@
/* Copyright 2021 matrixzj <[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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
@@ -0,0 +1 @@
VIA_ENABLE = yes
@@ -0,0 +1,19 @@
# Foxlab Time 80 Reforged Universal
![Time 80 Reforged](https://i.imgur.com/BXOM9sQh.jpg)
Time 80 Reforged was the second design of Fox Lab back in 2017. It has also become an iconic keyboard design of Fox Lab. Time80RE kept most of the original weight design. The clock has become thinner now and has a tempered glass cover. The front height of the keyboard has been greatly reduced for optimizing for comfort. The ratio between the top and bottom cases has been adjusted for a cleaner side view.
* Keyboard Maintainer: QMK
* Hardware Supported: Time 80 Reforged Universal PCB
* Hardware Availability: [Group Buy](https://geekhack.org/index.php?topic=108410.msg2952330)
This version is for the universal variant with the layouts below available:
![PCB Layout](https://imgur.com/D8cQCwb.png)
![Plate Layout](https://imgur.com/RzeVma5.png)
Make example for this keyboard (after setting up your build environment):
make foxlab/time_re/universal: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 = 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 = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
@@ -0,0 +1,17 @@
/* Copyright 2021 DongXing
*
* 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 "universal.h"
@@ -0,0 +1,34 @@
/* Copyright 2021 DongXing
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT( \
K00, 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, K3E, 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, 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, KC_NO, 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, KC_NO, K3D, K3E, KC_NO, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
{ K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
}
@@ -15,8 +15,6 @@
*/ */
#include "noroadsleft.h" #include "noroadsleft.h"
//#include "version.h"
#include "sendstring_dvorak.h"
#define LAYOUT_75_ansi_wkl( \ #define LAYOUT_75_ansi_wkl( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
@@ -35,20 +33,13 @@
} }
enum layer_names { enum layer_names {
_QW,
_DV, _DV,
_QW,
_Q2, _Q2,
_FN, _FN,
_SY _SY
}; };
enum custom_keycodes {
GO_Q2 = KEYMAP_SAFE_RANGE,
Q2_ENT
};
unsigned char q2InputMode = 0;
// Tap Dance declarations // Tap Dance declarations
enum tap_dances { enum tap_dances {
LAG, LAG,
@@ -65,14 +56,6 @@ qk_tap_dance_action_t tap_dance_actions[] = {
#define FN_CAPS LT(_FN,KC_CAPS) #define FN_CAPS LT(_FN,KC_CAPS)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_75_ansi_wkl(
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, _______, _______, MO(_SY),
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_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_DV] = LAYOUT_75_ansi_wkl( [_DV] = LAYOUT_75_ansi_wkl(
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, _______, _______, MO(_SY), 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, _______, _______, MO(_SY),
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
@@ -81,11 +64,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END,
KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[_QW] = LAYOUT_75_ansi_wkl(
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, _______, _______, MO(_SY),
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_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_Q2] = LAYOUT_75_ansi_wkl( [_Q2] = LAYOUT_75_ansi_wkl(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LALT, _______, KC_RALT, _______, _______, _______, _______ _______, KC_LALT, _______, KC_RALT, _______, _______, _______, _______
), ),
@@ -98,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______
), ),
[_SY] = LAYOUT_75_ansi_wkl( [_SY] = LAYOUT_75_ansi_wkl(
_______, TO(_QW), TO(_DV), _______, GO_Q2, _______, _______, _______, RESET, EEP_RST, DEBUG, _______, VRSN, _______, _______, _______, _______, TO(_DV), TO(_QW), _______, TG(_Q2), _______, _______, _______, RESET, EEP_RST, DEBUG, _______, VRSN, _______, _______, _______,
_______, _______, M_MDSWP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, M_MDSWP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -111,62 +102,3 @@ bool led_update_user(led_t led_state) {
writePin(B2, !led_state.caps_lock); writePin(B2, !led_state.caps_lock);
return false; return false;
} }
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case GO_Q2:
if (record->event.pressed) {
layer_move(_QW);
layer_on(_Q2);
};
return false;
case Q2_ENT:
if (record->event.pressed) {
if (q2InputMode == 0) {
tap_code(KC_ENT);
q2InputMode = 1;
layer_on(_DV);
//layer_on(_Q2);
} else if (q2InputMode == 1) {
tap_code(KC_ENT);
q2InputMode = 0;
layer_off(_DV);
} else {
tap_code(KC_ENT);
}
};
return false;
case KC_ESC:
if (record->event.pressed) {
if (q2InputMode > 0) {
tap_code(KC_ESC);
q2InputMode = 0;
layer_off(_DV);
} else {
tap_code(KC_ESC);
}
};
return false;
case KC_GRV:
if (IS_LAYER_ON(_Q2) == true) {
if (record->event.pressed) {
if (q2InputMode == 0) {
tap_code(KC_GRV);
q2InputMode = 2;
layer_on(_DV);
} else if (q2InputMode == 1) {
tap_code(KC_GRV);
q2InputMode = 2;
} else {
tap_code(KC_GRV);
q2InputMode = 0;
layer_off(_DV);
}
return false;
}
};
return true;
default:
return true;
}
}
+23 -118
View File
@@ -15,27 +15,22 @@
*/ */
#include "noroadsleft.h" #include "noroadsleft.h"
#include "sendstring_dvorak.h"
//#include "sendstring_colemak.h"
#include "print.h"
/********************** // LAYER DEFINITIONS
** LAYER DEFINITIONS **
**********************/
enum layer_names { enum layer_names {
// BASE LAYERS // BASE LAYERS
_QW, // QWERTY _DV,
_DV, // Dvorak _QW,
_CM, // Colemak _CM,
// QUAKE 2 OVERLAY // QUAKE 2 OVERLAY
_Q2, // Quake 2 _Q2,
// FUNCTION LAYER // FUNCTION LAYER
_FN, // Function _FN,
// OTHER LAYERS // OTHER LAYERS
_NP, // Numpad _NP,
_MA, // Macros _MA,
_SY, // System _SY,
}; };
@@ -44,97 +39,11 @@ enum layer_names {
#define CTL_GRV MT(MOD_LCTL, KC_GRV) // Left Control when held, Grave accent when tapped #define CTL_GRV MT(MOD_LCTL, KC_GRV) // Left Control when held, Grave accent when tapped
// MACRO DEFINITIONS
enum custom_keycodes {
GO_Q2 = KEYMAP_SAFE_RANGE,
Q2_ENT
};
/*******************
** MODIFIER MASKS **
*******************/
unsigned char q2InputMode = 0;
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
// these are our macros!
case GO_Q2:
if (record->event.pressed) {
//default_layer_set(_QW);
layer_move(_QW); // TO(_QW);
layer_on(_Q2);
//layer_off(_SY);
};
return false;
case Q2_ENT:
if (record->event.pressed) {
if (q2InputMode == 0) {
tap_code(KC_ENT);
q2InputMode = 1;
layer_on(_DV);
//layer_on(_Q2);
} else if (q2InputMode == 1) {
tap_code(KC_ENT);
q2InputMode = 0;
layer_off(_DV);
} else {
tap_code(KC_ENT);
}
};
return false;
case KC_ESC:
if (record->event.pressed) {
if (q2InputMode > 0) {
tap_code(KC_ESC);
q2InputMode = 0;
layer_off(_DV);
} else {
tap_code(KC_ESC);
}
};
return false;
case KC_GRV:
if (IS_LAYER_ON(_Q2) == true) {
if (record->event.pressed) {
if (q2InputMode == 0) {
tap_code(KC_GRV);
q2InputMode = 2;
layer_on(_DV);
} else if (q2InputMode == 1) {
tap_code(KC_GRV);
q2InputMode = 2;
} else {
tap_code(KC_GRV);
q2InputMode = 0;
layer_off(_DV);
}
}
};
return false;
} // switch()
return true;
};
// KEYMAPS // KEYMAPS
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/**************** // BASE LAYERS
** BASE LAYERS **
****************/
/* QWERTY */
[_QW] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_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,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
),
/* Dvorak */
[_DV] = LAYOUT_60_ansi( [_DV] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC,
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS,
@@ -143,7 +52,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
), ),
/* Colemak */ [_QW] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_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,
FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
),
[_CM] = LAYOUT_60_ansi( [_CM] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS,
@@ -152,24 +68,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_MA), MO(_FN), KC_RCTL
), ),
/********************* // QUAKE 2 OVERLAYS
** QUAKE 2 OVERLAYS **
*********************/
/* Quake 2 */
[_Q2] = LAYOUT_60_ansi( [_Q2] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, Q2_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, _______ KC_GRV, _______, _______, _______, _______, _______, _______, _______
), ),
/******************** // FUNCTION LAYER
** FUNCTION LAYERS **
********************/
/* Fn layer */
[_FN] = LAYOUT_60_ansi( [_FN] = LAYOUT_60_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS,
@@ -178,11 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, TG(_NP), _______, _______, _______, _______ _______, _______, _______, TG(_NP), _______, _______, _______, _______
), ),
/***************** // OTHER LAYERS
** OTHER LAYERS **
*****************/
/* Numpad layer */
[_NP] = LAYOUT_60_ansi( [_NP] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______,
_______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______,
@@ -191,7 +98,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, TG(_NP), _______, _______, _______, _______ _______, _______, _______, TG(_NP), _______, _______, _______, _______
), ),
/* Macro layer */
[_MA] = LAYOUT_60_ansi( [_MA] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______,
_______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP, _______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP,
@@ -200,9 +106,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______
), ),
/* System layer */
[_SY] = LAYOUT_60_ansi( [_SY] = LAYOUT_60_ansi(
TG(_SY), TO(_QW), TO(_DV), TO(_CM), GO_Q2, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, TG(_SY), TO(_QW), TO(_DV), TO(_CM), TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX,
XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+19 -29
View File
@@ -1,6 +1,6 @@
# @noroadsleft's KC60 keymap # @noroadsleft's KC60 keymap
### Last updated: April 26, 2021 13:33 (-0700) ### Last updated: May 3, 2021 16:42 (-0700)
![](https://i.imgur.com/tzhXQYIl.jpg) ![](https://i.imgur.com/tzhXQYIl.jpg)
@@ -24,9 +24,9 @@ Descriptions of the physical locations of keys will use the key's function in a
## Outline ## Outline
- [Base Layers](#base-layers) - [Base Layers](#base-layers)
- Layer 0: QWERTY `_QW` - Layer 0: Dvorak `_DV`
- Layer 1: Hardware Dvorak `_DV` - Layer 1: QWERTY `_QW`
- Layer 2: Hardware Colemak `_CM` - Layer 2: Colemak `_CM`
- [Quake 2 Layer](#quake-2-layer) - [Quake 2 Layer](#quake-2-layer)
- Layer 3: Quake 2 `_Q2` - Layer 3: Quake 2 `_Q2`
- [Function Layer](#function-layer) - [Function Layer](#function-layer)
@@ -41,38 +41,36 @@ Descriptions of the physical locations of keys will use the key's function in a
## Base Layers ## Base Layers
### Layer 0: QWERTY - `_QW` My base layers are pretty standard for a 60%, with the following changes:
Standard QWERTY layout, with four QMK features: - The `Menu` key has been replaced by `MO(_FN)`, which moves to my Function layer when held.
- The `Menu` key has been replaced by `MO(_FW)`, which moves to my Windows Fn layer when held.
- The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held. - The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held.
- The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Windows Fn layer when held, and is `Caps Lock` when tapped - The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Function layer when held, and is `Caps Lock` when tapped.
- The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is <code>&#96; ~</code> when tapped and `Ctrl` when held. - The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is `Ctrl` when held and <code>&#96; ~</code> when tapped.
![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/qwerty.png) ### Layer 0: Dvorak - `_DV`
A hardware-based Dvorak Simplified layout. In this layer, I can leave the host system in QWERTY, plug my keyboard in, and still type in Dvorak.
![Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/dvorak.png)
---- ### Layer 1: QWERTY - `_QW`
### Layer 1: Hardware Dvorak - `_DV`
- Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`. - Accessed by holding either `Fn` and tapping `/?` key, then tapping `2@`.
A hardware-based Dvorak Simplified layout. At my weekend job, I use a shared computer that runs MacOS Sierra, in US QWERTY layout. In this layer, I can leave the system in QWERTY, plug my keyboard in, and still type in Dvorak. For when other people need to use my keyboard. :)
![Hardware Dvorak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/dvorak.png) ![QWERTY layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/qwerty.png)
----
### Layer 2: Hardware Colemak `_CM` ### Layer 2: Hardware Colemak `_CM`
- Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`. - Accessed by holding either `Fn` and tapping `/?` key, then tapping `3#`.
A hardware-based Colemak layout. Been thinking of trying it, so it's here. A hardware-based Colemak layout. Been thinking of trying it, so it's here.
![Hardware Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/colemak.png) ![Colemak layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/colemak.png)
---- ----
@@ -83,11 +81,7 @@ A hardware-based Colemak layout. Been thinking of trying it, so it's here.
- Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$` - Accessed by holding either `Fn` key and tapping the `/?` key, then tapping `4$`
These layers were born out of the confusion I have had trying to use the in-game chat and the console in [Quake 2](https://en.wikipedia.org/wiki/Quake_II). When Quake 2 came out, alternate keyboard layouts weren't really a thing. As a result, all in-game text input is hard-locked to US QWERTY, regardless of what the operating system is using for its input method. I used to have some macro craziness here. I've now switched to leaving my main system in QWERTY and having the Dvorak stuff happen on the keyboard, and setting my in-game key assignments to the Dvorak mapping (`.OEU` instead of `ESDF`).
I have solved this by writing a custom QMK macro. The keycode in the System layer that enables these layers, [`GO_Q2`](./keymap.c#L205), is a [macro](./keymap.c#L63-L70) that sets the default layer to the QWERTY layer, then turns the Quake 2 layer `_Q2` on. The result is a partially-overwritten QWERTY layer, that changes the dual-function Left Control/Grave key to a standard Left Control, and the Enter key into a special Enter key specific to Quake 2.
When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./keymap.c#L71-L86) I've created sends the keycode for `Enter`, then follows with flipping an internal boolean variable and enabling the Hardware Dvorak layer. Now the game is in text chat mode, and my keyboard is in Dvorak. When I hit `Enter` again, another `Enter` key is sent, which sends the message, then the macro flips the boolean back to false and disables the Hardware Dvorak layer, which brings me back to the standard QWERTY+Quake 2 setup. Hitting `Escape` instead runs a [macro](./keymap.c#L87-L97) that cancels the sending of the message, and undoes the layers.
![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/quake2.png) ![Quake 2](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/quake2.png)
@@ -96,7 +90,7 @@ When I hit the `Enter` key (bound in-game to text chat), the [macro keycode](./k
## Function Layer ## Function Layer
### Layer 4: Fn layer - `_FN` ### Layer 4: Function layer - `_FN`
- Accessed by holding either `Fn` key from any base layer - Accessed by holding either `Fn` key from any base layer
@@ -118,8 +112,6 @@ Puts a Numpad on the right-hand side of the keyboard. A through F included for h
![Numpad layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/numpad.png) ![Numpad layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/numpad.png)
----
### Layer 6: Macro layer - `_MA` ### Layer 6: Macro layer - `_MA`
- Accessed by holding the right-side `Win` key - Accessed by holding the right-side `Win` key
@@ -131,8 +123,6 @@ For macro documentation, see [my userspace readme](../../../../users/noroadsleft
![Macro layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/macros.png) ![Macro layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/macros.png)
----
### Layer 7: System layer - `_SY` ### Layer 7: System layer - `_SY`
- Accessed by holding either `Fn` key and tapping the `/?` key - Accessed by holding either `Fn` key and tapping the `/?` key
+1 -1
View File
@@ -9,7 +9,7 @@ MCU = atmega32u4
# QMK DFU qmk-dfu # QMK DFU qmk-dfu
# ATmega32A bootloadHID # ATmega32A bootloadHID
# ATmega328P USBasp # ATmega328P USBasp
BOOTLOADER = atmel-dfu BOOTLOADER = caterina
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable
+1
View File
@@ -3,6 +3,7 @@ from . import config_h
from . import dfu_header from . import dfu_header
from . import docs from . import docs
from . import info_json from . import info_json
from . import keyboard_h
from . import layouts from . import layouts
from . import rgb_breathe_table from . import rgb_breathe_table
from . import rules_mk from . import rules_mk
+60
View File
@@ -0,0 +1,60 @@
"""Used by the make system to generate keyboard.h from info.json.
"""
from milc import cli
from qmk.decorators import automagic_keyboard, automagic_keymap
from qmk.info import info_json
from qmk.keyboard import keyboard_completer, keyboard_folder
from qmk.path import normpath
def would_populate_layout_h(keyboard):
"""Detect if a given keyboard is doing data driven layouts
"""
# Build the info.json file
kb_info_json = info_json(keyboard)
for layout_name in kb_info_json['layouts']:
if kb_info_json['layouts'][layout_name]['c_macro']:
continue
if 'matrix' not in kb_info_json['layouts'][layout_name]['layout'][0]:
cli.log.debug('%s/%s: No matrix data!', keyboard, layout_name)
continue
return True
return False
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate keyboard.h for.')
@cli.subcommand('Used by the make system to generate keyboard.h from info.json', hidden=True)
@automagic_keyboard
@automagic_keymap
def generate_keyboard_h(cli):
"""Generates the keyboard.h file.
"""
has_layout_h = would_populate_layout_h(cli.config.generate_keyboard_h.keyboard)
# Build the layouts.h file.
keyboard_h_lines = ['/* This file was generated by `qmk generate-keyboard-h`. Do not edit or copy.' ' */', '', '#pragma once', '#include "quantum.h"']
if not has_layout_h:
keyboard_h_lines.append('#pragma error("<keyboard>.h is only optional for data driven keyboards - kb.h == bad times")')
# Show the results
keyboard_h = '\n'.join(keyboard_h_lines) + '\n'
if cli.args.output:
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
if cli.args.output.exists():
cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
cli.args.output.write_text(keyboard_h)
if not cli.args.quiet:
cli.log.info('Wrote keyboard_h to %s.', cli.args.output)
else:
print(keyboard_h)
+1
View File
@@ -1 +1,2 @@
from . import keyboard
from . import keymap from . import keymap
+11
View File
@@ -0,0 +1,11 @@
"""This script automates the creation of keyboards.
"""
from milc import cli
@cli.subcommand('Creates a new keyboard')
def new_keyboard(cli):
"""Creates a new keyboard
"""
# TODO: replace this bodge to the existing script
cli.run(['util/new_keyboard.sh'], capture_output=False)
+3 -1
View File
@@ -160,6 +160,8 @@ define EXEC_AVRDUDE
list_devices() { \ list_devices() { \
if $(GREP) -q -s icrosoft /proc/version; then \ if $(GREP) -q -s icrosoft /proc/version; then \
wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \
elif [ "`uname`" = "FreeBSD" ]; then \
ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \
else \ else \
ls /dev/tty*; \ ls /dev/tty*; \
fi; \ fi; \
@@ -169,7 +171,7 @@ define EXEC_AVRDUDE
TMP1=`mktemp`; \ TMP1=`mktemp`; \
TMP2=`mktemp`; \ TMP2=`mktemp`; \
list_devices > $$TMP1; \ list_devices > $$TMP1; \
while [ -z $$USB ]; do \ while [ -z "$$USB" ]; do \
sleep 0.5; \ sleep 0.5; \
printf "."; \ printf "."; \
list_devices > $$TMP2; \ list_devices > $$TMP2; \
+20 -3
View File
@@ -80,7 +80,21 @@ enum consumer_usages {
AL_ASSISTANT = 0x1CB, AL_ASSISTANT = 0x1CB,
AL_KEYBOARD_LAYOUT = 0x1AE, AL_KEYBOARD_LAYOUT = 0x1AE,
// 15.16 Generic GUI Application Controls // 15.16 Generic GUI Application Controls
AC_NEW = 0x201,
AC_OPEN = 0x202,
AC_CLOSE = 0x203,
AC_EXIT = 0x204,
AC_MAXIMIZE = 0x205,
AC_MINIMIZE = 0x206, AC_MINIMIZE = 0x206,
AC_SAVE = 0x207,
AC_PRINT = 0x208,
AC_PROPERTIES = 0x209,
AC_UNDO = 0x21A,
AC_COPY = 0x21B,
AC_CUT = 0x21C,
AC_PASTE = 0x21D,
AC_SELECT_ALL = 0x21E,
AC_FIND = 0x21F,
AC_SEARCH = 0x221, AC_SEARCH = 0x221,
AC_HOME = 0x223, AC_HOME = 0x223,
AC_BACK = 0x224, AC_BACK = 0x224,
@@ -96,9 +110,12 @@ enum consumer_usages {
*/ */
enum desktop_usages { enum desktop_usages {
// 4.5.1 System Controls - Power Controls // 4.5.1 System Controls - Power Controls
SYSTEM_POWER_DOWN = 0x81, SYSTEM_POWER_DOWN = 0x81,
SYSTEM_SLEEP = 0x82, SYSTEM_SLEEP = 0x82,
SYSTEM_WAKE_UP = 0x83 SYSTEM_WAKE_UP = 0x83,
SYSTEM_RESTART = 0x8F,
// 4.10 System Display Controls
SYSTEM_DISPLAY_TOGGLE_INT_EXT = 0xB5
}; };
// clang-format on // clang-format on
+4 -4
View File
@@ -25,7 +25,7 @@ Some frequently used Git commands.
| [`G_FTCH`](./noroadsleft.c#L43-L52) | `git fetch upstream ` | `git pull upstream ` | | [`G_FTCH`](./noroadsleft.c#L43-L52) | `git fetch upstream ` | `git pull upstream ` |
| [`G_BRCH`](./noroadsleft.c#L53-L62) | `master` | `$(git branch-name)` | | [`G_BRCH`](./noroadsleft.c#L53-L62) | `master` | `$(git branch-name)` |
`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally return the name of the current branch. `$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally returns the name of the current branch.
### "Macro Mode" Macros and Customized Keycodes ### "Macro Mode" Macros and Customized Keycodes
@@ -76,6 +76,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
## Footnotes ## Footnotes
- 1: [^](#macro-mode-macros-and-customized-keycodes) The `M_MDSWP` keycode is used in my keymaps in the following locations: - 1: [^](#macro-mode-macros-and-customized-keycodes) The `M_MDSWP` keycode is used in my keymaps in the following locations:
- [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L206) - [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L111)
- [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L102) - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L93)
- [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L67) - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L66)