[Keyboard] Add Creator Pro by SergioPoverony (#13154)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
This commit is contained in:
SergioPoverony 2021-07-03 12:55:39 +05:00 committed by GitHub
parent eea89cc636
commit ca4536e492
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 439 additions and 0 deletions

View File

@ -0,0 +1,49 @@
/* Copyright 2020-2021 SergioPoverony
*
* 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"
/* vid pid */
#define VENDOR_ID 0x8B1E
#define PRODUCT_ID 0x0C00
#define DEVICE_VER 0x0001
#define MANUFACTURER SergioPoverony
#define PRODUCT Creator Pro
/* key matrix size pins */
#define MATRIX_ROWS 1
#define MATRIX_COLS 9
#define DIRECT_PINS { \
{ D1, D4, C6, D7, \
E6, \
B2, B3, B1, F7 } \
}
/*led layout indication pins*/
#define RED_LED D0
#define BLUE_LED B5
#define GREEN_LED B6
/* encoder pins*/
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D3 }
#define ENCODER_RESOLUTION 1
#define UNUSED_PINS

View File

@ -0,0 +1,33 @@
/* Copyright 2020-2021 SergioPoverony
*
* 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 "creator_pro.h"
void matrix_init_kb(void) {
matrix_init_user();
/* led pins */
setPinOutput(RED_LED);
setPinOutput(BLUE_LED);
setPinOutput(GREEN_LED);
}
void turn_off_leds(void) {
writePinLow(RED_LED);
writePinLow(BLUE_LED);
writePinLow(GREEN_LED);
}
void turn_on_led(pin_t pin) {
writePinHigh(pin);
}

View File

@ -0,0 +1,33 @@
/* Copyright 2020-2021 SergioPoverony
*
* 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( \
K01, K02, K03, K04, \
K05, \
K06, K07, K08, K09 \
) { { \
K01, K02, K03, K04, \
K05, \
K06, K07, K08, K09 \
} }
/*led work*/
void turn_off_leds(void);
void turn_on_led(pin_t pin);

View File

@ -0,0 +1,22 @@
{
"keyboard_name": "Creator Pro",
"url": "https://github.com/sergiopoverony",
"maintainer": "SergioPoverony",
"width": 3,
"height": 3,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4.5, "y":0.5},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1}
]
}
}
}

View File

@ -0,0 +1,123 @@
/* Copyright 2020-2021 SergioPoverony
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
/* enum layers num */
enum layer_number {
_HOME = 0,
_RED,
_BLUE,
_GREEN
};
/* Encoder function with layers function */
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case _HOME:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case _RED:
if (clockwise) {
tap_code(KC_MS_WH_UP);
} else {
tap_code(KC_MS_WH_DOWN);
}
break;
case _BLUE:
if (clockwise) {
tap_code(KC_PGUP);
} else {
tap_code(KC_PGDN);
}
break;
case _GREEN:
default:
if (clockwise) {
tap_code16(KC_LEFT);
} else {
tap_code16(KC_RIGHT);
}
break;
}
}
return true;
}
/* Layout */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_HOME] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_RED),
KC_5, KC_6, KC_7, KC_8
),
[_RED] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R,
TO(_BLUE),
KC_A, KC_S, KC_D, KC_F
),
[_BLUE] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_GREEN),
KC_5, KC_6, KC_7, KC_8
),
[_GREEN] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_HOME),
KC_5, KC_6, KC_7, KC_8
),
};
/* Select led layout */
layer_state_t layer_state_set_user(layer_state_t state)
{
turn_off_leds();
switch (get_highest_layer(state))
{
case _HOME:
turn_on_led(RED_LED);
turn_on_led(BLUE_LED);
break;
case _RED:
turn_on_led(RED_LED);
break;
case _BLUE:
turn_on_led(BLUE_LED);
break;
case _GREEN:
turn_on_led(GREEN_LED);
break;
}
return state;
};

View File

@ -0,0 +1,5 @@
![Creator Pro Layout](https://i.imgur.com/0PmpLcM.png)
# Default Creator Pro Layout
This is the default layout that comes flashed on every Creator Pro. The right most key (Encoder) is the rotary and the key is binded to layer switching.

View File

@ -0,0 +1,123 @@
/* Copyright 2020-2021 SergioPoverony
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
/* enum layers num */
enum layer_number {
_HOME = 0,
_RED,
_BLUE,
_GREEN
};
/* Encoder function with layers function */
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case _HOME:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case _RED:
if (clockwise) {
tap_code(KC_MS_WH_UP);
} else {
tap_code(KC_MS_WH_DOWN);
}
break;
case _BLUE:
if (clockwise) {
tap_code(KC_PGUP);
} else {
tap_code(KC_PGDN);
}
break;
case _GREEN:
default:
if (clockwise) {
tap_code16(KC_LEFT);
} else {
tap_code16(KC_RIGHT);
}
break;
}
}
return true;
}
/* Layout */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_HOME] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_RED),
KC_5, KC_6, KC_7, KC_8
),
[_RED] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R,
TO(_BLUE),
KC_A, KC_S, KC_D, KC_F
),
[_BLUE] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_GREEN),
KC_5, KC_6, KC_7, KC_8
),
[_GREEN] = LAYOUT(
KC_1, KC_2, KC_3, KC_4,
TO(_HOME),
KC_5, KC_6, KC_7, KC_8
),
};
/* Select led layout */
layer_state_t layer_state_set_user(layer_state_t state)
{
turn_off_leds();
switch (get_highest_layer(state))
{
case _HOME:
turn_on_led(RED_LED);
turn_on_led(BLUE_LED);
break;
case _RED:
turn_on_led(RED_LED);
break;
case _BLUE:
turn_on_led(BLUE_LED);
break;
case _GREEN:
turn_on_led(GREEN_LED);
break;
}
return state;
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@ -0,0 +1,27 @@
# Creator Pro
![Creator Pro Layout](https://i.imgur.com/G3Yf20D.jpg)
This Keypad has 1 rows x 9 columns of keys. It has the top/default layer that
has a few 1-8 keys as well as one dedicated encoder key for change layer. The
second layer has QWERASDF keys. Encoder have 4 function on any layer is
Volume Control, Mouse Wheel, PageUp/PageDn, Left/Righ buttons.
The keypad also includes three RGB LEDs that show active layer.
For enter the bootloader to flash new firmware need press hw reset button hole on the bottom
Keyboard Maintainer: [SergioPoverony](https://github.com/sergiopoverony)
Hardware:
* For enter the bootloader to flash new firmware need press hw reset button hole on the bottom
* Key switch holes cut fabrication in blank PCB
* Uses Gateron Brown switches with gray keycaps XDA profile
* Chassis is PCB with supports
* PCB fabrication
* Uses a Pro Micro wint MicroUSB connector
* Includes a reset switch accessible by a hole on the bottom
Make example for this keyboard (after setting up your build environment):
make sergiopoverony/creator_pro:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,23 @@
# 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 = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes