diff --git a/keyboards/dasbob/.gitattributes b/keyboards/dasbob/.gitattributes new file mode 100644 index 0000000000..dfe0770424 --- /dev/null +++ b/keyboards/dasbob/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/keyboards/dasbob/config.h b/keyboards/dasbob/config.h new file mode 100644 index 0000000000..e25e800a98 --- /dev/null +++ b/keyboards/dasbob/config.h @@ -0,0 +1,71 @@ +// Copyright 2022 grooovebob (@grooovebob) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +#define DIRECT_PINS { \ + { GP13, GP28, GP12, GP29, GP0 }, \ + { GP22, GP14, GP26, GP4, GP27}, \ + { GP21, GP23, GP7, GP20, GP6 }, \ + { GP16, GP9, GP8, NO_PIN, NO_PIN } \ +} + +#define DIRECT_PINS_RIGHT { \ + { GP0, GP29, GP12, GP28, GP13 }, \ + { GP27, GP4, GP26, GP14, GP22}, \ + { GP6, GP20, GP7, GP23, GP21 }, \ + { GP8, GP9, GP16, NO_PIN, NO_PIN } \ +} + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Serial Config */ +#define USE_SERIAL +#define SERIAL_USART_TX_PIN GP1 +#define MASTER_LEFT + +/* I2C Pin mapping */ +//#define I2C1_SDA_PIN GP7 +//#define I2C1_SCL_PIN GP6 +//#define I2C1_CLOCK_SPEED 400000 +//#define I2C_DRIVER I2CD2 + +// Set the mouse settings to a comfortable speed/accuracy trade-off, +// assuming a screen refresh rate of 60 Htz or higher +// The default is 50. This makes the mouse ~3 times faster and more accurate +#define MOUSEKEY_INTERVAL 16 +// The default is 20. Since we made the mouse about 3 times faster with the previous setting, +// give it more time to accelerate to max speed to retain precise control over short distances. +#define MOUSEKEY_TIME_TO_MAX 40 +// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive +#define MOUSEKEY_DELAY 100 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 + +// Pick good defaults for enabling homerow modifiers +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD +#define USB_VBUS_PIN 19 +#define AUDIO_PWM_DRIVER PWMD2 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B +#define AUDIO_STATE_TIMER GPTD4 +#define AUDIO_PIN GP5 +#ifdef AUDIO_ENABLE + #define AUDIO_INIT_DELAY + #define AUDIO_CLICKY + #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f + #define STARTUP_SONG SONG(STARTUP_SOUND) +#endif + +#define STARTUP_SOUND E__NOTE(_E6), E__NOTE(_A6), ED_NOTE(_E7), diff --git a/keyboards/dasbob/halconf.h b/keyboards/dasbob/halconf.h new file mode 100644 index 0000000000..0994e4abfb --- /dev/null +++ b/keyboards/dasbob/halconf.h @@ -0,0 +1,11 @@ +#pragma once + +#undef HAL_USE_SIO +#define HAL_USE_SIO TRUE + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/dasbob/info.json b/keyboards/dasbob/info.json new file mode 100644 index 0000000000..acb89d4d2f --- /dev/null +++ b/keyboards/dasbob/info.json @@ -0,0 +1,55 @@ +{ + "manufacturer": "grooovebob", + "keyboard_name": "dasbob", + "maintainer": "grooovebob", + "processor": "RP2040", + "bootloader": "rp2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, + { "matrix": [0, 2], "x": 2, "y": 0.125 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0.125 }, + { "matrix": [4, 0], "x": 8, "y": 0.25 }, + { "matrix": [4, 1], "x": 9, "y": 0.125 }, + { "matrix": [4, 2], "x": 10, "y": 0 }, + { "matrix": [4, 3], "x": 11, "y": 0.125 }, + { "matrix": [4, 4], "x": 12, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.125 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1.125 }, + { "matrix": [5, 0], "x": 8, "y": 1.25 }, + { "matrix": [5, 1], "x": 9, "y": 1.125 }, + { "matrix": [5, 2], "x": 10, "y": 1 }, + { "matrix": [5, 3], "x": 11, "y": 1.125 }, + { "matrix": [5, 4], "x": 12, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "x": 2, "y": 2.125 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2.125 }, + { "matrix": [6, 0], "x": 8, "y": 2.25 }, + { "matrix": [6, 1], "x": 9, "y": 2.125 }, + { "matrix": [6, 2], "x": 10, "y": 2 }, + { "matrix": [6, 3], "x": 11, "y": 2.125 }, + { "matrix": [6, 4], "x": 12, "y": 2.25 }, + { "matrix": [3, 0], "x": 3.5, "y": 3.25 }, + { "matrix": [3, 1], "x": 4.5, "y": 3.5 }, + { "matrix": [3, 2], "x": 5.5, "y": 3.75 }, + { "matrix": [7, 0], "x": 7.5, "y": 3.75 }, + { "matrix": [7, 1], "x": 8.5, "y": 3.5 }, + { "matrix": [7, 2], "x": 9.5, "y": 3.25 } + ] + } + } +} diff --git a/keyboards/dasbob/keymaps/default/keymap.c b/keyboards/dasbob/keymaps/default/keymap.c new file mode 100644 index 0000000000..c42119c85e --- /dev/null +++ b/keyboards/dasbob/keymaps/default/keymap.c @@ -0,0 +1,114 @@ +#include QMK_KEYBOARD_H + +enum dasbob_layers { + _QWERTY, + _LOWER, + _RAISE +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │DEL├───┐ ┌───┤ESC│ + * └───┤SPC├───┐ ┌───┤BSP├───┘ + * └───│LOW│ │RSE├───┘ + * └───┘ └───┘ + */ + + + [_QWERTY] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, RALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), RALT_T(KC_L), KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_DEL, KC_SPC, MO(1), MO(2), KC_BSPC, KC_ESC + ), + + [_LOWER] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + CK_RST, RALT_T(XXXXXXX), LCTL_T(XXXXXXX), LSFT_T(XXXXXXX), XXXXXXX, KC_MINS, LSFT_T(KC_EQL), LCTL_T(KC_GRV), RALT_T(KC_QUOT), KC_BSLS, + CK_TOGG, CK_UP, CK_DOWN, LCTL(KC_C), LCTL(KC_V), KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_TRNS, KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS + ), + + [_RAISE] = LAYOUT_split_3x5_3( + KC_ESC, KC_UP, XXXXXXX, XXXXXXX, CK_TOGG, KC_NUM_LOCK, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, + KC_LEFT, RALT_T(KC_DOWN), LCTL_T(KC_RGHT), LSFT_T(XXXXXXX), KC_LGUI, XXXXXXX, LSFT_T(KC_KP_4), LCTL_T(KC_KP_5), RALT_T(KC_KP_6), KC_KP_PLUS, + KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_PSCR, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_0, + KC_TRNS, KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS + ), + + +}; +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } +bool oled_task_user(void) { + if (is_keyboard_master()) { + static const char PROGMEM runqmk_logo[] = {0,0,0,0,152,152,152,152,152,152,24,24,24, + 152,152,24,24,24,152,152,24,24,152,152,24,24,24,152,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,127,127,13,13,29,63,103,64,0,63,127,96,96,96,127,63,0,0,127,127,7,12,56, + 127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,134,198,198,252,120,0,0,254,254, + 60,224,224,60,254,254,0,254,254,16,24,124,230,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,24,24,25,25,25,25,27,24,24,25,25,24,25,25,24,25,25,24,25,25,24,24,24,24,25,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0}; + + + oled_write_raw_P(runqmk_logo, sizeof(runqmk_logo)); + + led_t led_usb_state = host_keyboard_led_state(); + oled_set_cursor(6, 3); + oled_write_P(led_usb_state.num_lock ? PSTR("NUM") : PSTR(""), false); + oled_set_cursor(6, 2); + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + oled_set_cursor(6, 0); + oled_write_P(PSTR("by GroooveBob"), false); + oled_set_cursor(6, 1); + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Raise\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_set_cursor(6, 1); + oled_write_ln_P(PSTR("Undefined"), false); + } + } else { + static const char PROGMEM dasbob_logo[] = { + 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,192,192,192,192,192,192,192,192,192,192,192,128,128, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0,128,128,128,128,128,192,192,192,192,192, 0, 0, 0,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, + 0, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,252,255,255,255,255,255,255,255,255,255, 15,127,255,255,255,255,255,255,255,255,254,248, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,126,255,255,255,255,255,255,255,255,239,239,239,239,207,223,223,223,159, 63, 0, 7, 63,255,255,255,255,255,255,255,254, 14,254,255,255,255,255,255,255,255, 63,241,252,254,255,255,255,255,255,255,255, 31,255,255,255,255,255,255,255,255,255,255,128, 0, + 0, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255, 0, 15, 63,127,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,127, 63, 7, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255,128,252,253,249,249,251,251,251,251,251,255,255,255,255,255,255,255,255,127, 30, 0, 0, 0, 3, 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 7, 0, 63,255,255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + }; + oled_write_raw_P(dasbob_logo, sizeof(dasbob_logo)); + } + return false; +} +#endif diff --git a/keyboards/dasbob/keymaps/vial/config.h b/keyboards/dasbob/keymaps/vial/config.h new file mode 100644 index 0000000000..31fd3f7418 --- /dev/null +++ b/keyboards/dasbob/keymaps/vial/config.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x33, 0x7A, 0x81, 0x10, 0xBF, 0xCB, 0x21, 0x73} \ No newline at end of file diff --git a/keyboards/dasbob/keymaps/vial/keymap.c b/keyboards/dasbob/keymaps/vial/keymap.c new file mode 100644 index 0000000000..d006c8bdaa --- /dev/null +++ b/keyboards/dasbob/keymaps/vial/keymap.c @@ -0,0 +1,99 @@ +#include QMK_KEYBOARD_H + +enum dasbob_layers { + _LAYER0, + _LAYER1, + _LAYER2 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │DEL├───┐ ┌───┤ESC│ + * └───┤SPC├───┐ ┌───┤BSP├───┘ + * └───│LOW│ │RSE├───┘ + * └───┘ └───┘ + */ + + + [_LAYER0] = LAYOUT_split_3x5_3(KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, LSFT_T(KC_ESC), LCTL_T(KC_BSPC), MO(1), MO(2), LALT_T(KC_SPC), LSFT_T(KC_ENT)), + + [_LAYER1] = LAYOUT_split_3x5_3(KC_F11, KC_F12, KC_HOME, KC_DEL, KC_PGUP, KC_VOLU, KC_MINS, KC_UNDS, KC_EQL, KC_PLUS, KC_GRV, KC_TILD, KC_END, KC_TAB, KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MUTE, KC_LGUI, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_LAYER2] = LAYOUT_split_3x5_3(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + +}; +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } +bool oled_task_user(void) { + if (is_keyboard_master()) { + static const char PROGMEM runqmk_logo[] = {0,0,0,0,152,152,152,152,152,152,24,24,24, + 152,152,24,24,24,152,152,24,24,152,152,24,24,24,152,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,127,127,13,13,29,63,103,64,0,63,127,96,96,96,127,63,0,0,127,127,7,12,56, + 127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,252,134,198,198,252,120,0,0,254,254, + 60,224,224,60,254,254,0,254,254,16,24,124,230,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,24,24,25,25,25,25,27,24,24,25,25,24,25,25,24,25,25,24,25,25,24,24,24,24,25,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0}; + + + oled_write_raw_P(runqmk_logo, sizeof(runqmk_logo)); + + led_t led_usb_state = host_keyboard_led_state(); + oled_set_cursor(6, 3); + oled_write_P(led_usb_state.num_lock ? PSTR("NUM") : PSTR(""), false); + oled_set_cursor(6, 2); + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + oled_set_cursor(6, 0); + oled_write_P(PSTR("by GroooveBob"), false); + oled_set_cursor(6, 1); + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _LAYER0: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Default\n"), false); + break; + case _LAYER1: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Lower\n"), false); + break; + case _LAYER2: + oled_set_cursor(12, 1); + oled_write_P(PSTR("Raise\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_set_cursor(6, 1); + oled_write_ln_P(PSTR("Undefined"), false); + } + } else { + static const char PROGMEM dasbob_logo[] = { + 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,192,192,192,192,192,192,192,192,192,192,192,128,128, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0,128,128,128,128,128,192,192,192,192,192, 0, 0, 0,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, + 0, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,252,255,255,255,255,255,255,255,255,255, 15,127,255,255,255,255,255,255,255,255,254,248, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,126,255,255,255,255,255,255,255,255,239,239,239,239,207,223,223,223,159, 63, 0, 7, 63,255,255,255,255,255,255,255,254, 14,254,255,255,255,255,255,255,255, 63,241,252,254,255,255,255,255,255,255,255, 31,255,255,255,255,255,255,255,255,255,255,128, 0, + 0, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255, 0, 15, 63,127,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,127, 63, 7, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255,128,252,253,249,249,251,251,251,251,251,255,255,255,255,255,255,255,255,127, 30, 0, 0, 0, 3, 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 7, 0, 63,255,255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + }; + oled_write_raw_P(dasbob_logo, sizeof(dasbob_logo)); + } + return false; +} +#endif diff --git a/keyboards/dasbob/keymaps/vial/rules.mk b/keyboards/dasbob/keymaps/vial/rules.mk new file mode 100644 index 0000000000..db3ca3d496 --- /dev/null +++ b/keyboards/dasbob/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIAL_INSECURE = yes \ No newline at end of file diff --git a/keyboards/dasbob/keymaps/vial/vial.json b/keyboards/dasbob/keymaps/vial/vial.json new file mode 100644 index 0000000000..d6a258f39d --- /dev/null +++ b/keyboards/dasbob/keymaps/vial/vial.json @@ -0,0 +1,244 @@ +{ + "name": "dasbob", + "lighting": "none", + "vendorId": "0xFEED", + "productId": "0x0000", + "matrix": { + "rows": 8, + "cols": 5 + }, + "layouts": { + "keymap": [ + [{ + "x": 3 + }, + "0,3", + { + "x": 7.5 + }, + "4,2" + ], + [{ + "y": -0.75, + "x": 2 + }, + "0,2", + { + "x": 1 + }, + "0,4", + { + "x": 5.5 + }, + "4,1" + ], + [{ + "y": -0.9, + "x": 9.5 + }, + "4,0" + ], + [{ + "y": -0.3500000000000001, + "x": 3 + }, + "1,3", + { + "x": 7.5 + }, + "5,2" + ], + [{ + "y": -0.75, + "x": 2 + }, + "1,2", + { + "x": 1 + }, + "1,4", + { + "x": 5.5 + }, + "5,1" + ], + [{ + "y": -0.8999999999999999, + "x": 9.5 + }, + "5,0" + ], + [{ + "y": -0.3500000000000001, + "x": 3 + }, + "2,3", + { + "x": 7.5 + }, + "6,2" + ], + [{ + "y": -0.75, + "x": 2 + }, + "2,2", + { + "x": 1 + }, + "2,4", + { + "x": 5.5 + }, + "6,1" + ], + [{ + "y": -0.8999999999999999, + "x": 9.5 + }, + "6,0" + ], + [{ + "r": 8, + "rx": 3.75, + "ry": 6.5, + "y": -2.7, + "x": -1 + }, + "3,0" + ], + [{ + "r": 10, + "rx": 11.75, + "ry": 3.5, + "y": -1.25, + "x": 0.75 + }, + "6,3" + ], + [{ + "rx": 11.8, + "ry": 3.52, + "y": -2.27, + "x": 0.6999999999999993 + }, + "5,3" + ], + [{ + "rx": 12, + "ry": 2.2, + "y": -1.9500000000000002, + "x": 0.75 + }, + "4,3" + ], + [{ + "r": 15, + "rx": 2.5, + "ry": 3.75, + "y": -3.75, + "x": 10.75 + }, + "6,4" + ], + [{ + "rx": 5, + "ry": 4.5, + "y": -0.2999999999999998, + "x": -0.8499999999999996 + }, + "3,1" + ], + [{ + "rx": 14.18, + "ry": 3.4, + "y": -1.4, + "x": -0.4299999999999997 + }, + "5,4" + ], + [{ + "rx": 14.33, + "ry": 2.5, + "y": -1.5, + "x": -0.33000000000000007 + }, + "4,4" + ], + [{ + "r": 25, + "rx": 6.28, + "ry": 3.7, + "y": 1.0499999999999998, + "x": -0.5300000000000002 + }, + "3,2" + ], + [{ + "r": -25, + "rx": 8.25, + "ry": 3.8, + "y": 0.9500000000000002, + "x": -0.5 + }, + "7,0" + ], + [{ + "r": -15, + "rx": 0, + "ry": 3.75, + "y": -2.5 + }, + "0,0" + ], + [{ + "y": 0.009999999999999787 + }, + "1,0" + ], + [{ + "y": 0.020000000000000018 + }, + "2,0" + ], + [{ + "rx": 9, + "ry": 4, + "y": 0.20000000000000018, + "x": 0.15000000000000036 + }, + "7,1" + ], + [{ + "r": -10, + "rx": 0, + "ry": 3.5, + "y": -2.52, + "x": 1 + }, + "0,1" + ], + [{ + "y": 0.010000000000000009, + "x": 1 + }, + "1,1" + ], + [{ + "y": 0.009999999999999787, + "x": 1 + }, + "2,1" + ], + [{ + "r": -8, + "rx": 10, + "ry": 5.25, + "y": -1.4500000000000002, + "x": 0.5 + }, + "7,2" + ] + ] + } +} diff --git a/keyboards/dasbob/mcuconf.h b/keyboards/dasbob/mcuconf.h new file mode 100644 index 0000000000..19230fc90d --- /dev/null +++ b/keyboards/dasbob/mcuconf.h @@ -0,0 +1,15 @@ +#pragma once + +#include_next + +#undef RP_SIO_USE_UART0 +#define RP_SIO_USE_UART0 TRUE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE + +#undef RP_PWM_USE_PWM2 +#define RP_PWM_USE_PWM2 TRUE + +#undef RP_PWM_USE_TIM1 //hier bin ich gerade nicht mehr sicher ob das auch für Audio gebraucht wird +#define RP_PWM_USE_TIM1 TRUE diff --git a/keyboards/dasbob/readme.md b/keyboards/dasbob/readme.md new file mode 100644 index 0000000000..27d26c4167 --- /dev/null +++ b/keyboards/dasbob/readme.md @@ -0,0 +1,27 @@ +# dasbob + +![alt text](https://github.com/GroooveBob/DASBOB/blob/main/pic/dasbob.png) + +DASBOB is a 36-key diodeless split with splay and buzzer. + +* Keyboard Maintainer: [grooovebob](https://github.com/grooovebob) +* Hardware Supported: elite c +* Hardware Availability: https://github.com/GroooveBob/DASBOB + +Make example for this keyboard (after setting up your build environment): + + make dasbob:default + +Flashing example for this keyboard: + + make dasbob: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 key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dasbob/rules.mk b/keyboards/dasbob/rules.mk new file mode 100644 index 0000000000..eba8d4896e --- /dev/null +++ b/keyboards/dasbob/rules.mk @@ -0,0 +1,25 @@ + + +# Bootloader selection +BOOTLOADER = rp2040 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +UNICODE_ENABLE = yes # Unicode +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Use shared split_common code +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +LTO_ENABLE = yes +SERIAL_DRIVER = vendor +AUDIO_DRIVER = pwm_hardware