diff --git a/src/keyboard/ergodox.c b/src/keyboard/ergodox.c index afd5a56..12b5f32 100644 --- a/src/keyboard/ergodox.c +++ b/src/keyboard/ergodox.c @@ -7,7 +7,7 @@ * ------------------------------------------------------------------------- */ -#include "lib/_data-types.h" +#include "lib/data-types.h" #define KEYBOARD_INCLUDE_PRIVATE #include "ergodox/matrix.h" diff --git a/src/keyboard/ergodox.h b/src/keyboard/ergodox.h index 4082aaf..13d096b 100644 --- a/src/keyboard/ergodox.h +++ b/src/keyboard/ergodox.h @@ -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 diff --git a/src/keyboard/ergodox/layout.h b/src/keyboard/ergodox/layout.h index a132ede..a875b0e 100644 --- a/src/keyboard/ergodox/layout.h +++ b/src/keyboard/ergodox/layout.h @@ -11,10 +11,8 @@ #ifndef LAYOUT_h #define LAYOUT_h - #include - - #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 diff --git a/src/keyboard/ergodox/layout.md b/src/keyboard/ergodox/layout.md index 8191564..d48537c 100644 --- a/src/keyboard/ergodox/layout.md +++ b/src/keyboard/ergodox/layout.md @@ -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.) ------------------------------------------------------------------------------- diff --git a/src/keyboard/ergodox/layout/_defaults.h b/src/keyboard/ergodox/layout/_defaults.h new file mode 100644 index 0000000..f7cc211 --- /dev/null +++ b/src/keyboard/ergodox/layout/_defaults.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------------- + * ergoDOX layout : default layers and aliases + * ---------------------------------------------------------------------------- + * Copyright (c) 2012 Ben Blazak + * Released under The MIT License (MIT) (see "license.md") + * Project located at + * ------------------------------------------------------------------------- */ + + +// 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 ---- */ \ +} + diff --git a/src/keyboard/ergodox/layout/qwerty.c b/src/keyboard/ergodox/layout/qwerty.c index 6a71be3..0da753f 100644 --- a/src/keyboard/ergodox/layout/qwerty.c +++ b/src/keyboard/ergodox/layout/qwerty.c @@ -9,24 +9,13 @@ * ------------------------------------------------------------------------- */ -#include - -#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 }; diff --git a/src/keyboard/ergodox/matrix.c b/src/keyboard/ergodox/matrix.c index 7b18951..3a1f9e7 100644 --- a/src/keyboard/ergodox/matrix.c +++ b/src/keyboard/ergodox/matrix.c @@ -7,7 +7,7 @@ * ------------------------------------------------------------------------- */ -#include "lib/_data-types.h" +#include "lib/data-types.h" #include "matrix.h" diff --git a/src/keyboard/ergodox/matrix.h b/src/keyboard/ergodox/matrix.h index e782487..1ee9907 100644 --- a/src/keyboard/ergodox/matrix.h +++ b/src/keyboard/ergodox/matrix.h @@ -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 diff --git a/src/keyboard/ergodox/mcp23018.c b/src/keyboard/ergodox/mcp23018.c index 2be6cdd..42670bc 100644 --- a/src/keyboard/ergodox/mcp23018.c +++ b/src/keyboard/ergodox/mcp23018.c @@ -8,9 +8,8 @@ #include - -#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" diff --git a/src/keyboard/ergodox/mcp23018.h b/src/keyboard/ergodox/mcp23018.h index 8f57af8..ef29523 100644 --- a/src/keyboard/ergodox/mcp23018.h +++ b/src/keyboard/ergodox/mcp23018.h @@ -10,7 +10,7 @@ #ifndef MCP23018_h #define MCP23018_h - #include "lib/_data-types.h" + #include "lib/data-types.h" #ifdef KEYBOARD_INCLUDE_PRIVATE diff --git a/src/keyboard/ergodox/teensy-2-0.c b/src/keyboard/ergodox/teensy-2-0.c index 89eda5b..eea042b 100644 --- a/src/keyboard/ergodox/teensy-2-0.c +++ b/src/keyboard/ergodox/teensy-2-0.c @@ -8,10 +8,9 @@ #include - -#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" diff --git a/src/keyboard/ergodox/teensy-2-0.h b/src/keyboard/ergodox/teensy-2-0.h index 68ec677..dfdf990 100644 --- a/src/keyboard/ergodox/teensy-2-0.h +++ b/src/keyboard/ergodox/teensy-2-0.h @@ -11,8 +11,7 @@ #define TEENSY_2_0_h #include // for the register macros - - #include "lib/_data-types.h" + #include "lib/data-types.h" #include "matrix.h" diff --git a/src/lib/pjrc/readme.md b/src/lib-other/pjrc/readme.md similarity index 100% rename from src/lib/pjrc/readme.md rename to src/lib-other/pjrc/readme.md diff --git a/src/lib/pjrc/usb_keyboard/usb_keyboard.c b/src/lib-other/pjrc/usb_keyboard/usb_keyboard.c similarity index 100% rename from src/lib/pjrc/usb_keyboard/usb_keyboard.c rename to src/lib-other/pjrc/usb_keyboard/usb_keyboard.c diff --git a/src/lib/pjrc/usb_keyboard/usb_keyboard.h b/src/lib-other/pjrc/usb_keyboard/usb_keyboard.h similarity index 100% rename from src/lib/pjrc/usb_keyboard/usb_keyboard.h rename to src/lib-other/pjrc/usb_keyboard/usb_keyboard.h diff --git a/src/lib/_data-types.h b/src/lib/data-types.h similarity index 100% rename from src/lib/_data-types.h rename to src/lib/data-types.h diff --git a/src/lib/_key-functions.c b/src/lib/key-functions.c similarity index 95% rename from src/lib/_key-functions.c rename to src/lib/key-functions.c index 8b279eb..38ed6e8 100644 --- a/src/lib/_key-functions.c +++ b/src/lib/key-functions.c @@ -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" // ---------------------------------------------------------------------------- diff --git a/src/lib/_key-functions.h b/src/lib/key-functions.h similarity index 96% rename from src/lib/_key-functions.h rename to src/lib/key-functions.h index 99367ea..166c323 100644 --- a/src/lib/_key-functions.h +++ b/src/lib/key-functions.h @@ -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*); diff --git a/src/lib/readme.md b/src/lib/readme.md index 2bbef28..2f676c7 100644 --- a/src/lib/readme.md +++ b/src/lib/readme.md @@ -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 © 2012 Ben Blazak diff --git a/src/lib/_twi.h b/src/lib/twi.h similarity index 92% rename from src/lib/_twi.h rename to src/lib/twi.h index e52db3a..6221bd5 100644 --- a/src/lib/_twi.h +++ b/src/lib/twi.h @@ -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 diff --git a/src/lib/_twi/teensy-2-0.c b/src/lib/twi/teensy-2-0.c similarity index 98% rename from src/lib/_twi/teensy-2-0.c rename to src/lib/twi/teensy-2-0.c index 41b1949..7c3ed69 100644 --- a/src/lib/_twi/teensy-2-0.c +++ b/src/lib/twi/teensy-2-0.c @@ -21,10 +21,8 @@ * ------------------------------------------------------------------------- */ -#include //dbg #include - -#include "../_twi.h" +#include "lib/twi.h" void twi_init(void) { diff --git a/src/lib/_twi/teensy-2-0.h b/src/lib/twi/teensy-2-0.h similarity index 100% rename from src/lib/_twi/teensy-2-0.h rename to src/lib/twi/teensy-2-0.h diff --git a/src/lib/_twi/teensy-2-0.md b/src/lib/twi/teensy-2-0.md similarity index 100% rename from src/lib/_twi/teensy-2-0.md rename to src/lib/twi/teensy-2-0.md diff --git a/src/lib/_usb/keyboard-usage-page--short-names.h b/src/lib/usb/keyboard-usage-page--short-names.h similarity index 100% rename from src/lib/_usb/keyboard-usage-page--short-names.h rename to src/lib/usb/keyboard-usage-page--short-names.h diff --git a/src/lib/_usb/keyboard-usage-page.h b/src/lib/usb/keyboard-usage-page.h similarity index 100% rename from src/lib/_usb/keyboard-usage-page.h rename to src/lib/usb/keyboard-usage-page.h diff --git a/src/lib/_usb/led-usage-page.h b/src/lib/usb/led-usage-page.h similarity index 100% rename from src/lib/_usb/led-usage-page.h rename to src/lib/usb/led-usage-page.h diff --git a/src/main.c b/src/main.c index 4de7400..fe53bb8 100644 --- a/src/main.c +++ b/src/main.c @@ -9,9 +9,8 @@ #include - -#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" diff --git a/src/makefile b/src/makefile index f5bc96c..f120b12 100644 --- a/src/makefile +++ b/src/makefile @@ -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)