~unwox/kbrds

e68c986eba58438ad57edaff426e121c6f4ece3f — unwox 1 year, 10 months ago 10c56b1
update planck configuration
M README.md => README.md +2 -1
@@ 4,6 4,7 @@ cd qmk_firmware
make git-submodule
git clone https://git.sr.ht/~unwox/kbrds keyboards/unwox
# make sure udev has needed rules: https://docs.qmk.fm/#/faq_build?id=linux-udev-rules
./util/docker_cmd.sh make unwox/crkbd:default
./util/docker_cmd.sh make unwox/crkbd:default:flash
# or ./util/docker_cmd.sh make unwox/planck/rev6:default:flash
# press RESET button on keyboard
```

M planck/config.h => planck/config.h +62 -55
@@ 1,64 1,71 @@
#pragma once
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>

#define E1M1  \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_D4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_C4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_BF3), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_B3 ), \
    Q__NOTE(_C4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_D4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_C4 ), \
    Q__NOTE(_E3 ), \
    Q__NOTE(_E3 ), \
    H__NOTE(_BF3),

#ifdef AUDIO_ENABLE
    #define STARTUP_SONG SONG(E1M1)
    // #define STARTUP_SONG SONG(NO_SOUND)
#endif
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.

/*
 * MIDI options
 */
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.

/* enable basic MIDI features:
   - MIDI notes can be sent when in Music mode is on
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#define MIDI_BASIC
#pragma once

#include "config_common.h"

/* enable advanced MIDI features:
   - MIDI notes can be added to the keymap
   - Octave shift and transpose
   - Virtual sustain, portamento, and modulation wheel
   - etc.
*/
//#define MIDI_ADVANCED
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12

/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }

#define QMK_ESC_OUTPUT F1
#define QMK_ESC_INPUT D5
#define QMK_LED     E6
#define QMK_SPEAKER C6

#define AUDIO_VOICES
#define AUDIO_PIN C6

#define BACKLIGHT_PIN B7

/* 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

/* 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

/*
 * Feature disable options
 *  These options are also useful to firmware size reduction.
 */

/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
/* disable debug print */
//#define NO_DEBUG

// Most tactile encoders have detents every 4 stages
// #define ENCODER_RESOLUTION 4
/* disable print */
//#define NO_PRINT

#define TAPPING_TERM 200
#define TAPPING_FORCE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

A planck/info.json => planck/info.json +107 -0
@@ 0,0 1,107 @@
{
  "url": "https://olkb.com/planck",
  "maintainer": "jackhumbert",
  "layouts": {
    "LAYOUT_planck_1x2uC": {
      "layout": [
        { "w": 1, "x": 0, "y": 0 },
        { "w": 1, "x": 1, "y": 0 },
        { "w": 1, "x": 2, "y": 0 },
        { "w": 1, "x": 3, "y": 0 },
        { "w": 1, "x": 4, "y": 0 },
        { "w": 1, "x": 5, "y": 0 },
        { "w": 1, "x": 6, "y": 0 },
        { "w": 1, "x": 7, "y": 0 },
        { "w": 1, "x": 8, "y": 0 },
        { "w": 1, "x": 9, "y": 0 },
        { "w": 1, "x": 10, "y": 0 },
        { "w": 1, "x": 11, "y": 0 },
        { "w": 1, "x": 0, "y": 1 },
        { "w": 1, "x": 1, "y": 1 },
        { "w": 1, "x": 2, "y": 1 },
        { "w": 1, "x": 3, "y": 1 },
        { "w": 1, "x": 4, "y": 1 },
        { "w": 1, "x": 5, "y": 1 },
        { "w": 1, "x": 6, "y": 1 },
        { "w": 1, "x": 7, "y": 1 },
        { "w": 1, "x": 8, "y": 1 },
        { "w": 1, "x": 9, "y": 1 },
        { "w": 1, "x": 10, "y": 1 },
        { "w": 1, "x": 11, "y": 1 },
        { "w": 1, "x": 0, "y": 2 },
        { "w": 1, "x": 1, "y": 2 },
        { "w": 1, "x": 2, "y": 2 },
        { "w": 1, "x": 3, "y": 2 },
        { "w": 1, "x": 4, "y": 2 },
        { "w": 1, "x": 5, "y": 2 },
        { "w": 1, "x": 6, "y": 2 },
        { "w": 1, "x": 7, "y": 2 },
        { "w": 1, "x": 8, "y": 2 },
        { "w": 1, "x": 9, "y": 2 },
        { "w": 1, "x": 10, "y": 2 },
        { "w": 1, "x": 11, "y": 2 },
        { "w": 1, "x": 0, "y": 3 },
        { "w": 1, "x": 1, "y": 3 },
        { "w": 1, "x": 2, "y": 3 },
        { "w": 1, "x": 3, "y": 3 },
        { "w": 1, "x": 4, "y": 3 },
        { "w": 2, "x": 5, "y": 3 },
        { "w": 1, "x": 7, "y": 3 },
        { "w": 1, "x": 8, "y": 3 },
        { "w": 1, "x": 9, "y": 3 },
        { "w": 1, "x": 10, "y": 3 },
        { "w": 1, "x": 11, "y": 3 } ]
    },
    "LAYOUT_ortho_4x12": {
      "layout": [
        { "w": 1, "x": 0, "y": 0 },
        { "w": 1, "x": 1, "y": 0 },
        { "w": 1, "x": 2, "y": 0 },
        { "w": 1, "x": 3, "y": 0 },
        { "w": 1, "x": 4, "y": 0 },
        { "w": 1, "x": 5, "y": 0 },
        { "w": 1, "x": 6, "y": 0 },
        { "w": 1, "x": 7, "y": 0 },
        { "w": 1, "x": 8, "y": 0 },
        { "w": 1, "x": 9, "y": 0 },
        { "w": 1, "x": 10, "y": 0 },
        { "w": 1, "x": 11, "y": 0 },
        { "w": 1, "x": 0, "y": 1 },
        { "w": 1, "x": 1, "y": 1 },
        { "w": 1, "x": 2, "y": 1 },
        { "w": 1, "x": 3, "y": 1 },
        { "w": 1, "x": 4, "y": 1 },
        { "w": 1, "x": 5, "y": 1 },
        { "w": 1, "x": 6, "y": 1 },
        { "w": 1, "x": 7, "y": 1 },
        { "w": 1, "x": 8, "y": 1 },
        { "w": 1, "x": 9, "y": 1 },
        { "w": 1, "x": 10, "y": 1 },
        { "w": 1, "x": 11, "y": 1 },
        { "w": 1, "x": 0, "y": 2 },
        { "w": 1, "x": 1, "y": 2 },
        { "w": 1, "x": 2, "y": 2 },
        { "w": 1, "x": 3, "y": 2 },
        { "w": 1, "x": 4, "y": 2 },
        { "w": 1, "x": 5, "y": 2 },
        { "w": 1, "x": 6, "y": 2 },
        { "w": 1, "x": 7, "y": 2 },
        { "w": 1, "x": 8, "y": 2 },
        { "w": 1, "x": 9, "y": 2 },
        { "w": 1, "x": 10, "y": 2 },
        { "w": 1, "x": 11, "y": 2 },
        { "w": 1, "x": 0, "y": 3 },
        { "w": 1, "x": 1, "y": 3 },
        { "w": 1, "x": 2, "y": 3 },
        { "w": 1, "x": 3, "y": 3 },
        { "w": 1, "x": 4, "y": 3 },
        { "w": 1, "x": 5, "y": 3 },
        { "w": 1, "x": 6, "y": 3 },
        { "w": 1, "x": 7, "y": 3 },
        { "w": 1, "x": 8, "y": 3 },
        { "w": 1, "x": 9, "y": 3 },
        { "w": 1, "x": 10, "y": 3 },
        { "w": 1, "x": 11, "y": 3 } ]
    }
  }
}

D planck/keymap.c => planck/keymap.c +0 -46
@@ 1,46 0,0 @@
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = KEYMAP(
      MEH(KC_NO),     KC_Q,  KC_W,    KC_E,    KC_R,       KC_T,           KC_Y,   KC_U,         KC_I,    KC_O,   KC_P,    KC_LBRACKET,
      LCTL_T(KC_ESC), KC_A,  KC_S,    KC_D,    LT(5,KC_F), LT(6,KC_G),     KC_H,   KC_J,         KC_K,    KC_L,   KC_SCLN, KC_QUOT,
      KC_NO,          KC_Z,  KC_X,    KC_C,    LT(4,KC_V), KC_B,           KC_N,   KC_M,         KC_COMM, KC_DOT, KC_SLSH, KC_BSLASH,
      KC_NO,          KC_NO, KC_LALT, KC_BSPC, KC_LGUI,    LSFT_T(KC_SPC), KC_ENT, LT(3,KC_TAB), KC_RGUI, KC_NO,  KC_NO,   KC_NO
  ),
  [1] = KEYMAP(
      MEH(KC_NO),     KC_Q,  KC_W,    KC_F,    KC_P,       KC_B,           KC_J,   KC_L,         KC_U,    KC_Y,    KC_SCLN, KC_LBRACKET,
      LCTL_T(KC_ESC), KC_A,  KC_R,    KC_S,    LT(5,KC_T), LT(6,KC_G),     KC_M,   KC_N,         KC_E,    KC_I,    KC_O,    KC_QUOT,
      KC_NO,          KC_Z,  KC_X,    KC_C,    LT(4,KC_D), KC_V,           KC_K,   KC_H,         KC_COMM, KC_DOT,  KC_SLSH, KC_BSLASH,
      KC_NO,          KC_NO, KC_LALT, KC_BSPC, KC_LGUI,    LSFT_T(KC_SPC), KC_ENT, LT(3,KC_TAB), KC_RGUI, KC_NO,   KC_NO,   KC_NO
  ),
  [2] = KEYMAP(
      MEH(KC_NO),     KC_Q,  KC_W,    KC_E,    KC_R,    KC_T,   KC_Y,   KC_U,         KC_I,    KC_O,   KC_P,    KC_LBRACKET,
      KC_LCTL,        KC_A,  KC_S,    KC_D,    KC_F,    KC_G,   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_N,   KC_M,         KC_COMM, KC_DOT, KC_SLSH, KC_BSLASH,
      KC_ESC,         KC_NO, KC_LALT, KC_BSPC, KC_LGUI, KC_SPC, KC_ENT, KC_TAB,       KC_RGUI, KC_NO,  KC_NO,   DF(0)
  ),
  [3] = KEYMAP(
      KC_NO, KC_NO,   KC_LT,   KC_LCBR, KC_DLR,  KC_TILD, KC_PERC, KC_AT,   KC_RCBR, KC_GT,   KC_NO,   KC_NO,
      KC_NO, KC_QUOT, KC_EQL,  KC_MINS, KC_LPRN, KC_PLUS, KC_ASTR, KC_RPRN, KC_UNDS, KC_SLSH, KC_DQUO, KC_NO,
      KC_NO, KC_GRV,  KC_QUES, KC_HASH, KC_LBRC, KC_PIPE, KC_AMPR, KC_RBRC, KC_DLR,  KC_EXLM, KC_CIRC, KC_NO,
      KC_NO, KC_NO,   KC_NO,   KC_BSPC, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO
  ),
  [4] = KEYMAP(
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO, KC_NO
  ),
  [5] = KEYMAP(
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_7,   KC_8,  KC_9,  KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_0,  KC_4,   KC_5,  KC_6,  KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_1,   KC_2,  KC_3,  KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_0,  KC_DOT, KC_NO, KC_NO, KC_NO, KC_NO
  ),
  [6] = KEYMAP(
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, DF(0), DF(1), DF(2), KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
      KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
  )
};

A planck/keymaps/default/config.h => planck/keymaps/default/config.h +66 -0
@@ 0,0 1,66 @@
#pragma once

/* #define E1M1  \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_D4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_C4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_BF3), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_B3 ), \ */
/*     Q__NOTE(_C4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_D4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_C4 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     Q__NOTE(_E3 ), \ */
/*     H__NOTE(_BF3), */

/* #ifdef AUDIO_ENABLE */
/*     #define STARTUP_SONG SONG(E1M1) */
/*     #define STARTUP_SONG SONG(NO_SOUND) */
/* #endif */

/*
 * MIDI options
 */

/* enable basic MIDI features:
   - MIDI notes can be sent when in Music mode is on
*/

/* #define MIDI_BASIC */

/* enable advanced MIDI features:
   - MIDI notes can be added to the keymap
   - Octave shift and transpose
   - Virtual sustain, portamento, and modulation wheel
   - etc.
*/
//#define MIDI_ADVANCED

/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2

// Most tactile encoders have detents every 4 stages
// #define ENCODER_RESOLUTION 4

#define TAPPING_TERM 200
#define TAPPING_FORCE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT

#define MK_KINETIC_SPEED

A planck/keymaps/default/keymap.c => planck/keymaps/default/keymap.c +65 -0
@@ 0,0 1,65 @@
#include QMK_KEYBOARD_H

#define _____ KC_NO

enum layers {
  _QWERTY,
  _COLEMAK,
  _GAMES,
  _SYMBOLS,
  _ARROWS,
  _NUMPAD,
  _MOUSE,
  _MENU
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_QWERTY] = LAYOUT_planck_grid(
MEH(_____),     KC_Q,  KC_W,    KC_E,    KC_R,             KC_T,               KC_Y,   KC_U,         KC_I,    KC_O,   KC_P,    KC_LBRC,
LCTL_T(KC_ESC), KC_A,  KC_S,    KC_D,    LT(_NUMPAD,KC_F), LT(_MENU,KC_G),     KC_H,   KC_J,         KC_K,    KC_L,   KC_SCLN, KC_QUOT,
_____,          KC_Z,  KC_X,    KC_C,    LT(_ARROWS,KC_V), KC_B,               KC_N,   KC_M,         KC_COMM, KC_DOT, KC_SLSH, KC_BACKSLASH,
_____,          _____, KC_LALT, KC_LGUI, LSFT_T(KC_SPC),   LT(_MOUSE,KC_BSPC), KC_ENT, LT(3,KC_TAB), KC_RGUI, _____,  _____,   _____
  ),
  [_COLEMAK] = LAYOUT_planck_grid(
MEH(_____),     KC_Q,  KC_W,    KC_F,    KC_P,             KC_B,               KC_J,   KC_L,         KC_U,    KC_Y,    KC_SCLN, KC_LBRC,
LCTL_T(KC_ESC), KC_A,  KC_R,    KC_S,    LT(_NUMPAD,KC_F), LT(_MENU,KC_G),     KC_M,   KC_N,         KC_E,    KC_I,    KC_O,    KC_QUOT,
_____,          KC_Z,  KC_X,    KC_C,    LT(_ARROWS,KC_V), KC_V,               KC_K,   KC_H,         KC_COMM, KC_DOT,  KC_SLSH, KC_BACKSLASH,
_____,          _____, KC_LALT, KC_LGUI, LSFT_T(KC_SPC),   LT(_MOUSE,KC_BSPC), KC_ENT, LT(3,KC_TAB), KC_RGUI, _____,   _____,   _____
  ),
  [_GAMES] = LAYOUT_planck_grid(
MEH(_____),     KC_Q,  KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,
KC_LCTL,        KC_A,  KC_S,    KC_D,    KC_F,    KC_G,    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_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH, KC_BACKSLASH,
KC_ESC,         _____, KC_LALT, KC_LGUI, KC_SPC,  KC_BSPC, KC_ENT, KC_TAB, KC_RGUI, _____,  _____,   DF(_QWERTY)
  ),
  [_SYMBOLS] = LAYOUT_planck_grid(
_____, _____,   KC_LT,   KC_LCBR, KC_DLR,  KC_TILD, KC_PERC, KC_AT,   KC_RCBR, KC_GT,   _____,   _____,
_____, KC_QUOT, KC_EQL,  KC_MINS, KC_LPRN, KC_PLUS, KC_ASTR, KC_RPRN, KC_UNDS, KC_SLSH, KC_DQUO, _____,
_____, KC_GRV,  KC_QUES, KC_HASH, KC_LBRC, KC_PIPE, KC_AMPR, KC_RBRC, KC_DLR,  KC_EXLM, KC_CIRC, _____,
_____, _____,   _____,   KC_BSPC, _____,   _____,   _____,   _____,   _____,   _____,   _____,   _____
  ),
  [_ARROWS] = LAYOUT_planck_grid(
_____, _____, _____, _____, _____, _____, _____,   _____,   _____, _____,   _____, _____,
_____, _____, _____, _____, _____, _____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _____, _____,
_____, _____, _____, _____, _____, _____, _____,   _____,   _____, _____,   _____, _____,
_____, _____, _____, _____, _____, _____, _____,   _____,   _____, _____,   _____, _____
  ),
  [_NUMPAD] = LAYOUT_planck_grid(
_____, _____, _____, _____, _____, _____, _____, KC_7,   KC_8,  KC_9,  _____, _____,
_____, _____, _____, _____, _____, _____, KC_0,  KC_4,   KC_5,  KC_6,  _____, _____,
_____, _____, _____, _____, _____, _____, _____, KC_1,   KC_2,  KC_3,  _____, _____,
_____, _____, _____, _____, _____, _____, KC_0,  KC_DOT, _____, _____, _____, _____
  ),
  [_MOUSE] = LAYOUT(
_____, _____, _____, _____, _____, _____,              KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, _____, _____,
_____, _____, _____, _____, _____, _____,              KC_MS_LEFT,    KC_MS_DOWN,    KC_MS_UP,    KC_MS_RIGHT,    _____, _____,
_____, _____, _____, _____, _____, _____,              _____,         _____,         _____,       _____,          _____, _____,
_____, _____, _____, _____, _____, _____,              KC_MS_BTN2,    KC_MS_BTN1,    _____,       _____,          _____, _____
  ),
  [_MENU] = LAYOUT_planck_grid(
 _____, _____, _____, _____, _____, _____, _____, _____,       _____,        _____,      _____, _____,
 _____, _____, _____, _____, _____, _____, _____, DF(_QWERTY), DF(_COLEMAK), DF(_GAMES), _____, _____,
 _____, _____, _____, _____, _____, _____, _____, _____,       _____,        _____,      _____, _____,
 _____, _____, _____, _____, _____, _____, _____, _____,       _____,        _____,      _____, _____
  ),
};

R planck/rules.mk => planck/keymaps/default/rules.mk +0 -0
A planck/planck.c => planck/planck.c +39 -0
@@ 0,0 1,39 @@
#include "planck.h"

__attribute__ ((weak))
void matrix_init_kb(void) {
	// Turn status LED on, with the exception of THK
	#if defined(__AVR_ATmega32U4__)
	setPinOutput(E6);
	writePinHigh(E6);
	#endif

	matrix_init_user();
}

const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_planck_grid(
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11
);

#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
    if (!encoder_update_user(index, clockwise)) { return false; }
    if (get_highest_layer(layer_state) > 0) {
        if (clockwise) {
            tap_code_delay(KC_VOLU, 10);
        } else {
            tap_code_delay(KC_VOLD, 10);
        }
    } else {
        if (clockwise) {
            tap_code(KC_PGDN);
        } else {
            tap_code(KC_PGUP);
        }
    }
    return true;
}
#endif

A planck/planck.h => planck/planck.h +20 -0
@@ 0,0 1,20 @@
/* Copyright 2018 Jack Humbert <jack.humb@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"
#include "rev6.h"

A planck/rev6/chconf.h => planck/rev6/chconf.h +29 -0
@@ 0,0 1,29 @@
/* Copyright 2020 QMK
 *
 * 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/>.
 */

/*
 * This file was auto-generated by:
 *    `qmk chibios-confmigrate -i keyboards/planck/rev6/chconf.h -r platforms/chibios/QMK_PROTON_C/configs/chconf.h`
 */

#pragma once

#define CH_CFG_ST_RESOLUTION 16

#define CH_CFG_ST_FREQUENCY 10000

#include_next <chconf.h>


A planck/rev6/config.h => planck/rev6/config.h +114 -0
@@ 0,0 1,114 @@
/*
 * Copyright 2018 Jack Humbert <jack.humb@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

#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6

/*
 * Keyboard Matrix Assignments
 *
 * Change this to how you wired your keyboard
 * COLS: AVR pins used for columns, left to right
 * ROWS: AVR pins used for rows, top to bottom
 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
 *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
 *
*/
/* Note: These are not used for arm boards. They're here purely as documentation. */
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS

#define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 }


#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }

#define DIP_SWITCH_PINS { B14, A15, A0, B9 }

#define MUSIC_MAP
#undef AUDIO_VOICES
#undef AUDIO_PIN
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
// #define DEBOUNCE 6

/* 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

/*
 * Force NKRO
 *
 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
 * makefile for this to work.)
 *
 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
 * until the next keyboard reset.
 *
 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
 * fully operational during normal computer usage.
 *
 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
 * power-up.
 *
 */
//#define FORCE_NKRO

/*
 * Feature disable options
 *  These options are also useful to firmware size reduction.
 */

/* disable debug print */
//#define NO_DEBUG

/* disable print */
//#define NO_PRINT

/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

/*
 * WS2812 Underglow Matrix options
 */
#define RGB_DI_PIN A1
#define RGBLED_NUM 9
#define RGB_MATRIX_LED_COUNT RGBLED_NUM

#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
#define WS2812_DMA_CHANNEL 2

#define RGB_DISABLE_WHEN_USB_SUSPENDED

A planck/rev6/info.json => planck/rev6/info.json +268 -0
@@ 0,0 1,268 @@
{
  "keyboard_name": "Planck",
  "manufacturer": "OLKB",
  "url": "https://olkb.com/planck",
  "maintainer": "jackhumbert",
  "usb": {
    "vid": "0x03A8",
    "pid": "0xA4F9",
    "device_version": "0.0.6"
  },
  "layouts": {
    "LAYOUT_ortho_4x12": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 1, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6, "y": 0 },
        { "x": 7, "y": 0 },
        { "x": 8, "y": 0 },
        { "x": 9, "y": 0 },
        { "x": 10, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 0, "y": 1 },
        { "x": 1, "y": 1 },
        { "x": 2, "y": 1 },
        { "x": 3, "y": 1 },
        { "x": 4, "y": 1 },
        { "x": 5, "y": 1 },
        { "x": 6, "y": 1 },
        { "x": 7, "y": 1 },
        { "x": 8, "y": 1 },
        { "x": 9, "y": 1 },
        { "x": 10, "y": 1 },
        { "x": 11, "y": 1 },
        { "x": 0, "y": 2 },
        { "x": 1, "y": 2 },
        { "x": 2, "y": 2 },
        { "x": 3, "y": 2 },
        { "x": 4, "y": 2 },
        { "x": 5, "y": 2 },
        { "x": 6, "y": 2 },
        { "x": 7, "y": 2 },
        { "x": 8, "y": 2 },
        { "x": 9, "y": 2 },
        { "x": 10, "y": 2 },
        { "x": 11, "y": 2 },
        { "x": 0, "y": 3 },
        { "x": 1, "y": 3 },
        { "x": 2, "y": 3 },
        { "x": 3, "y": 3 },
        { "x": 4, "y": 3 },
        { "x": 5, "y": 3 },
        { "x": 6, "y": 3 },
        { "x": 7, "y": 3 },
        { "x": 8, "y": 3 },
        { "x": 9, "y": 3 },
        { "x": 10, "y": 3 },
        { "x": 11, "y": 3 }
      ]
    },
    "LAYOUT_planck_1x2uC": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 1, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6, "y": 0 },
        { "x": 7, "y": 0 },
        { "x": 8, "y": 0 },
        { "x": 9, "y": 0 },
        { "x": 10, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 0, "y": 1 },
        { "x": 1, "y": 1 },
        { "x": 2, "y": 1 },
        { "x": 3, "y": 1 },
        { "x": 4, "y": 1 },
        { "x": 5, "y": 1 },
        { "x": 6, "y": 1 },
        { "x": 7, "y": 1 },
        { "x": 8, "y": 1 },
        { "x": 9, "y": 1 },
        { "x": 10, "y": 1 },
        { "x": 11, "y": 1 },
        { "x": 0, "y": 2 },
        { "x": 1, "y": 2 },
        { "x": 2, "y": 2 },
        { "x": 3, "y": 2 },
        { "x": 4, "y": 2 },
        { "x": 5, "y": 2 },
        { "x": 6, "y": 2 },
        { "x": 7, "y": 2 },
        { "x": 8, "y": 2 },
        { "x": 9, "y": 2 },
        { "x": 10, "y": 2 },
        { "x": 11, "y": 2 },
        { "x": 0, "y": 3 },
        { "x": 1, "y": 3 },
        { "x": 2, "y": 3 },
        { "x": 3, "y": 3 },
        { "x": 4, "y": 3 },
        { "x": 5, "y": 3, "w": 2 },
        { "x": 7, "y": 3 },
        { "x": 8, "y": 3 },
        { "x": 9, "y": 3 },
        { "x": 10, "y": 3 },
        { "x": 11, "y": 3 }
      ]
    },
    "LAYOUT_planck_1x2uL": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 1, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6, "y": 0 },
        { "x": 7, "y": 0 },
        { "x": 8, "y": 0 },
        { "x": 9, "y": 0 },
        { "x": 10, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 0, "y": 1 },
        { "x": 1, "y": 1 },
        { "x": 2, "y": 1 },
        { "x": 3, "y": 1 },
        { "x": 4, "y": 1 },
        { "x": 5, "y": 1 },
        { "x": 6, "y": 1 },
        { "x": 7, "y": 1 },
        { "x": 8, "y": 1 },
        { "x": 9, "y": 1 },
        { "x": 10, "y": 1 },
        { "x": 11, "y": 1 },
        { "x": 0, "y": 2 },
        { "x": 1, "y": 2 },
        { "x": 2, "y": 2 },
        { "x": 3, "y": 2 },
        { "x": 4, "y": 2 },
        { "x": 5, "y": 2 },
        { "x": 6, "y": 2 },
        { "x": 7, "y": 2 },
        { "x": 8, "y": 2 },
        { "x": 9, "y": 2 },
        { "x": 10, "y": 2 },
        { "x": 11, "y": 2 },
        { "x": 0, "y": 3 },
        { "x": 1, "y": 3 },
        { "x": 2, "y": 3 },
        { "x": 3, "y": 3 },
        { "x": 4, "y": 3, "w": 2 },
        { "x": 6, "y": 3 },
        { "x": 7, "y": 3 },
        { "x": 8, "y": 3 },
        { "x": 9, "y": 3 },
        { "x": 10, "y": 3 },
        { "x": 11, "y": 3 }
      ]
    },
    "LAYOUT_planck_1x2uR": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 1, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6, "y": 0 },
        { "x": 7, "y": 0 },
        { "x": 8, "y": 0 },
        { "x": 9, "y": 0 },
        { "x": 10, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 0, "y": 1 },
        { "x": 1, "y": 1 },
        { "x": 2, "y": 1 },
        { "x": 3, "y": 1 },
        { "x": 4, "y": 1 },
        { "x": 5, "y": 1 },
        { "x": 6, "y": 1 },
        { "x": 7, "y": 1 },
        { "x": 8, "y": 1 },
        { "x": 9, "y": 1 },
        { "x": 10, "y": 1 },
        { "x": 11, "y": 1 },
        { "x": 0, "y": 2 },
        { "x": 1, "y": 2 },
        { "x": 2, "y": 2 },
        { "x": 3, "y": 2 },
        { "x": 4, "y": 2 },
        { "x": 5, "y": 2 },
        { "x": 6, "y": 2 },
        { "x": 7, "y": 2 },
        { "x": 8, "y": 2 },
        { "x": 9, "y": 2 },
        { "x": 10, "y": 2 },
        { "x": 11, "y": 2 },
        { "x": 0, "y": 3 },
        { "x": 1, "y": 3 },
        { "x": 2, "y": 3 },
        { "x": 3, "y": 3 },
        { "x": 4, "y": 3 },
        { "x": 5, "y": 3 },
        { "x": 6, "y": 3, "w": 2 },
        { "x": 8, "y": 3 },
        { "x": 9, "y": 3 },
        { "x": 10, "y": 3 },
        { "x": 11, "y": 3 }
      ]
    },
    "LAYOUT_planck_2x2u": {
      "layout": [
        { "x": 0, "y": 0 },
        { "x": 1, "y": 0 },
        { "x": 2, "y": 0 },
        { "x": 3, "y": 0 },
        { "x": 4, "y": 0 },
        { "x": 5, "y": 0 },
        { "x": 6, "y": 0 },
        { "x": 7, "y": 0 },
        { "x": 8, "y": 0 },
        { "x": 9, "y": 0 },
        { "x": 10, "y": 0 },
        { "x": 11, "y": 0 },
        { "x": 0, "y": 1 },
        { "x": 1, "y": 1 },
        { "x": 2, "y": 1 },
        { "x": 3, "y": 1 },
        { "x": 4, "y": 1 },
        { "x": 5, "y": 1 },
        { "x": 6, "y": 1 },
        { "x": 7, "y": 1 },
        { "x": 8, "y": 1 },
        { "x": 9, "y": 1 },
        { "x": 10, "y": 1 },
        { "x": 11, "y": 1 },
        { "x": 0, "y": 2 },
        { "x": 1, "y": 2 },
        { "x": 2, "y": 2 },
        { "x": 3, "y": 2 },
        { "x": 4, "y": 2 },
        { "x": 5, "y": 2 },
        { "x": 6, "y": 2 },
        { "x": 7, "y": 2 },
        { "x": 8, "y": 2 },
        { "x": 9, "y": 2 },
        { "x": 10, "y": 2 },
        { "x": 11, "y": 2 },
        { "x": 0, "y": 3 },
        { "x": 1, "y": 3 },
        { "x": 2, "y": 3 },
        { "x": 3, "y": 3 },
        { "x": 4, "y": 3, "w": 2 },
        { "x": 6, "y": 3, "w": 2 },
        { "x": 8, "y": 3 },
        { "x": 9, "y": 3 },
        { "x": 10, "y": 3 },
        { "x": 11, "y": 3 }
      ]
    }
  }
}

A planck/rev6/mcuconf.h => planck/rev6/mcuconf.h +30 -0
@@ 0,0 1,30 @@
/* Copyright 2020 QMK Contributors
 *
 * 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 3 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_next "mcuconf.h"

// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used
// on the Planck requires the use of TIM2 to run PWM -- rework which timers are
// allocated for PWM usage.
#undef STM32_PWM_USE_TIM2
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM2 TRUE
#define STM32_PWM_USE_TIM3 FALSE

// As mentioned above, we need to reallocate the SysTick timer used from
// TIM2 to TIM3.
#undef STM32_ST_USE_TIMER
#define STM32_ST_USE_TIMER 3

A planck/rev6/readme.md => planck/rev6/readme.md +13 -0
@@ 0,0 1,13 @@
# Planck

A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. A complete hardware rework of the Planck, sporting a faster and more powerful STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info on qmk.fm](http://qmk.fm/planck/)

Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)  
Hardware Supported: Planck PCB rev6  
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)

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

    make planck/rev6: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 planck/rev6/rev6.c => planck/rev6/rev6.c +62 -0
@@ 0,0 1,62 @@
/* Copyright 2018 Jack Humbert <jack.humb@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 "rev6.h"

#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
  // Key Matrix to LED Index
  { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED },
  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      },
  { NO_LED, 7,      NO_LED, NO_LED, 2,      NO_LED },
  { NO_LED, 4,      NO_LED, NO_LED, 3,      NO_LED },
  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
  { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
  { NO_LED, 1,      NO_LED, NO_LED, 8,      NO_LED },
}, {
  // LED Index to Physical Position
  {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
}, {
  // LED Index to Flag
  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
  LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
} };

// LED physical location index
//     6 5 4 3
//        0
//     7 8 1 2

#endif

#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
    {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
    {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
    {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
    {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},

    {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
    {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
    {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
    {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}},
};

#    ifdef ENCODER_MAP_ENABLE
const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
#    endif
#endif

A planck/rev6/rev6.h => planck/rev6/rev6.h +104 -0
@@ 0,0 1,104 @@
/* Copyright 2018 Jack Humbert <jack.humb@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 "planck.h"

#define XXX KC_NO

#define LAYOUT_planck_1x2uC( \
    k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
    k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
    k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
    k30, k31, k32, k73, k74,    k70,   k71, k72, k33, k34, k35 \
) { \
    { k00, k01, k02, k03, k04, k05 }, \
    { k10, k11, k12, k13, k14, k15 }, \
    { k20, k21, k22, k23, k24, k25 }, \
    { k30, k31, k32, k33, k34, k35 }, \
    { k40, k41, k42, k43, k44, k45 }, \
    { k50, k51, k52, k53, k54, k55 }, \
    { k60, k61, k62, k63, k64, k65 }, \
    { k70, k71, k72, k73, k74, XXX } \
}

#define LAYOUT_planck_1x2uR( \
    k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
    k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
    k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
    k30, k31, k32, k73, k74, k75,   k71,    k72, k33, k34, k35 \
) { \
    { k00, k01, k02, k03, k04, k05 }, \
    { k10, k11, k12, k13, k14, k15 }, \
    { k20, k21, k22, k23, k24, k25 }, \
    { k30, k31, k32, k33, k34, k35 }, \
    { k40, k41, k42, k43, k44, k45 }, \
    { k50, k51, k52, k53, k54, k55 }, \
    { k60, k61, k62, k63, k64, k65 }, \
    { XXX, k71, k72, k73, k74, k75 } \
}

#define LAYOUT_planck_1x2uL( \
    k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
    k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
    k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
    k30, k31, k32, k73,   k75,    k70, k71, k72, k33, k34, k35 \
) { \
    { k00, k01, k02, k03, k04, k05 }, \
    { k10, k11, k12, k13, k14, k15 }, \
    { k20, k21, k22, k23, k24, k25 }, \
    { k30, k31, k32, k33, k34, k35 }, \
    { k40, k41, k42, k43, k44, k45 }, \
    { k50, k51, k52, k53, k54, k55 }, \
    { k60, k61, k62, k63, k64, k65 }, \
    { k70, k71, k72, k73, XXX, k75 } \
}

#define LAYOUT_planck_2x2u( \
    k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
    k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
    k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
    k30, k31, k32, k73,   k75,      k71,    k72, k33, k34, k35 \
) { \
    { k00, k01, k02, k03, k04, k05 }, \
    { k10, k11, k12, k13, k14, k15 }, \
    { k20, k21, k22, k23, k24, k25 }, \
    { k30, k31, k32, k33, k34, k35 }, \
    { k40, k41, k42, k43, k44, k45 }, \
    { k50, k51, k52, k53, k54, k55 }, \
    { k60, k61, k62, k63, k64, k65 }, \
    { XXX, k71, k72, k73, XXX, k75 } \
}

#define LAYOUT_ortho_4x12( \
    k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
    k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
    k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
    k30, k31, k32, k73, k74, k75, k70, k71, k72, k33, k34, k35 \
) { \
    { k00, k01, k02, k03, k04, k05 }, \
    { k10, k11, k12, k13, k14, k15 }, \
    { k20, k21, k22, k23, k24, k25 }, \
    { k30, k31, k32, k33, k34, k35 }, \
    { k40, k41, k42, k43, k44, k45 }, \
    { k50, k51, k52, k53, k54, k55 }, \
    { k60, k61, k62, k63, k64, k65 }, \
    { k70, k71, k72, k73, k74, k75 } \
}

#define LAYOUT LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12

A planck/rev6/rules.mk => planck/rev6/rules.mk +28 -0
@@ 0,0 1,28 @@
# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C

# Bootloader selection
BOOTLOADER = stm32-dfu

# 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 = yes         # Console for debug
COMMAND_ENABLE = yes       # Commands for debug and configuration
NKRO_ENABLE = yes           # Enable N-Key Rollover
BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
AUDIO_ENABLE = yes           # Audio output
RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.
WS2812_DRIVER = pwm

RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
ENCODER_ENABLE = yes
DIP_SWITCH_ENABLE = yes

LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no