aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Model01-Firmware.ino241
1 files changed, 138 insertions, 103 deletions
diff --git a/Model01-Firmware.ino b/Model01-Firmware.ino
index 5973b2b..95282da 100644
--- a/Model01-Firmware.ino
+++ b/Model01-Firmware.ino
@@ -25,19 +25,20 @@
#include <Kaleidoscope-SpaceCadet.h>
#include <Kaleidoscope-Heatmap.h>
-enum { MACRO_VERSION_INFO,
- MACRO_ANY,
- WOW,
- SAUCY,
- LUL,
- ZZZ,
- GIVE_PLZ,
- TAKE_NRG,
- SEEMS_GOOD,
- GASM
- };
-
-enum { PRIMARY, FUNCTION, NUMPAD, EMOTES }; // layers
+enum {
+ MACRO_VERSION_INFO,
+ MACRO_ANY,
+ WOW,
+ SAUCY,
+ LUL,
+ ZZZ,
+ GIVE_PLZ,
+ TAKE_NRG,
+ SEEMS_GOOD,
+ GASM
+};
+
+enum { DVORAK, WORKMAN, QWERTY, FUNCTION, NUMPAD, EMOTES }; // layers
typedef struct {
uint8_t index;
@@ -68,68 +69,96 @@ static const emote emotes[] = {
// *INDENT-OFF*
KEYMAPS(
- [PRIMARY] = KEYMAP_STACKED
- (Key_Escape, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
- Key_Backtick, Key_Quote, Key_Comma, Key_Period, Key_P, Key_Y, Key_Tab,
- SYSTER, Key_A, Key_O, Key_E, Key_U, Key_I,
- Key_RightGui, Key_Semicolon, Key_Q, Key_J, Key_K, Key_X, Key_LeftGui,
- Key_LeftBracket, Key_Backspace, LSHIFT(Key_LeftBracket), LSHIFT(Key_9),
- //Key_LeftControl, Key_Backspace, Key_LeftAlt, Key_LeftShift,
- ShiftToLayer(FUNCTION),
-
- LockLayer(EMOTES), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
- Key_Enter, Key_F, Key_G, Key_C, Key_R, Key_L, Key_Slash,
- Key_D, Key_H, Key_T, Key_N, Key_S, Key_Minus,
- Key_PcApplication, Key_B, Key_M, Key_W, Key_V, Key_Z, Key_Equals,
- LSHIFT(Key_0), LSHIFT(Key_RightBracket), Key_Spacebar, Key_RightBracket,
- //Key_RightShift, Key_RightAlt, Key_Spacebar, Key_RightControl,
- ShiftToLayer(FUNCTION)),
-
- [FUNCTION] = KEYMAP_STACKED
- (___, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_CapsLock,
- ___, ___, Key_PageUp, Key_UpArrow, Key_PageDown, Key_Home, ___,
- Key_Copy, ___, Key_LeftArrow, Key_DownArrow, Key_RightArrow, Key_End,
- Key_Paste, Key_PrintScreen, Key_Insert, Consumer_ScanPreviousTrack, Consumer_ScanNextTrack, Consumer_PlaySlashPause, ___,
- ___, Key_Delete, ___, ___,
- ___,
-
- ___, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11,
- Key_ScrollLock, Key_Home, Key_PageUp, Key_UpArrow, Key_PageDown, ___, Key_F12,
- Key_End, Key_LeftArrow, Key_DownArrow, Key_RightArrow, ___, ___,
- ___, Consumer_Mute, Consumer_VolumeDecrement, Consumer_VolumeIncrement, ___, Key_Backslash, Key_Pipe,
- ___, ___, ___, ___,
- ___),
-
- [NUMPAD] = KEYMAP_STACKED
- (___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___,
- ___,
-
- M(MACRO_VERSION_INFO), ___, Key_7, Key_8, Key_9, Key_KeypadSubtract, ___,
- ___, ___, Key_4, Key_5, Key_6, Key_KeypadAdd, ___,
- ___, Key_1, Key_2, Key_3, Key_Equals, ___,
- ___, ___, Key_0, Key_Period, Key_KeypadMultiply, Key_KeypadDivide, Key_Enter,
- ___, ___, ___, ___,
- ___),
-
- [EMOTES] = KEYMAP_STACKED
- (___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, M(SEEMS_GOOD),
- ___, M(ZZZ), ___, M(GASM), ___, ___, ___,
- ___, ___, ___, ___,
- ___,
-
- ___, ___, ___, ___, ___, ___, ___,
- ___, ___, ___, ___, ___, M(WOW), ___,
- ___, ___, ___, M(LUL), M(SAUCY), ___,
- ___, ___, ___, M(GIVE_PLZ), M(TAKE_NRG), ___, ___,
- ___, ___, ___, ___,
- ___)
-)
+ [DVORAK] = KEYMAP_STACKED
+ (Key_Escape, Key_1, Key_2, Key_3, Key_4, Key_5, Key_ScrollLock,
+ Key_Backtick, Key_Quote, Key_Comma, Key_Period, Key_P, Key_Y, Key_Tab,
+ MoveToLayer(WORKMAN), Key_A, Key_O, Key_E, Key_U, Key_I,
+ Key_RightGui, Key_Semicolon, Key_Q, Key_J, Key_K, Key_X, Key_LeftGui,
+ Key_LeftBracket, Key_Backspace, LSHIFT(Key_LeftBracket), LSHIFT(Key_9),
+ ShiftToLayer(FUNCTION),
+
+ LockLayer(EMOTES), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
+ Key_Enter, Key_F, Key_G, Key_C, Key_R, Key_L, Key_Slash,
+ Key_D, Key_H, Key_T, Key_N, Key_S, Key_Minus,
+ Key_PcApplication, Key_B, Key_M, Key_W, Key_V, Key_Z, Key_Equals,
+ LSHIFT(Key_0), LSHIFT(Key_RightBracket), Key_Spacebar, Key_RightBracket,
+ ShiftToLayer(FUNCTION)),
+
+ [WORKMAN] = KEYMAP_STACKED
+ (Key_Escape, Key_1, Key_2, Key_3, Key_4, Key_5, Key_ScrollLock,
+ Key_Backtick, Key_Q, Key_D, Key_R, Key_W, Key_B, Key_Tab,
+ MoveToLayer(DVORAK), Key_A, Key_S, Key_H, Key_T, Key_G,
+ Key_RightGui, Key_Z, Key_X, Key_M, Key_C, Key_V, Key_LeftGui,
+ Key_LeftBracket, Key_Backspace, LSHIFT(Key_LeftBracket), LSHIFT(Key_9),
+ ShiftToLayer(FUNCTION),
+
+ LockLayer(EMOTES), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
+ Key_Enter, Key_J, Key_F, Key_U, Key_P, Key_Semicolon, Key_Slash,
+ Key_Y, Key_N, Key_E, Key_O, Key_I, Key_Quote,
+ Key_PcApplication, Key_K, Key_L, Key_Comma, Key_Period, Key_Slash, Key_Equals,
+ LSHIFT(Key_0), LSHIFT(Key_RightBracket), Key_Spacebar, Key_RightBracket,
+ ShiftToLayer(FUNCTION)),
+
+ [QWERTY] = KEYMAP_STACKED
+ (Key_Escape, Key_1, Key_2, Key_3, Key_4, Key_5, Key_ScrollLock,
+ Key_Backtick, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab,
+ MoveToLayer(DVORAK), Key_A, Key_S, Key_D, Key_F, Key_G,
+ Key_RightGui, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_LeftGui,
+ Key_LeftBracket, Key_Backspace, LSHIFT(Key_LeftBracket), LSHIFT(Key_9),
+ ShiftToLayer(FUNCTION),
+
+ LockLayer(EMOTES), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
+ Key_Enter, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_Equals,
+ Key_H, Key_J, Key_K, Key_L, Key_Semicolon, Key_Quote,
+ Key_PcApplication, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus,
+ LSHIFT(Key_0), LSHIFT(Key_RightBracket), Key_Spacebar, Key_RightBracket,
+ ShiftToLayer(FUNCTION)),
+
+ [FUNCTION] = KEYMAP_STACKED
+ (Key_LEDEffectNext, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, LCTRL(Key_ScrollLock),
+ ___, ___, Key_PageUp, Key_UpArrow, Key_PageDown, Key_Home, Key_CapsLock,
+ Key_Copy, ___, Key_LeftArrow, Key_DownArrow, Key_RightArrow, Key_End,
+ Key_Paste, Key_PrintScreen, Key_Insert, Consumer_ScanPreviousTrack, Consumer_ScanNextTrack, Consumer_PlaySlashPause, ___,
+ ___, Key_Delete, ___, ___,
+ ___,
+
+ Key_CapsLock, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11,
+ ___, Key_Home, Key_PageUp, Key_UpArrow, Key_PageDown, ___, Key_F12,
+ Key_End, Key_LeftArrow, Key_DownArrow, Key_RightArrow, ___, ___,
+ ___, Consumer_Mute, Consumer_VolumeDecrement, Consumer_VolumeIncrement, ___, Key_Backslash, Key_Pipe,
+ ___, ___, ___, ___,
+ ___),
+
+ [NUMPAD] = KEYMAP_STACKED
+ (___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___,
+ ___,
+
+ M(MACRO_VERSION_INFO), ___, Key_7, Key_8, Key_9, Key_KeypadSubtract, ___,
+ ___, ___, Key_4, Key_5, Key_6, Key_KeypadAdd, ___,
+ ___, Key_1, Key_2, Key_3, Key_Equals, ___,
+ ___, ___, Key_0, Key_Period, Key_KeypadMultiply, Key_KeypadDivide, Key_Enter,
+ ___, ___, ___, ___,
+ ___),
+
+ [EMOTES] = KEYMAP_STACKED
+ (___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, M(SEEMS_GOOD),
+ ___, M(ZZZ), ___, M(GASM), ___, ___, ___,
+ ___, ___, ___, ___,
+ ___,
+
+ ___, ___, ___, ___, ___, ___, ___,
+ ___, ___, ___, ___, ___, M(WOW), ___,
+ ___, ___, ___, M(LUL), M(SAUCY), ___,
+ ___, ___, ___, M(GIVE_PLZ), M(TAKE_NRG), ___, ___,
+ ___, ___, ___, ___,
+ ___)
+ )
// *INDENT-ON*
@@ -153,45 +182,49 @@ static void versionInfoMacro(uint8_t keyState) {
* keypress event repeating that randomly selected key.
*
*/
-
-static void anyKeyMacro(uint8_t keyState) {
- static Key lastKey;
- bool toggledOn = false;
- if (keyToggledOn(keyState)) {
- lastKey.setKeyCode(Key_A.getKeyCode() + (uint8_t)(millis() % 36));
- toggledOn = true;
+static void anyKeyMacro(KeyEvent &event) {
+ if (keyToggledOn(event.state)) {
+ event.key.setKeyCode(Key_A.getKeyCode() + (uint8_t)(millis() % 36));
+ event.key.setFlags(0);
}
-
- if (keyIsPressed(keyState))
- Kaleidoscope.hid().keyboard().pressKey(lastKey, toggledOn);
}
-const macro_t *emoteMacro(uint8_t macroIndex, uint8_t keyState) {
- if (keyToggledOn(keyState)) {
+static void emoteMacro(uint8_t macroID, KeyEvent &event) {
+ if (keyToggledOn(event.state)) {
for (int i = 0; emotes[i].index != 255; i++) {
- if (emotes[i].index == macroIndex) {
+ if (emotes[i].index == macroID) {
Macros.type(emotes[i].string);
- return MACRO_NONE;
+ return;
}
}
}
- return MACRO_NONE;
}
-const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) {
- switch (macroIndex) {
+/** macroAction dispatches keymap events that are tied to a macro
+ to that macro. It takes two uint8_t parameters.
+
+ The first is the macro being called (the entry in the 'enum' earlier in this file).
+ The second is the state of the keyswitch. You can use the keyswitch state to figure out
+ if the key has just been toggled on, is currently pressed or if it's just been released.
+
+ The 'switch' statement should have a 'case' for each entry of the macro enum.
+ Each 'case' statement should call out to a function to handle the macro in question.
+
+ */
+
+const macro_t *macroAction(uint8_t macroID, KeyEvent &event) {
+ switch (macroID) {
case MACRO_VERSION_INFO:
- versionInfoMacro(keyState);
+ versionInfoMacro(event.state);
break;
case MACRO_ANY:
- anyKeyMacro(keyState);
+ anyKeyMacro(event);
break;
default:
- emoteMacro(macroIndex, keyState);
+ emoteMacro(macroID, event);
}
-
return MACRO_NONE;
}
@@ -256,13 +289,13 @@ static void enterHardwareTestMode(uint8_t combo_index) {
* recognise.
*/
USE_MAGIC_COMBOS({.action = toggleKeyboardProtocol,
- // Left Fn + Esc + Shift
- .keys = { R3C6, R2C6, R3C7 }},
- {.action = enterHardwareTestMode,
- // Left Fn + Prog + LED
- .keys = { R3C6, R0C0, R0C6 }});
+ // Left Fn + Esc + Shift
+ .keys = { R3C6, R2C6, R3C7 }},
+ {.action = enterHardwareTestMode,
+ // Left Fn + Prog + LED
+ .keys = { R3C6, R0C0, R0C6 }});
-static LayerHighlighter emoteHighlighter(EMOTES);
+static kaleidoscope::plugin::LayerHighlighter emoteHighlighter(EMOTES);
// First, tell Kaleidoscope which plugins you want to use.
// The order can be important. For example, LED effects are
@@ -273,7 +306,7 @@ KALEIDOSCOPE_INIT_PLUGINS(EEPROMSettings,
Qukeys,
//SpaceCadet,
//MacrosOnTheFly,
- Syster,
+ //Syster,
// LEDControl provides support for other LED
// modes
LEDControl,
@@ -344,6 +377,7 @@ void loop() {
Kaleidoscope.loop();
}
+/*
void systerAction(kaleidoscope::plugin::Syster::action_t action, const char *symbol) {
switch (action) {
case kaleidoscope::plugin::Syster::StartAction:
@@ -416,3 +450,4 @@ void systerAction(kaleidoscope::plugin::Syster::action_t action, const char *sym
break;
}
}
+*/