diff --git a/examples/Devices/Keyboardio/SAMDTestbed/.kaleidoscope-builder.conf b/examples/Devices/Keyboardio/SAMDTestbed/.kaleidoscope-builder.conf new file mode 100644 index 00000000..5d03ea41 --- /dev/null +++ b/examples/Devices/Keyboardio/SAMDTestbed/.kaleidoscope-builder.conf @@ -0,0 +1,2 @@ +DEFAULT_SKETCH="Atreus" +BOARD="keyboardio_atreus" diff --git a/examples/Devices/Keyboardio/SAMDTestbed/Makefile b/examples/Devices/Keyboardio/SAMDTestbed/Makefile new file mode 100644 index 00000000..73ead91e --- /dev/null +++ b/examples/Devices/Keyboardio/SAMDTestbed/Makefile @@ -0,0 +1,50 @@ +# This makefile for a Kaleidoscope sketch pulls in all the targets +# required to build the example + + + + +$(info "mebbe Adding $(KALEIDOSCOPE_DIR)") +ifneq ($(KALEIDOSCOPE_DIR),) +search_path += $(KALEIDOSCOPE_DIR) +$(info "Adding $(KALEIDOSCOPE_DIR)") +endif + +ifneq ($(ARDUINO_DIRECTORIES_USER),) +search_path += $(ARDUINO_DIRECTORIES_USER)/hardware/keyboardio/avr/libraries/Kaleidoscope +endif + +ifeq ($(shell uname -s),Darwin) +search_path += $(HOME)/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope +else +search_path += $(HOME)/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope +endif + +sketch_makefile := etc/makefiles/sketch.mk + +$(foreach candidate, $(search_path), $(if $(wildcard $(candidate)/$(sketch_makefile)), $(eval ks_dir ?= $(candidate)))) + +ifneq ($(ks_dir),) + +$(info Using Kaleidoscope from $(ks_dir)) + +export KALEIDOSCOPE_DIR := $(ks_dir) +include $(ks_dir)/$(sketch_makefile) + +else + +$(info I can't find your Kaleidoscope installation.) +$(info ) +$(info I tried looking in:) +$(info ) +$(foreach candidate, $(search_path), $(info $(candidate))) +$(info ) +$(info The easiest way to fix this is to set the 'KALEIDOSCOPE_DIR' environment) +$(info variable to the location of your Kaleidoscope directory.) + +endif + + +null-target: + $(info You should never see this message) + @: diff --git a/examples/Devices/Keyboardio/SAMDTestbed/SAMDTestbed.ino b/examples/Devices/Keyboardio/SAMDTestbed/SAMDTestbed.ino new file mode 100644 index 00000000..f0f00296 --- /dev/null +++ b/examples/Devices/Keyboardio/SAMDTestbed/SAMDTestbed.ino @@ -0,0 +1,146 @@ +/* -*- 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" +#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" + + + +#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_STACKED + ( + 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 + ), + + [FUN] = KEYMAP_STACKED + ( + Key_Exclamation ,Key_At ,Key_UpArrow ,Key_Dollar ,Key_Percent + ,Key_LeftParen ,Key_LeftArrow ,Key_DownArrow ,Key_RightArrow ,Key_RightParen + ,Key_LeftBracket ,Key_RightBracket ,Key_Hash ,Key_LeftCurlyBracket ,Key_RightCurlyBracket ,Key_Caret + ,TG(UPPER) ,Key_Insert ,Key_LeftGui ,Key_LeftShift ,Key_Delete ,Key_LeftControl + + ,Key_PageUp ,Key_7 ,Key_8 ,Key_9 ,Key_Backspace + ,Key_PageDown ,Key_4 ,Key_5 ,Key_6 ,___ + ,Key_And ,Key_Star ,Key_1 ,Key_2 ,Key_3 ,Key_Plus + ,Key_LeftAlt ,Key_Space ,___ ,Key_Period ,Key_0 ,Key_Equals + ), + + [UPPER] = KEYMAP_STACKED + ( + Key_Insert ,Key_Home ,Key_UpArrow ,Key_End ,Key_PageUp + ,Key_Delete ,Key_LeftArrow ,Key_DownArrow ,Key_RightArrow ,Key_PageDown + ,M(MACRO_VERSION_INFO) ,Consumer_VolumeIncrement ,XXX ,XXX ,___ ,___ + ,MoveToLayer(QWERTY) ,Consumer_VolumeDecrement ,___ ,___ ,___ ,___ + + ,Key_UpArrow ,Key_F7 ,Key_F8 ,Key_F9 ,Key_F10 + ,Key_DownArrow ,Key_F4 ,Key_F5 ,Key_F6 ,Key_F11 + ,___ ,XXX ,Key_F1 ,Key_F2 ,Key_F3 ,Key_F12 + ,___ ,___ ,MoveToLayer(QWERTY) ,Key_PrintScreen ,Key_ScrollLock ,Consumer_PlaySlashPause + ) +) +/* *INDENT-ON* */ + +KALEIDOSCOPE_INIT_PLUGINS( + EEPROMSettings, + EEPROMKeymap, + Focus, + FocusEEPROMCommand, + FocusSettingsCommand, + Qukeys, + SpaceCadet, + OneShot, + Macros, + MouseKeys +); + +const macro_t *macroAction(uint8_t macroIndex, uint8_t keyState) { + switch (macroIndex) { + 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: + if (keyToggledOn(keyState)) { + 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(); +} diff --git a/examples/Devices/Keyboardio/SAMDTestbed/sketch.json b/examples/Devices/Keyboardio/SAMDTestbed/sketch.json new file mode 100644 index 00000000..7c747463 --- /dev/null +++ b/examples/Devices/Keyboardio/SAMDTestbed/sketch.json @@ -0,0 +1,6 @@ +{ + "cpu": { + "fqbn": "kaleidoscope:samd:kbio_metro_m4", + "port": "" + } +}