keybrd version 0.x.x is for initial development. | keybrd version 0.x.x is for initial development. | ||||
keybrd version 1.0.0 will be released when the public API is stable. | keybrd version 1.0.0 will be released when the public API is stable. | ||||
0.6.7 (2016-11-21) | |||||
------------------ | |||||
* Enhancements | |||||
* change #define SAMPLE_COUNT_MACRO to const SAMPLE_COUNT | |||||
* add tutorial_7ab_mapping_layout_to_matix.md | |||||
0.6.6 (2016-11-16) | 0.6.6 (2016-11-16) | ||||
------------------ | ------------------ | ||||
* Enhancements | * Enhancements |
Top priority | Top priority | ||||
------------ | ------------ | ||||
* Add matrix-to-layout mapping (to decouple key matrix from layout) | |||||
* Add breadboard keyboard schematics to tutorials | |||||
Medium priority | Medium priority | ||||
--------------- | --------------- | ||||
* Add breadboard keyboard schematics to tutorials | |||||
* Getting user feedback | |||||
Low priority | Low priority | ||||
------------ | ------------ | ||||
* Getting user feedback |
name=keybrd | name=keybrd | ||||
version=0.6.6 | |||||
version=0.6.7 | |||||
author=Wolfram Volpi | author=Wolfram Volpi | ||||
maintainer=Wolfram Volpi | maintainer=Wolfram Volpi | ||||
sentence=A library for creating custom-keyboard firmware. | sentence=A library for creating custom-keyboard firmware. |
#include "Debouncer_Not.h" | #include "Debouncer_Not.h" | ||||
/* | /* | ||||
strobePin has one of two formats: todo | |||||
strobePin has one of two formats: | |||||
* if strobe pin is on uC (strobe for Scanner_uC or Scanner_ShiftRegsRead), | * if strobe pin is on uC (strobe for Scanner_uC or Scanner_ShiftRegsRead), | ||||
then strobePin is an Arduino pin number connected to this row. | then strobePin is an Arduino pin number connected to this row. | ||||
* if strobe pin is on I/O expander (strobe for Scanner_IOE), then strobePin is bit pattern, | * if strobe pin is on I/O expander (strobe for Scanner_IOE), then strobePin is bit pattern, |
*/ | */ | ||||
Code_LayerHold l_fn(FN, layerState); | Code_LayerHold l_fn(FN, layerState); | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_minus(KEY_MINUS); | Code_Sc s_minus(KEY_MINUS); |
Code_LayerLock l_normal(ALPHA, layerState); | Code_LayerLock l_normal(ALPHA, layerState); | ||||
Code_LayerLock l_sym(SYM, layerState); | Code_LayerLock l_sym(SYM, layerState); | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_minus(KEY_MINUS); | Code_Sc s_minus(KEY_MINUS); |
*/ | */ | ||||
LayerStateInterface& Key_LayeredKeys::refLayerState = groupState; | LayerStateInterface& Key_LayeredKeys::refLayerState = groupState; | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_c(KEY_C); | Code_Sc s_c(KEY_C); |
*/ | */ | ||||
LayerStateInterface& Key_LayeredKeys1::refLayerState = subgroupState; | LayerStateInterface& Key_LayeredKeys1::refLayerState = subgroupState; | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_c(KEY_C); | Code_Sc s_c(KEY_C); |
*/ | */ | ||||
LayerStateInterface& Key_LayeredScSc::refLayerState = subgroupState; | LayerStateInterface& Key_LayeredScSc::refLayerState = subgroupState; | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_c(KEY_C); | Code_Sc s_c(KEY_C); |
LayerState layerState; | LayerState layerState; | ||||
Code_LayerHold l_fn(FN, layerState); | Code_LayerHold l_fn(FN, layerState); | ||||
/* ---------------- SCAN CODES ----------------- | |||||
/* ----------------- SCANCODES ----------------- | |||||
The "Sc" in Code_Sc means "scancode". | The "Sc" in Code_Sc means "scancode". | ||||
When a Code_Sc is pressed, it sends its scancode. | When a Code_Sc is pressed, it sends its scancode. | ||||
*/ | */ |
Code_Shift s_shift(MODIFIERKEY_LEFT_SHIFT); | Code_Shift s_shift(MODIFIERKEY_LEFT_SHIFT); | ||||
Code_LayerHoldShift l_shift(SHIFT, layerState, s_shift); | Code_LayerHoldShift l_shift(SHIFT, layerState, s_shift); | ||||
/* ---------------- SCAN CODES ----------------- | |||||
/* ----------------- SCANCODES ----------------- | |||||
The "Sc" in Code_Sc means "scancode". | The "Sc" in Code_Sc means "scancode". | ||||
When a Code_Sc is pressed, it sends its scancode. | When a Code_Sc is pressed, it sends its scancode. | ||||
*/ | */ |
Code_LayerHold l_fn(FN, layerState); | Code_LayerHold l_fn(FN, layerState); | ||||
/* ---------------- SCAN CODES ----------------- | |||||
/* ----------------- SCANCODES ----------------- | |||||
When a Code_LEDLock object is pressed, it sends its scancode and updates the its LED. | When a Code_LEDLock object is pressed, it sends its scancode and updates the its LED. | ||||
Scancodes can be one of: KEY_CAPS_LOCK, KEY_SCROLL_LOCK, or KEY_NUM_LOCK. | Scancodes can be one of: KEY_CAPS_LOCK, KEY_SCROLL_LOCK, or KEY_NUM_LOCK. | ||||
For example, when o_capsLock is pressed, it sends KEY_CAPS_LOCK scancode and updates LED_capsLck. | For example, when o_capsLock is pressed, it sends KEY_CAPS_LOCK scancode and updates LED_capsLck. |
Code_LayerHold l_fn(FN, layerState); | Code_LayerHold l_fn(FN, layerState); | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_c(KEY_C); | Code_Sc s_c(KEY_C); |
Code_LayerHold l_fn(FN, layerState); | Code_LayerHold l_fn(FN, layerState); | ||||
// ---------------- SCAN CODES ----------------- | |||||
// ----------------- SCANCODES ----------------- | |||||
Code_Sc s_a(KEY_A); | Code_Sc s_a(KEY_A); | ||||
Code_Sc s_b(KEY_B); | Code_Sc s_b(KEY_B); | ||||
Code_Sc s_minus(KEY_MINUS); | Code_Sc s_minus(KEY_MINUS); |