@ -0,0 +1,14 @@ | |||
/* | |||
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 "cb65.h" |
@ -0,0 +1,35 @@ | |||
/* | |||
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_all( \ | |||
K000, K001, K002, K003, K004, K005, K006, K007, K100, K101, K102, K103, K104, K105, K106, K107, \ | |||
K200, K201, K202, K203, K204, K205, K206, K207, K300, K301, K302, K303, K304, K305, K306, \ | |||
K307, K400, K401, K402, K403, K404, K405, K406, K407, K500, K501, K502, K503, K504, K505, \ | |||
K506, K507, K600, K601, K602, K603, K604, K605, K606, K607, K700, K701, K702, K703, K704, \ | |||
K705, K706, K707, K800, K801, K802, K803, K804, K805 \ | |||
) { \ | |||
{ K000, K001, K002, K003, K004, K005, K006, K007 }, \ | |||
{ K100, K101, K102, K103, K104, K105, K106, K107 }, \ | |||
{ K200, K201, K202, K203, K204, K205, K206, K207 }, \ | |||
{ K300, K301, K302, K303, K304, K305, K306, K307 }, \ | |||
{ K400, K401, K402, K403, K404, K405, K406, K407 }, \ | |||
{ K500, K501, K502, K503, K504, K505, K506, K507 }, \ | |||
{ K600, K601, K602, K603, K604, K605, K606, K607 }, \ | |||
{ K700, K701, K702, K703, K704, K705, K706, K707 }, \ | |||
{ K800, K801, K802, K803, K804, K805 } \ | |||
} | |||
@ -0,0 +1,68 @@ | |||
/* | |||
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" | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 9 | |||
#define MATRIX_COLS 8 | |||
/* | |||
* 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) | |||
* | |||
* 0 1 2 3 4 5 6 7 8 | |||
*/ | |||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 } | |||
#define MATRIX_COL_PINS { D5, D4, D6, D7, F7, B5, B6, C6 } | |||
/* Encoder configuration */ | |||
//#define ENCODERS_PAD_A { F5 } | |||
//#define ENCODERS_PAD_B { F6 } | |||
//#define ENCODER_RESOLUTION 4 | |||
/* COL2ROW, ROW2COL*/ | |||
#define DIODE_DIRECTION COL2ROW | |||
#define LED_CAPS_LOCK_PIN F1 | |||
#define LED_SCROLL_LOCK_PIN F4 | |||
#define LED_PIN_ON_STATE 0 | |||
/* Set 0 if debouncing isn't needed */ | |||
#define DEBOUNCE 5 | |||
/* RGB Lighting */ | |||
#define RGB_DI_PIN F0 | |||
#ifdef RGB_DI_PIN | |||
#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 | |||
#define RGBLIGHT_EFFECT_TWINKLE | |||
#define RGBLED_NUM 24 | |||
#define RGBLIGHT_HUE_STEP 8 | |||
#define RGBLIGHT_SAT_STEP 8 | |||
#define RGBLIGHT_VAL_STEP 8 | |||
#endif |
@ -0,0 +1,87 @@ | |||
{ | |||
"keyboard_name": "CherryB CB65", | |||
"manufacturer": "CherryB Works", | |||
"url": "https://discord.gg/qVwv3gcq83", | |||
"maintainer": "lunaticwhat", | |||
"usb": { | |||
"vid": "0x4342", | |||
"pid": "0x6565", | |||
"device_version": "0.0.1" | |||
}, | |||
"layouts": { | |||
"LAYOUT_all": { | |||
"layout": [ | |||
{"x":0, "y":0}, | |||
{"x":1, "y":0}, | |||
{"x":2, "y":0}, | |||
{"x":3, "y":0}, | |||
{"x":4, "y":0}, | |||
{"x":5, "y":0}, | |||
{"x":6, "y":0}, | |||
{"x":7, "y":0}, | |||
{"x":8, "y":0}, | |||
{"x":9, "y":0}, | |||
{"x":10, "y":0}, | |||
{"x":11, "y":0}, | |||
{"x":12, "y":0}, | |||
{"x":13, "y":0}, | |||
{"x":14, "y":0}, | |||
{"x":15, "y":0}, | |||
{"x":0, "y":1, "w":1.5}, | |||
{"x":1.5, "y":1}, | |||
{"x":2.5, "y":1}, | |||
{"x":3.5, "y":1}, | |||
{"x":4.5, "y":1}, | |||
{"x":5.5, "y":1}, | |||
{"x":6.5, "y":1}, | |||
{"x":7.5, "y":1}, | |||
{"x":8.5, "y":1}, | |||
{"x":9.5, "y":1}, | |||
{"x":10.5, "y":1}, | |||
{"x":11.5, "y":1}, | |||
{"x":12.5, "y":1}, | |||
{"x":13.5, "y":1, "w":1.5}, | |||
{"x":15, "y":1}, | |||
{"x":0, "y":2, "w":1.75}, | |||
{"x":1.75, "y":2}, | |||
{"x":2.75, "y":2}, | |||
{"x":3.75, "y":2}, | |||
{"x":4.75, "y":2}, | |||
{"x":5.75, "y":2}, | |||
{"x":6.75, "y":2}, | |||
{"x":7.75, "y":2}, | |||
{"x":8.75, "y":2}, | |||
{"x":9.75, "y":2}, | |||
{"x":10.75, "y":2}, | |||
{"x":11.75, "y":2}, | |||
{"x":12.75, "y":2}, | |||
{"x":13.75, "y":2, "w":1.25}, | |||
{"x":15, "y":2}, | |||
{"x":0, "y":3, "w":1.25}, | |||
{"x":1.25, "y":3}, | |||
{"x":2.25, "y":3}, | |||
{"x":3.25, "y":3}, | |||
{"x":4.25, "y":3}, | |||
{"x":5.25, "y":3}, | |||
{"x":6.25, "y":3}, | |||
{"x":7.25, "y":3}, | |||
{"x":8.25, "y":3}, | |||
{"x":9.25, "y":3}, | |||
{"x":10.25, "y":3}, | |||
{"x":11.25, "y":3}, | |||
{"x":12.25, "y":3, "w":1.75}, | |||
{"x":14, "y":3}, | |||
{"x":15, "y":3}, | |||
{"x":0, "y":4, "w":1.25}, | |||
{"x":1.25, "y":4, "w":1.25}, | |||
{"x":2.5, "y":4, "w":1.25}, | |||
{"x":3.75, "y":4, "w":6.25}, | |||
{"x":10, "y":4, "w":1.25}, | |||
{"x":11.25, "y":4, "w":1.25}, | |||
{"x":13, "y":4}, | |||
{"x":14, "y":4}, | |||
{"x":15, "y":4} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,32 @@ | |||
/* | |||
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_all( | |||
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_BSPC, QK_BOOT, | |||
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, | |||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[1] = LAYOUT_all( | |||
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_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_PGDN, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT | |||
), | |||
}; |
@ -0,0 +1 @@ | |||
# The default keymap for CB65 |
@ -0,0 +1,49 @@ | |||
/* | |||
Copyright 2020 Tybera | |||
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_all( | |||
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_BSPC, QK_BOOT, | |||
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, | |||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[1] = LAYOUT_all( | |||
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_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_PGDN, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT | |||
), | |||
[2] = LAYOUT_all( | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS | |||
), | |||
[3] = LAYOUT_all( | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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,2 @@ | |||
LTO_ENABLE = yes | |||
VIA_ENABLE = yes |
@ -0,0 +1,26 @@ | |||
# CherryB Works CB65 | |||
![CB65](https://i.imgur.com/3qopFIWh.jpg) | |||
An universal 65 percents PCB for many keyboard with USB daughterboard | |||
Board has a rotary encoder but disabled for VIA support. | |||
* Keyboard Maintainer: lunaticwhat | |||
* Hardware Supported: CB65, atmega32u4 | |||
* Hardware Availability: [CherryB Studio](https://discord.gg/qVwv3gcq83) | |||
Make example for this keyboard (after setting up your build environment): | |||
make cherrybstudio/cb65:default | |||
Flashing example for this keyboard: | |||
make cherrybstudio/cb65:default:flash | |||
## Accessing Bootloader Mode | |||
To access Bootloader Mode, do one of the following: | |||
* Hold the top left key of the keyboard while connecting the USB cable | |||
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,19 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = atmel-dfu | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||
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 | |||
NKRO_ENABLE = yes # Enable N-Key Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output | |||
ENCODER_ENABLE = no # Encoder support |
@ -0,0 +1,104 @@ | |||
/* | |||
Copyright 2021 Salicylic_Acid | |||
Copyright 2021 3araht | |||
Copyright 2022 jun10000 | |||
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" | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 10 | |||
#define MATRIX_COLS 8 | |||
// wiring of each half | |||
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 } | |||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 } | |||
/* 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 | |||
/* ws2812 RGB LED */ | |||
#define RGB_DI_PIN D3 | |||
#ifndef RGBLED_NUM | |||
#define RGBLED_NUM 69 | |||
#define RGBLIGHT_LED_MAP { \ | |||
0, 1, 2, 3, \ | |||
8, 7, 6, 5, 4, \ | |||
9,10,11,12,13, \ | |||
18,17,16,15,14, \ | |||
19,20,21,22,23, \ | |||
28,27,26,25,24, \ | |||
29,30,31,32,33, \ | |||
38,37,36,35,34, \ | |||
39,40,41,42,43, \ | |||
48,47,46,45,44, \ | |||
49,50,51,52,53, \ | |||
58,57,56,55,54, \ | |||
59,60,61,62,63, \ | |||
68,67,66,65,64 \ | |||
} | |||
#define RGBLIGHT_SLEEP | |||
#endif | |||
#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 | |||
#define RGBLIGHT_EFFECT_TWINKLE | |||
#ifndef IOS_DEVICE_ENABLE | |||
#define RGBLIGHT_LIMIT_VAL 90 | |||
#define RGBLIGHT_VAL_STEP 17 | |||
#else | |||
#define RGBLIGHT_LIMIT_VAL 30 | |||
#define RGBLIGHT_VAL_STEP 4 | |||
#endif | |||
#define RGBLIGHT_HUE_STEP 10 | |||
#define RGBLIGHT_SAT_STEP 17 | |||
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) | |||
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard | |||
// 120 RGBoff, OLEDoff | |||
// 120 OLED | |||
// 330 RGB 6 | |||
// 300 RGB 32 | |||
// 310 OLED & RGB 32 | |||
#define USB_MAX_POWER_CONSUMPTION 400 | |||
#else | |||
// fix iPhone and iPad power adapter issue | |||
// iOS device need lessthan 100 | |||
#define USB_MAX_POWER_CONSUMPTION 100 | |||
#endif | |||
#define TAP_CODE_DELAY 10 | |||
#define ENCODERS_PAD_A { B4 } | |||
#define ENCODERS_PAD_B { B5 } |
@ -0,0 +1,16 @@ | |||
{ | |||
"keyboard_name": "OM60", | |||
"manufacturer": "jun10000", | |||
"url": "https://github.com/jun10000", | |||
"maintainer": "jun10000", | |||
"usb": { | |||
"vid": "0x6A6E", | |||
"pid": "0x0001", | |||
"device_version": "1.0.0" | |||
}, | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"4,0", "x":1.5, "y":0}, {"label":"4,1", "x":2.5, "y":0}, {"label":"4,2", "x":3.5, "y":0}, {"label":"4,3", "x":4.5, "y":0}, {"label":"4,4", "x":5.5, "y":0}, {"label":"4,5", "x":6.5, "y":0}, {"label":"4,6", "x":7.5, "y":0}, {"label":"4,7", "x":8.5, "y":0}, {"label":"9,0", "x":9.5, "y":0}, {"label":"9,1", "x":10.5, "y":0}, {"label":"9,2", "x":11.5, "y":0}, {"label":"9,3", "x":12.5, "y":0}, {"label":"9,4", "x":13.5, "y":0}, {"label":"0,1", "x":1.5, "y":1}, {"label":"0,2", "x":2.5, "y":1}, {"label":"0,3", "x":3.5, "y":1}, {"label":"0,4", "x":4.5, "y":1}, {"label":"0,5", "x":5.5, "y":1}, {"label":"0,6", "x":6.5, "y":1}, {"label":"0,7", "x":7.5, "y":1}, {"label":"5,0", "x":8.5, "y":1}, {"label":"5,1", "x":9.5, "y":1}, {"label":"5,2", "x":10.5, "y":1}, {"label":"5,3", "x":11.5, "y":1}, {"label":"5,4", "x":12.5, "y":1}, {"label":"5,5", "x":13.5, "y":1}, {"label":"1,0", "x":0, "y":2}, {"label":"1,1", "x":1.5, "y":2}, {"label":"1,2", "x":2.5, "y":2}, {"label":"1,3", "x":3.5, "y":2}, {"label":"1,4", "x":4.5, "y":2}, {"label":"1,5", "x":5.5, "y":2}, {"label":"1,6", "x":6.5, "y":2}, {"label":"1,7", "x":7.5, "y":2}, {"label":"6,0", "x":8.5, "y":2}, {"label":"6,1", "x":9.5, "y":2}, {"label":"6,2", "x":10.5, "y":2}, {"label":"6,3", "x":11.5, "y":2}, {"label":"6,4", "x":12.5, "y":2}, {"label":"6,5", "x":13.5, "y":2}, {"label":"2,0", "x":0, "y":3}, {"label":"2,1", "x":1.5, "y":3}, {"label":"2,2", "x":2.5, "y":3}, {"label":"2,3", "x":3.5, "y":3}, {"label":"2,4", "x":4.5, "y":3}, {"label":"2,5", "x":5.5, "y":3}, {"label":"2,6", "x":6.5, "y":3}, {"label":"2,7", "x":7.5, "y":3}, {"label":"7,0", "x":8.5, "y":3}, {"label":"7,1", "x":9.5, "y":3}, {"label":"7,2", "x":10.5, "y":3}, {"label":"7,3", "x":11.5, "y":3}, {"label":"7,4", "x":12.5, "y":3}, {"label":"7,5", "x":13.5, "y":3}, {"label":"3,0", "x":0, "y":4}, {"label":"3,1", "x":1.5, "y":4}, {"label":"3,2", "x":2.5, "y":4}, {"label":"3,3", "x":3.5, "y":4}, {"label":"3,4", "x":4.5, "y":4}, {"label":"3,5", "x":5.5, "y":4}, {"label":"3,6", "x":6.5, "y":4}, {"label":"3,7", "x":7.5, "y":4}, {"label":"8,0", "x":8.5, "y":4}, {"label":"8,1", "x":9.5, "y":4}, {"label":"8,2", "x":10.5, "y":4}, {"label":"8,3", "x":11.5, "y":4}, {"label":"8,4", "x":12.5, "y":4}, {"label":"8,5", "x":13.5, "y":4}] | |||
} | |||
} | |||
} |
@ -0,0 +1,70 @@ | |||
/* | |||
Copyright 2021 Salicylic_Acid | |||
Copyright 2021 3araht | |||
Copyright 2022 jun10000 | |||
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 | |||
#if defined(ENCODER_MAP_ENABLE) | |||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { | |||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, | |||
[1] = { ENCODER_CCW_CW(_______, _______) }, | |||
[2] = { ENCODER_CCW_CW(_______, _______) }, | |||
}; | |||
#endif | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[0] = LAYOUT( | |||
//,-----------------------------------------------------------------------------------------------------------------------------. | |||
KC_MUTE, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
), | |||
[1] = 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
), | |||
[2] = LAYOUT( | |||
//,-----------------------------------------------------------------------------------------------------------------------------. | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
_______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
) | |||
}; |
@ -0,0 +1,2 @@ | |||
LTO_ENABLE = yes | |||
ENCODER_MAP_ENABLE = yes |
@ -0,0 +1,84 @@ | |||
/* | |||
Copyright 2021 Salicylic_Acid | |||
Copyright 2021 3araht | |||
Copyright 2022 jun10000 | |||
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 | |||
#if defined(ENCODER_MAP_ENABLE) | |||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { | |||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, | |||
[1] = { ENCODER_CCW_CW(_______, _______) }, | |||
[2] = { ENCODER_CCW_CW(_______, _______) }, | |||
[3] = { ENCODER_CCW_CW(_______, _______) }, | |||
}; | |||
#endif | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[0] = LAYOUT( | |||
//,-----------------------------------------------------------------------------------------------------------------------------. | |||
KC_MUTE, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
), | |||
[1] = 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
), | |||
[2] = LAYOUT( | |||
//,-----------------------------------------------------------------------------------------------------------------------------. | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
_______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
), | |||
[3] = LAYOUT( | |||
//,-----------------------------------------------------------------------------------------------------------------------------. | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | |||
TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
//|-----------------------------------------------------------------------------------------------------------------------------' | |||
) | |||
}; |
@ -0,0 +1,3 @@ | |||
VIA_ENABLE = yes | |||
LTO_ENABLE = yes | |||
ENCODER_MAP_ENABLE = yes |
@ -0,0 +1,166 @@ | |||
/* | |||
Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar | |||
Copyright 2022 jun10000 | |||
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 "quantum.h" | |||
#if (MATRIX_COLS <= 8) | |||
# define ROW_SHIFTER ((uint8_t)1) | |||
#elif (MATRIX_COLS <= 16) | |||
# define ROW_SHIFTER ((uint16_t)1) | |||
#elif (MATRIX_COLS <= 32) | |||
# define ROW_SHIFTER ((uint32_t)1) | |||
#endif | |||
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; | |||
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; | |||
static void select_row(uint8_t row) | |||
{ | |||
setPinOutput(row_pins[row]); | |||
writePinLow(row_pins[row]); | |||
} | |||
static void unselect_row(uint8_t row) | |||
{ | |||
setPinInputHigh(row_pins[row]); | |||
} | |||
static void unselect_rows(void) | |||
{ | |||
for(uint8_t x = 0; x < MATRIX_ROWS; x++) { | |||
setPinInputHigh(row_pins[x]); | |||
} | |||
} | |||
static void select_col(uint8_t col) | |||
{ | |||
setPinOutput(col_pins[col]); | |||
writePinLow(col_pins[col]); | |||
} | |||
static void unselect_col(uint8_t col) | |||
{ | |||
setPinInputHigh(col_pins[col]); | |||
} | |||
static void unselect_cols(void) | |||
{ | |||
for(uint8_t x = 0; x < MATRIX_COLS; x++) { | |||
setPinInputHigh(col_pins[x]); | |||
} | |||
} | |||
static void init_pins(void) { | |||
unselect_rows(); | |||
unselect_cols(); | |||
for (uint8_t x = 0; x < MATRIX_COLS; x++) { | |||
setPinInputHigh(col_pins[x]); | |||
} | |||
for (uint8_t x = 0; x < MATRIX_ROWS; x++) { | |||
setPinInputHigh(row_pins[x]); | |||
} | |||
} | |||
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) | |||
{ | |||
// Store last value of row prior to reading | |||
matrix_row_t last_row_value = current_matrix[current_row]; | |||
// Clear data in matrix row | |||
current_matrix[current_row] = 0; | |||
// Select row and wait for row selecton to stabilize | |||
select_row(current_row); | |||
wait_us(30); | |||
// For each col... | |||
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { | |||
// Select the col pin to read (active low) | |||
uint8_t pin_state = readPin(col_pins[col_index]); | |||
// Populate the matrix row with the state of the col pin | |||
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); | |||
} | |||
// Unselect row | |||
unselect_row(current_row); | |||
return (last_row_value != current_matrix[current_row]); | |||
} | |||
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) | |||
{ | |||
bool matrix_changed = false; | |||
// Select col and wait for col selecton to stabilize | |||
select_col(current_col); | |||
wait_us(30); | |||
// For each row... | |||
for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++) | |||
{ | |||
uint8_t tmp = row_index + MATRIX_ROWS/2; | |||
// Store last value of row prior to reading | |||
matrix_row_t last_row_value = current_matrix[tmp]; | |||
// Check row pin state | |||
if (readPin(row_pins[row_index]) == 0) | |||
{ | |||
// Pin LO, set col bit | |||
current_matrix[tmp] |= (ROW_SHIFTER << current_col); | |||
} | |||
else | |||
{ | |||
// Pin HI, clear col bit | |||
current_matrix[tmp] &= ~(ROW_SHIFTER << current_col); | |||
} | |||
// Determine if the matrix changed state | |||
if ((last_row_value != current_matrix[tmp]) && !(matrix_changed)) | |||
{ | |||
matrix_changed = true; | |||
} | |||
} | |||
// Unselect col | |||
unselect_col(current_col); | |||
return matrix_changed; | |||
} | |||
void matrix_init_custom(void) { | |||
// initialize key pins | |||
init_pins(); | |||
} | |||
bool matrix_scan_custom(matrix_row_t current_matrix[]) | |||
{ | |||
bool changed = false; | |||
// Set row, read cols | |||
for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) { | |||
changed |= read_cols_on_row(current_matrix, current_row); | |||
} | |||
//else | |||
// Set col, read rows | |||
for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { | |||
changed |= read_rows_on_col(current_matrix, current_col); | |||
} | |||
return (uint8_t)changed; | |||
} |
@ -0,0 +1,19 @@ | |||
/* | |||
Copyright 2021 Salicylic_Acid | |||
Copyright 2022 jun10000 | |||
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 "om60.h" |
@ -0,0 +1,41 @@ | |||
/* | |||
Copyright 2021 Salicylic_Acid | |||
Copyright 2022 jun10000 | |||
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( \ | |||
L01, L05, L10, L15, L20, L25, L30, L35, L40, R45, R50, R55, R60, R65, \ | |||
L06, L11, L16, L21, L26, L31, L36, R41, R46, R51, R56, R61, R66, \ | |||
L02, L07, L12, L17, L22, L27, L32, L37, R42, R47, R52, R57, R62, R67, \ | |||
L03, L08, L13, L18, L23, L28, L33, L38, R43, R48, R53, R58, R63, R68, \ | |||
L04, L09, L14, L19, L24, L29, L34, L39, R44, R49, R54, R59, R64, R69 \ | |||
) \ | |||
{ \ | |||
{ L01, L06, L11, L16, L21, L26, L31, L36 }, \ | |||
{ L02, L07, L12, L17, L22, L27, L32, L37 }, \ | |||
{ L03, L08, L13, L18, L23, L28, L33, L38 }, \ | |||
{ L04, L09, L14, L19, L24, L29, L34, L39 }, \ | |||
{ L05, L10, L15, L20, L25, L30, L35, L40 }, \ | |||
{ R41, R46, R51, R56, R61, R66, KC_NO, KC_NO }, \ | |||
{ R42, R47, R52, R57, R62, R67, KC_NO, KC_NO }, \ | |||
{ R43, R48, R53, R58, R63, R68, KC_NO, KC_NO }, \ | |||
{ R44, R49, R54, R59, R64, R69, KC_NO, KC_NO }, \ | |||
{ R45, R50, R55, R60, R65, KC_NO, KC_NO, KC_NO } \ | |||
} |
@ -0,0 +1,27 @@ | |||
# OM60 | |||
![OM60](https://i.imgur.com/WoO8oezh.jpg) | |||
The 60% Poker compatible Ortholinear keyboard or jumbo Macropad. | |||
* Keyboard Maintainer: [jun10000](https://github.com/jun10000) | |||
* Hardware Supported: OM60 PCB, Pro Micro | |||
* Hardware Availability: [junsgamingstore.booth.pm](https://junsgamingstore.booth.pm/) | |||
Make example for this keyboard (after setting up your build environment): | |||
make om60:default | |||
Flashing example for this keyboard: | |||
make om60:default:flash | |||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | |||
## Bootloader | |||
Enter the bootloader in 3 ways: | |||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard | |||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead | |||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available |
@ -0,0 +1,24 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = caterina | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||
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 | |||
NKRO_ENABLE = no # Enable N-Key Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output | |||
ENCODER_ENABLE = yes | |||
CUSTOM_MATRIX = lite | |||
SRC += matrix.c |
@ -0,0 +1,498 @@ | |||
{ | |||
"manufacturer": "takashicompany", | |||
"keyboard_name": "GOAT51", | |||
"maintainer": "takashicompany", | |||
"development_board": "promicro", | |||
"diode_direction": "COL2ROW", | |||
"features": { | |||
"bootmagic": true, | |||
"command": false, | |||
"console": false, | |||
"extrakey": true, | |||
"mousekey": true, | |||
"nkro": true, | |||
"encoder": true, | |||
"rgblight": true | |||
}, | |||
"matrix_pins": { | |||
"cols": [ | |||
"D4", | |||
"C6", | |||
"D7", | |||
"E6", | |||
"B4", | |||
"B5", | |||
"D2" | |||
], | |||
"rows": [ | |||
"F4", | |||
"F5", | |||
"F6", | |||
"F7", | |||
"B1", | |||
"B3", | |||
"B2", | |||
"B6" | |||
] | |||
}, | |||
"encoder": { | |||
"rotary": [ | |||
{ "pin_a": "D1", "pin_b": "D0" } | |||
] | |||
}, | |||
"url": "https://github.com/takashicompany/goat51", | |||
"usb": { | |||
"device_version": "1.0.0", | |||
"pid": "0x0029", | |||
"vid": "0x7463" | |||
}, | |||
"rgblight": { | |||
"led_count": 11, | |||
"pin": "D3", | |||
"hue_steps": 10, | |||
"saturation_steps": 17, | |||
"brightness_steps": 17, | |||
"animations": { | |||
"alternating": true, | |||
"breathing": true, | |||
"christmas": true, | |||
"knight": true, | |||
"rainbow_mood": true, | |||
"rainbow_swirl": true, | |||
"rgb_test": true, | |||
"snake": true, | |||
"static_gradient": true, | |||
"twinkle": true | |||
} | |||
}, | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{ | |||
"matrix": [ | |||
0, | |||
0 | |||
], | |||
"x": 0, | |||
"y": 0.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
1 | |||
], | |||
"x": 1, | |||
"y": 0.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
2 | |||
], | |||
"x": 2, | |||
"y": 0.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
3 | |||
], | |||
"x": 3, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
4 | |||
], | |||
"x": 4, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
5 | |||
], | |||
"x": 5, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
1 | |||
], | |||
"x": 10, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
2 | |||
], | |||
"x": 11, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
3 | |||
], | |||
"x": 12, | |||
"y": 0 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
4 | |||
], | |||
"x": 13, | |||
"y": 0.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
5 | |||
], | |||
"x": 14, | |||
"y": 0.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
6 | |||
], | |||
"x": 15, | |||
"y": 0.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
0 | |||
], | |||
"x": 0, | |||
"y": 1.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
1 | |||
], | |||
"x": 1, | |||
"y": 1.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
2 | |||
], | |||
"x": 2, | |||
"y": 1.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
3 | |||
], | |||
"x": 3, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
4 | |||
], | |||
"x": 4, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
5 | |||
], | |||
"x": 5, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
1, | |||
6 | |||
], | |||
"x": 7.5, | |||
"y": 0.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
1 | |||
], | |||
"x": 10, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
2 | |||
], | |||
"x": 11, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
3 | |||
], | |||
"x": 12, | |||
"y": 1 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
4 | |||
], | |||
"x": 13, | |||
"y": 1.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
5 | |||
], | |||
"x": 14, | |||
"y": 1.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
5, | |||
6 | |||
], | |||
"x": 15, | |||
"y": 1.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
0 | |||
], | |||
"x": 0, | |||
"y": 2.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
1 | |||
], | |||
"x": 1, | |||
"y": 2.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
2 | |||
], | |||
"x": 2, | |||
"y": 2.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
3 | |||
], | |||
"x": 3, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
4 | |||
], | |||
"x": 4, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
2, | |||
5 | |||
], | |||
"x": 5, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
1 | |||
], | |||
"x": 10, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
2 | |||
], | |||
"x": 11, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
3 | |||
], | |||
"x": 12, | |||
"y": 2 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
4 | |||
], | |||
"x": 13, | |||
"y": 2.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
5 | |||
], | |||
"x": 14, | |||
"y": 2.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
6, | |||
6 | |||
], | |||
"x": 15, | |||
"y": 2.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
0 | |||
], | |||
"x": 0, | |||
"y": 3.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
1 | |||
], | |||
"x": 1, | |||
"y": 3.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
2 | |||
], | |||
"x": 2, | |||
"y": 3.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
3 | |||
], | |||
"x": 3, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
4 | |||
], | |||
"x": 4, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
5 | |||
], | |||
"x": 5, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
3, | |||
6 | |||
], | |||
"x": 6, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
0 | |||
], | |||
"x": 9, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
1 | |||
], | |||
"x": 10, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
2 | |||
], | |||
"x": 11, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
3 | |||
], | |||
"x": 12, | |||
"y": 3 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
4 | |||
], | |||
"x": 13, | |||
"y": 3.25 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
5 | |||
], | |||
"x": 14, | |||
"y": 3.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
7, | |||
6 | |||
], | |||
"x": 15, | |||
"y": 3.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
0, | |||
6 | |||
], | |||
"x": 7, | |||
"y": 1.5 | |||
}, | |||
{ | |||
"matrix": [ | |||
4, | |||
0 | |||
], | |||
"x": 8, | |||
"y": 1.5 | |||
} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,123 @@ | |||
// Copyright 2022 takashicompany (@takashicompany) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#include QMK_KEYBOARD_H | |||
enum custom_keycodes { | |||
GOAT51 = SAFE_RANGE, | |||
WEB, | |||
}; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
// 0: JIS-Alphabet | |||
LAYOUT( | |||
KC_ESC, LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | |||
KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT, | |||
KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL, | |||
TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, | |||
KC_PGDN, KC_PGUP | |||
), | |||
// 1: JIS-Num | |||
LAYOUT( | |||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, | |||
KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS, | |||
KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 2: JIS-Shift-Num | |||
LAYOUT( | |||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 3: US-Alphabet | |||
LAYOUT( | |||
KC_TRNS, LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, | |||
KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS, | |||
KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS, | |||
TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, | |||
KC_PGDN, KC_PGUP | |||
), | |||
// 4: US-Num | |||
LAYOUT( | |||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, | |||
KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, GOAT51, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN, KC_TRNS, | |||
KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 5: US-Shift-Num | |||
LAYOUT( | |||
KC_TRNS, KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS, | |||
KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, GOAT51, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, | |||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 6: Cursor | |||
LAYOUT( | |||
KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, | |||
KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
TG(6), KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 7: Function | |||
LAYOUT( | |||
KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | |||
KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(8), MO(9), KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 8: LED | |||
LAYOUT( | |||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, DF(0), DF(3), KC_TRNS, | |||
KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
) | |||
}; | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
switch (keycode) { | |||
case GOAT51: | |||
if (record->event.pressed) { | |||
SEND_STRING("GOAT51"); | |||
rgblight_toggle(); | |||
} | |||
return false; | |||
case WEB: | |||
if (record->event.pressed) { | |||
SEND_STRING("github.com/takashicompany/goat51"); | |||
} | |||
return false; | |||
} | |||
return true; | |||
} | |||
bool encoder_update_user(uint8_t index, bool clockwise) { | |||
if (clockwise) { | |||
tap_code(KC_MS_WH_DOWN); | |||
} else { | |||
tap_code(KC_MS_WH_UP); | |||
} | |||
return true; | |||
} |
@ -0,0 +1,6 @@ | |||
// Copyright 2022 takashicompany (@takashicompany) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#pragma once | |||
#define DYNAMIC_KEYMAP_LAYER_COUNT 7 |
@ -0,0 +1,106 @@ | |||
// Copyright 2022 takashicompany (@takashicompany) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#include QMK_KEYBOARD_H | |||
enum custom_keycodes { | |||
GOAT51 = SAFE_RANGE, | |||
WEB, | |||
}; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
// 0: JIS-Alphabet | |||
LAYOUT( | |||
KC_ESC, LT(4, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | |||
KC_LCTL, KC_A, KC_S, LT(3, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, KC_ENT, | |||
KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL, | |||
TG(3), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, | |||
KC_PGDN, KC_PGUP | |||
), | |||
// 1: JIS-Num | |||
LAYOUT( | |||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, | |||
KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS, | |||
KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 2: JIS-Shift-Num | |||
LAYOUT( | |||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS, | |||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 3: Cursor | |||
LAYOUT( | |||
KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, | |||
KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
TG(3), KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 4: Function | |||
LAYOUT( | |||
KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, | |||
KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(5), MO(6), KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
// 5: LED | |||
LAYOUT( | |||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
LAYOUT( | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS | |||
), | |||
}; | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
switch (keycode) { | |||
case GOAT51: | |||
if (record->event.pressed) { | |||
SEND_STRING("GOAT51"); | |||
rgblight_toggle(); | |||
} | |||
return false; | |||
case WEB: | |||
if (record->event.pressed) { | |||
SEND_STRING("github.com/takashicompany/goat51"); | |||
} | |||
return false; | |||
} | |||
return true; | |||
} | |||
#if defined(ENCODER_MAP_ENABLE) | |||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { | |||
{ ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
{ ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, | |||
}; | |||
#endif |
@ -0,0 +1,2 @@ | |||
VIA_ENABLE = yes | |||
ENCODER_MAP_ENABLE = yes |
@ -0,0 +1,40 @@ | |||
# 🐐 GOAT51 | |||
![takashicompany/GOAT51](https://i.imgur.com/7xD9a4zh.jpg) | |||
GOAT51は51キーのキーボードです。 | |||
特徴的な放射状のキーレイアウトは指を自然に置くことができ、効率的な入力が可能です。 | |||
MX互換のキースイッチとChoc v1キースイッチの取り付けに対応しております。 | |||
またPCBにキースイッチソケットを取り付けることが可能で、容易にキースイッチの交換ができます。 | |||
キーボードの中央にはお気に入りのキーキャップを取り付ける専用スペースがあり、アルチザンキーキャップやお気に入りのキーキャップを飾ることができます。 | |||
実はそこにはロータリーエンコーダを置くこともできちゃいます。 | |||
--- | |||
GOAT51 is a 51-key keyboard. | |||
The distinctive radial key layout allows the fingers to be placed naturally for efficient typing. | |||
It supports the installation of MX compatible key switches and Choc v1 key switches. | |||
A key switch socket can also be installed on the PCB for easy keyswitch replacement. | |||
There is a dedicated space in the center of the keyboard for mounting your favorite keycaps, allowing you to display Artisan keycaps or your favorite keycaps. | |||
In fact, you can even place a rotary encoder there. | |||
* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) | |||
* Hardware Supported: GOAT51 PCB, Pro Micro | |||
* Hardware Availability: https://github.com/takashicompany/goat51 | |||
Make example for this keyboard (after setting up your build environment): | |||
make takashicompany/goat51:default | |||
Flashing example for this keyboard: | |||
make takashicompany/goat51:default:flash | |||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). | |||
## Bootloader | |||
Enter the bootloader in 3 ways: | |||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard | |||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead | |||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available |
@ -0,0 +1 @@ | |||
# This file intentionally left blank |