From 66de3308e5b17c0c59692b2660f2ce3a33c99863 Mon Sep 17 00:00:00 2001 From: Blake Date: Tue, 18 Aug 2020 21:45:33 +0100 Subject: [PATCH] [Keyboard] Bento handwired macro pad (#9973) * [Keyboard] Add ghostseven/bento * Correct attribution, Dwin17 * Formatting change * Markdown formating * Update keyboards/ghostseven/bento/info.json * Update keyboards/ghostseven/bento/readme.md * Update keyboards/ghostseven/bento/rev1/config.h * Update keyboards/ghostseven/bento/rev1/rules.mk * Update keyboards/ghostseven/bento/rev1/rules.mk * Update keyboards/ghostseven/bento/rev1/rules.mk * Update keyboards/ghostseven/bento/rev1/rules.mk * Update keyboards/ghostseven/bento/rev1/config.h * Update keyboards/ghostseven/bento/rev1/rev1.c * Update keyboards/ghostseven/bento/rev1/rev1.c * Update keyboards/ghostseven/bento/rev1/config.h * Update keyboards/ghostseven/bento/rev1/rules.mk * Update keyboards/ghostseven/bento/readme.md * Delete config.h * Delete config.h * Update rules.mk * Rename keyboards/ghostseven/bento/readme.md to keyboards/handwired/bento/readme.md * Rename keyboards/ghostseven/bento/rules.mk to keyboards/handwired/bento/rules.mk * Rename keyboards/ghostseven/bento/info.json to keyboards/handwired/bento/info.json * Rename keyboards/ghostseven/bento/bento.h to keyboards/handwired/bento/bento.h * Rename keyboards/ghostseven/bento/bento.c to keyboards/handwired/bento/bento.c * Rename keyboards/ghostseven/bento/rev1/rules.mk to keyboards/handwired/bento/rev1/rules.mk * Rename keyboards/ghostseven/bento/rev1/rev1.h to keyboards/handwired/bento/rev1/rev1.h * Rename keyboards/ghostseven/bento/rev1/rev1.c to keyboards/handwired/bento/rev1/rev1.c * Rename keyboards/ghostseven/bento/rev1/config.h to keyboards/handwired/bento/rev1/config.h * Rename keyboards/ghostseven/bento/keymaps/default/keymap.c to keyboards/handwired/bento/keymaps/default/keymap.c * Update bento.h * Change make location to handwired dir. * added alt keymap submited by cbc02009 * Added mac dev keymap * Licence updates --- keyboards/handwired/bento/bento.c | 16 +++++ keyboards/handwired/bento/bento.h | 20 +++++++ keyboards/handwired/bento/info.json | 19 ++++++ .../handwired/bento/keymaps/cbc02009/keymap.c | 41 +++++++++++++ .../handwired/bento/keymaps/default/keymap.c | 50 ++++++++++++++++ .../handwired/bento/keymaps/mac/keymap.c | 54 +++++++++++++++++ keyboards/handwired/bento/readme.md | 15 +++++ keyboards/handwired/bento/rev1/config.h | 59 +++++++++++++++++++ keyboards/handwired/bento/rev1/rev1.c | 28 +++++++++ keyboards/handwired/bento/rev1/rev1.h | 36 +++++++++++ keyboards/handwired/bento/rev1/rules.mk | 23 ++++++++ keyboards/handwired/bento/rules.mk | 1 + 12 files changed, 362 insertions(+) create mode 100644 keyboards/handwired/bento/bento.c create mode 100644 keyboards/handwired/bento/bento.h create mode 100644 keyboards/handwired/bento/info.json create mode 100644 keyboards/handwired/bento/keymaps/cbc02009/keymap.c create mode 100644 keyboards/handwired/bento/keymaps/default/keymap.c create mode 100644 keyboards/handwired/bento/keymaps/mac/keymap.c create mode 100644 keyboards/handwired/bento/readme.md create mode 100644 keyboards/handwired/bento/rev1/config.h create mode 100644 keyboards/handwired/bento/rev1/rev1.c create mode 100644 keyboards/handwired/bento/rev1/rev1.h create mode 100644 keyboards/handwired/bento/rev1/rules.mk create mode 100644 keyboards/handwired/bento/rules.mk diff --git a/keyboards/handwired/bento/bento.c b/keyboards/handwired/bento/bento.c new file mode 100644 index 0000000000..904e0e5b65 --- /dev/null +++ b/keyboards/handwired/bento/bento.c @@ -0,0 +1,16 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#include "bento.h" diff --git a/keyboards/handwired/bento/bento.h b/keyboards/handwired/bento/bento.h new file mode 100644 index 0000000000..106882860a --- /dev/null +++ b/keyboards/handwired/bento/bento.h @@ -0,0 +1,20 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#pragma once + +#ifdef KEYBOARD_handwired_bento_rev1 + #include "rev1.h" +#endif diff --git a/keyboards/handwired/bento/info.json b/keyboards/handwired/bento/info.json new file mode 100644 index 0000000000..8339c6da35 --- /dev/null +++ b/keyboards/handwired/bento/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Bento Macropad", + "url": "https://www.thingiverse.com/thing:4416966", + "maintainer": "Ghostseven", + "width": 3, + "height": 2, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1} + ] + } + } +} diff --git a/keyboards/handwired/bento/keymaps/cbc02009/keymap.c b/keyboards/handwired/bento/keymaps/cbc02009/keymap.c new file mode 100644 index 0000000000..169e0f1dd3 --- /dev/null +++ b/keyboards/handwired/bento/keymaps/cbc02009/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2019 cbc02009 + * + * 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 . + */ +#include QMK_KEYBOARD_H + + +/* LAYER 1 + * ,---------------+-------. + * |KC_MPRV|KC_MNXT|KC_MUTE| + * |-------+-------+-------, + * |KC_MPLY|KC_MSTP|KC_MUTE| + * `-------+-------+-------' + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(KC_MPRV, KC_MNXT, KC_MUTE, KC_MPLY, KC_MSTP, KC_MUTE) +}; + +#ifdef ENCODER_ENABLE +#include "encoder.h" +void encoder_update_user(int8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} +#endif diff --git a/keyboards/handwired/bento/keymaps/default/keymap.c b/keyboards/handwired/bento/keymaps/default/keymap.c new file mode 100644 index 0000000000..6a2cfa682f --- /dev/null +++ b/keyboards/handwired/bento/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum encoder_names { + _ENCODER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + | | | Knob 1: Vol Dn/Up | + | Hold: Layer 2 | Up | Press: Mute | + | Left | Down | Right | + */ + [0] = LAYOUT( + MO(1), KC_UP, KC_MUTE, + KC_LEFT, KC_DOWN, KC_RGHT + ), + /* + | Held: Layer 2 | Home | RESET | + | Media Previous | End | Media Next | + */ + [1] = LAYOUT( + _______, KC_HOME, RESET, + KC_MPRV, KC_END , KC_MNXT + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == _ENCODER) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} diff --git a/keyboards/handwired/bento/keymaps/mac/keymap.c b/keyboards/handwired/bento/keymaps/mac/keymap.c new file mode 100644 index 0000000000..29a7e809fc --- /dev/null +++ b/keyboards/handwired/bento/keymaps/mac/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#include QMK_KEYBOARD_H +#define _BASE 0 // Base layer +#define _CODE 1 // Code layer + +enum encoder_names { + _ENCODER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Base Layer + * Media Prev / Hold L1 | Media Next | Mute + * Move Space Left | Mission Control | Move Space Right */ + [_BASE] = LAYOUT( + LT(_CODE, KC_MPRV), KC_MNXT, KC_MUTE, + C(KC_LEFT), C(KC_UP), C(KC_RIGHT) + ), + + + /* 1: Code layer + * ---- | Shift+CMD+B (Build VS Code) | DFU Mode + * Shift+CMD+C (FF Console) | Ctrl+Alt+U (Upload PIO) | Ctrl+Alt+S (Serial PIO) */ + [_CODE] = LAYOUT( + _______, S(G(KC_B)), RESET, + G(A(KC_C)), C(A(KC_U)), C(A(KC_S)) + ), +}; + + +void encoder_update_user(uint8_t index, bool clockwise) { + if (index == _ENCODER) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } +} + + diff --git a/keyboards/handwired/bento/readme.md b/keyboards/handwired/bento/readme.md new file mode 100644 index 0000000000..0c13734141 --- /dev/null +++ b/keyboards/handwired/bento/readme.md @@ -0,0 +1,15 @@ +# BENTO + +![BENTO](https://cdn.thingiverse.com/assets/0b/6a/84/9c/9a/large_display_IMG_3374.jpg) + +A hand wired 2x3 macropad with a rotary encoder at the upper right corner. + +* Keyboard Maintainer: [Dwin17](https://www.thingiverse.com/dwin17) - Hardware [GhostSeven](https://github.com/ghostseven) - QMK Firmware +* Hardware Supported: Pro Micro, Elite-C, Proton C +* Hardware Availability: [Thingiverse](https://www.thingiverse.com/thing:4416966) + +Make example for this keyboard (after setting up your build environment): + + make handwired/bento/rev1: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/handwired/bento/rev1/config.h b/keyboards/handwired/bento/rev1/config.h new file mode 100644 index 0000000000..9bb7ef666d --- /dev/null +++ b/keyboards/handwired/bento/rev1/config.h @@ -0,0 +1,59 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xDAD3 +#define DEVICE_VER 0x0100 +#define MANUFACTURER GhostSeven +#define PRODUCT Bento Macropad Rev. 1 + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* Keyboard Matrix Assignments */ +#define DIRECT_PINS { \ + { D7, B1, D2 }, \ + { E6, B4, B2 } \ +} + +#define ENCODERS_PAD_A { D1 } +#define ENCODERS_PAD_B { D0 } + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 4 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 diff --git a/keyboards/handwired/bento/rev1/rev1.c b/keyboards/handwired/bento/rev1/rev1.c new file mode 100644 index 0000000000..8f195d3ef8 --- /dev/null +++ b/keyboards/handwired/bento/rev1/rev1.c @@ -0,0 +1,28 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#include "rev1.h" + +void eeconfig_init_kb(void) { +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); // Enable RGB by default + rgblight_sethsv(0, 255, 255); // Set default HSV - red hue, full saturation, full brightness +#ifdef RGBLIGHT_ANIMATIONS + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default +#endif +#endif + + eeconfig_init_user(); +} diff --git a/keyboards/handwired/bento/rev1/rev1.h b/keyboards/handwired/bento/rev1/rev1.h new file mode 100644 index 0000000000..a0b8ce2796 --- /dev/null +++ b/keyboards/handwired/bento/rev1/rev1.h @@ -0,0 +1,36 @@ +/* Copyright 2020 GhostSeven + * + * 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 . + */ +#pragma once + +#include "bento.h" +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + KA1, KA2, KA3, \ + KB1, KB2, KB3 \ +) \ +{ \ + { KA1, KA2, KA3 }, \ + { KB1, KB2, KB3 } \ +} diff --git a/keyboards/handwired/bento/rev1/rules.mk b/keyboards/handwired/bento/rev1/rules.mk new file mode 100644 index 0000000000..f7e3ef1e97 --- /dev/null +++ b/keyboards/handwired/bento/rev1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # 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 = no # 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 +ENCODER_ENABLE = yes diff --git a/keyboards/handwired/bento/rules.mk b/keyboards/handwired/bento/rules.mk new file mode 100644 index 0000000000..e160faab83 --- /dev/null +++ b/keyboards/handwired/bento/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = handwired/bento/rev1