diff options
| -rw-r--r-- | keyboards/kabedon/kabedon98e/chconf.h | 28 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/config.h | 64 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/halconf.h | 26 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/info.json | 114 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/kabedon98e.c | 16 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/kabedon98e.h | 42 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/keymaps/default/keymap.c | 108 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/keymaps/via/keymap.c | 108 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/keymaps/via/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/mcuconf.h | 27 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/readme.md | 17 | ||||
| -rw-r--r-- | keyboards/kabedon/kabedon98e/rules.mk | 24 | 
12 files changed, 575 insertions, 0 deletions
| diff --git a/keyboards/kabedon/kabedon98e/chconf.h b/keyboards/kabedon/kabedon98e/chconf.h new file mode 100644 index 0000000000..f07706dfda --- /dev/null +++ b/keyboards/kabedon/kabedon98e/chconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * 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/>. + */ + +/* + * This file was auto-generated by: + *    `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next <chconf.h> diff --git a/keyboards/kabedon/kabedon98e/config.h b/keyboards/kabedon/kabedon98e/config.h new file mode 100644 index 0000000000..a34e99bccd --- /dev/null +++ b/keyboards/kabedon/kabedon98e/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 KDon<[email protected]> + * + * 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" + +/* USB Device descriptor parameter */ +#define VENDOR_ID      0x4B44 +#define PRODUCT_ID     0x3935 +#define DEVICE_VER     0x0002 +#define MANUFACTURER   Kabe_Don +#define PRODUCT        98e + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 11 + +#define MATRIX_ROW_PINS {A4,B10,B2,B1,B0,B15,B13,B14,B12,A10,A9,A8} +#define MATRIX_COL_PINS {A0,B7,B8,B6,A3,A2,A1,B9,A7,A5,A6} +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define FORCE_NKRO + +#define RGB_DI_PIN B4 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 + +/* 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 + +#define ENCODERS 2 +#define ENCODERS_PAD_A { B3,A14 } +#define ENCODERS_PAD_B { B5,A15 } + +#define ENCODERS_CW_KEY  { { 0, 0 },{ 2, 0 } } +#define ENCODERS_CCW_KEY { { 6, 0 },{ 8, 0 } } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/kabedon/kabedon98e/halconf.h b/keyboards/kabedon/kabedon98e/halconf.h new file mode 100644 index 0000000000..d141a65a01 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2020 QMK + * + * 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/>. + */ + +/* + * This file was auto-generated by: + *    `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next <halconf.h> diff --git a/keyboards/kabedon/kabedon98e/info.json b/keyboards/kabedon/kabedon98e/info.json new file mode 100644 index 0000000000..0774a02b68 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/info.json @@ -0,0 +1,114 @@ +{ +    "keyboard_name": "KabeDon98E",  +    "url": "",  +    "maintainer": "370490639",  +    "width": 20.8,  +    "height": 6.7,  +    "layouts": { +        "LAYOUT": { +            "layout": [ +			{"label":"Esc", "x":0, "y":0}, +			{"label":"F1", "x":1.5, "y":0}, +			{"label":"F2", "x":2.5, "y":0}, +			{"label":"F3", "x":3.5, "y":0}, +			{"label":"F4", "x":4.5, "y":0}, +			{"label":"F5", "x":6.25, "y":0}, +			{"label":"F6", "x":7.25, "y":0}, +			{"label":"F7", "x":8.25, "y":0}, +			{"label":"F8", "x":9.25, "y":0}, +			{"label":"F9", "x":11, "y":0}, +			{"label":"F10", "x":12, "y":0}, +			{"label":"F11", "x":13, "y":0}, +			{"label":"F12", "x":14, "y":0}, +			{"label":"Delete", "x":15.5, "y":0}, +			{"label":"Insert", "x":17, "y":0}, +			{"label":"Mute", "x":18.5, "y":0},			 +			{"label":"~", "x":0, "y":1.5}, +			{"label":"!", "x":1, "y":1.5}, +			{"label":"@", "x":2, "y":1.5}, +			{"label":"#", "x":3, "y":1.5}, +			{"label":"$", "x":4, "y":1.5}, +			{"label":"%", "x":5, "y":1.5}, +			{"label":"^", "x":6, "y":1.5}, +			{"label":"&", "x":7, "y":1.5}, +			{"label":"*", "x":8, "y":1.5}, +			{"label":"(", "x":9, "y":1.5}, +			{"label":")", "x":10, "y":1.5}, +			{"label":"_", "x":11, "y":1.5}, +			{"label":"+", "x":12, "y":1.5}, +			{"label":"Backspace", "x":13, "y":1.5, "w":2}, +			{"label":"Num Lock", "x":15.4, "y":1.5}, +			{"label":"/", "x":16.4, "y":1.5}, +			{"label":"*", "x":17.4, "y":1.5}, +			{"label":"-", "x":18.4, "y":1.5},			 +			{"label":"Home", "x":19.8, "y":1.5},			 +			{"label":"Tab", "x":0, "y":2.5, "w":1.5}, +			{"label":"Q", "x":1.5, "y":2.5}, +			{"label":"W", "x":2.5, "y":2.5}, +			{"label":"E", "x":3.5, "y":2.5}, +			{"label":"R", "x":4.5, "y":2.5}, +			{"label":"T", "x":5.5, "y":2.5}, +			{"label":"Y", "x":6.5, "y":2.5}, +			{"label":"U", "x":7.5, "y":2.5}, +			{"label":"I", "x":8.5, "y":2.5}, +			{"label":"O", "x":9.5, "y":2.5}, +			{"label":"P", "x":10.5, "y":2.5}, +			{"label":"{", "x":11.5, "y":2.5}, +			{"label":"}", "x":12.5, "y":2.5}, +			{"label":"|", "x":13.5, "y":2.5, "w":1.5}, +			{"label":"7", "x":15.4, "y":2.5}, +			{"label":"8", "x":16.4, "y":2.5}, +			{"label":"9", "x":17.4, "y":2.5}, +			{"label":"+", "x":18.4, "y":2.5, "h":2},			 +			{"label":"End", "x":19.8, "y":2.5},			 +			{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, +			{"label":"A", "x":1.75, "y":3.5}, +			{"label":"S", "x":2.75, "y":3.5}, +			{"label":"D", "x":3.75, "y":3.5}, +			{"label":"F", "x":4.75, "y":3.5}, +			{"label":"G", "x":5.75, "y":3.5}, +			{"label":"H", "x":6.75, "y":3.5}, +			{"label":"J", "x":7.75, "y":3.5}, +			{"label":"K", "x":8.75, "y":3.5}, +			{"label":"L", "x":9.75, "y":3.5}, +			{"label":":", "x":10.75, "y":3.5}, +			{"label":"\"", "x":11.75, "y":3.5}, +			{"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, +			{"label":"4", "x":15.4, "y":3.5}, +			{"label":"5", "x":16.4, "y":3.5}, +			{"label":"6", "x":17.4, "y":3.5},						 +			{"label":"Shift", "x":0, "y":4.5, "w":2.25}, +			{"label":"Z", "x":2.25, "y":4.5}, +			{"label":"X", "x":3.25, "y":4.5}, +			{"label":"C", "x":4.25, "y":4.5}, +			{"label":"V", "x":5.25, "y":4.5}, +			{"label":"B", "x":6.25, "y":4.5}, +			{"label":"N", "x":7.25, "y":4.5}, +			{"label":"M", "x":8.25, "y":4.5}, +			{"label":"<", "x":9.25, "y":4.5}, +			{"label":">", "x":10.25, "y":4.5}, +			{"label":"?", "x":11.25, "y":4.5}, +			{"label":"Shift", "x":12.25, "y":4.5, "w":1.75}, +			{"label":"Up", "x":14.2, "y":4.7}, +			{"label":"1", "x":15.4, "y":4.5}, +			{"label":"2", "x":16.4, "y":4.5}, +			{"label":"3", "x":17.4, "y":4.5}, +			{"label":"Enter", "x":18.4, "y":4.5, "h":2},						 +			{"label":"Pgup", "x":19.8, "y":4.5},						 +			{"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, +			{"label":"Win", "x":1.25, "y":5.5}, +			{"label":"Alt", "x":2.25, "y":5.5}, +			{"label":"MO(1)", "x":3.25, "y":5.5}, +			{"label":"Space", "x":4.25, "y":5.5, "w":6.25}, +			{"label":"Alt", "x":10.5, "y":5.5, "w":1.25}, +			{"label":"Ctrl", "x":11.75, "y":5.5, "w":1.25}, +			{"label":"Left", "x":13.2, "y":5.7}, +			{"label":"Down", "x":14.2, "y":5.7}, +			{"label":"Right", "x":15.2, "y":5.7}, +			{"label":"0", "x":16.4, "y":5.5}, +			{"label":".", "x":17.4, "y":5.5}, +			{"label":"Pgdn", "x":19.8, "y":5.5} +			] +        } +    } +} diff --git a/keyboards/kabedon/kabedon98e/kabedon98e.c b/keyboards/kabedon/kabedon98e/kabedon98e.c new file mode 100644 index 0000000000..5142c5887d --- /dev/null +++ b/keyboards/kabedon/kabedon98e/kabedon98e.c @@ -0,0 +1,16 @@ +/* Copyright 2021 KDon<[email protected]> + * + * 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 "kabedon98e.h" diff --git a/keyboards/kabedon/kabedon98e/kabedon98e.h b/keyboards/kabedon/kabedon98e/kabedon98e.h new file mode 100644 index 0000000000..0ddad3abf5 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/kabedon98e.h @@ -0,0 +1,42 @@ +/* Copyright 2021 KDon<[email protected]> + * + * 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 XXXX KC_NO + +#define LAYOUT( \ +    KB00,   KA01, KB01, KA02, KB02,    KA03, KB03, KA04, KB04,    KA05, KB05, KB06, KB07,     KF07,    KE08,    KE00,        \ +    KD00, KC01, KD01, KC02, KD02, KC03, KD03, KC04, KD04, KC05, KD05, KC06, KD06,   KD07,     KD09, KE09, KE10, KF10,  KA00, \ +    KF00, KE01, KF01, KE02, KF02, KE03, KF03, KE04, KF04, KE05, KF05, KE06, KF06,   KE07,     KF09, KG09, KG10,        KC00, \ +    KH00, KG01, KH01, KG02, KH02, KG03, KH03, KG04, KH04, KG05, KH05, KG06,      KH07,        KH09, KI09, KI10, KH10,        \ +    KJ00, KJ01, KI02, KJ02, KI03, KJ03, KI04, KJ04, KI05, KJ05, KI06,       KJ07,     KI08,   KJ09, KK09, KJ10,        KG00, \ +    KL00, KK01, KL01, KL03,               KL02,                 KL05,   KK07,   KL07, KK08, KL08,   KL09, KK10, KL10,  KI00  \ +) { \ +  { KA00,  KA01,  KA02,  KA03,  KA04,  KA05,  XXXX,  XXXX,  XXXX,  XXXX,  XXXX }, \ +  { KB00,  KB01,  KB02,  KB03,  KB04,  KB05,  KB06,  KB07,  XXXX,  XXXX,  XXXX }, \ +  { KC00,  KC01,  KC02,  KC03,  KC04,  KC05,  KC06,  XXXX,  XXXX,  XXXX,  XXXX }, \ +  { KD00,  KD01,  KD02,  KD03,  KD04,  KD05,  KD06,  KD07,  XXXX,  KD09,  XXXX }, \ +  { KE00,  KE01,  KE02,  KE03,  KE04,  KE05,  KE06,  KE07,  KE08,  KE09,  KE10 }, \ +  { KF00,  KF01,  KF02,  KF03,  KF04,  KF05,  KF06,  KF07,  XXXX,  KF09,  KF10 }, \ +  { KG00,  KG01,  KG02,  KG03,  KG04,  KG05,  KG06,  XXXX,  XXXX,  KG09,  KG10 }, \ +  { KH00,  KH01,  KH02,  KH03,  KH04,  KH05,  XXXX,  KH07,  XXXX,  KH09,  KH10 }, \ +  { KI00,  XXXX,  KI02,  KI03,  KI04,  KI05,  KI06,  XXXX,  KI08,  KI09,  KI10 }, \ +  { KJ00,  KJ01,  KJ02,  KJ03,  KJ04,  KJ05,  XXXX,  KJ07,  XXXX,  KJ09,  KJ10 }, \ +  { XXXX,  KK01,  XXXX,  XXXX,  XXXX,  XXXX,  XXXX,  KK07,  KK08,  KK09,  KK10 }, \ +  { KL00,  KL01,  KL02,  KL03,  XXXX,  KL05,  XXXX,  KL07,  KL08,  KL09,  KL10 }  \ +} diff --git a/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c b/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c new file mode 100644 index 0000000000..bace7931df --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c @@ -0,0 +1,108 @@ +/* Copyright 2021 KDon<[email protected]> + * + * 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 +// Defines names for use in layer keycodes and the keymap +enum layer_names { +    _BASE, +    _FN, +    _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +┌──┐  ┌──┐┌──┐┌──┐┌──┐   ┌──┐┌──┐┌──┐┌──┐   ┌──┐┌──┐┌──┐┌──┐  ┌──┐  ┌──┐  ┌──┐ +│1A│  │0B││1B││0C││1C│   │0D││1D││0E││1E│   │0F││1F││1G││1H│  │5H│  │4I│  │4A│ +└──┘  └──┘└──┘└──┘└──┘   └──┘└──┘└──┘└──┘   └──┘└──┘└──┘└──┘  └──┘  └──┘  └──┘ +┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──────┐  ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│3A││2B││3B││2C││3C││2D││3D││2E││3E││2F││3F││2G││3G││3H    │  │3J││4J││4K││5K│  │0A│ +└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──────┘  └──┘└──┘└──┘└──┘  └──┘ +┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐  ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│5A  ││4B││5B││4C││5C││4D││5D││4E││5E││4F││5F││4G││5G││4H  │  │5J││6J││6K││2A│  │7A│ +└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘  └──┘└──┘└──┘│  │  └──┘ +┌─────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌───────┐  ┌──┐┌──┐┌──┐│  │ +│6B   ││7B││6C││7C││6D││7D││6E││7E││6F││7F││6G││7H││7J     │  │8J││8K││7K││  │ +└─────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└───────┘  └──┘└──┘└──┘└──┘ +┌───────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌─────┐      ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│9A     ││9B││8C││9C││8D││9D││8E││9E││8F││9F││8G││9H   │ ┌──┐ │9J││AJ││9K││6A│  │BA│ +└───────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└─────┘ │8I│ └──┘└──┘└──┘│  │  └──┘ +┌───┐┌──┐┌──┐┌──┐┌───────────────────────┐┌───┐┌───┐     └──┘     ┌──┐┌──┐│  │  ┌──┐ +│AB ││BB││BD││BC││BF                     ││AH ││BH │ ┌──┐┌──┐┌──┐ │AK││BK││  │  │8A│ +└───┘└──┘└──┘└──┘└───────────────────────┘└───┘└───┘ │AI││BI││BJ│ └──┘└──┘└──┘  └──┘ +                                                     └──┘└──┘└──┘ + */ +[_BASE] = 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_DEL,      KC_INS, 		 KC_MUTE,  +	KC_GRV,  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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,   KC_HOME, +	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_P7,   KC_P8,   KC_P9,              KC_END, +	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_ENT,           KC_P4,   KC_P5,   KC_P6,   KC_PPLS,   +	KC_LSFT, 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_P1,   KC_P2,   KC_P3,              KC_PGUP, +	KC_LCTL, KC_LGUI, KC_LALT, MO(1),                KC_SPC,                         KC_RALT,    KC_RCTL,   KC_LEFT,  KC_DOWN,  KC_RGHT,   KC_P0,   KC_PDOT, KC_PENT,   KC_PGDN), + +[_FN] = 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, +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,     RGB_VAI,  KC_TRNS, KC_TRNS, KC_TRNS,            KC_TRNS,  +	KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                     KC_TRNS,                     RGB_TOG,  RGB_MOD,    RGB_HUI, RGB_VAD, RGB_HUD,  KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS), + +[_FN1] = 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, +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,            KC_TRNS, +	KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                     KC_TRNS,                     KC_TRNS,  KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS) +	 +}; + +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) { +    for (int index = 0; index < ENCODERS; ++index) { +        if (encoder_state[index]) { +            keyevent_t encoder_event = (keyevent_t) { +                .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], +                .pressed = false, +                .time = (timer_read() | 1) +            }; +            encoder_state[index] = 0; +            action_exec(encoder_event); +        } +    } +} + +void encoder_action_register(uint8_t index, bool clockwise) { +    keyevent_t encoder_event = (keyevent_t) { +        .key = clockwise ? encoder_cw[index] : encoder_ccw[index], +        .pressed = true, +        .time = (timer_read() | 1) +    }; +    encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); +    action_exec(encoder_event); +} + +void matrix_scan_user(void) { +    encoder_action_unregister(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { +    encoder_action_register(index, clockwise); +    return true; +}; diff --git a/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c b/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c new file mode 100644 index 0000000000..bace7931df --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c @@ -0,0 +1,108 @@ +/* Copyright 2021 KDon<[email protected]> + * + * 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 +// Defines names for use in layer keycodes and the keymap +enum layer_names { +    _BASE, +    _FN, +    _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +┌──┐  ┌──┐┌──┐┌──┐┌──┐   ┌──┐┌──┐┌──┐┌──┐   ┌──┐┌──┐┌──┐┌──┐  ┌──┐  ┌──┐  ┌──┐ +│1A│  │0B││1B││0C││1C│   │0D││1D││0E││1E│   │0F││1F││1G││1H│  │5H│  │4I│  │4A│ +└──┘  └──┘└──┘└──┘└──┘   └──┘└──┘└──┘└──┘   └──┘└──┘└──┘└──┘  └──┘  └──┘  └──┘ +┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──────┐  ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│3A││2B││3B││2C││3C││2D││3D││2E││3E││2F││3F││2G││3G││3H    │  │3J││4J││4K││5K│  │0A│ +└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──────┘  └──┘└──┘└──┘└──┘  └──┘ +┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐  ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│5A  ││4B││5B││4C││5C││4D││5D││4E││5E││4F││5F││4G││5G││4H  │  │5J││6J││6K││2A│  │7A│ +└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘  └──┘└──┘└──┘│  │  └──┘ +┌─────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌───────┐  ┌──┐┌──┐┌──┐│  │ +│6B   ││7B││6C││7C││6D││7D││6E││7E││6F││7F││6G││7H││7J     │  │8J││8K││7K││  │ +└─────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└───────┘  └──┘└──┘└──┘└──┘ +┌───────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌─────┐      ┌──┐┌──┐┌──┐┌──┐  ┌──┐ +│9A     ││9B││8C││9C││8D││9D││8E││9E││8F││9F││8G││9H   │ ┌──┐ │9J││AJ││9K││6A│  │BA│ +└───────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└─────┘ │8I│ └──┘└──┘└──┘│  │  └──┘ +┌───┐┌──┐┌──┐┌──┐┌───────────────────────┐┌───┐┌───┐     └──┘     ┌──┐┌──┐│  │  ┌──┐ +│AB ││BB││BD││BC││BF                     ││AH ││BH │ ┌──┐┌──┐┌──┐ │AK││BK││  │  │8A│ +└───┘└──┘└──┘└──┘└───────────────────────┘└───┘└───┘ │AI││BI││BJ│ └──┘└──┘└──┘  └──┘ +                                                     └──┘└──┘└──┘ + */ +[_BASE] = 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_DEL,      KC_INS, 		 KC_MUTE,  +	KC_GRV,  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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,   KC_HOME, +	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_P7,   KC_P8,   KC_P9,              KC_END, +	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_ENT,           KC_P4,   KC_P5,   KC_P6,   KC_PPLS,   +	KC_LSFT, 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_P1,   KC_P2,   KC_P3,              KC_PGUP, +	KC_LCTL, KC_LGUI, KC_LALT, MO(1),                KC_SPC,                         KC_RALT,    KC_RCTL,   KC_LEFT,  KC_DOWN,  KC_RGHT,   KC_P0,   KC_PDOT, KC_PENT,   KC_PGDN), + +[_FN] = 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, +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,     RGB_VAI,  KC_TRNS, KC_TRNS, KC_TRNS,            KC_TRNS,  +	KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                     KC_TRNS,                     RGB_TOG,  RGB_MOD,    RGB_HUI, RGB_VAD, RGB_HUD,  KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS), + +[_FN1] = 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, +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    +	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,        KC_TRNS,     KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,            KC_TRNS, +	KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,                     KC_TRNS,                     KC_TRNS,  KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,   KC_TRNS) +	 +}; + +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) { +    for (int index = 0; index < ENCODERS; ++index) { +        if (encoder_state[index]) { +            keyevent_t encoder_event = (keyevent_t) { +                .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], +                .pressed = false, +                .time = (timer_read() | 1) +            }; +            encoder_state[index] = 0; +            action_exec(encoder_event); +        } +    } +} + +void encoder_action_register(uint8_t index, bool clockwise) { +    keyevent_t encoder_event = (keyevent_t) { +        .key = clockwise ? encoder_cw[index] : encoder_ccw[index], +        .pressed = true, +        .time = (timer_read() | 1) +    }; +    encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); +    action_exec(encoder_event); +} + +void matrix_scan_user(void) { +    encoder_action_unregister(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { +    encoder_action_register(index, clockwise); +    return true; +}; diff --git a/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk b/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kabedon/kabedon98e/mcuconf.h b/keyboards/kabedon/kabedon98e/mcuconf.h new file mode 100644 index 0000000000..c1cdc75778 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/mcuconf.h @@ -0,0 +1,27 @@ +/* Copyright 2020 QMK + * + * 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/>. + */ + +/* + * This file was auto-generated by: + *    `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next <mcuconf.h> + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/kabedon/kabedon98e/readme.md b/keyboards/kabedon/kabedon98e/readme.md new file mode 100644 index 0000000000..f240663b1d --- /dev/null +++ b/keyboards/kabedon/kabedon98e/readme.md @@ -0,0 +1,17 @@ +# KabeDon 98e + + + +A mechanical keyboard PCB similar to 980 layout, it has two encoders. +This PCB uses kailh hot swap socket. +Kabedon980 includes RGB underflow. + +* Keyboard Maintainer: [370490639](https://github.com/370490639) +* Hardware Supported: f103 KabeDon98e +* Hardware Availability: [KabeDon98e]https://kabedon.taobao.com + +Make example for this keyboard (after setting up your build environment): + +    make kabedon/kabedon98e:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kabedon/kabedon98e/rules.mk b/keyboards/kabedon/kabedon98e/rules.mk new file mode 100644 index 0000000000..d5855bafa2 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# Build Options +#   change yes to no to disable +# +BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration +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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes           # USB Nkey Rollover +BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no       # Enable Bluetooth +AUDIO_ENABLE = no           # Audio output +WS2812_DRIVER = pwm +ENCODER_ENABLE = yes | 
