~ruther/qmk_firmware

dccb5711c710d074c29f715494b93f9275f5ac55 — Matthew Dias 3 years ago 20424fd
[Keyboard] Add damapad (#16443)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
A keyboards/bolsa/damapad/config.h => keyboards/bolsa/damapad/config.h +59 -0
@@ 0,0 1,59 @@

/*
Copyright 2021 Matthew Dias

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       0x6D64
#define PRODUCT_ID      0x6470
#define DEVICE_VER      0x0001
#define MANUFACTURER    Bolsa Keyboard Supply
#define PRODUCT         Damapad

/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 6

/* key matrix pins */
#define MATRIX_ROW_PINS { E6, F7, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, B7 }
#define UNUSED_PINS

/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW

#define ENCODERS_PAD_A { B2 }
#define ENCODERS_PAD_B { B3 }
#define ENCODER_RESOLUTION 2

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

/*
 * Feature disable options
 *  These options are also useful to firmware size reduction.
 */

/* disable debug print */
//#define NO_DEBUG

/* disable print */
//#define NO_PRINT

A keyboards/bolsa/damapad/damapad.c => keyboards/bolsa/damapad/damapad.c +81 -0
@@ 0,0 1,81 @@
/*
Copyright 2021 Matthew Dias

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 "damapad.h" 

#ifdef OLED_ENABLE
bool oled_task_kb(void) {
    if (!oled_task_user()) {
    	return false; 
    }
    static const char PROGMEM bolsa_logo[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1e, 0x3e, 0xfe, 0xfe, 0xfc, 0xfc, 
        0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 
        0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 
        0xfc, 0xfe, 0xfe, 0x3e, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0x3e, 0xfe, 0xfe, 0xff, 0x7f, 0x7f, 
        0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 
        0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 
        0x7f, 0xff, 0xfe, 0xfe, 0x3e, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, 0x07, 0x00, 0x00, 0xf8, 
        0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 
        0x00, 0x00, 0x0f, 0xff, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3f, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 
        0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 
        0x1f, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };

    oled_write_raw_P(bolsa_logo, sizeof(bolsa_logo));
    return false;
}

oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}
#endif

#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
    if (!encoder_update_user(index, clockwise)) { return false; }
    if (index == 0) {
        if (clockwise) {
            tap_code_delay(KC_VOLU, 10);
        } else {
            tap_code_delay(KC_VOLD, 10);
        }
    }
    return true;
}
#endif
\ No newline at end of file

A keyboards/bolsa/damapad/damapad.h => keyboards/bolsa/damapad/damapad.h +32 -0
@@ 0,0 1,32 @@
/*
Copyright 2021 Matthew Dias

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 XXX KC_NO

#define LAYOUT_wkl( \
	K00, K01, K02, K03, K04, K05, \
	K10, K11, K12, K13, K14, K15, \
	K20, K21,      K23,      K25  \
) { \
	{ K00, K01, K02, K03, K04, K05 }, \
	{ K10, K11, K12, K13, K14, K15 }, \
	{ K20, K21, XXX, K23, XXX, K25 }  \
}

A keyboards/bolsa/damapad/info.json => keyboards/bolsa/damapad/info.json +109 -0
@@ 0,0 1,109 @@
{
    "keyboard_name": "Damapad",
    "url": "",
    "maintainer": "matthewdias",
    "layouts": {
        "LAYOUT_wkl": {
            "layout": [{
                "x": 5.25,
                "y": 0
            }, {
                "x": 0,
                "y": 0.25
            }, {
                "x": 1,
                "y": 0.25
            }, {
                "x": 2,
                "y": 0.25
            }, {
                "x": 3,
                "y": 0.25
            }, {
                "x": 4,
                "y": 0.25
            }, {
                "x": 0,
                "y": 1.25
            }, {
                "x": 1,
                "y": 1.25
            }, {
                "x": 2,
                "y": 1.25
            }, {
                "x": 3,
                "y": 1.25
            }, {
                "x": 4,
                "y": 1.25
            }, {
                "x": 5.25,
                "y": 1.25
            }, {
                "x": 0,
                "y": 2.25
            }, {
                "x": 1.75,
                "y": 2.25
            }, {
                "x": 2.75,
                "y": 2.25,
                "w": 2.25
            }, {
                "x": 5.25,
                "y": 2.25
            }]
        },
        "LAYOUT_bar": {
            "layout": [{
                "x": 5.25,
                "y": 0
            }, {
                "x": 0,
                "y": 0.25
            }, {
                "x": 1,
                "y": 0.25
            }, {
                "x": 2,
                "y": 0.25
            }, {
                "x": 3,
                "y": 0.25
            }, {
                "x": 4,
                "y": 0.25
            }, {
                "x": 0,
                "y": 1.25
            }, {
                "x": 1,
                "y": 1.25
            }, {
                "x": 2,
                "y": 1.25
            }, {
                "x": 3,
                "y": 1.25
            }, {
                "x": 4,
                "y": 1.25
            }, {
                "x": 5.25,
                "y": 1.25
            }, {
                "x": 0,
                "y": 2.25,
                "w": 2.75
            }, {
                "x": 2.75,
                "y": 2.25,
                "w": 2.25
            }, {
                "x": 5.25,
                "y": 2.25
            }]
        }
    }
}

A keyboards/bolsa/damapad/keymaps/default/keymap.c => keyboards/bolsa/damapad/keymaps/default/keymap.c +29 -0
@@ 0,0 1,29 @@
/*
Copyright 2021 Matthew Dias

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_wkl(
        KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_MSEL, KC_MUTE,
        KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_PGUP,  
        KC_NO,   KC_COPY,          KC_PASTE,         KC_PGDN
    )

};


A keyboards/bolsa/damapad/keymaps/via/keymap.c => keyboards/bolsa/damapad/keymaps/via/keymap.c +47 -0
@@ 0,0 1,47 @@
/*
Copyright 2021 Matthew Dias

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_wkl(
        KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_MSEL, KC_MUTE,
        KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_PGUP,  
        KC_NO,   KC_COPY,          KC_PASTE,         KC_PGDN
    ),

    [1] = LAYOUT_wkl(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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] = LAYOUT_wkl(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_wkl(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
        KC_TRNS, KC_TRNS,          KC_TRNS,          KC_TRNS
    )

};


A keyboards/bolsa/damapad/keymaps/via/rules.mk => keyboards/bolsa/damapad/keymaps/via/rules.mk +1 -0
@@ 0,0 1,1 @@
VIA_ENABLE = yes

A keyboards/bolsa/damapad/readme.md => keyboards/bolsa/damapad/readme.md +22 -0
@@ 0,0 1,22 @@
# Damapad

A Macropad by Bolsa Supply

-   Keyboard Maintainer: [matthewdias](https://github.com/matthewdias)
-   Hardware Supported: Damapad PCB

Make example for this keyboard (after setting up your build environment):

    make bolsa/damapad:default

Flashing example for this keyboard:

    make bolsa/damapad: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:

-   **Physical reset button**: Briefly press the button on the back of the PCB (or short the reset/ground pads, should a tactile button not be installed)

A keyboards/bolsa/damapad/rules.mk => keyboards/bolsa/damapad/rules.mk +21 -0
@@ 0,0 1,21 @@
# 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 = no        # Enable keyboard RGB underglow
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306