~ruther/qmk_firmware

8190a795ed3133ccab69b71f01104996080411bc — James Young 4 years ago d3963a6
DracuLad: add Configurator data and rework layout macro (#12727)

* add info.json file

* refactor keymaps for readability

* rework layout macro

Arranges the layout macro and keycodes to resemble the physical layout.

* readme touch-up

Corrections to capitalization and spelling, and removal of extra white space.
M keyboards/draculad/draculad.h => keyboards/draculad/draculad.h +2 -1
@@ 25,7 25,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  L00, L01, L02, L03, L04,           R00, R01, R02, R03, R04, \
  L10, L11, L12, L13, L14,           R10, R11, R12, R13, R14, \
  L20, L21, L22, L23, L24,           R20, R21, R22, R23, R24, \
                 L30, L31, L32, L33, R30, R31, R32, R33 \
                      L30,           R33,      \
                 L31, L32, L33, R30, R31, R32  \
  ) \
  { \
    { L00, L01, L02, L03, L04 }, \

A keyboards/draculad/info.json => keyboards/draculad/info.json +59 -0
@@ 0,0 1,59 @@
{
    "keyboard_name": "DracuLad",
    "url": "",
    "maintainer": "MangoIV",
    "width": 13,
    "height": 5.5,
    "layouts": {
        "LAYOUT": {
            "layout": [
                {"label":"L00", "x":0, "y":1},
                {"label":"L01", "x":1, "y":0.35},
                {"label":"L02", "x":2, "y":0},
                {"label":"L03", "x":3, "y":0.35},
                {"label":"L04", "x":4, "y":0.5},

                {"label":"R00", "x":8, "y":0.5},
                {"label":"R01", "x":9, "y":0.35},
                {"label":"R02", "x":10, "y":0},
                {"label":"R03", "x":11, "y":0.35},
                {"label":"R04", "x":12, "y":1},

                {"label":"L10", "x":0, "y":2},
                {"label":"L11", "x":1, "y":1.35},
                {"label":"L12", "x":2, "y":1},
                {"label":"L13", "x":3, "y":1.35},
                {"label":"L14", "x":4, "y":1.5},

                {"label":"R10", "x":8, "y":1.5},
                {"label":"R11", "x":9, "y":1.35},
                {"label":"R12", "x":10, "y":1},
                {"label":"R13", "x":11, "y":1.35},
                {"label":"R14", "x":12, "y":2},

                {"label":"L20", "x":0, "y":3},
                {"label":"L21", "x":1, "y":2.35},
                {"label":"L22", "x":2, "y":2},
                {"label":"L23", "x":3, "y":2.35},
                {"label":"L24", "x":4, "y":2.5},

                {"label":"R20", "x":8, "y":2.5},
                {"label":"R21", "x":9, "y":2.35},
                {"label":"R22", "x":10, "y":2},
                {"label":"R23", "x":11, "y":2.35},
                {"label":"R24", "x":12, "y":3},

                {"label":"L30", "x":4.25, "y":3.5},
                {"label":"R33", "x":7.75, "y":3.5},

                {"label":"L31", "x":3, "y":4.5},
                {"label":"L32", "x":4, "y":4.5},
                {"label":"L33", "x":5, "y":4.5},

                {"label":"R30", "x":7, "y":4.5},
                {"label":"R31", "x":8, "y":4.5},
                {"label":"R32", "x":9, "y":4.5}
            ]
        }
    }
}

M keyboards/draculad/keymaps/default/keymap.c => keyboards/draculad/keymaps/default/keymap.c +31 -26
@@ 30,35 30,40 @@ enum layer_number {
char wpm_as_str[8];

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_BASE] =  LAYOUT(
    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,
    LSFT_T(KC_Z), KC_X, KC_C,    KC_V,    KC_B,                             KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
                        KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), LT(_NUM,KC_DEL), LT(_SYMB, KC_ENT), KC_CAPS, TG(_ADJ)
                    ), 
  [_NUM] = LAYOUT(
    KC_1,         KC_2, KC_3,    KC_4,    KC_5,                             KC_6, KC_7, KC_8,    KC_9,   KC_0,
    KC_TAB, XXXXXXX, KC_VOLD,    KC_VOLU,    XXXXXXX,                      KC_LEFT, KC_DOWN, KC_UP ,   KC_RIGHT ,  KC_QUOT,
    KC_LSFT, XXXXXXX, XXXXXXX,    KC_MUTE,    RESET,                        KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
                        XXXXXXX, XXXXXXX, KC_LALT, XXXXXXX, _______, KC_ENT, KC_NO, KC_NO
    ), 
  [_SYMB] = LAYOUT(
    KC_ESC,         KC_F1, KC_F2,    KC_F3,    KC_F4,                             XXXXXXX, XXXXXXX, XXXXXXX,    KC_EQL,   KC_MINS,
    XXXXXXX, KC_F5, KC_F6,    KC_F7,    KC_F8,                      KC_LBRC, KC_RBRC, XXXXXXX ,   KC_GRV ,  KC_BSLS,
    KC_LSFT, KC_F9, KC_F10,    KC_F11,    KC_F12,                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
                        XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NO, KC_NO
    [_BASE] =  LAYOUT(
        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,
        LSFT_T(KC_Z), KC_X,    KC_C,    KC_V,    KC_B,                                                 KC_N,             KC_M,    KC_COMM, KC_DOT,  RSFT_T(KC_SLSH),
                                                 KC_MUTE,                                              TG(_ADJ),
                                        KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC),    LT(_NUM,KC_DEL), LT(_SYMB,KC_ENT), KC_CAPS
    ),
    [_NUM] = LAYOUT(
        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                         KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
        KC_TAB,  XXXXXXX, KC_VOLD, KC_VOLU, XXXXXXX,                      KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_QUOT,
        KC_LSFT, XXXXXXX, XXXXXXX, KC_MUTE, RESET,                        KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_RSFT,
                                            XXXXXXX,                      KC_NO,
                                   XXXXXXX, KC_LALT, XXXXXXX,    _______, KC_ENT,  KC_NO
    ),
    [_SYMB] = LAYOUT(
        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,                        XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL,  KC_MINS,
        XXXXXXX, KC_F5,   KC_F6,   KC_F7,   KC_F8,                        KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV,  KC_BSLS,
        KC_LSFT, KC_F9,   KC_F10,  KC_F11,  KC_F12,                       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
                                            XXXXXXX,                      KC_NO,
                                   KC_LALT, XXXXXXX, XXXXXXX,    XXXXXXX, _______, KC_NO
    ),
    [_MUS] = LAYOUT(
   KC_LCTL, XXXXXXX,    XXXXXXX,  XXXXXXX,XXXXXXX,              XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,   XXXXXXX,
    KC_LALT, KC_BTN3, KC_BTN2,   KC_BTN1 ,    XXXXXXX,                        XXXXXXX, XXXXXXX, XXXXXXX ,   XXXXXXX ,  XXXXXXX,
    KC_LSFT, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
    ), 
        KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                                            XXXXXXX,                      XXXXXXX,
                                   XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX
    ),
    [_ADJ] = LAYOUT(
    RESET,         XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,   XXXXXXX,
    EEP_RST, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        RGB_MOD, RGB_HUI, RGB_SAI ,   RGB_VAI ,  RGB_TOG,
    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
        RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_MOD,  RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
                                            XXXXXXX,                      _______,
                                   XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX
    )
};


M keyboards/draculad/keymaps/pimoroni/keymap.c => keyboards/draculad/keymaps/pimoroni/keymap.c +29 -24
@@ 42,35 42,40 @@ enum custom_keycodes {
char wpm_as_str[8];

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_BASE] =  LAYOUT(
    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,
    LSFT_T(KC_Z), KC_X, KC_C,    KC_V,    KC_B,                             KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
                        KC_MUTE, KC_LCTL, LALT_T(KC_BSPC), LT(_MUS, KC_SPC), KC_NO, LT(_NUM,KC_ENT), LT(_SYMB, KC_DEL),  TG(_ADJ)
                    ),
  [_NUM] = LAYOUT(
    KC_1,         KC_2, KC_3,    KC_4,    KC_5,                             KC_6, KC_7, KC_8,    KC_9,   KC_0,
    KC_TAB, KC_MUTE, KC_VOLD,    KC_VOLU,    XXXXXXX,                      KC_LEFT, KC_DOWN, KC_UP ,   KC_RIGHT ,  KC_QUOT,
    KC_LSFT, XXXXXXX, KC_MPRV,    KC_MNXT,    RESET,                        KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
                        XXXXXXX, KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT, KC_NO
    [_BASE] =  LAYOUT(
        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,
        LSFT_T(KC_Z), KC_X,    KC_C,    KC_V,    KC_B,                                         KC_N,            KC_M,             KC_COMM, KC_DOT,  RSFT_T(KC_SLSH),
                                                 KC_MUTE,                                      TG(_ADJ),
                                        KC_LCTL, LALT_T(KC_BSPC), LT(_MUS,KC_SPC),    KC_NO,   LT(_NUM,KC_ENT), LT(_SYMB,KC_DEL)
    ),
  [_SYMB] = LAYOUT(
    KC_ESC,         KC_F1, KC_F2,    KC_F3,    KC_F4,                             XXXXXXX, XXXXXXX, XXXXXXX,    KC_EQL,   KC_MINS,
    XXXXXXX, KC_F5, KC_F6,    KC_F7,    KC_F8,                      KC_LBRC, KC_RBRC, XXXXXXX ,   KC_GRV ,  KC_BSLS,
    KC_LSFT, KC_F9, KC_F10,    KC_F11,    KC_F12,                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
                        XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO, _______, KC_NO
    [_NUM] = LAYOUT(
        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                         KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
        KC_TAB,  KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX,                      KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_QUOT,
        KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET,                        KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_RSFT,
                                            XXXXXXX,                      KC_NO,
                                   KC_LCTL, KC_LALT, XXXXXXX,    KC_NO,   _______, KC_ENT
    ),
    [_SYMB] = LAYOUT(
        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,                        XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL,  KC_MINS,
        XXXXXXX, KC_F5,   KC_F6,   KC_F7,   KC_F8,                        KC_LBRC, KC_RBRC, XXXXXXX, KC_GRV,  KC_BSLS,
        KC_LSFT, KC_F9,   KC_F10,  KC_F11,  KC_F12,                       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
                                            XXXXXXX,                      KC_NO,
                                   KC_LALT, XXXXXXX, XXXXXXX,    XXXXXXX, KC_NO,   _______
    ),
    [_MUS] = LAYOUT(
   KC_LCTL, XXXXXXX,    XXXXXXX,  XXXXXXX,XXXXXXX,              XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,   XXXXXXX,
    KC_LALT, KC_BTN3, KC_BTN2,   KC_BTN1 ,    BALL_SCR,                        XXXXXXX, XXXXXXX, XXXXXXX ,   XXXXXXX ,  XXXXXXX,
    KC_LSFT, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
        KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, BALL_SCR,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                                            XXXXXXX,                       XXXXXXX,
                                   XXXXXXX, XXXXXXX,  XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX
    ),
    [_ADJ] = LAYOUT(
    RESET,         XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                BALL_HUI, BALL_WHT, BALL_DEC,    XXXXXXX,   XXXXXXX,
    EEP_RST, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        RGB_MOD, RGB_HUI, RGB_SAI ,   RGB_VAI ,  RGB_TOG,
    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,    XXXXXXX,                        RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
                        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
        RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX,
        EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_MOD,  RGB_HUI,  RGB_SAI,  RGB_VAI, RGB_TOG,
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_RMOD, RGB_HUD,  RGB_SAD,  RGB_VAD, _______,
                                            XXXXXXX,                      _______,
                                   XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX,  XXXXXXX
    )
};


M keyboards/draculad/readme.md => keyboards/draculad/readme.md +15 -17
@@ 3,31 3,29 @@
![DracuLad](https://github.com/mangoiv/draculad/blob/master/pictures/rev1/both_sides_showcase.jpg?raw=true)

*A 34-36 key split keyboard*
- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders. 
- bright RGB Underglow with ws2812b LEDs
- one ssd1306 OLED per side
- aggressive pinky stagger similar to the kyria but with an alternative thumb cluster to raise comfort for large hands
- support for mx and choc switches
- 36 keys, two of them can be replaced by rotary encoders making it support 34-36 keys and 2-4 encoders.
- bright RGB Underglow with WS2812B LEDs
- one SSD1306 OLED per side
- aggressive pinky stagger similar to the Kyria but with an alternative thumb cluster to raise comfort for large hands
- support for MX and Choc switches

* keyboard Maintainer: [MangoIV](https://github.com/MangoIV)
* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout)
* Hardware availability: [check my github](https://github.com/MangoIV)
* Keyboard Maintainer: [MangoIV](https://github.com/MangoIV)
* Hardware Supported: [DracuLad PCBs and cases](https://github.com/MangoIV/dracuLad), [the Pimoroni trackball](https://shop.pimoroni.com/products/trackball-breakout)
* Hardware Availability: [MangoIV's GitHub](https://github.com/MangoIV/dracuLad)

Make example for this keyboard (after setting up your build env):
    

    make draculad:default
    
or for the version using the pimoroni trackball

or for the version using the Pimoroni trackball:

    make draculad:pimoroni
    
Flashing example for dfu and catarina respectively (replace default with the name of your keymap)
    

Flashing example for DFU and Caterina respectively (replace `default` with the name of your keymap):

    make draculad:default:dfu
    
    make draculad:default:flash
    

When flashing the first time using handedness by eeprom, use the [qmk guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom)
When flashing the first time using handedness by EEPROM, use the [QMK guide for that topic](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom).

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).