~ruther/qmk_firmware

66de3308e5b17c0c59692b2660f2ce3a33c99863 — Blake 5 years ago 0e542b2
[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
A keyboards/handwired/bento/bento.c => keyboards/handwired/bento/bento.c +16 -0
@@ 0,0 1,16 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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 "bento.h"

A keyboards/handwired/bento/bento.h => keyboards/handwired/bento/bento.h +20 -0
@@ 0,0 1,20 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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

#ifdef KEYBOARD_handwired_bento_rev1
    #include "rev1.h"
#endif

A keyboards/handwired/bento/info.json => keyboards/handwired/bento/info.json +19 -0
@@ 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}
      ]
    }
  }
}

A keyboards/handwired/bento/keymaps/cbc02009/keymap.c => keyboards/handwired/bento/keymaps/cbc02009/keymap.c +41 -0
@@ 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 <http://www.gnu.org/licenses/>.
 */
#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

A keyboards/handwired/bento/keymaps/default/keymap.c => keyboards/handwired/bento/keymaps/default/keymap.c +50 -0
@@ 0,0 1,50 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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

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);
        }
    }
}

A keyboards/handwired/bento/keymaps/mac/keymap.c => keyboards/handwired/bento/keymaps/mac/keymap.c +54 -0
@@ 0,0 1,54 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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
#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);
        }
    }
}



A keyboards/handwired/bento/readme.md => keyboards/handwired/bento/readme.md +15 -0
@@ 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).

A keyboards/handwired/bento/rev1/config.h => keyboards/handwired/bento/rev1/config.h +59 -0
@@ 0,0 1,59 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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       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

A keyboards/handwired/bento/rev1/rev1.c => keyboards/handwired/bento/rev1/rev1.c +28 -0
@@ 0,0 1,28 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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 "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();
}

A keyboards/handwired/bento/rev1/rev1.h => keyboards/handwired/bento/rev1/rev1.h +36 -0
@@ 0,0 1,36 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
 *
 * 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 "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 } \
}

A keyboards/handwired/bento/rev1/rules.mk => keyboards/handwired/bento/rev1/rules.mk +23 -0
@@ 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

A keyboards/handwired/bento/rules.mk => keyboards/handwired/bento/rules.mk +1 -0
@@ 0,0 1,1 @@
DEFAULT_FOLDER = handwired/bento/rev1