Skip to content

Commit

Permalink
[Keyboard] Add Creator Pro by SergioPoverony (#13154)
Browse files Browse the repository at this point in the history
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
  • Loading branch information
3 people authored Jul 3, 2021
1 parent eea89cc commit ca4536e
Show file tree
Hide file tree
Showing 10 changed files with 439 additions and 0 deletions.
49 changes: 49 additions & 0 deletions keyboards/sergiopoverony/creator_pro/config.h
Original file line number Diff line number Diff line change
@@ -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

33 changes: 33 additions & 0 deletions keyboards/sergiopoverony/creator_pro/creator_pro.c
Original file line number Diff line number Diff line change
@@ -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);
}
33 changes: 33 additions & 0 deletions keyboards/sergiopoverony/creator_pro/creator_pro.h
Original file line number Diff line number Diff line change
@@ -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);

22 changes: 22 additions & 0 deletions keyboards/sergiopoverony/creator_pro/info.json
Original file line number Diff line number Diff line change
@@ -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}
]
}
}
}
123 changes: 123 additions & 0 deletions keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -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;
};
Original file line number Diff line number Diff line change
@@ -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.
123 changes: 123 additions & 0 deletions keyboards/sergiopoverony/creator_pro/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
@@ -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;
};
1 change: 1 addition & 0 deletions keyboards/sergiopoverony/creator_pro/keymaps/via/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VIA_ENABLE = yes
Loading

0 comments on commit ca4536e

Please sign in to comment.