Skip to content

Commit

Permalink
[Keyboard] Add Winry315 keyboard (qmk#15894)
Browse files Browse the repository at this point in the history
  • Loading branch information
sigprof committed Mar 8, 2022
1 parent 86966fc commit 249bc3a
Show file tree
Hide file tree
Showing 16 changed files with 995 additions and 0 deletions.
138 changes: 138 additions & 0 deletions keyboards/winry/winry315/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
// Copyright 2022 Sergey Vlasov (@sigprof)
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include "config_common.h"

// Key matrix size.
#define MATRIX_ROWS 1
#define MATRIX_COLS 24

// Key pins (including encoder press switches).
// The NO_PIN entries are reserved for encoder rotation mappings.
#define DIRECT_PINS \
{ \
{ F4, C7, D4, D5, D1, F5, C6, D6, D3, D2, F6, B6, D7, B4, B5, B2, D0, E6, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } \
}

// clang-format off

// Encoder pins.
// Encoder numbering (assuming the default board orientation with encoders on
// the top side):
// 0 - left
// 1 - center (with a longer shaft and a larger knob)
// 2 - right
#define ENCODERS_PAD_A { F1, B0, B3 }
#define ENCODERS_PAD_B { F0, B1, B7 }
#define ENCODER_RESOLUTION 4

// Encoder mappings (used for VIA).
#define ENCODERS 3
#define ENCODERS_CW_KEY { { 22, 0 }, { 18, 0 }, { 20, 0 } }
#define ENCODERS_CCW_KEY { { 23, 0 }, { 19, 0 }, { 21, 0 } }

// clang-format on

// RGB LED parameters.
// This PCB uses a single chain of WS2812-compatible addressable RGB LEDs for
// per-key backlight and underglow.
#define RGB_DI_PIN F7
#define RGBLED_NUM 27
#define RGBLIGHT_LIMIT_VAL 150

// RGB Lighting configuration. This mode is used by the vendor firmware, and
// can be chosen if the full RGB Matrix support is not desired for some reason.
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_SLEEP
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
# define RGBLIGHT_EFFECT_SNAKE
# define RGBLIGHT_EFFECT_KNIGHT
# define RGBLIGHT_EFFECT_CHRISTMAS
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
# define RGBLIGHT_EFFECT_RGB_TEST
# define RGBLIGHT_EFFECT_ALTERNATING
#endif

// RGB Matrix configuration.
#ifdef RGB_MATRIX_ENABLE
# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS RGBLIGHT_LIMIT_VAL

# define RGB_MATRIX_CENTER \
{ 35, 35 }

# define RGB_DISABLE_WHEN_USB_SUSPENDED

// This option is required for the TYPING_HEATMAP and DIGITAL_RAIN effects,
// both of which are disabled below, so the common support for those effects is
// disabled too.
# undef RGB_MATRIX_FRAMEBUFFER_EFFECTS

// This option is required for reactive effects; disabling this option will
// implicitly disable all of them.
# define RGB_MATRIX_KEYPRESSES

# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BREATHING
# define ENABLE_RGB_MATRIX_BAND_SAT
# define ENABLE_RGB_MATRIX_BAND_VAL
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_ALL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# define ENABLE_RGB_MATRIX_RAINDROPS
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
# define ENABLE_RGB_MATRIX_HUE_WAVE
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
// different from the physical layout; it also has problems when underglow
// LEDs are present, or when multiple LEDs are associated with the same key.
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL

// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
// is defined. Both of these effects currently don't work properly when the
// key matrix does not match the physical layout, so they are disabled.
# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN

// Reactive effects; can be enabled only if at least one of
// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_MULTISPLASH
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

#endif

// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed.
#define DEBOUNCE 5
104 changes: 104 additions & 0 deletions keyboards/winry/winry315/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"manufacturer": "Winry",
"keyboard_name": "Winry315",
"maintainer": "sigprof",
"url": "",
"usb": {
"device_version": "0.0.1",
"pid": "0x0315",
"vid": "0xF1F1"
},
"layout_aliases": {
"LAYOUT_all": "LAYOUT_top"
},
"layouts": {
"LAYOUT_top": {
"layout": [
{ "label": "E0", "x": 0.5, "y": 0.25 },
{ "label": "E1", "x": 1.75, "y": 0, "h": 1.5, "w": 1.5 },
{ "label": "E2", "x": 3.5, "y": 0.25 },
{ "label": "0", "x": 0, "y": 1.75 },
{ "label": "1", "x": 1, "y": 1.75 },
{ "label": "2", "x": 2, "y": 1.75 },
{ "label": "3", "x": 3, "y": 1.75 },
{ "label": "4", "x": 4, "y": 1.75 },
{ "label": "5", "x": 0, "y": 2.75 },
{ "label": "6", "x": 1, "y": 2.75 },
{ "label": "7", "x": 2, "y": 2.75 },
{ "label": "8", "x": 3, "y": 2.75 },
{ "label": "9", "x": 4, "y": 2.75 },
{ "label": "10", "x": 0, "y": 3.75 },
{ "label": "11", "x": 1, "y": 3.75 },
{ "label": "12", "x": 2, "y": 3.75 },
{ "label": "13", "x": 3, "y": 3.75 },
{ "label": "14", "x": 4, "y": 3.75 }
]
},
"LAYOUT_left": {
"layout": [
{ "label": "E2", "x": 0.25, "y": 0.5 },
{ "label": "4", "x": 1.75, "y": 0 },
{ "label": "9", "x": 2.75, "y": 0 },
{ "label": "14", "x": 3.75, "y": 0 },
{ "label": "3", "x": 1.75, "y": 1 },
{ "label": "8", "x": 2.75, "y": 1 },
{ "label": "13", "x": 3.75, "y": 1 },
{ "label": "E1", "x": 0, "y": 1.75, "h": 1.5, "w": 1.5 },
{ "label": "2", "x": 1.75, "y": 2 },
{ "label": "7", "x": 2.75, "y": 2 },
{ "label": "12", "x": 3.75, "y": 2 },
{ "label": "1", "x": 1.75, "y": 3 },
{ "label": "6", "x": 2.75, "y": 3 },
{ "label": "11", "x": 3.75, "y": 3 },
{ "label": "E0", "x": 0.25, "y": 3.5 },
{ "label": "0", "x": 1.75, "y": 4 },
{ "label": "5", "x": 2.75, "y": 4 },
{ "label": "10", "x": 3.75, "y": 4 }
]
},
"LAYOUT_right": {
"layout": [
{ "label": "10", "x": 0, "y": 0 },
{ "label": "5", "x": 1, "y": 0 },
{ "label": "0", "x": 2, "y": 0 },
{ "label": "E0", "x": 3.5, "y": 0.5 },
{ "label": "11", "x": 0, "y": 1 },
{ "label": "6", "x": 1, "y": 1 },
{ "label": "1", "x": 2, "y": 1 },
{ "label": "12", "x": 0, "y": 2 },
{ "label": "7", "x": 1, "y": 2 },
{ "label": "2", "x": 2, "y": 2 },
{ "label": "E1", "x": 3.25, "y": 1.75, "h": 1.5, "w": 1.5 },
{ "label": "13", "x": 0, "y": 3 },
{ "label": "8", "x": 1, "y": 3 },
{ "label": "3", "x": 2, "y": 3 },
{ "label": "14", "x": 0, "y": 4 },
{ "label": "9", "x": 1, "y": 4 },
{ "label": "4", "x": 2, "y": 4 },
{ "label": "E2", "x": 3.5, "y": 3.5 }
]
},
"LAYOUT_bottom": {
"layout": [
{ "label": "14", "x": 0, "y": 0 },
{ "label": "13", "x": 1, "y": 0 },
{ "label": "12", "x": 2, "y": 0 },
{ "label": "11", "x": 3, "y": 0 },
{ "label": "10", "x": 4, "y": 0 },
{ "label": "9", "x": 0, "y": 1 },
{ "label": "8", "x": 1, "y": 1 },
{ "label": "7", "x": 2, "y": 1 },
{ "label": "6", "x": 3, "y": 1 },
{ "label": "5", "x": 4, "y": 1 },
{ "label": "4", "x": 0, "y": 2 },
{ "label": "3", "x": 1, "y": 2 },
{ "label": "2", "x": 2, "y": 2 },
{ "label": "1", "x": 3, "y": 2 },
{ "label": "0", "x": 4, "y": 2 },
{ "label": "E2", "x": 0.5, "y": 3.5 },
{ "label": "E1", "x": 1.75, "y": 3.25, "h": 1.5, "w": 1.5 },
{ "label": "E0", "x": 3.5, "y": 3.5 }
]
}
}
}
79 changes: 79 additions & 0 deletions keyboards/winry/winry315/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright 2022 Sergey Vlasov (@sigprof)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_RGB,
};

// Shorter defines for some QMK keycodes (to keep the keymap aligned)
#define U_LTESC LT(_RGB, KC_ESC)

// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Base
[_BASE] = LAYOUT_top(
KC_HOME, KC_MUTE, KC_MPLY,
KC_1, KC_2, KC_3, KC_4, KC_5,
KC_6, KC_7, KC_8, KC_9, KC_0,
U_LTESC, KC_TAB, KC_SPC, KC_BSPC, KC_ENT
),

// RGB configuration
[_RGB] = LAYOUT_top(
RGB_M_P, RGB_M_B, RGB_M_R,
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI,
RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,
KC_TRNS, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_R
),
};
// clang-format on

bool encoder_update_user(uint8_t index, bool clockwise) {
uint8_t layer = get_highest_layer(layer_state | default_layer_state);

switch (index) {
case 0:
// Left encoder
if (layer == _RGB) {
if (clockwise) {
rgblight_increase_hue();
} else {
rgblight_decrease_hue();
}
} else {
tap_code(clockwise ? KC_PGDN : KC_PGUP);
}
break;

case 1:
// Center encoder
if (layer == _RGB) {
if (clockwise) {
rgblight_increase_sat();
} else {
rgblight_decrease_sat();
}
} else {
tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10);
}
break;

case 2:
// Right encoder
if (layer == _RGB) {
if (clockwise) {
rgblight_increase_val();
} else {
rgblight_decrease_val();
}
} else {
tap_code_delay(clockwise ? KC_MNXT : KC_MPRV, 10);
}
break;
}
return false;
}
1 change: 1 addition & 0 deletions keyboards/winry/winry315/keymaps/default/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# The default keymap for Winry315
6 changes: 6 additions & 0 deletions keyboards/winry/winry315/keymaps/left_numpad/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright 2022 Sergey Vlasov (@sigprof)
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#define WINRY315_DEFAULT_ORIENTATION WINRY315_ORIENTATION_LEFT
Loading

0 comments on commit 249bc3a

Please sign in to comment.