[Keyboard] support for Stack Overflow The Key from Drop - adapted from @frap129 (#15520)

* support for Stack Overflow The Key from Drop - adapted from @frap129

* addressing code review comments

there's still some issues related to LEDs so i think for now the best
course of action is to remove those items until we can get better
details on the assembly of the board.

* removing this on the correct branch

* cleaning up more code review comments, moving to simpler/common formats for maps

* it is a C not a G fool

* well, looks like you can do it this way too for booting/dfu

* fixing missing newline for gcc to be quiet

* removing busted links

* formatting to match current template

* Update keyboards/massdrop/thekey/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Andy Piper <andypiper@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
master
Wyatt Neal 2021-12-22 02:36:48 -05:00 committed by GitHub
parent 83b21deafc
commit b8cd899dfb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 288 additions and 0 deletions

View File

@ -0,0 +1,49 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER Drop
#define PRODUCT The Key
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
/*
* Keyboard Matrix Assignments
*/
#define MATRIX_ROW_PINS { D4 }
#define MATRIX_COL_PINS { D2, D1, D0 }
#define DIODE_DIRECTION ROW2COL
#define BACKLIGHT_PIN B6
#define BACKLIGHT_LEVELS 3
#define RGB_DI_PIN B1
#define RGBLED_NUM 2
#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 */

View File

@ -0,0 +1,14 @@
{
"keyboard_name": "The Key",
"url": "https://drop.com/buy/stack-overflow-the-key-macropad",
"maintainer": "massdrop",
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "K00 (D4,D2)", "x": 0, "y": 0 },
{ "label": "K01 (D4,D1)", "x": 1, "y": 0 },
{ "label": "K02 (D4,D0)", "x": 2, "y": 0 }
]
}
}
}

View File

@ -0,0 +1,23 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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(KC_LGUI, KC_C, KC_V),
};

View File

@ -0,0 +1,23 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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(KC_LCTL, KC_C, KC_V),
};

View File

@ -0,0 +1,39 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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 custom_keycodes {
TK_URL = SAFE_RANGE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(TK_URL, C(KC_C), C(KC_V)),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TK_URL:
if (record->event.pressed) {
// when keycode TK_URL is pressed
SEND_STRING("https://stackoverflow.com/\n");
}
break;
default:
break;
}
return true;
}

View File

@ -0,0 +1,40 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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 custom_keycodes {
TK_URL = SAFE_RANGE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(TK_URL, C(KC_C), C(KC_V)),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TK_URL:
if (record->event.pressed) {
// when keycode TK_URL is pressed
SEND_STRING("https://stackoverflow.com/");
}
break;
default:
break;
}
return true;
}

View File

@ -0,0 +1,38 @@
# The Key
![The Key](https://i.imgur.com/hL5cRj9.jpg)
The Stack Overflow "The Key" is a 3 button macropad based on atmega32u4 with Kailh Black Box switches.
> Some say a programmers best solution is a simple two-step process: copy and paste. On April 1st, 2021, Stack Overflow proved it. On that fateful day, each time users went to copy a piece of code, they were met with a pop-up for a fake product. It was called The Key: an ultra-compact macropad advertised as the new (and only) way to copy and paste on the platform. As it turns out, roughly one fourth of Stack Overflows 15 million users tries to copy and paste within five minutes of visiting the site. An even greater number saw the joke and loved it, with many demanding that The Key be developed in earnest. So, naturally, we teamed up with Stack Overflow to make it happen. What started as an April Fools gag is now a full-fledged macropad—designed by our very own community member Cassidy, with a portion of proceeds benefiting digitalundivided.
Keyboard Maintainer: [Drop / Massdrop](https://github.com/Massdrop/qmk_firmware)
Hardware Supported: Massdrop, Inc. **The Key**
Hardware Availability: Limited Release - https://drop.com/buy/stack-overflow-the-key-macropad
Make example for this keyboard (after setting up your build environment):
```bash
# default provided by Drop / Stack Overflow
make massdrop/thekey:default
# common modification where C = CTRL+C, V = CTRL+V
make massdrop/thekey:url-copy-paste
```
Flashing example for this keyboard:
```bash
# install in dfu mode
make massdrop/thekey:default:dfu
```
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).
Make example for this keyboard (after setting up your build environment):
## Bootloader
Enter the bootloader as follows:
* **Bootmagic reset**: Hold down the "Stack Overflow" key, the "left-most" or furthest from the USB plug while inserting the USB cable for a few seconds. The LEDs will **NOT** turn on.
* **Physical reset button**: Briefly press and hold the reset button while pluggin in the USB port. The LEDs on the back will **NOT** turn on. Depending on your case revision, you may have to remove the 4 screws on the back plate to access the switch OR you can use the associated access hole on newer releases.

View File

@ -0,0 +1,18 @@
# 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 = 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
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View File

@ -0,0 +1,17 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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 "thekey.h"

View File

@ -0,0 +1,27 @@
/* Copyright 2021 Joe Maples <joe@maples.dev>
*
* 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( \
K00, K01, K02 \
) { \
{ K00, K01, K02 }, \
}