/* -*- mode: c++ -*- * Atreus -- Chrysalis-enabled Sketch for the Keyboardio Atreus * Copyright (C) 2018, 2019 Keyboard.io, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef BUILD_INFORMATION #define BUILD_INFORMATION "locally built on " __DATE__ " at " __TIME__ #endif #include "Kaleidoscope.h" #include "Kaleidoscope-EEPROM-Settings.h" #include "Kaleidoscope-EEPROM-Keymap.h" #include "Kaleidoscope-FocusSerial.h" #include "Kaleidoscope-Macros.h" #include "Kaleidoscope-MouseKeys.h" #include "Kaleidoscope-OneShot.h" #include "Kaleidoscope-Qukeys.h" #include "Kaleidoscope-SpaceCadet.h" #include "Kaleidoscope-Hardware-Keyboardio-SpaceCadet.h" #define MO(n) ShiftToLayer(n) #define TG(n) LockLayer(n) enum { MACRO_QWERTY, MACRO_VERSION_INFO }; #define Key_Exclamation LSHIFT(Key_1) #define Key_At LSHIFT(Key_2) #define Key_Hash LSHIFT(Key_3) #define Key_Dollar LSHIFT(Key_4) #define Key_Percent LSHIFT(Key_5) #define Key_Caret LSHIFT(Key_6) #define Key_And LSHIFT(Key_7) #define Key_Star LSHIFT(Key_8) #define Key_Plus LSHIFT(Key_Equals) enum { QWERTY, FUN, UPPER }; /* *INDENT-OFF* */ KEYMAPS( [QWERTY] = KEYMAP( Key_Q ,Key_W ,Key_E ,Key_R ,Key_T ,Key_Y ,Key_U ,Key_I ,Key_O ,Key_P ,Key_A ,Key_S ,Key_D ,Key_F ,Key_G ,Key_H ,Key_J ,Key_K ,Key_L ,Key_Semicolon ,Key_Z ,Key_X ,Key_C ,Key_V ,Key_B, Key_Backtick ,Key_Backslash,Key_N ,Key_M ,Key_Comma ,Key_Period ,Key_Slash ,Key_Esc ,Key_Tab ,Key_LeftGui ,Key_LeftShift ,Key_Backspace ,Key_LeftControl ,Key_LeftAlt ,Key_Space ,MO(FUN) ,Key_Minus ,Key_Quote ,Key_Enter, Key_Q ,Key_W ,Key_E ,Key_R ,Key_T ,Key_A ,Key_S ,Key_D ,Key_F ,Key_G ,Key_Z ,Key_X ,Key_C ,Key_V ,Key_B, Key_Backtick ,Key_Esc ,Key_Tab ,Key_LeftGui ,Key_LeftShift ,Key_Backspace ,Key_LeftControl ,Key_Y ,Key_U ,Key_I ,Key_O ,Key_P ,Key_H ,Key_J ,Key_K ,Key_L ,Key_Semicolon ,Key_Backslash,Key_N ,Key_M ,Key_Comma ,Key_Period ,Key_Slash ,Key_LeftAlt ,Key_Space ,MO(FUN) ,Key_Minus ,Key_Quote ,Key_Enter ,Key_H ,Key_J ,Key_K ,Key_L ,Key_Semicolon ,Key_Backslash,Key_N ,Key_M ,Key_Comma ,Key_Period ,Key_Slash, XXX, XXX ) ) /* *INDENT-ON* */ KALEIDOSCOPE_INIT_PLUGINS( EEPROMSettings, EEPROMKeymap, Focus, FocusEEPROMCommand, FocusSettingsCommand, Qukeys, SpaceCadet, OneShot, Macros, MouseKeys ); const macro_t *macroAction(uint8_t macro_id, KeyEvent &event) { if (keyToggledOn(event.state)) { switch (macro_id) { case MACRO_QWERTY: // This macro is currently unused, but is kept around for compatibility // reasons. We used to use it in place of `MoveToLayer(QWERTY)`, but no // longer do. We keep it so that if someone still has the old layout with // the macro in EEPROM, it will keep working after a firmware update. Layer.move(QWERTY); break; case MACRO_VERSION_INFO: Macros.type(PSTR("Keyboardio Atreus - Kaleidoscope ")); Macros.type(PSTR(BUILD_INFORMATION)); break; default: break; } } return MACRO_NONE; } void setup() { Kaleidoscope.setup(); SpaceCadet.disable(); EEPROMKeymap.setup(10); } void loop() { Kaleidoscope.loop(); }