commit
4add874867
@ -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 |
||||
|
||||
 |
||||
|
||||
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 |
||||
|
||||
 |
||||
|
||||
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 |
||||
|
||||
 |
||||
|
||||
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
|
Loading…
Reference in new issue