[Keyboard] Add nullbitsco SCRAMBLE (#11078) * Add SCRAMBLE * Make requested changes to PR * Add all layers to VIA keymap Implement drashna's PR feedback in order to avoid random data within the layers in VIA. * Make requested changes to PR Implement fauxpark's PR feedback to clean up readme.md and rules.mk. * Make changes based on PR feedback -Changed VIA layers to enum -Added info on how to enter the bootloader to readme
12 files changed, 413 insertions(+), 0 deletions(-) A keyboards/nullbitsco/scramble/config.h A keyboards/nullbitsco/scramble/info.json A keyboards/nullbitsco/scramble/keymaps/default/keymap.c A keyboards/nullbitsco/scramble/keymaps/oled/config.h A keyboards/nullbitsco/scramble/keymaps/oled/keymap.c A keyboards/nullbitsco/scramble/keymaps/oled/rules.mk A keyboards/nullbitsco/scramble/keymaps/via/keymap.c A keyboards/nullbitsco/scramble/keymaps/via/rules.mk A keyboards/nullbitsco/scramble/readme.md A keyboards/nullbitsco/scramble/rules.mk A keyboards/nullbitsco/scramble/scramble.c A keyboards/nullbitsco/scramble/scramble.h
A keyboards/nullbitsco/scramble/config.h => keyboards/nullbitsco/scramble/config.h +42 -0
@@ 0,0 1,42 @@ /* Copyright 2020 Jay Greco 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 0x6E61 #define PRODUCT_ID 0x6062 #define DEVICE_VER 0x0001 #define MANUFACTURER nullbits #define PRODUCT SCRAMBLE /* key matrix size */ #define MATRIX_ROWS 2 #define MATRIX_COLS 3 #define DIRECT_PINS {{D4,D5,B1}, {C3,C2,C1}} /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 10 /* Optional encoder pins */ #define ENCODERS_PAD_A { D6 } #define ENCODERS_PAD_B { D7 } #define TAP_CODE_DELAY 10
A keyboards/nullbitsco/scramble/info.json => keyboards/nullbitsco/scramble/info.json +39 -0
@@ 0,0 1,39 @@ { "keyboard_name": "SCRAMBLE switch tester", "keyboard_folder": "nullbitsco/scramble", "url": "https://nullbits.co/scramble", "maintainer": "jaygreco", "width": 3, "height": 2, "layouts": { "LAYOUT": { "layout": [ { "label": "n", "x": 0, "y": 0 }, { "x": 1, "y": 0 }, { "x": 2, "y": 0 }, { "x": 0, "y": 1 }, { "x": 1, "y": 1 }, { "x": 2, "y": 1 } ] } } }
A keyboards/nullbitsco/scramble/keymaps/default/keymap.c => keyboards/nullbitsco/scramble/keymaps/default/keymap.c +41 -0
@@ 0,0 1,41 @@ /* Copyright 2020 Jay Greco 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 #define _BASE 1 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18 ) }; void matrix_init_user(void) { set_scramble_LED(LED_OFF); } void encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } }
A keyboards/nullbitsco/scramble/keymaps/oled/config.h => keyboards/nullbitsco/scramble/keymaps/oled/config.h +22 -0
@@ 0,0 1,22 @@ /* Copyright 2020 Jay Greco 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 // Alternate boot pins for accessing the bootloader, // since the boot switch is blocked by the OLED. #define BOOTMAGIC_LITE_ROW 1 #define BOOTMAGIC_LITE_COLUMN 2
A keyboards/nullbitsco/scramble/keymaps/oled/keymap.c => keyboards/nullbitsco/scramble/keymaps/oled/keymap.c +85 -0
@@ 0,0 1,85 @@ /* Copyright 2020 Jay Greco 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 #define _BASE 1 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18 ) }; #ifdef OLED_DRIVER_ENABLE static void render_logo(void) { static const char PROGMEM nullbits_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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xfe, 0xff, 0xfe, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 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, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xe3, 0xe3, 0xc3, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xfe, 0xfe, 0xff, 0xfe, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xc0, 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, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, 0xff, 0xff, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x00, 0x1e, 0x3f, 0x7f, 0xff, 0xfb, 0xf3, 0xf1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x01, 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, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x7f, 0xf0, 0xf0, 0xf0, 0xf8, 0x78, 0x7e, 0x3f, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xfb, 0x7f, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; oled_write_raw_P(nullbits_logo, sizeof(nullbits_logo)); } void oled_task_user(void) { render_logo(); } #endif void matrix_init_user(void) { set_scramble_LED(LED_OFF); } void encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } }
A keyboards/nullbitsco/scramble/keymaps/oled/rules.mk => keyboards/nullbitsco/scramble/keymaps/oled/rules.mk +1 -0
A keyboards/nullbitsco/scramble/keymaps/via/keymap.c => keyboards/nullbitsco/scramble/keymaps/via/keymap.c +61 -0
@@ 0,0 1,61 @@ /* Copyright 2020 Jay Greco 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 layer_names { _BASE, _VIA1, _VIA2, _VIA3 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6 ), [_VIA1] = LAYOUT( _______, _______, _______, _______, _______, _______ ), [_VIA2] = LAYOUT( _______, _______, _______, _______, _______, _______ ), [_VIA3] = LAYOUT( _______, _______, _______, _______, _______, _______ ) }; void matrix_init_user(void) { set_scramble_LED(LED_OFF); } void encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } } \ No newline at end of file
A keyboards/nullbitsco/scramble/keymaps/via/rules.mk => keyboards/nullbitsco/scramble/keymaps/via/rules.mk +1 -0
A keyboards/nullbitsco/scramble/readme.md => keyboards/nullbitsco/scramble/readme.md +19 -0
@@ 0,0 1,19 @@ # SCRAMBLE  A 6-switch key tester macropad built by nullbits. [More info at nullbits.co](https://nullbits.co/scramble/) * Keyboard Maintainer: [Jay Greco](https://github.com/jaygreco) * Hardware Supported: SCRAMBLE Rev1 * Hardware Availability: [nullbits.co](https://nullbits.co/) Note: If you are seeing issues with MacOS and keyboard hangs after sleep, make sure `NO_USB_STARTUP_CHECK = yes` is set in your rules.mk. In order to enter the bootloader, hold switch #6 while plugging in the USB cable. The LED will stay on to indicate that it's in DFU mode. Flashing example for this keyboard: make nullbitsco/scramble:default 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).
A keyboards/nullbitsco/scramble/rules.mk => keyboards/nullbitsco/scramble/rules.mk +23 -0
@@ 0,0 1,23 @@ # MCU name MCU = atmega328p # Bootloader selection BOOTLOADER = USBasp # Build Options # change yes to no to disable # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Use rotary encoder
A keyboards/nullbitsco/scramble/scramble.c => keyboards/nullbitsco/scramble/scramble.c +40 -0
@@ 0,0 1,40 @@ /* Copyright 2020 Jay Greco 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 // place overrides here void set_scramble_LED(uint8_t mode) { switch(mode) { case LED_ON: setPinOutput(PIN_LED); writePin(PIN_LED, GPIO_STATE_HIGH); break; case LED_DIM: setPinInput(PIN_LED); break; case LED_OFF: setPinOutput(PIN_LED); writePin(PIN_LED, GPIO_STATE_LOW); break; default: break; } }
A keyboards/nullbitsco/scramble/scramble.h => keyboards/nullbitsco/scramble/scramble.h +39 -0
@@ 0,0 1,39 @@ /* Copyright 2020 Jay Greco * * 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" // Indication LED settings #define LED_ON 2 #define LED_DIM 1 #define LED_OFF 0 #define GPIO_STATE_LOW 0 #define GPIO_STATE_HIGH 1 #define PIN_LED B2 void set_scramble_LED(uint8_t mode); #define LAYOUT( \ K01, K02, K03, \ K11, K12, K13 \ ) { \ {K01, K02, K03}, \ {K11, K12, K13}, \ }