refactor
parent
ba59fee6f9
commit
923e8da156
|
@ -15,8 +15,37 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
#include <util/twi.h>
|
#include <util/twi.h>
|
||||||
#include "./matrix.h"
|
|
||||||
#include "./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 MCP23018__DRIVE_ROWS 0
|
||||||
|
#define TEENSY__DRIVE_COLUMNS 1
|
||||||
|
#define MCP23018__DRIVE_COLUMNS 1
|
||||||
|
|
||||||
|
#define KB_ROWS 6 // must match real life
|
||||||
|
#define KB_COLUMNS 14 // must match real life
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -157,3 +186,88 @@ int8_t usb_extra_consumer_send();
|
||||||
#define CDC_SET_LINE_CODING 0x20
|
#define CDC_SET_LINE_CODING 0x20
|
||||||
#define CDC_GET_LINE_CODING 0x21
|
#define CDC_GET_LINE_CODING 0x21
|
||||||
#define CDC_SET_CONTROL_LINE_STATE 0x22
|
#define CDC_SET_CONTROL_LINE_STATE 0x22
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
|
/* 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, \
|
||||||
|
\
|
||||||
|
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 ) \
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
/* ----------------------------------------------------------------------------
|
|
||||||
* ergoDOX : matrix specific exports
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* Copyright (c) 2012 Ben Blazak <benblazak.dev@gmail.com>
|
|
||||||
* Released under The MIT License (MIT) (see "license.md")
|
|
||||||
* Project located at <https://github.com/benblazak/ergodox-firmware>
|
|
||||||
* ------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
|
||||||
|
|
||||||
/* 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, \
|
|
||||||
\
|
|
||||||
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 ) \
|
|
|
@ -1,39 +0,0 @@
|
||||||
/* ----------------------------------------------------------------------------
|
|
||||||
* ergoDOX : keyboard specific options
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* Copyright (c) 2012 Ben Blazak <benblazak.dev@gmail.com>
|
|
||||||
* Released under The MIT License (MIT) (see "license.md")
|
|
||||||
* Project located at <https://github.com/benblazak/ergodox-firmware>
|
|
||||||
* ------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
#define KB_ROWS 6 // must match real life
|
|
||||||
#define KB_COLUMNS 14 // must match real life
|
|
Loading…
Reference in New Issue