diff options
author | Drashna Jaelre <drashna@live.com> | 2021-09-11 23:21:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-11 23:21:28 -0700 |
commit | f6a67c10bd0fe59d0b468ba870bb511d9787a34c (patch) | |
tree | 2c15f6dfbbc06498d04b81cb8ab5cfcb8b8102ce /keyboards/redox_media | |
parent | 5af17997359d91ee0a7340d1e17514fe8c8a46f1 (diff) | |
download | qmk_firmware-f6a67c10bd0fe59d0b468ba870bb511d9787a34c.tar.gz qmk_firmware-f6a67c10bd0fe59d0b468ba870bb511d9787a34c.zip |
[Keyboard] Fix Redox Media compilation errors (#14345)
Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'keyboards/redox_media')
-rw-r--r-- | keyboards/redox_media/config.h | 60 | ||||
-rw-r--r-- | keyboards/redox_media/keymaps/default/config.h | 26 | ||||
-rw-r--r-- | keyboards/redox_media/keymaps/default/keymap.c | 69 | ||||
-rw-r--r-- | keyboards/redox_media/keymaps/default/readme.md | 6 | ||||
-rw-r--r-- | keyboards/redox_media/readme.md | 57 | ||||
-rw-r--r-- | keyboards/redox_media/redox_media.c | 38 | ||||
-rw-r--r-- | keyboards/redox_media/redox_media.h | 46 | ||||
-rw-r--r-- | keyboards/redox_media/rules.mk | 28 |
8 files changed, 330 insertions, 0 deletions
diff --git a/keyboards/redox_media/config.h b/keyboards/redox_media/config.h new file mode 100644 index 0000000000..70fb2aa164 --- /dev/null +++ b/keyboards/redox_media/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2021 Shiftux <shiftux@gmail.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 0x0000 +#define DEVICE_VER 0x0100 +#define MANUFACTURER shiftux +#define PRODUCT The Redox Keyboard + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 7 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6, D1 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + +/* 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 + +#define ENCODERS_PAD_A { F4 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 4
\ No newline at end of file diff --git a/keyboards/redox_media/keymaps/default/config.h b/keyboards/redox_media/keymaps/default/config.h new file mode 100644 index 0000000000..5da1f9060a --- /dev/null +++ b/keyboards/redox_media/keymaps/default/config.h @@ -0,0 +1,26 @@ +/* +Copyright 2021 Shiftux <shiftux@gmail.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 + +/* Use I2C or Serial, not both */ +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ +// #define MASTER_LEFT +#define EE_HANDS
\ No newline at end of file diff --git a/keyboards/redox_media/keymaps/default/keymap.c b/keyboards/redox_media/keymaps/default/keymap.c new file mode 100644 index 0000000000..a8b479159f --- /dev/null +++ b/keyboards/redox_media/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* +Copyright 2021 Shiftux <shiftux@gmail.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 layers { + _QWERTZ, // standard layer + _SYMB, // symbols layer +}; + +enum custom_keycodes { + QWERTZ = SAFE_RANGE, + SYMB, +}; + +// Shortcut to make keymap more readable +#define KC_BKSL KC_BSLASH +#define SYM_L MO(_SYMB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTZ] = LAYOUT( + // ┌────────┐ ┌────────┬────────┐ + KC_MUTE, KC_MPLY, KC_MNXT, + //┌────────┬────────┬────────┬───┼────┬───┼────┬────────┐ ┌──┼─────┬──┼─────┬──┼─────┬────────┬────────┬────────┐ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NUBS, KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_EQL, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_PGUP, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ + KC_LCTL, SYM_L, KC_LALT, KC_GRV, KC_DEL, KC_LGUI, KC_SPC, KC_ENT, KC_SPC, KC_RALT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT + //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ + ), + + + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┐ + KC_MPRV, XXXXXXX, XXXXXXX, + //┌────────┬────────┬────────┬───┼────┬───┼────┬────────┐ ┌──┼─────┬──┼─────┬──┼─────┬────────┬────────┬────────┐ + RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5, KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_F12 , XXXXXXX ,XXXXXXX ,XXXXXXX, KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,KC_BSLS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX, XXXXXXX ,XXXXXXX ,KC_TILD ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX + //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/redox_media/keymaps/default/readme.md b/keyboards/redox_media/keymaps/default/readme.md new file mode 100644 index 0000000000..53a080fd5a --- /dev/null +++ b/keyboards/redox_media/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# German keymap for Redox-media + +A layout for the Redox MEDIA revision. +The layout acommodates the German umlauts and the punctuation symbols +at their usual positions relative to the other alphabetic characters. +Apart from that it stays close to the default english Redox layout. diff --git a/keyboards/redox_media/readme.md b/keyboards/redox_media/readme.md new file mode 100644 index 0000000000..511c604451 --- /dev/null +++ b/keyboards/redox_media/readme.md @@ -0,0 +1,57 @@ +# The Redox Media Keyboard + +I've taken the Redox keyboard and modified the SCAD files as well as the QMK layout to include media and scroll features: +- 3 Media buttons + - Play / Pause button + - Next track + - Mute (previous track on secondary layout) +- Volume knob +- Scroll wheel on the keyboard + +For an in-depth report see [my page](https://shiftux.org/making_projects/keyboard.html) and a [video](https://youtu.be/Cwkf7HFcUkY) about the build process, design, printing, programing and assembly. + +## IMAGE + +### The build +I've used 2 [Sparkfun Pro Micros (5V)](https://www.sparkfun.com/products/12640) and a single hand master setup providing power and serial connection via a TRS jack. + +### The pro micro and how to flash it +To try out your pro micro and setup your environment to flash such a device I recommend following [this guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/all). It will take you through the install and setup and provides a first easy to flash program so you can test your setup quickly. + +Whenever you can't program one of the pro micros or the USB-COM port is not found on your computer, it most probably means that is is not in "bootloader mode". What you want to do is connect the GND and RST pin twice to reset the device and put it into bootloader mode (details [here](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/troubleshooting-and-faq#ts-serial)). + +### Compiling and flashing + +Obviously start by [installing QMK](https://docs.qmk.fm/#/getting_started_build_tools?id=set-up-your-environment). + +- Before flashing the firmware you should make sure that it compiles. Thus assuring that your QMK setup works fine and the keyboard and keymap files are correct: +``` +qmk compile -kb redox_media -km default +``` +The generated `.hex` file is output to the QMK root. + +Once you are comfortable flashing your Pro Micros and your setup works continue with the following steps: + +- I've had the most success with using the `EE_HANDS` setting and flashing the EEPROM to the left and right halves of the keyboard respectively. To do this start with flashing the EEPROM of the 2 pro micros separately by setting the bootloader flag in the flash command (the pro micro uses the avrdude bootloader): +``` +qmk flash -kb redox/media -km media_ch -bl avrdude-split-left +qmk flash -kb redox/media -km media_ch -bl avrdude-split-right +``` +Note that you need to reset the pro micro to set it to bootloader mode before you can flash it: connect GND to RST twice in quick succession (750ms), then you have 8 seconds to upload the new eep file. + +### Adapting the keyboard layout + +Copy the `keymaps/media_ch` folder to `keymaps/media_<your-layout>` and adapt the `keymap.c` file in there. + +I recommend testing the key codes with the [QMK tester](https://config.qmk.fm/#/test) and then adapting the `keymap.c` file accordingly. + +Finally compile your new layout from the QMK root with: +``` +qmk compile -kb redox/media -km media_<your-layout> +``` +and proceed to flashing it equivalent to the above instructions. + +### CAD files and additional resources +See [here](https://shiftux.org/making_projects/keyboard.html) for a detailed build description and video. + +You can find the CAD and SCAD files, I created here: https://github.com/shiftux/redox-media-keyboard diff --git a/keyboards/redox_media/redox_media.c b/keyboards/redox_media/redox_media.c new file mode 100644 index 0000000000..ca5a70dd49 --- /dev/null +++ b/keyboards/redox_media/redox_media.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 Shiftux <shiftux@gmail.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 "redox_media.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_WH_D); + } else { + tap_code(KC_WH_U); + } + } + return true; +} diff --git a/keyboards/redox_media/redox_media.h b/keyboards/redox_media/redox_media.h new file mode 100644 index 0000000000..6188aa9a10 --- /dev/null +++ b/keyboards/redox_media/redox_media.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 Shiftux <shiftux@gmail.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 "quantum.h" + +// rows are doubled +// clang-format off +#define LAYOUT( \ + R5C6, R11C6, R11C5, \ + R0C0, R0C1, R0C2, R0C3, R0C4, R0C5, R6C5, R6C4, R6C3, R6C2, R6C1, R6C0, \ + R1C0, R1C1, R1C2, R1C3, R1C4, R1C5, R0C6, R6C6, R7C5, R7C4, R7C3, R7C2, R7C1, R7C0, \ + R2C0, R2C1, R2C2, R2C3, R2C4, R2C5, R1C6, R7C6, R8C5, R8C4, R8C3, R8C2, R8C1, R8C0, \ + R3C0, R3C1, R3C2, R3C3, R3C4, R3C5, R2C6, R3C6, R9C6, R8C6, R9C5, R9C4, R9C3, R9C2, R9C1, R9C0, \ + R4C0, R4C1, R4C2, R4C3, R4C4, R4C5, R4C6, R10C6, R10C5, R10C4, R10C3, R10C2, R10C1, R10C0 \ +) \ +{ \ + { R0C0, R0C1, R0C2, R0C3, R0C4, R0C5, R0C6 }, \ + { R1C0, R1C1, R1C2, R1C3, R1C4, R1C5, R1C6 }, \ + { R2C0, R2C1, R2C2, R2C3, R2C4, R2C5, R2C6 }, \ + { R3C0, R3C1, R3C2, R3C3, R3C4, R3C5, R3C6 }, \ + { R4C0, R4C1, R4C2, R4C3, R4C4, R4C5, R4C6 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R5C6 }, \ +\ + { R6C0, R6C1, R6C2, R6C3, R6C4, R6C5, R6C6 }, \ + { R7C0, R7C1, R7C2, R7C3, R7C4, R7C5, R7C6 }, \ + { R8C0, R8C1, R8C2, R8C3, R8C4, R8C5, R8C6 }, \ + { R9C0, R9C1, R9C2, R9C3, R9C4, R9C5, R9C6 }, \ + { R10C0, R10C1, R10C2, R10C3, R10C4, R10C5, R10C6 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R11C5, R11C6 } \ +} diff --git a/keyboards/redox_media/rules.mk b/keyboards/redox_media/rules.mk new file mode 100644 index 0000000000..9186485523 --- /dev/null +++ b/keyboards/redox_media/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 +# 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 = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes + +# Disable unsupported hardware +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no +RGBLIGHT_SUPPORTED = no |