Co-authored-by: Ryan <fauxpark@gmail.com>pull/12983/head
@ -0,0 +1,94 @@ | |||
/* | |||
Copyright 2021 Kyle McCreery | |||
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 0x6D77 // mw = "MechWild" | |||
#define PRODUCT_ID 0x1705 | |||
#define DEVICE_VER 0x0301 | |||
#define MANUFACTURER MechWild | |||
#define PRODUCT MurphPad | |||
/* Key matrix size */ | |||
#define MATRIX_ROWS 6 | |||
#define MATRIX_COLS 5 | |||
/* Key matrix pins */ | |||
#define MATRIX_ROW_PINS { F5, B2, B3, B1, F7, F6 } | |||
#define MATRIX_COL_PINS { B5, D7, C6, D4, B6 } | |||
#define UNUSED_PINS | |||
/* Encoder pins */ | |||
#define ENCODERS_PAD_A { E6 } | |||
#define ENCODERS_PAD_B { B4 } | |||
/* Encoder resolution */ | |||
#define ENCODER_RESOLUTION 4 | |||
#define TAP_CODE_DELAY 10 | |||
/* COL2ROW, ROW2COL */ | |||
#define DIODE_DIRECTION COL2ROW | |||
#define OLED_FONT_H "keyboards/mechwild/murphpad/lib/murphpadfont.c" | |||
#define RGB_DI_PIN F4 | |||
#ifdef RGB_DI_PIN | |||
# define RGBLED_NUM 8 | |||
# 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 */ | |||
/*== all animations enable ==*/ | |||
# define RGBLIGHT_ANIMATIONS | |||
/*== or choose animations ==*/ | |||
//# define RGBLIGHT_EFFECT_BREATHING | |||
//# define RGBLIGHT_EFFECT_RAINBOW_MOOD | |||
//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL | |||
//# define RGBLIGHT_EFFECT_SNAKE | |||
//# define RGBLIGHT_EFFECT_KNIGHT | |||
//# define RGBLIGHT_EFFECT_CHRISTMAS | |||
//# define RGBLIGHT_EFFECT_STATIC_GRADIENT | |||
//# define RGBLIGHT_EFFECT_RGB_TEST | |||
//# define RGBLIGHT_EFFECT_ALTERNATING | |||
/*== customize breathing effect ==*/ | |||
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ | |||
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 | |||
/*==== use exp() and sin() ====*/ | |||
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 | |||
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 | |||
#endif | |||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | |||
#define DEBOUNCE 5 | |||
/* 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 | |||
/* disable these deprecated features by default */ | |||
#define NO_ACTION_MACRO | |||
#define NO_ACTION_FUNCTION | |||
/* Bootmagic Lite key configuration */ | |||
#define BOOTMAGIC_LITE_ROW 0 | |||
#define BOOTMAGIC_LITE_COLUMN 1 |
@ -0,0 +1,20 @@ | |||
{ | |||
"keyboard_name": "MechWild MurphPad", | |||
"url": "mechwild.com", | |||
"maintainer": "Kyle McCreery", | |||
"width": 5, | |||
"height": 7, | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{"label": "k00", "x": 1, "y": 0}, {"label": "k01", "x": 2, "y": 0}, {"label": "k02", "x": 3, "y": 0}, {"label": "k03", "x": 4, "y": 0}, | |||
{"label": "k10", "x": 1, "y": 1}, {"label": "k11", "x": 2, "y": 1}, {"label": "k12", "x": 3, "y": 1}, {"label": "k13", "x": 4, "y": 1}, | |||
{"label": "k20", "x": 1, "y": 2}, {"label": "k21", "x": 2, "y": 2}, {"label": "k22", "x": 3, "y": 2}, {"label": "k23", "x": 4, "y": 2}, | |||
{"label": "k30", "x": 0, "y": 3}, {"label": "k31", "x": 1, "y": 3}, {"label": "k32", "x": 2, "y": 3}, {"label": "k33", "x": 3, "y": 3}, {"label": "k34", "x": 4, "y": 3}, | |||
{"label": "k40", "x": 0, "y": 4}, {"label": "k41", "x": 1, "y": 4}, {"label": "k42", "x": 2, "y": 4}, {"label": "k43", "x": 3, "y": 4}, {"label": "k44", "x": 4, "y": 4}, | |||
{"label": "k50", "x": 0, "y": 5}, {"label": "k51", "x": 1, "y": 5}, {"label": "k52", "x": 2, "y": 5}, {"label": "k53", "x": 3, "y": 5}, {"label": "k54", "x": 4, "y": 5}, | |||
{"label": "BACK00", "x": 1, "y": 6}, {"label": "BACK01", "x": 2, "y": 6}, {"label": "BACK02", "x": 3, "y": 6} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,140 @@ | |||
/* Copyright 2021 Kyle McCreery | |||
* | |||
* 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 | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN1, | |||
_FN2, | |||
_FN3 | |||
}; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* Base */ | |||
[_BASE] = LAYOUT( | |||
KC_F1, KC_F2, KC_F3, KC_F4, | |||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | |||
KC_P7, KC_P8, KC_P9, KC_PPLS, | |||
KC_MUTE, KC_P4, KC_P5, KC_P6, KC_NO, | |||
MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, | |||
KC_BSPC, KC_P0, KC_NO, KC_PDOT, KC_NO, | |||
KC_F5, KC_F6, KC_F7 | |||
), | |||
[_FN1] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
RGB_HUD, RGB_SPI, RGB_HUI, _______, | |||
_______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_NO, | |||
_______, RGB_VAD, RGB_SPD, RGB_VAI, _______, | |||
_______, RGB_SAD, KC_NO, RGB_SAI, KC_NO, | |||
_______, _______, _______ | |||
), | |||
[_FN2] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______ | |||
), | |||
[_FN3] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______ | |||
) | |||
}; | |||
#ifdef ENCODER_ENABLE | |||
void encoder_update_user(uint8_t index, bool clockwise) { | |||
switch (index) { | |||
case 0: | |||
if (clockwise) { | |||
tap_code(KC_VOLU); | |||
} else { | |||
tap_code(KC_VOLD); | |||
} | |||
break; | |||
} | |||
} | |||
#endif | |||
#ifdef OLED_DRIVER_ENABLE | |||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { | |||
return OLED_ROTATION_270; // flips the display 270 degrees | |||
} | |||
static void render_logo(void) { // Render MechWild "MW" Logo | |||
static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00}; | |||
static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00}; | |||
static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00}; | |||
static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00}; | |||
oled_set_cursor(0,0); | |||
oled_write_P(logo_1, false); | |||
oled_set_cursor(0,1); | |||
oled_write_P(logo_2, false); | |||
oled_set_cursor(0,2); | |||
oled_write_P(logo_3, false); | |||
oled_set_cursor(0,3); | |||
oled_write_P(logo_4, false); | |||
} | |||
void oled_task_user(void) { | |||
render_logo(); | |||
oled_set_cursor(0,6); | |||
oled_write_ln_P(PSTR("Layer"), false); | |||
switch (get_highest_layer(layer_state)) { | |||
case _BASE: | |||
oled_write_ln_P(PSTR("Base"), false); | |||
break; | |||
case _FN1: | |||
oled_write_ln_P(PSTR("FN 1"), false); | |||
break; | |||
case _FN2: | |||
oled_write_ln_P(PSTR("FN 2"), false); | |||
break; | |||
case _FN3: | |||
oled_write_ln_P(PSTR("FN 3"), false); | |||
break; | |||
default: | |||
oled_write_ln_P(PSTR("Undef"), false); | |||
} | |||
oled_write_ln_P(PSTR(""), false); | |||
// Host Keyboard LED Status | |||
led_t led_state = host_keyboard_led_state(); | |||
oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); | |||
oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); | |||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); | |||
} | |||
#endif |
@ -0,0 +1,138 @@ | |||
/* Copyright 2021 Kyle McCreery | |||
* | |||
* 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 | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN1, | |||
_FN2, | |||
_FN3 | |||
}; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
/* Base */ | |||
[_BASE] = LAYOUT( | |||
KC_F1, KC_F2, KC_F3, KC_F4, | |||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | |||
KC_P7, KC_P8, KC_P9, KC_PPLS, | |||
KC_MUTE, KC_P4, KC_P5, KC_P6, KC_NO, | |||
MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, | |||
KC_BSPC, KC_P0, KC_NO, KC_PDOT, KC_NO, | |||
_______, _______, _______ | |||
), | |||
[_FN1] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
RGB_HUD, RGB_SPI, RGB_HUI, _______, | |||
_______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_NO, | |||
_______, RGB_VAD, RGB_SPD, RGB_VAI, _______, | |||
_______, RGB_SAD, KC_NO, RGB_SAI, KC_NO, | |||
_______, _______, _______ | |||
), | |||
[_FN2] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______ | |||
), | |||
[_FN3] = LAYOUT( | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, KC_NO, | |||
_______, _______, _______ | |||
) | |||
}; | |||
#ifdef ENCODER_ENABLE | |||
void encoder_update_user(uint8_t index, bool clockwise) { | |||
switch (index) { | |||
case 0: | |||
if (clockwise) { | |||
tap_code(KC_VOLU); | |||
} else { | |||
tap_code(KC_VOLD); | |||
} | |||
break; | |||
} | |||
} | |||
#endif | |||
#ifdef OLED_DRIVER_ENABLE | |||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { | |||
return OLED_ROTATION_270; // flips the display 270 degrees | |||
} | |||
static void render_logo(void) { // Render MechWild "MW" Logo | |||
static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00}; | |||
static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00}; | |||
static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00}; | |||
static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00}; | |||
oled_set_cursor(0,0); | |||
oled_write_P(logo_1, false); | |||
oled_set_cursor(0,1); | |||
oled_write_P(logo_2, false); | |||
oled_set_cursor(0,2); | |||
oled_write_P(logo_3, false); | |||
oled_set_cursor(0,3); | |||
oled_write_P(logo_4, false); | |||
} | |||
void oled_task_user(void) { | |||
render_logo(); | |||
oled_set_cursor(0,6); | |||
oled_write_ln_P(PSTR("Layer"), false); | |||
switch (get_highest_layer(layer_state)) { | |||
case _BASE: | |||
oled_write_ln_P(PSTR("Base"), false); | |||
break; | |||
case _FN1: | |||
oled_write_ln_P(PSTR("FN 1"), false); | |||
break; | |||
case _FN2: | |||
oled_write_ln_P(PSTR("FN 2"), false); | |||
break; | |||
case _FN3: | |||
oled_write_ln_P(PSTR("FN 3"), false); | |||
break; | |||
default: | |||
oled_write_ln_P(PSTR("Undef"), false); | |||
} | |||
oled_write_ln_P(PSTR(""), false); | |||
// Host Keyboard LED Status | |||
led_t led_state = host_keyboard_led_state(); | |||
oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); | |||
oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); | |||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); | |||
} | |||
#endif |
@ -0,0 +1,2 @@ | |||
VIA_ENABLE = yes | |||
LTO_ENABLE = yes |
@ -0,0 +1,244 @@ | |||
/* Copyright 2020 Kyle McCreery | |||
* | |||
* 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 "progmem.h" | |||
const unsigned char font[] PROGMEM = { | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, | |||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, | |||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, | |||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, | |||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, | |||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, | |||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, | |||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, | |||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00, | |||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, | |||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, | |||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00, | |||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, | |||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, | |||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, | |||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, | |||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, | |||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, | |||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, | |||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, | |||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, | |||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00, | |||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, | |||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, | |||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, | |||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, | |||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, | |||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, | |||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, | |||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, | |||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, | |||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00, | |||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, | |||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, | |||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00, | |||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00, | |||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00, | |||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, | |||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, | |||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, | |||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, | |||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00, | |||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00, | |||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, | |||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00, | |||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, | |||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, | |||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00, | |||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, | |||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, | |||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00, | |||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, | |||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00, | |||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00, | |||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, | |||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | |||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00, | |||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, | |||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00, | |||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00, | |||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00, | |||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, | |||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, | |||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, | |||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, | |||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, | |||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, | |||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, | |||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, | |||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, | |||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, | |||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, | |||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, | |||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, | |||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, | |||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, | |||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, | |||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, | |||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, | |||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, | |||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00, | |||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, | |||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, | |||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, | |||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, | |||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00, | |||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00, | |||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, | |||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, | |||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00, | |||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, | |||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00, | |||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00, | |||
0x00, 0x03, 0x07, 0x08, 0x00, 0x00, | |||
0x20, 0x54, 0x54, 0x78, 0x40, 0x00, | |||
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, | |||
0x38, 0x44, 0x44, 0x44, 0x28, 0x00, | |||
0x38, 0x44, 0x44, 0x28, 0x7E, 0x00, | |||
0x38, 0x54, 0x54, 0x54, 0x18, 0x00, | |||
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, | |||
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, | |||
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, | |||
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, | |||
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, | |||
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, | |||
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, | |||
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, | |||
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, | |||
0x38, 0x44, 0x44, 0x44, 0x38, 0x00, | |||
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, | |||
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, | |||
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, | |||
0x48, 0x54, 0x54, 0x54, 0x24, 0x00, | |||
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, | |||
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, | |||
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, | |||
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, | |||
0x44, 0x28, 0x10, 0x28, 0x44, 0x00, | |||
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, | |||
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, | |||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00, | |||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00, | |||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00, | |||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00, | |||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, | |||
0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF, | |||
0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE, | |||
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x01, 0x3E, | |||
0xE0, 0x80, 0x70, 0x0E, 0x01, 0x00, | |||
0x00, 0x00, 0x00, 0x07, 0x3C, 0xE0, | |||
0x80, 0x78, 0x07, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF, | |||
0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE, | |||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x01, 0x3E, 0xE0, 0x80, 0x70, 0x0E, | |||
0x01, 0x00, 0x00, 0x00, 0x00, 0x07, | |||
0x3C, 0xE0, 0x80, 0x78, 0x07, 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, 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, 0xF8, 0xFF, 0xFF, 0x1F, | |||
0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0, | |||
0xF8, 0xFF, 0xF7, 0x07, 0x07, 0x7F, | |||
0xFF, 0xFF, 0xF8, 0x00, 0xC0, 0x38, | |||
0x0C, 0x18, 0x60, 0x80, 0x00, 0x00, | |||
0x00, 0xF0, 0x0C, 0x04, 0xF4, 0x1C, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x80, 0xC0, 0xFC, 0xE6, 0xC3, 0xC1, | |||
0xC1, 0xC3, 0xE6, 0xFC, 0xC0, 0x80, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0xF8, 0xFF, 0xF7, 0x07, | |||
0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0, | |||
0xF8, 0x3F, 0x8F, 0x0F, 0x3F, 0xFF, | |||
0xFF, 0xFE, 0x80, 0xF0, 0x0C, 0x04, | |||
0xF4, 0x1C, 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, 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, 0x1F, 0x1F, 0x1F, 0x07, 0x00, | |||
0x00, 0x00, 0x00, 0x03, 0x1F, 0x1F, | |||
0x0F, 0x01, 0x03, 0x06, 0xF8, 0x00, | |||
0x07, 0x7F, 0x3F, 0x0E, 0xC1, 0x38, | |||
0x07, 0x0E, 0x70, 0x83, 0x1C, 0x60, | |||
0x1E, 0x03, 0xC0, 0x3E, 0x01, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x3F, 0x7F, 0xFF, 0xFF, 0xF9, 0xC0, | |||
0xC0, 0xF9, 0xFF, 0xFF, 0x7F, 0x3F, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x1F, 0x1F, 0x1F, 0x07, 0x06, | |||
0xF8, 0x00, 0x00, 0x73, 0x3F, 0x0F, | |||
0xC1, 0x38, 0x07, 0x0F, 0x70, 0x83, | |||
0x07, 0x7F, 0x1F, 0x03, 0xC0, 0x3E, | |||
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, 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, 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, | |||
}; |
@ -0,0 +1,17 @@ | |||
/* Copyright 2021 Kyle McCreery | |||
* | |||
* 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 "murphpad.h" |
@ -0,0 +1,48 @@ | |||
/* Copyright 2021 Kyle McCreery | |||
* | |||
* 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 ___ KC_NO | |||
/* This is a shortcut to help you visually see your layout. | |||
* | |||
* The first section contains all of the arguments representing the physical | |||
* layout of the board and position of the keys. | |||
* | |||
* The second converts the arguments into a two-dimensional array which | |||
* represents the switch matrix. | |||
*/ | |||
#define LAYOUT( \ | |||
k00, k01, k02, k03, \ | |||
k10, k11, k12, k13, \ | |||
k20, k21, k22, k23, \ | |||
k30, k31, k32, k33, k34, \ | |||
k40, k41, k42, k43, k44, \ | |||
k50, k51, k52, k53, k54, \ | |||
\ | |||
BACK00, BACK01, BACK02 \ | |||
\ | |||
) { \ | |||
{ BACK00, k00, k01, k02, k03 }, \ | |||
{ BACK01, k10, k11, k12, k13 }, \ | |||
{ BACK02, k20, k21, k22, k23 }, \ | |||
{ k30, k31, k32, k33, k34 }, \ | |||
{ k40, k41, k42, k43, k44 }, \ | |||
{ k50, k51, k52, k53, k54 } \ | |||
} |
@ -0,0 +1,19 @@ | |||
# MurphPad | |||
![murphpad](https://i.imgur.com/UmlpQ9ph.jpg) | |||
A DIY numpad kit with macro row, two additional keys, OLED, RGB Underglow, and encoder. | |||
* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) | |||
* Hardware Supported: MurphPad v2.0 | |||
* Hardware Availability: [MurphPad on MechWild](https://mechwild.com/product/murphpad/) | |||
Make example for this keyboard (after setting up your build environment): | |||
make mechwild/murphpad:default | |||
Flashing example for this keyboard: | |||
make mechwild/murphpad: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). |
@ -0,0 +1,24 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = caterina | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = lite # 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 = yes # Enable keyboard RGB underglow | |||
BLUETOOTH_ENABLE = no # Enable Bluetooth | |||
AUDIO_ENABLE = no # Audio output | |||
ENCODER_ENABLE = yes # Enable encoder | |||
OLED_DRIVER_ENABLE = yes # Enable OLED Screen |