~ruther/qmk_firmware

f644db042c488a19c2256c9f3870b5bd331cc98c — Garrett Singer 6 years ago 465acd4
[Split] Add config option for DIRECT_PINS_RIGHT (#6479)

Adds support for different direct pin mappings on the halves of a split keyboard.
3 files changed, 16 insertions(+), 0 deletions(-)

M docs/config_options.md
M docs/feature_split_keyboard.md
M quantum/split_common/matrix.c
M docs/config_options.md => docs/config_options.md +3 -0
@@ 248,6 248,9 @@ There are a few different ways to set handedness for split keyboards (listed in 
* `#define MATRIX_COL_PINS_RIGHT { <col pins> }`
  * If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns.

* `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
  * If you want to specify a different direct pinout for the right half than the left half, you can define `DIRECT_PINS_RIGHT`. Currently, the size of `DIRECT_PINS` must be the same as `DIRECT_PINS_RIGHT`.

* `#define RGBLED_SPLIT { 6, 6 }`
  * See [RGB Light Configuration](#rgb-light-configuration)


M docs/feature_split_keyboard.md => docs/feature_split_keyboard.md +5 -0
@@ 160,6 160,11 @@ There are some settings that you may need to configure, based on how the hardwar

This allows you to specify a different set of pins for the matrix on the right side.  This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency).

```c
#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }
```

This allows you to specify a different set of direct pins for the right side.

```c
#define RGBLIGHT_SPLIT

M quantum/split_common/matrix.c => quantum/split_common/matrix.c +8 -0
@@ 252,6 252,14 @@ void matrix_init(void) {

  // Set pinout for right half if pinout for that half is defined
  if (!isLeftHand) {
#ifdef DIRECT_PINS_RIGHT
    const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT;
    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
      for (uint8_t j = 0; j < MATRIX_COLS; j++) {
        direct_pins[i][j] = direct_pins_right[i][j];
      }
    }
#endif
#ifdef MATRIX_ROW_PINS_RIGHT
    const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT;
    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {