moved libs around; split some code in layouts

partial-rewrite
Ben Blazak 2012-04-28 23:40:00 -07:00
parent 4e913361ac
commit 229a2446a7
28 changed files with 100 additions and 100 deletions

View File

@ -7,7 +7,7 @@
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
#include "lib/_data-types.h" #include "lib/data-types.h"
#define KEYBOARD_INCLUDE_PRIVATE #define KEYBOARD_INCLUDE_PRIVATE
#include "ergodox/matrix.h" #include "ergodox/matrix.h"

View File

@ -11,7 +11,7 @@
#ifndef ERGODOX_h #ifndef ERGODOX_h
#define ERGODOX_h #define ERGODOX_h
#include "lib/_data-types.h" #include "lib/data-types.h"
#include "ergodox/layout.h" // number of layers, layout #include "ergodox/layout.h" // number of layers, layout
#include "ergodox/matrix.h" // kb dimensions, matrix status #include "ergodox/matrix.h" // kb dimensions, matrix status

View File

@ -11,10 +11,8 @@
#ifndef LAYOUT_h #ifndef LAYOUT_h
#define LAYOUT_h #define LAYOUT_h
#include <avr/pgmspace.h> #include "lib/data-types.h"
#include "lib/key-functions.h" // for `kbfun_funptr_t`
#include "lib/_data-types.h"
#include "lib/_key-functions.h" // for `kbfun_funptr_t`
#include "matrix.h" // for number of rows and columns #include "matrix.h" // for number of rows and columns

View File

@ -21,19 +21,14 @@ To write a new one:
(../../lib/_usb/keyboard-usage-page--short-names.h) for available keycodes. (../../lib/_usb/keyboard-usage-page--short-names.h) for available keycodes.
* See [key-functions.c] (../../lib/_key-functions.c) for what functions keys * See [key-functions.c] (../../lib/_key-functions.c) for what functions keys
can call. can call.
* See [_defaults.h] (layout/_defaults.h) for default function layers and
aliases.
## notes ## notes
* Assuming 560 bytes for everything else in RAM space, there's 2000 bytes left * Each layer takes 420 bytes of memory, wherever it's stored. (The matrix size
for the layout. This should be enough for about 7 layers. Watch your RAM is 12x7, keycodes are 1 byte each, and function pointers are 2 bytes.)
usage if you're getting close.
* The layout matricies could be moved to flash memory (program space,
instead of data space) in order to save RAM, but that doesn't seem
necessary at the moment. It would also be slightly slower, though that
probably shouldn't be a concern.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View File

@ -0,0 +1,63 @@
/* ----------------------------------------------------------------------------
* ergoDOX layout : default layers and aliases
* ----------------------------------------------------------------------------
* 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>
* ------------------------------------------------------------------------- */
// aliases
#define NA 0 // for keys not available on the matrix
#define NOP 0 // for keys that do nothing
#define f_NA NULL // for functions not available on the matrix
#define f_NOP NULL // for functions that do nothing
// --- require "lib/key-functions.h"
#define f_press &kbfun_press
#define f_release &kbfun_release
#define DEFAULT_LAYER_PRESS \
{ \
/* right hand */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* 0 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 0 */ \
/* 1 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 1 */ \
/* 2 */ { f_NA , f_press , f_press , f_press , f_press , f_press , f_press }, /* 2 */ \
/* 3 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 3 */ \
/* 4 */ { f_NA , f_NA , f_press , f_press , f_press , f_press , f_press }, /* 4 */ \
/* 5 */ { f_NA , f_press , f_press , f_press , f_press , f_press , f_press }, /* 5 */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* left hand */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* 6 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 6 */ \
/* 7 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 7 */ \
/* 8 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_NA }, /* 8 */ \
/* 9 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 9 */ \
/* A */ { f_press , f_press , f_press , f_press , f_press , f_NA , f_NA }, /* A */ \
/* B */ { f_press , f_press , f_press , f_press , f_press , f_press , f_NA } /* B */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
}
#define DEFAULT_LAYER_RELEASE \
{ \
/* right hand */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* 0 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 0 */ \
/* 1 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 1 */ \
/* 2 */ { f_NA , f_release , f_release , f_release , f_release , f_release , f_release }, /* 2 */ \
/* 3 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 3 */ \
/* 4 */ { f_NA , f_NA , f_release , f_release , f_release , f_release , f_release }, /* 4 */ \
/* 5 */ { f_NA , f_release , f_release , f_release , f_release , f_release , f_release }, /* 5 */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* left hand */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
/* 6 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 6 */ \
/* 7 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 7 */ \
/* 8 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_NA }, /* 8 */ \
/* 9 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 9 */ \
/* A */ { f_release , f_release , f_release , f_release , f_release , f_NA , f_NA }, /* A */ \
/* B */ { f_release , f_release , f_release , f_release , f_release , f_release , f_NA } /* B */ \
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ \
}

View File

@ -9,24 +9,13 @@
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
#include <avr/pgmspace.h> #include "lib/data-types.h"
#include "lib/usb/keyboard-usage-page--short-names.h"
#include "lib/_data-types.h" #include "lib/key-functions.h"
#include "lib/_usb/keyboard-usage-page--short-names.h"
#include "lib/_key-functions.h"
#include "../matrix.h" #include "../matrix.h"
#include "../layout.h" #include "../layout.h"
#include "_defaults.h" // for default layers and aliases
// aliases
#define NA 0 // for keys not available on the matrix
#define NOP 0 // for keys that do nothing
#define f_NA NULL // for functions not available on the matrix
#define f_NOP NULL // for functions that do nothing
// ---
#define f_press &kbfun_press
#define f_release &kbfun_release
// error check; everything below assumes these dimensions // error check; everything below assumes these dimensions
@ -36,8 +25,8 @@
uint8_t _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { uint8_t _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
{ // layer 0: default { /* layer 0: default */
// right hand /* right hand */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ /* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 0 */ { NOP , _6 , _7 , _8 , _9 , _0 , _dash }, /* 0 */ /* 0 */ { NOP , _6 , _7 , _8 , _9 , _0 , _dash }, /* 0 */
/* 1 */ { NOP , _Y , _U , _I , _O , _P , _bracketL }, /* 1 */ /* 1 */ { NOP , _Y , _U , _I , _O , _P , _bracketL }, /* 1 */
@ -46,7 +35,7 @@ uint8_t _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
/* 4 */ { NA , NA , _arrowU , _arrowD , _backslash, _bracketR , NOP }, /* 4 */ /* 4 */ { NA , NA , _arrowU , _arrowD , _backslash, _bracketR , NOP }, /* 4 */
/* 5 */ { NA , _ctrlR , _altR , _pageU , _pageD , _enter , _space }, /* 5 */ /* 5 */ { NA , _ctrlR , _altR , _pageU , _pageD , _enter , _space }, /* 5 */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ /* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
// left hand /* left hand */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */ /* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 6 */ { _equal , _1 , _2 , _3 , _4 , _5 , NOP }, /* 6 */ /* 6 */ { _equal , _1 , _2 , _3 , _4 , _5 , NOP }, /* 6 */
/* 7 */ { _tab , _Q , _W , _E , _R , _T , NOP }, /* 7 */ /* 7 */ { _tab , _Q , _W , _E , _R , _T , NOP }, /* 7 */
@ -59,48 +48,10 @@ uint8_t _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
}; };
kbfun_funptr_t _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { kbfun_funptr_t _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
{ // layer 0: default /* layer 0: default */ DEFAULT_LAYER_PRESS
// right hand
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 0 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 0 */
/* 1 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 1 */
/* 2 */ { f_NA , f_press , f_press , f_press , f_press , f_press , f_press }, /* 2 */
/* 3 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 3 */
/* 4 */ { f_NA , f_NA , f_press , f_press , f_press , f_press , f_press }, /* 4 */
/* 5 */ { f_NA , f_press , f_press , f_press , f_press , f_press , f_press }, /* 5 */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
// left hand
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 6 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 6 */
/* 7 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 7 */
/* 8 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_NA }, /* 8 */
/* 9 */ { f_press , f_press , f_press , f_press , f_press , f_press , f_press }, /* 9 */
/* A */ { f_press , f_press , f_press , f_press , f_press , f_NA , f_NA }, /* A */
/* B */ { f_press , f_press , f_press , f_press , f_press , f_press , f_NA } /* B */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
}
}; };
kbfun_funptr_t _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { kbfun_funptr_t _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
{ // layer 0: default /* layer 0: default */ DEFAULT_LAYER_RELEASE
// right hand
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 0 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 0 */
/* 1 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 1 */
/* 2 */ { f_NA , f_release , f_release , f_release , f_release , f_release , f_release }, /* 2 */
/* 3 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 3 */
/* 4 */ { f_NA , f_NA , f_release , f_release , f_release , f_release , f_release }, /* 4 */
/* 5 */ { f_NA , f_release , f_release , f_release , f_release , f_release , f_release }, /* 5 */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
// left hand
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 6 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 6 */
/* 7 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 7 */
/* 8 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_NA }, /* 8 */
/* 9 */ { f_release , f_release , f_release , f_release , f_release , f_release , f_release }, /* 9 */
/* A */ { f_release , f_release , f_release , f_release , f_release , f_NA , f_NA }, /* A */
/* B */ { f_release , f_release , f_release , f_release , f_release , f_release , f_NA } /* B */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
}
}; };

View File

@ -7,7 +7,7 @@
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
#include "lib/_data-types.h" #include "lib/data-types.h"
#include "matrix.h" #include "matrix.h"

View File

@ -10,7 +10,7 @@
#ifndef MATRIX_h #ifndef MATRIX_h
#define MATRIX_h #define MATRIX_h
#include "lib/_data-types.h" #include "lib/data-types.h"
#define KB_ROWS 12 // must match real life #define KB_ROWS 12 // must match real life
#define KB_COLUMNS 7 // must match real life #define KB_COLUMNS 7 // must match real life

View File

@ -8,9 +8,8 @@
#include <util/twi.h> #include <util/twi.h>
#include "lib/data-types.h"
#include "lib/_data-types.h" #include "lib/twi.h" // `TWI_FREQ` defined in "teensy-2-0.c"
#include "lib/_twi.h" // `TWI_FREQ` defined in "teensy-2-0.c"
#define KEYBOARD_INCLUDE_PRIVATE #define KEYBOARD_INCLUDE_PRIVATE
#include "matrix.h" #include "matrix.h"

View File

@ -10,7 +10,7 @@
#ifndef MCP23018_h #ifndef MCP23018_h
#define MCP23018_h #define MCP23018_h
#include "lib/_data-types.h" #include "lib/data-types.h"
#ifdef KEYBOARD_INCLUDE_PRIVATE #ifdef KEYBOARD_INCLUDE_PRIVATE

View File

@ -8,10 +8,9 @@
#include <avr/io.h> #include <avr/io.h>
#include "lib/data-types.h"
#include "lib/_data-types.h"
#define TWI_FREQ 400000 #define TWI_FREQ 400000
#include "lib/_twi.h" #include "lib/twi.h"
#define KEYBOARD_INCLUDE_PRIVATE #define KEYBOARD_INCLUDE_PRIVATE
#include "matrix.h" #include "matrix.h"

View File

@ -11,8 +11,7 @@
#define TEENSY_2_0_h #define TEENSY_2_0_h
#include <avr/io.h> // for the register macros #include <avr/io.h> // for the register macros
#include "lib/data-types.h"
#include "lib/_data-types.h"
#include "matrix.h" #include "matrix.h"

View File

@ -11,13 +11,12 @@
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
#include "lib/pjrc/usb_keyboard/usb_keyboard.h" #include "lib-other/pjrc/usb_keyboard/usb_keyboard.h"
#include "lib/_data-types.h" #include "lib/data-types.h"
#include "lib/_usb/keyboard-usage-page.h" #include "lib/usb/keyboard-usage-page.h"
#include "keyboard.h" #include "keyboard.h"
#include "_key-functions.h" #include "key-functions.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@ -10,7 +10,7 @@
#ifndef KEY_FUNCTIONS_h #ifndef KEY_FUNCTIONS_h
#define KEY_FUNCTIONS_h #define KEY_FUNCTIONS_h
#include "lib/_data-types.h" #include "lib/data-types.h"
typedef void (*kbfun_funptr_t)(uint8_t*, uint8_t*, uint8_t*, uint8_t*); typedef void (*kbfun_funptr_t)(uint8_t*, uint8_t*, uint8_t*, uint8_t*);

View File

@ -1,9 +1,6 @@
# src/lib # src/lib
Stuff that's generally useful Stuff that's generally useful
* Directories prepended by a `_` were written for (and exist solely in) this
project.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright &copy; 2012 Ben Blazak <benblazak.dev@gmail.com> Copyright &copy; 2012 Ben Blazak <benblazak.dev@gmail.com>

View File

@ -15,7 +15,7 @@
#undef _inc #undef _inc
#define _str(s) #s // stringify #define _str(s) #s // stringify
#define _expstr(s) _str(s) // expand -> stringify #define _expstr(s) _str(s) // expand -> stringify
#define _inc _expstr(_twi/MAKEFILE_BOARD.h) // inc(lude) #define _inc _expstr(twi/MAKEFILE_BOARD.h) // inc(lude)
#include _inc #include _inc
#undef _str #undef _str
#undef _expstr #undef _expstr

View File

@ -21,10 +21,8 @@
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
#include <util/delay.h> //dbg
#include <util/twi.h> #include <util/twi.h>
#include "lib/twi.h"
#include "../_twi.h"
void twi_init(void) { void twi_init(void) {

View File

@ -9,9 +9,8 @@
#include <util/delay.h> #include <util/delay.h>
#include "lib-other/pjrc/usb_keyboard/usb_keyboard.h"
#include "lib/pjrc/usb_keyboard/usb_keyboard.h" #include "lib/data-types.h"
#include "lib/_data-types.h"
#include "keyboard.h" #include "keyboard.h"

View File

@ -41,6 +41,9 @@ SRC += $(wildcard keyboard/$(KEYBOARD)/layout/$(LAYOUT)*.c)
SRC += $(wildcard lib/*.c) SRC += $(wildcard lib/*.c)
SRC += $(wildcard lib/*/*.c) SRC += $(wildcard lib/*/*.c)
SRC += $(wildcard lib/*/*/*.c) SRC += $(wildcard lib/*/*/*.c)
SRC += $(wildcard lib-other/*.c)
SRC += $(wildcard lib-other/*/*.c)
SRC += $(wildcard lib-other/*/*/*.c)
OBJ = $(SRC:%.c=%.o) OBJ = $(SRC:%.c=%.o)