2012-04-25 08:22:20 +02:00
|
|
|
/* ----------------------------------------------------------------------------
|
|
|
|
* ergoDOX layout : QWERTY
|
|
|
|
*
|
|
|
|
* This is an overly basic implementation. It needs to be replaced.
|
|
|
|
* ----------------------------------------------------------------------------
|
|
|
|
* 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>
|
|
|
|
* ------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
|
2012-04-29 09:17:17 +02:00
|
|
|
#include <avr/pgmspace.h>
|
2012-04-29 08:40:00 +02:00
|
|
|
#include "lib/data-types.h"
|
2012-05-14 03:06:17 +02:00
|
|
|
#include "lib/usb/usage-page/keyboard--short-names.h"
|
2012-04-29 08:40:00 +02:00
|
|
|
#include "lib/key-functions.h"
|
2012-04-25 08:22:20 +02:00
|
|
|
|
|
|
|
#include "../matrix.h"
|
bugfix (mostly): changed the way layers are handled
before, if you pressed a key, then shifted layers, then released it, the
first layer's press() would be called, and the 2nd layer's release()
would be called, causing keys to stick, and probably other errors. now,
the layer that the key was on when it was pressed is kept track of, and
the proper release() is called.
also, layers can be shifted per key now, instead of just for the whole
board at once
i also changed how keyboard-private includes are handled. "private"
stuff is now in its own file, instead of being nested in an extra
`#ifdef`.
and i think that's it. i'm pretty tired right now, so there may be
errors, but it seemed to work all right with cursory tests.
2012-06-11 12:27:34 +02:00
|
|
|
#include "../matrix--private.h"
|
2012-04-25 08:22:20 +02:00
|
|
|
#include "../layout.h"
|
|
|
|
|
|
|
|
|
2012-06-15 23:36:50 +02:00
|
|
|
#include "../../../lib/key-functions.h"
|
2012-06-04 08:46:21 +02:00
|
|
|
// aliases
|
|
|
|
#define f_press &kbfun_press
|
|
|
|
#define f_relea &kbfun_release
|
2012-06-15 23:36:50 +02:00
|
|
|
#define f_l_set &kbfun_layer_set
|
2012-06-04 08:46:21 +02:00
|
|
|
#define f_l_inc &kbfun_layer_inc
|
|
|
|
#define f_l_dec &kbfun_layer_dec
|
2012-06-15 23:36:50 +02:00
|
|
|
#define f_2kcap &kbfun_2_keys_capslock_press_release
|
2012-06-04 08:46:21 +02:00
|
|
|
|
|
|
|
|
2012-04-29 09:17:17 +02:00
|
|
|
uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
|
2012-06-04 08:46:21 +02:00
|
|
|
// ----------------------------------------------------------------------------
|
2012-05-30 01:53:55 +02:00
|
|
|
LAYER( // layer 0: default
|
2012-06-01 09:50:45 +02:00
|
|
|
// unused
|
|
|
|
0,
|
2012-05-30 01:53:55 +02:00
|
|
|
// left hand
|
|
|
|
_grave, _1, _2, _3, _4, _5, _equal,
|
2012-06-15 23:36:50 +02:00
|
|
|
_bracketL, _Q, _W, _E, _R, _T, _esc,
|
|
|
|
_tab, _A, _S, _D, _F, _G,
|
|
|
|
_shiftL, _Z, _X, _C, _V, _B, 1,
|
2012-05-30 01:53:55 +02:00
|
|
|
_guiL, _arrowL, _arrowU, _arrowD, _arrowR,
|
|
|
|
_bs,
|
|
|
|
_del, _ctrlL,
|
|
|
|
_end, _home, _altL,
|
|
|
|
// right hand
|
|
|
|
_backslash, _6, _7, _8, _9, _0, _dash,
|
|
|
|
_bracketL, _Y, _U, _I, _O, _P, _bracketR,
|
|
|
|
_H, _J, _K, _L, _semicolon, _quote,
|
2012-06-15 23:36:50 +02:00
|
|
|
1, _N, _M, _comma, _period, _slash, _shiftR,
|
2012-05-30 01:53:55 +02:00
|
|
|
_arrowL, _arrowD, _arrowU, _arrowR, _guiR,
|
|
|
|
_space,
|
|
|
|
_ctrlR, _enter,
|
2012-06-04 08:46:21 +02:00
|
|
|
_altR, _pageU, _pageD ),
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
LAYER( // layer 1: function and symbol keys
|
|
|
|
// unused
|
|
|
|
0,
|
|
|
|
// left hand
|
|
|
|
0, _F1, _F2, _F3, _F4, _F5, _F11,
|
|
|
|
0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc,
|
|
|
|
0, _semicolon, _slash, _dash, 0, _colon_kp,
|
bugfix (mostly): changed the way layers are handled
before, if you pressed a key, then shifted layers, then released it, the
first layer's press() would be called, and the 2nd layer's release()
would be called, causing keys to stick, and probably other errors. now,
the layer that the key was on when it was pressed is kept track of, and
the proper release() is called.
also, layers can be shifted per key now, instead of just for the whole
board at once
i also changed how keyboard-private includes are handled. "private"
stuff is now in its own file, instead of being nested in an extra
`#ifdef`.
and i think that's it. i'm pretty tired right now, so there may be
errors, but it seemed to work all right with cursory tests.
2012-06-11 12:27:34 +02:00
|
|
|
0, 0, 0, 0, 0, 0, 0,
|
2012-06-04 08:46:21 +02:00
|
|
|
0, _arrowL, _arrowU, _arrowD, _arrowR,
|
|
|
|
_bs,
|
|
|
|
_del, _ctrlL,
|
|
|
|
_end, _home, _altL,
|
|
|
|
// right hand
|
bugfix (mostly): changed the way layers are handled
before, if you pressed a key, then shifted layers, then released it, the
first layer's press() would be called, and the 2nd layer's release()
would be called, causing keys to stick, and probably other errors. now,
the layer that the key was on when it was pressed is kept track of, and
the proper release() is called.
also, layers can be shifted per key now, instead of just for the whole
board at once
i also changed how keyboard-private includes are handled. "private"
stuff is now in its own file, instead of being nested in an extra
`#ifdef`.
and i think that's it. i'm pretty tired right now, so there may be
errors, but it seemed to work all right with cursory tests.
2012-06-11 12:27:34 +02:00
|
|
|
_F12, _F6, _F7, _F8, _F9, _F10, 0,
|
|
|
|
0, 0, _dash, _lt_kp, _gt_kp, _currencyUnit, 0,
|
|
|
|
_backslash, 0, _parenL_kp, _parenR_kp, _equal, 0,
|
|
|
|
0, _mul_kp, 0, 0, 0, 0, 0,
|
|
|
|
_arrowL, _arrowD, _arrowU, _arrowR, 0,
|
2012-06-04 08:46:21 +02:00
|
|
|
_space,
|
|
|
|
_ctrlR, _enter,
|
2012-05-30 01:53:55 +02:00
|
|
|
_altR, _pageU, _pageD )
|
2012-06-04 08:46:21 +02:00
|
|
|
// ----------------------------------------------------------------------------
|
2012-04-25 08:22:20 +02:00
|
|
|
};
|
|
|
|
|
2012-05-30 01:53:55 +02:00
|
|
|
|
2012-04-29 09:17:17 +02:00
|
|
|
kbfun_funptr_t PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
|
2012-06-04 08:46:21 +02:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
LAYER( // layer 0: default
|
|
|
|
// unused
|
|
|
|
NULL,
|
|
|
|
// left hand
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,
|
2012-06-15 23:36:50 +02:00
|
|
|
f_2kcap,f_press,f_press,f_press,f_press,f_press,f_l_inc,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,
|
|
|
|
f_press, f_press,
|
|
|
|
f_press,f_press,f_press,
|
|
|
|
// right hand
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,
|
2012-06-15 23:36:50 +02:00
|
|
|
f_l_inc,f_press,f_press,f_press,f_press,f_press,f_2kcap,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,
|
|
|
|
f_press, f_press,
|
|
|
|
f_press,f_press,f_press ),
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
LAYER( // layer 1: function and symbol keys
|
|
|
|
// unused
|
|
|
|
NULL,
|
|
|
|
// left hand
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press, NULL,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,
|
|
|
|
f_press, f_press,
|
|
|
|
f_press,f_press,f_press,
|
|
|
|
// right hand
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
NULL,f_press,f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,f_press,f_press,f_press,f_press,
|
|
|
|
f_press,
|
|
|
|
f_press, f_press,
|
|
|
|
f_press,f_press,f_press )
|
|
|
|
// ----------------------------------------------------------------------------
|
2012-04-25 08:22:20 +02:00
|
|
|
};
|
|
|
|
|
2012-05-30 01:53:55 +02:00
|
|
|
|
2012-04-29 09:17:17 +02:00
|
|
|
kbfun_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
|
2012-06-04 08:46:21 +02:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
LAYER( // layer 0: default
|
|
|
|
// unused
|
|
|
|
NULL,
|
|
|
|
// left hand
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
2012-06-15 23:36:50 +02:00
|
|
|
f_2kcap,f_relea,f_relea,f_relea,f_relea,f_relea,f_l_dec,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,
|
|
|
|
f_relea, f_relea,
|
|
|
|
f_relea,f_relea,f_relea,
|
|
|
|
// right hand
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
2012-06-15 23:36:50 +02:00
|
|
|
f_l_dec,f_relea,f_relea,f_relea,f_relea,f_relea,f_2kcap,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,
|
|
|
|
f_relea, f_relea,
|
|
|
|
f_relea,f_relea,f_relea ),
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
LAYER( // layer 1: function and symbol keys
|
|
|
|
// unused
|
|
|
|
NULL,
|
|
|
|
// left hand
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
bugfix (mostly): changed the way layers are handled
before, if you pressed a key, then shifted layers, then released it, the
first layer's press() would be called, and the 2nd layer's release()
would be called, causing keys to stick, and probably other errors. now,
the layer that the key was on when it was pressed is kept track of, and
the proper release() is called.
also, layers can be shifted per key now, instead of just for the whole
board at once
i also changed how keyboard-private includes are handled. "private"
stuff is now in its own file, instead of being nested in an extra
`#ifdef`.
and i think that's it. i'm pretty tired right now, so there may be
errors, but it seemed to work all right with cursory tests.
2012-06-11 12:27:34 +02:00
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea, NULL,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,
|
|
|
|
f_relea, f_relea,
|
|
|
|
f_relea,f_relea,f_relea,
|
|
|
|
// right hand
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
bugfix (mostly): changed the way layers are handled
before, if you pressed a key, then shifted layers, then released it, the
first layer's press() would be called, and the 2nd layer's release()
would be called, causing keys to stick, and probably other errors. now,
the layer that the key was on when it was pressed is kept track of, and
the proper release() is called.
also, layers can be shifted per key now, instead of just for the whole
board at once
i also changed how keyboard-private includes are handled. "private"
stuff is now in its own file, instead of being nested in an extra
`#ifdef`.
and i think that's it. i'm pretty tired right now, so there may be
errors, but it seemed to work all right with cursory tests.
2012-06-11 12:27:34 +02:00
|
|
|
NULL,f_relea,f_relea,f_relea,f_relea,f_relea,f_relea,
|
2012-06-04 08:46:21 +02:00
|
|
|
f_relea,f_relea,f_relea,f_relea,f_relea,
|
|
|
|
f_relea,
|
|
|
|
f_relea, f_relea,
|
|
|
|
f_relea,f_relea,f_relea )
|
|
|
|
// ----------------------------------------------------------------------------
|
2012-04-25 08:22:20 +02:00
|
|
|
};
|
|
|
|
|