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
#include "ergodox/matrix.h"

View File

@ -11,7 +11,7 @@
#ifndef 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/matrix.h" // kb dimensions, matrix status

View File

@ -11,10 +11,8 @@
#ifndef 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

View File

@ -21,19 +21,14 @@ To write a new one:
(../../lib/_usb/keyboard-usage-page--short-names.h) for available keycodes.
* See [key-functions.c] (../../lib/_key-functions.c) for what functions keys
can call.
* See [_defaults.h] (layout/_defaults.h) for default function layers and
aliases.
## notes
* Assuming 560 bytes for everything else in RAM space, there's 2000 bytes left
for the layout. This should be enough for about 7 layers. Watch your RAM
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.
* Each layer takes 420 bytes of memory, wherever it's stored. (The matrix size
is 12x7, keycodes are 1 byte each, and function pointers are 2 bytes.)
-------------------------------------------------------------------------------

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/_key-functions.h"
#include "lib/data-types.h"
#include "lib/usb/keyboard-usage-page--short-names.h"
#include "lib/key-functions.h"
#include "../matrix.h"
#include "../layout.h"
// 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
#include "_defaults.h" // for default layers and aliases
// error check; everything below assumes these dimensions
@ -36,8 +25,8 @@
uint8_t _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
{ // layer 0: default
// right hand
{ /* layer 0: default */
/* right hand */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 0 */ { NOP , _6 , _7 , _8 , _9 , _0 , _dash }, /* 0 */
/* 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 */
/* 5 */ { NA , _ctrlR , _altR , _pageU , _pageD , _enter , _space }, /* 5 */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
// left hand
/* left hand */
/* ---- 0 ---- ---- 1 ---- ---- 2 ---- ---- 3 ---- ---- 4 ---- ---- 5 ---- ---- 6 ---- */
/* 6 */ { _equal , _1 , _2 , _3 , _4 , _5 , NOP }, /* 6 */
/* 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] = {
{ // layer 0: default
// 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 ---- */
}
/* layer 0: default */ DEFAULT_LAYER_PRESS
};
kbfun_funptr_t _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
{ // layer 0: default
// 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 ---- */
}
/* layer 0: default */ DEFAULT_LAYER_RELEASE
};

View File

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

View File

@ -10,7 +10,7 @@
#ifndef 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_COLUMNS 7 // must match real life

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
#ifndef 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*);

View File

@ -1,9 +1,6 @@
# src/lib
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>

View File

@ -15,7 +15,7 @@
#undef _inc
#define _str(s) #s // 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
#undef _str
#undef _expstr

View File

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

View File

@ -9,9 +9,8 @@
#include <util/delay.h>
#include "lib/pjrc/usb_keyboard/usb_keyboard.h"
#include "lib/_data-types.h"
#include "lib-other/pjrc/usb_keyboard/usb_keyboard.h"
#include "lib/data-types.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-other/*.c)
SRC += $(wildcard lib-other/*/*.c)
SRC += $(wildcard lib-other/*/*/*.c)
OBJ = $(SRC:%.c=%.o)