diff --git a/src/keyboard/controller.h b/src/keyboard/controller.h index 70c817c..bdca0d5 100644 --- a/src/keyboard/controller.h +++ b/src/keyboard/controller.h @@ -10,7 +10,6 @@ #include #include -#include "./matrix.h" #include "./controller/mcp23018.h" #include "./controller/teensy-2-0.h" diff --git a/src/keyboard/layout.h b/src/keyboard/layout.h index f289ba0..aaede79 100644 --- a/src/keyboard/layout.h +++ b/src/keyboard/layout.h @@ -13,7 +13,6 @@ #include #include "../lib/keyboard.h" #include "../lib/key-functions/public.h" -#include "./matrix.h" #include "./controller.h" typedef void (*void_funptr_t)(void); diff --git a/src/keyboard/matrix.h b/src/keyboard/matrix.h index a0ce373..ea93811 100644 --- a/src/keyboard/matrix.h +++ b/src/keyboard/matrix.h @@ -6,99 +6,89 @@ * Project located at * ------------------------------------------------------------------------- */ +#pragma once -#ifndef KEYBOARD__ERGODOX__MATRIX_h - #define KEYBOARD__ERGODOX__MATRIX_h +// -------------------------------------------------------------------- - // -------------------------------------------------------------------- - - #define KB_ROWS 6 // must match real life - #define KB_COLUMNS 14 // must match real life - - // -------------------------------------------------------------------- - - /* mapping from spatial position to matrix position - * - spatial position: where the key is spatially, relative to other - * keys both on the keyboard and in the layout - * - matrix position: the coordinate in the matrix to which a key is - * scanned by the update functions - * - * - location numbers are in the format `row##column`, where both 'row' - * and 'column' are single digit hex numbers corresponding to the - * matrix position (which also corresponds to the row and column pin - * labels used in the teensy and mcp23018 files) - * - * - coordinates - * - optional keys - * k15, k16 (left hand thumb group) - * k17, k18 (right hand thumb group) - * - unused keys - * k36, k00 (left hand) - * k37, k0D (right hand) - * - * --- other info ----------------------------------------------------- - * rows x columns = positions; used, unused - * per hand: 6 x 7 = 42; 40, 2 - * total: 6 x 14 = 84; 80, 4 - * - * left hand : rows 0..5, cols 0..6 - * right hand : rows 0..5, cols 7..D - * -------------------------------------------------------------------- - */ - #define KB_MATRIX_LAYER( \ - /* for unused positions */ \ - na, \ - \ - /* left hand, spatial positions */ \ - k50,k51,k52,k53,k54,k55,k56, \ - k40,k41,k42,k43,k44,k45,k46, \ - k30,k31,k32,k33,k34,k35, \ - k20,k21,k22,k23,k24,k25,k26, \ - k10,k11,k12,k13,k14, \ - k05,k06, \ - k15,k16,k04, \ - k03,k02,k01, \ - \ - /* right hand, spatial positions */ \ - k57,k58,k59,k5A,k5B,k5C,k5D, \ - k47,k48,k49,k4A,k4B,k4C,k4D, \ - k38,k39,k3A,k3B,k3C,k3D, \ - k27,k28,k29,k2A,k2B,k2C,k2D, \ - k19,k1A,k1B,k1C,k1D, \ - k07,k08, \ - k09,k17,k18, \ - k0C,k0B,k0A ) \ - \ - /* matrix positions */ \ - {{ na,k01,k02,k03,k04,k05,k06, k07,k08,k09,k0A,k0B,k0C, na }, \ - { k10,k11,k12,k13,k14,k15,k16, k17,k18,k19,k1A,k1B,k1C,k1D }, \ - { k20,k21,k22,k23,k24,k25,k26, k27,k28,k29,k2A,k2B,k2C,k2D }, \ - { k30,k31,k32,k33,k34,k35, na, na,k38,k39,k3A,k3B,k3C,k3D }, \ - { k40,k41,k42,k43,k44,k45,k46, k47,k48,k49,k4A,k4B,k4C,k4D }, \ - { k50,k51,k52,k53,k54,k55,k56, k57,k58,k59,k5A,k5B,k5C,k5D }} - - - #define KB_MATRIX_LAYER_SET_ALL(na, kxx) \ - LAYER( \ - na, \ +/* mapping from spatial position to matrix position + * - spatial position: where the key is spatially, relative to other + * keys both on the keyboard and in the layout + * - matrix position: the coordinate in the matrix to which a key is + * scanned by the update functions + * + * - location numbers are in the format `row##column`, where both 'row' + * and 'column' are single digit hex numbers corresponding to the + * matrix position (which also corresponds to the row and column pin + * labels used in the teensy and mcp23018 files) + * + * - coordinates + * - optional keys + * k15, k16 (left hand thumb group) + * k17, k18 (right hand thumb group) + * - unused keys + * k36, k00 (left hand) + * k37, k0D (right hand) + * + * --- other info ----------------------------------------------------- + * rows x columns = positions; used, unused + * per hand: 6 x 7 = 42; 40, 2 + * total: 6 x 14 = 84; 80, 4 + * + * left hand : rows 0..5, cols 0..6 + * right hand : rows 0..5, cols 7..D + * -------------------------------------------------------------------- + */ +#define KB_MATRIX_LAYER( \ + /* for unused positions */ \ + na, \ \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx, \ - kxx,kxx,kxx, \ - kxx,kxx,kxx, \ + /* left hand, spatial positions */ \ + k50,k51,k52,k53,k54,k55,k56, \ + k40,k41,k42,k43,k44,k45,k46, \ + k30,k31,k32,k33,k34,k35, \ + k20,k21,k22,k23,k24,k25,k26, \ + k10,k11,k12,k13,k14, \ + k05,k06, \ + k15,k16,k04, \ + k03,k02,k01, \ \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx,kxx,kxx,kxx, \ - kxx,kxx, \ - kxx,kxx,kxx, \ - kxx,kxx,kxx ) \ + /* right hand, spatial positions */ \ + k57,k58,k59,k5A,k5B,k5C,k5D, \ + k47,k48,k49,k4A,k4B,k4C,k4D, \ + k38,k39,k3A,k3B,k3C,k3D, \ + k27,k28,k29,k2A,k2B,k2C,k2D, \ + k19,k1A,k1B,k1C,k1D, \ + k07,k08, \ + k09,k17,k18, \ + k0C,k0B,k0A ) \ + \ +/* matrix positions */ \ +{{ na,k01,k02,k03,k04,k05,k06, k07,k08,k09,k0A,k0B,k0C, na }, \ + { k10,k11,k12,k13,k14,k15,k16, k17,k18,k19,k1A,k1B,k1C,k1D }, \ + { k20,k21,k22,k23,k24,k25,k26, k27,k28,k29,k2A,k2B,k2C,k2D }, \ + { k30,k31,k32,k33,k34,k35, na, na,k38,k39,k3A,k3B,k3C,k3D }, \ + { k40,k41,k42,k43,k44,k45,k46, k47,k48,k49,k4A,k4B,k4C,k4D }, \ + { k50,k51,k52,k53,k54,k55,k56, k57,k58,k59,k5A,k5B,k5C,k5D }} -#endif +#define KB_MATRIX_LAYER_SET_ALL(na, kxx) \ + LAYER( \ + na, \ + \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx, \ + kxx,kxx,kxx, \ + kxx,kxx,kxx, \ + \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx,kxx,kxx,kxx, \ + kxx,kxx, \ + kxx,kxx,kxx, \ + kxx,kxx,kxx ) \ diff --git a/src/keyboard/options.h b/src/keyboard/options.h index 02ac101..19c9d3b 100644 --- a/src/keyboard/options.h +++ b/src/keyboard/options.h @@ -6,35 +6,34 @@ * Project located at * ------------------------------------------------------------------------- */ +#pragma once -#ifndef KEYBOARD__ERGODOX__OPTIONS_h - #define KEYBOARD__ERGODOX__OPTIONS_h +// -------------------------------------------------------------------- - // -------------------------------------------------------------------- +/* + * DRIVE_ROWS and DRIVE_COLUMNS + * - Select which pins will drive (alternate between hi-Z and drive + * low) and which will be inputs + * + * Notes + * - You must set exactly one of each 'TEENSY' macro, and of each + * 'MCP23018' macro + * - If you are using internal diodes (inside the key switches)... then + * i don't know what to tell you. You will set one chip to drive + * rows, and the other to drive columns, but i don't have a key + * switch to check which at the moment, and i couldn't seem to find + * it online. + * - If the diode cathode is towards the square solder pad, set + * #define TEENSY__DRIVE_COLUMNS 1 + * #define MCP23018__DRIVE_COLUMNS 1 + * - If the diode cathode is towards the circular solder pad, set + * #define TEENSY__DRIVE_ROWS 1 + * #define MCP23018__DRIVE_ROWS 1 + */ +#define TEENSY__DRIVE_ROWS 0 +#define TEENSY__DRIVE_COLUMNS 1 +#define MCP23018__DRIVE_ROWS 0 +#define MCP23018__DRIVE_COLUMNS 1 - /* - * DRIVE_ROWS and DRIVE_COLUMNS - * - Select which pins will drive (alternate between hi-Z and drive - * low) and which will be inputs - * - * Notes - * - You must set exactly one of each 'TEENSY' macro, and of each - * 'MCP23018' macro - * - If you are using internal diodes (inside the key switches)... then - * i don't know what to tell you. You will set one chip to drive - * rows, and the other to drive columns, but i don't have a key - * switch to check which at the moment, and i couldn't seem to find - * it online. - * - If the diode cathode is towards the square solder pad, set - * #define TEENSY__DRIVE_COLUMNS 1 - * #define MCP23018__DRIVE_COLUMNS 1 - * - If the diode cathode is towards the circular solder pad, set - * #define TEENSY__DRIVE_ROWS 1 - * #define MCP23018__DRIVE_ROWS 1 - */ - #define TEENSY__DRIVE_ROWS 0 - #define TEENSY__DRIVE_COLUMNS 1 - #define MCP23018__DRIVE_ROWS 0 - #define MCP23018__DRIVE_COLUMNS 1 - -#endif +#define KB_ROWS 6 // must match real life +#define KB_COLUMNS 14 // must match real life diff --git a/src/lib/key-functions/public.h b/src/lib/key-functions/public.h index e945c9f..cb255e0 100644 --- a/src/lib/key-functions/public.h +++ b/src/lib/key-functions/public.h @@ -14,7 +14,6 @@ #include #include "../../main.h" #include "../../keyboard/layout.h" -#include "../../keyboard/matrix.h" #include "../../lib-other/pjrc/usb_keyboard/usb_keyboard.h" #include "../../lib/keyboard.h" diff --git a/src/main.h b/src/main.h index 78555df..8107a06 100644 --- a/src/main.h +++ b/src/main.h @@ -15,7 +15,6 @@ #include "./lib/key-functions/public.h" #include "./keyboard/controller.h" #include "./keyboard/layout.h" -#include "./keyboard/matrix.h" // --------------------------------------------------------------------