From b2e5017e74f22ea38a3a12e8b4a672ae7a077727 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 25 May 2023 23:08:12 +0100 Subject: Move `thekey` to Drop vendor folder (#21032) --- .../drop/thekey/keymaps/default-bepo/keymap.c | 24 +++++ .../drop/thekey/keymaps/default-macos/keymap.c | 23 +++++ keyboards/drop/thekey/keymaps/default/keymap.c | 7 ++ .../thekey/keymaps/url-copy-paste-bepo/keymap.c | 41 ++++++++ .../thekey/keymaps/url-copy-paste-macos/keymap.c | 39 ++++++++ .../drop/thekey/keymaps/url-copy-paste/keymap.c | 40 ++++++++ keyboards/drop/thekey/keymaps/via/keymap.c | 7 ++ keyboards/drop/thekey/keymaps/via/rules.mk | 1 + keyboards/drop/thekey/v1/info.json | 59 +++++++++++ keyboards/drop/thekey/v1/readme.md | 32 ++++++ keyboards/drop/thekey/v1/rules.mk | 1 + keyboards/drop/thekey/v2/config.h | 5 + keyboards/drop/thekey/v2/info.json | 54 ++++++++++ .../thekey/v2/keymaps/rgb-control-macos/config.h | 20 ++++ .../thekey/v2/keymaps/rgb-control-macos/keymap.c | 109 +++++++++++++++++++++ .../drop/thekey/v2/keymaps/rgb-control/config.h | 20 ++++ .../drop/thekey/v2/keymaps/rgb-control/keymap.c | 109 +++++++++++++++++++++ keyboards/drop/thekey/v2/readme.md | 33 +++++++ keyboards/drop/thekey/v2/rules.mk | 1 + 19 files changed, 625 insertions(+) create mode 100644 keyboards/drop/thekey/keymaps/default-bepo/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/default-macos/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/default/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/url-copy-paste-bepo/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/url-copy-paste-macos/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/url-copy-paste/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/via/keymap.c create mode 100644 keyboards/drop/thekey/keymaps/via/rules.mk create mode 100644 keyboards/drop/thekey/v1/info.json create mode 100644 keyboards/drop/thekey/v1/readme.md create mode 100644 keyboards/drop/thekey/v1/rules.mk create mode 100644 keyboards/drop/thekey/v2/config.h create mode 100644 keyboards/drop/thekey/v2/info.json create mode 100644 keyboards/drop/thekey/v2/keymaps/rgb-control-macos/config.h create mode 100644 keyboards/drop/thekey/v2/keymaps/rgb-control-macos/keymap.c create mode 100644 keyboards/drop/thekey/v2/keymaps/rgb-control/config.h create mode 100644 keyboards/drop/thekey/v2/keymaps/rgb-control/keymap.c create mode 100644 keyboards/drop/thekey/v2/readme.md create mode 100644 keyboards/drop/thekey/v2/rules.mk (limited to 'keyboards/drop') diff --git a/keyboards/drop/thekey/keymaps/default-bepo/keymap.c b/keyboards/drop/thekey/keymaps/default-bepo/keymap.c new file mode 100644 index 0000000000..b9d419a086 --- /dev/null +++ b/keyboards/drop/thekey/keymaps/default-bepo/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2022 Benjamin Collet + * + * 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 +#include "keymap_bepo.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT(KC_LCTL, BP_C, BP_V), + +}; diff --git a/keyboards/drop/thekey/keymaps/default-macos/keymap.c b/keyboards/drop/thekey/keymaps/default-macos/keymap.c new file mode 100644 index 0000000000..7e389e304e --- /dev/null +++ b/keyboards/drop/thekey/keymaps/default-macos/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Joe Maples + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT(KC_LGUI, KC_C, KC_V), + +}; diff --git a/keyboards/drop/thekey/keymaps/default/keymap.c b/keyboards/drop/thekey/keymaps/default/keymap.c new file mode 100644 index 0000000000..45aa069200 --- /dev/null +++ b/keyboards/drop/thekey/keymaps/default/keymap.c @@ -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) +}; diff --git a/keyboards/drop/thekey/keymaps/url-copy-paste-bepo/keymap.c b/keyboards/drop/thekey/keymaps/url-copy-paste-bepo/keymap.c new file mode 100644 index 0000000000..feafa02ac2 --- /dev/null +++ b/keyboards/drop/thekey/keymaps/url-copy-paste-bepo/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2022 Benjamin Collet + * + * 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 +#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; +} diff --git a/keyboards/drop/thekey/keymaps/url-copy-paste-macos/keymap.c b/keyboards/drop/thekey/keymaps/url-copy-paste-macos/keymap.c new file mode 100644 index 0000000000..57382dfc5f --- /dev/null +++ b/keyboards/drop/thekey/keymaps/url-copy-paste-macos/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Joe Maples + * + * 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 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; +} diff --git a/keyboards/drop/thekey/keymaps/url-copy-paste/keymap.c b/keyboards/drop/thekey/keymaps/url-copy-paste/keymap.c new file mode 100644 index 0000000000..18778d1946 --- /dev/null +++ b/keyboards/drop/thekey/keymaps/url-copy-paste/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Joe Maples + * + * 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 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; +} diff --git a/keyboards/drop/thekey/keymaps/via/keymap.c b/keyboards/drop/thekey/keymaps/via/keymap.c new file mode 100644 index 0000000000..45aa069200 --- /dev/null +++ b/keyboards/drop/thekey/keymaps/via/keymap.c @@ -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) +}; diff --git a/keyboards/drop/thekey/keymaps/via/rules.mk b/keyboards/drop/thekey/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/drop/thekey/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/drop/thekey/v1/info.json b/keyboards/drop/thekey/v1/info.json new file mode 100644 index 0000000000..f1f204e3a0 --- /dev/null +++ b/keyboards/drop/thekey/v1/info.json @@ -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} + ] + } + } +} diff --git a/keyboards/drop/thekey/v1/readme.md b/keyboards/drop/thekey/v1/readme.md new file mode 100644 index 0000000000..483a236b0a --- /dev/null +++ b/keyboards/drop/thekey/v1/readme.md @@ -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 programmer’s 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 Overflow’s 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 Fool’s 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 diff --git a/keyboards/drop/thekey/v1/rules.mk b/keyboards/drop/thekey/v1/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/drop/thekey/v1/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/drop/thekey/v2/config.h b/keyboards/drop/thekey/v2/config.h new file mode 100644 index 0000000000..ca6944c2c9 --- /dev/null +++ b/keyboards/drop/thekey/v2/config.h @@ -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} diff --git a/keyboards/drop/thekey/v2/info.json b/keyboards/drop/thekey/v2/info.json new file mode 100644 index 0000000000..7870599fe1 --- /dev/null +++ b/keyboards/drop/thekey/v2/info.json @@ -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} + ] + } + } +} diff --git a/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/config.h b/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/config.h new file mode 100644 index 0000000000..9249a85b64 --- /dev/null +++ b/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/config.h @@ -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 . + */ + +#pragma once + +#define RGBLIGHT_LAYERS /* Enable lighting layers */ +#define RGBLIGHT_LAYER_BLINK /* Enable lighting layer blink */ diff --git a/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/keymap.c b/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/keymap.c new file mode 100644 index 0000000000..f3699e752f --- /dev/null +++ b/keyboards/drop/thekey/v2/keymaps/rgb-control-macos/keymap.c @@ -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 . + */ + +#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; + } +} diff --git a/keyboards/drop/thekey/v2/keymaps/rgb-control/config.h b/keyboards/drop/thekey/v2/keymaps/rgb-control/config.h new file mode 100644 index 0000000000..9249a85b64 --- /dev/null +++ b/keyboards/drop/thekey/v2/keymaps/rgb-control/config.h @@ -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 . + */ + +#pragma once + +#define RGBLIGHT_LAYERS /* Enable lighting layers */ +#define RGBLIGHT_LAYER_BLINK /* Enable lighting layer blink */ diff --git a/keyboards/drop/thekey/v2/keymaps/rgb-control/keymap.c b/keyboards/drop/thekey/v2/keymaps/rgb-control/keymap.c new file mode 100644 index 0000000000..4246973654 --- /dev/null +++ b/keyboards/drop/thekey/v2/keymaps/rgb-control/keymap.c @@ -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 . + */ + +#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; + } +} diff --git a/keyboards/drop/thekey/v2/readme.md b/keyboards/drop/thekey/v2/readme.md new file mode 100644 index 0000000000..88fcd5480a --- /dev/null +++ b/keyboards/drop/thekey/v2/readme.md @@ -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 Overflow’s iconic April Fool’s 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, we’re 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 diff --git a/keyboards/drop/thekey/v2/rules.mk b/keyboards/drop/thekey/v2/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/drop/thekey/v2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank -- cgit v1.2.3