1
0
Fork 0

Move thekey to Drop vendor folder (#21032)

This commit is contained in:
Joel Challis 2023-05-25 23:08:12 +01:00 committed by GitHub
parent 873922d98f
commit b2e5017e74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 174 additions and 300 deletions

View file

@ -0,0 +1,24 @@
/* Copyright 2022 Benjamin Collet <benjamin.collet@protonmail.ch>
*
* 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
#include "keymap_bepo.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_LCTL, BP_C, BP_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_LGUI, KC_C, KC_V),
};

View file

@ -0,0 +1,7 @@
// Copyright 2023 Massdrop, Inc.
// SPDX-License-Identifier: GPL-2.0-or-later
#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,41 @@
/* Copyright 2022 Benjamin Collet <benjamin.collet@protonmail.ch>
*
* 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
#include "sendstring_bepo.h"
enum custom_keycodes {
TK_URL = SAFE_RANGE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(TK_URL, C(BP_C), C(BP_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,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, G(KC_C), G(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,7 @@
// Copyright 2023 Massdrop, Inc.
// SPDX-License-Identifier: GPL-2.0-or-later
#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 @@
VIA_ENABLE = yes

View file

@ -0,0 +1,59 @@
{
"keyboard_name": "The Key",
"manufacturer": "Drop Inc.",
"url": "https://drop.com/buy/stack-overflow-the-key-macropad",
"maintainer": "zvecr",
"usb": {
"vid": "0x359B",
"pid": "0x0002",
"device_version": "1.0.0"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"backlight": true,
"rgblight": true
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"matrix_pins": {
"cols": ["D2", "D1", "D0"],
"rows": ["D4"]
},
"diode_direction": "ROW2COL",
"backlight": {
"pin": "B6",
"breathing": true
},
"rgblight": {
"led_count": 2,
"sleep": true,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"ws2812": {
"pin": "B1"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0}
]
}
}
}

View file

@ -0,0 +1,32 @@
# 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: [zvecr](https://github.com/zvecr)
* Hardware Supported: Drop **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):
# default provided by Drop / Stack Overflow
make drop/thekey/v1:default
# common modification where C = CTRL+C, V = CTRL+V
make drop/thekey/v1:url-copy-paste
Flashing example for this keyboard:
make drop/thekey/v1: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 in 3 ways:
* **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.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -0,0 +1,5 @@
// Copyright 2023 Massdrop, Inc.
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RGBLIGHT_LED_MAP {4, 0, 1, 2, 3}

View file

@ -0,0 +1,54 @@
{
"keyboard_name": "The Key V2",
"manufacturer": "Drop Inc.",
"url": "https://drop.com/buy/stack-overflow-the-key-v2-macropad",
"maintainer": "zvecr",
"usb": {
"vid": "0x359B",
"pid": "0x000E",
"device_version": "2.0.0"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"rgblight": true
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"matrix_pins": {
"cols": ["D2", "D1", "D0"],
"rows": ["D4"]
},
"diode_direction": "ROW2COL",
"rgblight": {
"led_count": 5,
"sleep": true,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"ws2812": {
"pin": "B1"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0}
]
}
}
}

View file

@ -0,0 +1,20 @@
/* Copyright 2022 Jason Wihardja
*
* 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
#define RGBLIGHT_LAYERS /* Enable lighting layers */
#define RGBLIGHT_LAYER_BLINK /* Enable lighting layer blink */

View file

@ -0,0 +1,109 @@
/* Copyright 2022 Jason Wihardja
*
* 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 {
LAYER_SWITCH = SAFE_RANGE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default */
[0] = LAYOUT(LAYER_SWITCH, G(KC_C), G(KC_V)),
/* RGB Toggle + Mode Change */
[1] = LAYOUT(LAYER_SWITCH, RGB_TOG, RGB_MOD),
/* RGB Brightness */
[2] = LAYOUT(LAYER_SWITCH, RGB_VAD, RGB_VAI),
/* RGB Hue */
[3] = LAYOUT(LAYER_SWITCH, RGB_HUD, RGB_HUI),
/* RGB Saturation */
[4] = LAYOUT(LAYER_SWITCH, RGB_SAD, RGB_SAI),
};
/* Lighting layers */
const rgblight_segment_t PROGMEM layer_indicator_0[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_WHITE},
{1, 4, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_1[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF},
{1, 1, HSV_WHITE},
{2, 3, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_2[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 2, HSV_OFF},
{2, 1, HSV_WHITE},
{3, 2, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_3[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 3, HSV_OFF},
{3, 1, HSV_WHITE},
{4, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_4[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 4, HSV_OFF},
{4, 1, HSV_WHITE}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
layer_indicator_0,
layer_indicator_1,
layer_indicator_2,
layer_indicator_3,
layer_indicator_4
);
void keyboard_post_init_user(void) {
/* Enable the LED layers */
rgblight_layers = rgb_layers;
}
/* Layer handler */
uint16_t layer = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LAYER_SWITCH:
if (record->event.pressed) {
if (layer > 0) {
layer_off(layer);
}
rgblight_unblink_layer(layer);
layer = (layer + 1) % 5;
rgblight_blink_layer_repeat(layer, 1000, 1);
if (layer > 0) {
layer_on(layer);
}
}
return false;
default:
return true;
}
}

View file

@ -0,0 +1,20 @@
/* Copyright 2022 Jason Wihardja
*
* 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
#define RGBLIGHT_LAYERS /* Enable lighting layers */
#define RGBLIGHT_LAYER_BLINK /* Enable lighting layer blink */

View file

@ -0,0 +1,109 @@
/* Copyright 2022 Jason Wihardja
*
* 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 {
LAYER_SWITCH = SAFE_RANGE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default */
[0] = LAYOUT(LAYER_SWITCH, C(KC_C), C(KC_V)),
/* RGB Toggle + Mode Change */
[1] = LAYOUT(LAYER_SWITCH, RGB_TOG, RGB_MOD),
/* RGB Brightness */
[2] = LAYOUT(LAYER_SWITCH, RGB_VAD, RGB_VAI),
/* RGB Hue */
[3] = LAYOUT(LAYER_SWITCH, RGB_HUD, RGB_HUI),
/* RGB Saturation */
[4] = LAYOUT(LAYER_SWITCH, RGB_SAD, RGB_SAI),
};
/* Lighting layers */
const rgblight_segment_t PROGMEM layer_indicator_0[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_WHITE},
{1, 4, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_1[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 1, HSV_OFF},
{1, 1, HSV_WHITE},
{2, 3, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_2[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 2, HSV_OFF},
{2, 1, HSV_WHITE},
{3, 2, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_3[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 3, HSV_OFF},
{3, 1, HSV_WHITE},
{4, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM layer_indicator_4[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 4, HSV_OFF},
{4, 1, HSV_WHITE}
);
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
layer_indicator_0,
layer_indicator_1,
layer_indicator_2,
layer_indicator_3,
layer_indicator_4
);
void keyboard_post_init_user(void) {
/* Enable the LED layers */
rgblight_layers = rgb_layers;
}
/* Layer handler */
uint16_t layer = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LAYER_SWITCH:
if (record->event.pressed) {
if (layer > 0) {
layer_off(layer);
}
rgblight_unblink_layer(layer);
layer = (layer + 1) % 5;
rgblight_blink_layer_repeat(layer, 1000, 1);
if (layer > 0) {
layer_on(layer);
}
}
return false;
default:
return true;
}
}

View file

@ -0,0 +1,33 @@
# The Key V2
![The Key V2](https://massdrop-s3.imgix.net/product-images/stack-overflow-the-key-v2-macropad/FP/vSqOp9eUQNGXW4zl3EVQ_7528-copy-pdp.jpg)
The Stack Overflow "The Key V2" is a 3 button macropad based on atmega32u4 with hot-swappble Kailh Black Box switches.
> Last year, we brought Stack Overflows iconic April Fools joke to life. Advertised as the new (and only) way to copy and paste on the site, it was an ultra-compact macropad called The Key. The punchline-turned product was a huge hit, selling over 10K units and earning a nearly 5-star average review. Now, were back with a second act: The Key V2. The same size as its portable predecessor, this punchline-turned-product has a few notable changes—including an acrylic case to accent its two built-in RGB LEDs. Plus, we made it hot-swappable, so you can easily change out the switches for a truly custom experience. And just like the original, a portion of all proceeds from The Key V2 will go to the data-driven social startup digitalundivided.
* Keyboard Maintainer: [zvecr](https://github.com/zvecr)
* Hardware Supported: Drop **The Key V2**
* Hardware Availability: Limited Release - https://drop.com/buy/stack-overflow-the-key-v2-macropad
Make example for this keyboard (after setting up your build environment):
# default provided by Drop / Stack Overflow
make drop/thekey/v2:default
# common modification where C = CTRL+C, V = CTRL+V
make drop/thekey/v2:url-copy-paste
Flashing example for this keyboard:
make drop/thekey/v2: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 in 3 ways:
* **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.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1 @@
# This file intentionally left blank