diff --git a/.travis.yml b/.travis.yml index 151f8618..f5ae78c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,39 +1,21 @@ -os: - - linux - -language: - - c - -compiler: - - avr-gcc - +os: linux +dist: trusty +sudo: required +language: c +compiler: avr-gcc +branches: + except: + - /^.*-automated-build$/ env: - - KEYBOARD=alps64 - - KEYBOARD=arrow_pad - - KEYBOARD=atomic - - KEYBOARD=atreus - - KEYBOARD=bantam44 - - KEYBOARD=clueboard1 - - KEYBOARD=clueboard2 - - KEYBOARD=cluepad - - KEYBOARD=ergodox_ez - - KEYBOARD=gh60 - - KEYBOARD=hhkb - - KEYBOARD=jd45 - - KEYBOARD=kc60 - - KEYBOARD=phantom - - KEYBOARD=planck - - KEYBOARD=preonic - - KEYBOARD=retro_refit - - KEYBOARD=satan - - KEYBOARD=sixkeyboard - + global: + - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= script: - - cd keyboards/$KEYBOARD && make all-keymaps - +- make all-keyboards quick AUTOGEN=true addons: apt: packages: - - avr-libc - - gcc-avr - - dfu-programmer + - avr-libc + - gcc-avr + - dfu-programmer + - pandoc +after_success: bash util/travis_compiled_push.sh \ No newline at end of file diff --git a/Makefile b/Makefile index ffbdf742..72710c2d 100644 --- a/Makefile +++ b/Makefile @@ -10,19 +10,32 @@ abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) ifneq (,$(findstring /keyboards/,$(starting_makefile))) possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) ifneq (,$(findstring /keymaps/,$(possible_keyboard))) - KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) - tmk_root = ../../../.. + KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) + ifneq (,$(findstring /,$(KEYBOARD_DIR))) + # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) + # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) + tmk_root = ../../.. + else + tmk_root = ../../../.. + endif else - KEYBOARD_DIR:=$(possible_keyboard) KEYMAP_DIR:=default - tmk_root = ../.. + KEYBOARD_DIR:=$(possible_keyboard) + ifneq (,$(findstring /,$(KEYBOARD_DIR))) + # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) + # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) + tmk_root = ../../.. + else + tmk_root = ../.. + endif endif else tmk_root = . endif # $(info $(KEYBOARD_DIR)) # $(info $(KEYMAP_DIR)) +# $(info $(SUBPROJECT_DIR)) # Directory common source filess exist TOP_DIR = $(tmk_root) @@ -32,6 +45,7 @@ TMK_PATH = $(TOP_DIR)/$(TMK_DIR) QUANTUM_DIR = quantum QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) + ifdef keyboard KEYBOARD ?= $(keyboard) endif @@ -41,7 +55,16 @@ endif ifndef KEYBOARD KEYBOARD=planck endif + +# converts things to keyboards/subproject +ifneq (,$(findstring /,$(KEYBOARD))) + TEMP:=$(KEYBOARD) + KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) + SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) +endif + KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) + ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c ifndef ARCH @@ -51,6 +74,28 @@ else $(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) endif +ifdef sub + SUBPROJECT=$(sub) +endif +ifdef subproject + SUBPROJECT=$(subproject) +endif + +ifdef SUBPROJECT_DEFAULT + SUBPROJECT?=$(SUBPROJECT_DEFAULT) +endif + +ifdef SUBPROJECT + SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) + ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") + OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) + SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c + -include $(SUBPROJECT_PATH)/Makefile + else +$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) + endif +endif + ifdef keymap KEYMAP ?= $(keymap) endif @@ -68,7 +113,13 @@ else $(error "$(KEYMAP_PATH)/keymap.c" does not exist) endif -TARGET ?= $(KEYBOARD)_$(KEYMAP) +ifdef SUBPROJECT + TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) +else + TARGET ?= $(KEYBOARD)_$(KEYMAP) +endif + + ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") CONFIG_H = $(KEYMAP_PATH)/config.h @@ -83,6 +134,10 @@ SRC += $(KEYBOARD_FILE) \ $(QUANTUM_DIR)/keymap.c \ $(QUANTUM_DIR)/keycode_config.c +ifdef SUBPROJECT + SRC += $(SUBPROJECT_FILE) +endif + ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif @@ -104,6 +159,9 @@ endif # Search Path VPATH += $(KEYMAP_PATH) +ifdef SUBPROJECT + VPATH += $(SUBPROJECT_PATH) +endif VPATH += $(KEYBOARD_PATH) VPATH += $(TOP_DIR) VPATH += $(TMK_PATH) diff --git a/keyboards/clueboard1/Makefile b/keyboards/clueboard/Makefile similarity index 99% rename from keyboards/clueboard1/Makefile rename to keyboards/clueboard/Makefile index a2599d21..d6f4bfca 100644 --- a/keyboards/clueboard1/Makefile +++ b/keyboards/clueboard/Makefile @@ -1,4 +1,5 @@ +SUBPROJECT_DEFAULT = rev2 # MCU name MCU = atmega32u4 diff --git a/keyboards/clueboard1/clueboard1.c b/keyboards/clueboard/clueboard.c similarity index 68% rename from keyboards/clueboard1/clueboard1.c rename to keyboards/clueboard/clueboard.c index 5785f447..13195bda 100644 --- a/keyboards/clueboard1/clueboard1.c +++ b/keyboards/clueboard/clueboard.c @@ -1,4 +1,9 @@ -#include "clueboard1.h" +#include "clueboard.h" + +void led_init_ports() { + // * Set our LED pins as output + DDRB |= (1<<4); +} void led_set_kb(uint8_t usb_led) { DDRF |= (1<<0); diff --git a/keyboards/clueboard/clueboard.h b/keyboards/clueboard/clueboard.h new file mode 100644 index 00000000..4f2a3c1d --- /dev/null +++ b/keyboards/clueboard/clueboard.h @@ -0,0 +1,13 @@ +#ifndef CLUEBOARD_H +#define CLUEBOARD_H + +#ifdef SUBPROJECT_rev1 + #include "rev1.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2.h" +#endif + +#include "quantum.h" + +#endif diff --git a/keyboards/clueboard1/config.h b/keyboards/clueboard/config.h similarity index 69% rename from keyboards/clueboard1/config.h rename to keyboards/clueboard/config.h index 16338ddb..ceac8079 100644 --- a/keyboards/clueboard1/config.h +++ b/keyboards/clueboard/config.h @@ -22,29 +22,10 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xC1ED -#define PRODUCT_ID 0x2301 -#define DEVICE_VER 0x0003 #define MANUFACTURER Clueboard #define PRODUCT Clueboard #define DESCRIPTION QMK keyboard firmware for Clueboard -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 - -// ROWS: Top to bottom, COLS: Left to right -/* Column pin configuration -* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -* pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1 -*/ -#define MATRIX_COL_PINS { B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 } -/* Row pin configuration -* row: 0 1 2 3 4 -* pin: D1 D0 D2 D5 D3 -*/ -#define MATRIX_ROW_PINS { D1, D0, D2, D5, D3 } -#define UNUSED_PINS - /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -64,16 +45,6 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* Underlight configuration - */ - #define ws2812_PORTREG PORTB - #define ws2812_DDRREG DDRB - #define ws2812_pin 2 - #define RGBLED_NUM 14 // Number of LEDs - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -92,4 +63,12 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION + +#ifdef SUBPROJECT_rev1 + #include "rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2/config.h" +#endif + #endif diff --git a/keyboards/clueboard2/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c similarity index 99% rename from keyboards/clueboard2/keymaps/default/keymap.c rename to keyboards/clueboard/keymaps/default/keymap.c index 1795e68c..89f71e83 100644 --- a/keyboards/clueboard2/keymaps/default/keymap.c +++ b/keyboards/clueboard/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -#include "clueboard2.h" +#include "clueboard.h" // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -138,6 +138,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { if (record->event.pressed) { rgblight_toggle(); } + break; case RGBLED_INCREASE_HUE: if (record->event.pressed) { diff --git a/keyboards/clueboard/keymaps/max/Makefile b/keyboards/clueboard/keymaps/max/Makefile new file mode 100644 index 00000000..950dadf8 --- /dev/null +++ b/keyboards/clueboard/keymaps/max/Makefile @@ -0,0 +1,49 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/clueboard2/keymaps/max/keymap.c b/keyboards/clueboard/keymaps/max/keymap.c similarity index 99% rename from keyboards/clueboard2/keymaps/max/keymap.c rename to keyboards/clueboard/keymaps/max/keymap.c index 65a101c2..82c93401 100644 --- a/keyboards/clueboard2/keymaps/max/keymap.c +++ b/keyboards/clueboard/keymaps/max/keymap.c @@ -1,4 +1,4 @@ -#include "clueboard2.h" +#include "clueboard.h" // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) diff --git a/keyboards/clueboard2/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c similarity index 99% rename from keyboards/clueboard2/keymaps/skully/keymap.c rename to keyboards/clueboard/keymaps/skully/keymap.c index 74a03f2f..df6f054e 100644 --- a/keyboards/clueboard2/keymaps/skully/keymap.c +++ b/keyboards/clueboard/keymaps/skully/keymap.c @@ -1,4 +1,4 @@ -#include "clueboard2.h" +#include "clueboard.h" // Used for SHIFT_ESC #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) diff --git a/keyboards/clueboard/rev1/Makefile b/keyboards/clueboard/rev1/Makefile new file mode 100644 index 00000000..80a942d0 --- /dev/null +++ b/keyboards/clueboard/rev1/Makefile @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/clueboard/rev1/config.h b/keyboards/clueboard/rev1/config.h new file mode 100644 index 00000000..9bb58f56 --- /dev/null +++ b/keyboards/clueboard/rev1/config.h @@ -0,0 +1,37 @@ +#ifndef REV2_CONFIG_H +#define REV2_CONFIG_H + +#include "../config.h" + +#define PRODUCT_ID 0x2301 +#define DEVICE_VER 0x0003 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +// ROWS: Top to bottom, COLS: Left to right +/* Column pin configuration +* col: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +* pin: B3 F1 F4 F5 F6 C7 C6 B6 B5 B4 D7 D6 D4 F7 B0 B1 +*/ +#define MATRIX_COL_PINS { B3, F1, F4, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, F7, B0, B1 } +/* Row pin configuration +* row: 0 1 2 3 4 +* pin: D1 D0 D2 D5 D3 +*/ +#define MATRIX_ROW_PINS { D1, D0, D2, D5, D3 } +#define UNUSED_PINS + +/* Underlight configuration + */ +#define ws2812_PORTREG PORTB +#define ws2812_DDRREG DDRB +#define ws2812_pin 2 +#define RGBLED_NUM 14 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + + +#endif \ No newline at end of file diff --git a/keyboards/clueboard/rev1/rev1.c b/keyboards/clueboard/rev1/rev1.c new file mode 100644 index 00000000..520a869e --- /dev/null +++ b/keyboards/clueboard/rev1/rev1.c @@ -0,0 +1 @@ +#include "rev1.h" diff --git a/keyboards/clueboard1/clueboard1.h b/keyboards/clueboard/rev1/rev1.h similarity index 97% rename from keyboards/clueboard1/clueboard1.h rename to keyboards/clueboard/rev1/rev1.h index 3c6c3334..abdfd079 100644 --- a/keyboards/clueboard1/clueboard1.h +++ b/keyboards/clueboard/rev1/rev1.h @@ -1,8 +1,7 @@ -#ifndef CLUEBOARD1_H -#define CLUEBOARD1_H - -#include "quantum.h" +#ifndef REV1_H +#define REV1_H +#include "../clueboard.h" /* Clueboard matrix layout * ,-----------------------------------------------------------. ,---. @@ -30,6 +29,7 @@ */ // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array + #define KEYMAP( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \ diff --git a/keyboards/clueboard/rev2/Makefile b/keyboards/clueboard/rev2/Makefile new file mode 100644 index 00000000..cea967b7 --- /dev/null +++ b/keyboards/clueboard/rev2/Makefile @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/clueboard/rev2/config.h b/keyboards/clueboard/rev2/config.h new file mode 100644 index 00000000..e2f8336b --- /dev/null +++ b/keyboards/clueboard/rev2/config.h @@ -0,0 +1,40 @@ +#ifndef REV2_CONFIG_H +#define REV2_CONFIG_H + +#include "../config.h" + +#define PRODUCT_ID 0x2320 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +* row: 0 1 2 3 4 5 6 7 8 9 +* pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2 +*/ +#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 } +/* Column pin configuration + * col: 0 1 2 3 4 5 6 7 + * pin: F0 F1 F4 F5 F6 F7 E6 B1 + */ +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 } +#define UNUSED_PINS + + /* Backlight configuration + */ +#define BACKLIGHT_LEVELS 1 + +/* Underlight configuration + */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin 7 +#define RGBLED_NUM 14 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#endif \ No newline at end of file diff --git a/keyboards/clueboard/rev2/rev2.c b/keyboards/clueboard/rev2/rev2.c new file mode 100644 index 00000000..7a8ec368 --- /dev/null +++ b/keyboards/clueboard/rev2/rev2.c @@ -0,0 +1,47 @@ +#include "rev2.h" +#include +#include "backlight.h" +#include "print.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + matrix_init_user(); + led_init_ports(); + + // JTAG disable for PORT F. write JTD bit twice within four cycles. + MCUCR |= (1<event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif - } -} diff --git a/keyboards/clueboard2/config.h b/keyboards/clueboard2/config.h deleted file mode 100644 index 2887519a..00000000 --- a/keyboards/clueboard2/config.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -Copyright 2012 Jun Wako - -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, see . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xC1ED -#define PRODUCT_ID 0x2320 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Clueboard -#define PRODUCT Clueboard with RGB Underlighting -#define DESCRIPTION QMK keyboard firmware for Clueboard - -/* key matrix size */ -#define MATRIX_ROWS 10 -#define MATRIX_COLS 8 - -// ROWS: Top to bottom, COLS: Left to right -/* Row pin configuration -* row: 0 1 2 3 4 5 6 7 8 9 -* pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2 -*/ -#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 } -/* Column pin configuration - * col: 0 1 2 3 4 5 6 7 - * pin: F0 F1 F4 F5 F6 F7 E6 B1 - */ -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCING_DELAY 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* Backlight configuration - */ -#define BACKLIGHT_LEVELS 1 - -/* Underlight configuration - */ - #define ws2812_PORTREG PORTD - #define ws2812_DDRREG DDRD - #define ws2812_pin 7 - #define RGBLED_NUM 14 // Number of LEDs - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/clueboard2/keymaps/max/Makefile b/keyboards/clueboard2/keymaps/max/Makefile deleted file mode 100644 index 22b5b94e..00000000 --- a/keyboards/clueboard2/keymaps/max/Makefile +++ /dev/null @@ -1,11 +0,0 @@ - - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/cluepad/Makefile b/keyboards/cluepad/Makefile index eb7a5802..a331ff4d 100644 --- a/keyboards/cluepad/Makefile +++ b/keyboards/cluepad/Makefile @@ -1,8 +1,4 @@ - -# # project specific files -SRC = backlight.c - # MCU name #MCU = at90usb1287 MCU = atmega32u4 diff --git a/keyboards/cluepad/backlight.c b/keyboards/cluepad/backlight.c deleted file mode 100644 index a9caed1d..00000000 --- a/keyboards/cluepad/backlight.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include "backlight.h" -#include "led.h" - -#include "print.h" - -int pwm_level; - -void led_set_kb(uint8_t usb_led) -{ - print("led_set\n"); -} - -void init_backlight_pin(void) -{ - // Set C7 to output - DDRC |= (1<<7); - - // Initialize the timer - TC4H = 0x03; - OCR4C = 0xFF; - TCCR4A = 0b10000010; - TCCR4B = 0b00000001; -} - -void backlight_set(uint8_t level) -{ - // Determine the PWM level - switch (level) - { - case 0: - // 33% - pwm_level = 0x54; - break; - case 1: - // 66% - pwm_level = 0xA8; - break; - case 2: - // 100% - pwm_level = 0xFF; - break; - case 3: - // 0% - pwm_level = 0x00; - break; - default: - xprintf("Unknown level: %d\n", level); - } - - // Write the PWM level to the timer - TC4H = pwm_level >> 8; - OCR4A = 0xFF & pwm_level; -} diff --git a/keyboards/cluepad/cluepad.c b/keyboards/cluepad/cluepad.c index cbbdccb3..1867b617 100644 --- a/keyboards/cluepad/cluepad.c +++ b/keyboards/cluepad/cluepad.c @@ -1,15 +1,60 @@ #include "cluepad.h" +int pwm_level; + void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up matrix_init_user(); - #ifdef BACKLIGHT_ENABLE - init_backlight_pin(); - #endif - // JTAG disable for PORT F. write JTD bit twice within four cycles. MCUCR |= (1<> 8; + OCR4A = 0xFF & pwm_level; +} diff --git a/keyboards/cluepad/cluepad.h b/keyboards/cluepad/cluepad.h index 615a9111..5e4a5999 100644 --- a/keyboards/cluepad/cluepad.h +++ b/keyboards/cluepad/cluepad.h @@ -1,9 +1,7 @@ #ifndef CLUEPAD_H #define CLUEPAD_H -#include "matrix.h" -#include "keymap.h" -#include +#include "quantum.h" /* Cluepad matrix layout diff --git a/keyboards/planck/Makefile b/keyboards/planck/Makefile index 08e9205c..23944f92 100644 --- a/keyboards/planck/Makefile +++ b/keyboards/planck/Makefile @@ -1,4 +1,5 @@ +SUBPROJECT_DEFAULT = rev4 # MCU name #MCU = at90usb1287 diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index da2b000f..4dd1d22a 100644 --- a/keyboards/planck/config.h +++ b/keyboards/planck/config.h @@ -23,7 +23,6 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards #define PRODUCT The Planck Keyboard #define DESCRIPTION A compact ortholinear keyboard @@ -79,4 +78,11 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + #endif diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h index a9117e0e..985e250a 100644 --- a/keyboards/planck/keymaps/experimental/config.h +++ b/keyboards/planck/keymaps/experimental/config.h @@ -4,5 +4,6 @@ #include "../../config.h" #define LEADER_TIMEOUT 300 +#define BACKLIGHT_BREATHING #endif diff --git a/keyboards/planck/keymaps/yang/Makefile b/keyboards/planck/keymaps/yang/Makefile index f4908d70..6b18762f 100644 --- a/keyboards/planck/keymaps/yang/Makefile +++ b/keyboards/planck/keymaps/yang/Makefile @@ -3,6 +3,7 @@ # the appropriate keymap folder that will get included automatically # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +AUDIO_ENABLE = no ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h index 81c0e8cb..8cfee5d1 100644 --- a/keyboards/planck/planck.h +++ b/keyboards/planck/planck.h @@ -1,6 +1,13 @@ #ifndef PLANCK_H #define PLANCK_H +#ifdef SUBPROJECT_rev3 + #include "rev3.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4.h" +#endif + #include "quantum.h" #define PLANCK_MIT( \ diff --git a/keyboards/planck/rev3/Makefile b/keyboards/planck/rev3/Makefile new file mode 100644 index 00000000..55940968 --- /dev/null +++ b/keyboards/planck/rev3/Makefile @@ -0,0 +1,5 @@ +AUDIO_ENABLE = no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/rev3/config.h b/keyboards/planck/rev3/config.h new file mode 100644 index 00000000..fa50a562 --- /dev/null +++ b/keyboards/planck/rev3/config.h @@ -0,0 +1,8 @@ +#ifndef REV3_CONFIG_H +#define REV3_CONFIG_H + +#include "../config.h" + +#define DEVICE_VER 0x0003 + +#endif \ No newline at end of file diff --git a/keyboards/planck/rev3/rev3.c b/keyboards/planck/rev3/rev3.c new file mode 100644 index 00000000..9ccd1d88 --- /dev/null +++ b/keyboards/planck/rev3/rev3.c @@ -0,0 +1 @@ +#include "rev3.h" \ No newline at end of file diff --git a/keyboards/planck/rev3/rev3.h b/keyboards/planck/rev3/rev3.h new file mode 100644 index 00000000..628951d9 --- /dev/null +++ b/keyboards/planck/rev3/rev3.h @@ -0,0 +1,6 @@ +#ifndef REV3_H +#define REV3_H + +#include "../planck.h" + +#endif \ No newline at end of file diff --git a/keyboards/planck/rev4/Makefile b/keyboards/planck/rev4/Makefile new file mode 100644 index 00000000..01d848e9 --- /dev/null +++ b/keyboards/planck/rev4/Makefile @@ -0,0 +1,5 @@ +AUDIO_ENABLE = yes # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/planck/rev4/config.h b/keyboards/planck/rev4/config.h new file mode 100644 index 00000000..98189fba --- /dev/null +++ b/keyboards/planck/rev4/config.h @@ -0,0 +1,8 @@ +#ifndef REV4_CONFIG_H +#define REV4_CONFIG_H + +#include "../config.h" + +#define DEVICE_VER 0x0004 + +#endif \ No newline at end of file diff --git a/keyboards/planck/rev4/rev4.c b/keyboards/planck/rev4/rev4.c new file mode 100644 index 00000000..98a75d2e --- /dev/null +++ b/keyboards/planck/rev4/rev4.c @@ -0,0 +1 @@ +#include "rev4.h" \ No newline at end of file diff --git a/keyboards/planck/rev4/rev4.h b/keyboards/planck/rev4/rev4.h new file mode 100644 index 00000000..e4cf1800 --- /dev/null +++ b/keyboards/planck/rev4/rev4.h @@ -0,0 +1,6 @@ +#ifndef REV4_H +#define REV4_H + +#include "../planck.h" + +#endif \ No newline at end of file diff --git a/keyboards/readme.md b/keyboards/readme.md index 5574619d..e9798654 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -23,8 +23,7 @@ Made in Taiwan using advanced robotic manufacturing, the ErgoDox EZ is a fully-a Designed and built in Felton, CA, Clueboards keyboard emphasize quality and locally sourced components, available on [clueboard.co](http://clueboard.co) -* [Clueboard rev.1](/keyboards/clueboard1/) - The old Clueboard. -* [Clueboard rev.2](/keyboards/clueboard2/) - New and improved! The Clueboard, revision 2. +* [Clueboard](/keyboards/clueboard/) - The 66% custom keyboard. * [Cluepad](/keyboards/cluepad/) - A mechanical numpad with QMK superpowers. diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 00d45f7a..47f326ea 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -1,3 +1,6 @@ +#ifndef AUDIO_H +#define AUDIO_H + #include #include #include @@ -7,9 +10,6 @@ #include "voices.h" #include "quantum.h" -#ifndef AUDIO_H -#define AUDIO_H - // Largely untested PWM audio mode (doesn't sound as good) // #define PWM_AUDIO diff --git a/quantum/matrix.c b/quantum/matrix.c index 6e9f9272..f5744658 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -86,29 +86,29 @@ uint8_t matrix_cols(void) { return MATRIX_COLS; } -void matrix_power_up(void) { -#if DIODE_DIRECTION == COL2ROW - for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { - /* DDRxn */ - _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF); - toggle_row(r); - } - for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { - /* PORTxn */ - _SFR_IO8((col_pins[c] >> 4) + 2) |= _BV(col_pins[c] & 0xF); - } -#else - for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { - /* DDRxn */ - _SFR_IO8((col_pins[c] >> 4) + 1) |= _BV(col_pins[c] & 0xF); - toggle_col(c); - } - for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { - /* PORTxn */ - _SFR_IO8((row_pins[r] >> 4) + 2) |= _BV(row_pins[r] & 0xF); - } -#endif -} +// void matrix_power_up(void) { +// #if DIODE_DIRECTION == COL2ROW +// for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { +// /* DDRxn */ +// _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF); +// toggle_row(r); +// } +// for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { +// /* PORTxn */ +// _SFR_IO8((col_pins[c] >> 4) + 2) |= _BV(col_pins[c] & 0xF); +// } +// #else +// for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { +// /* DDRxn */ +// _SFR_IO8((col_pins[c] >> 4) + 1) |= _BV(col_pins[c] & 0xF); +// toggle_col(c); +// } +// for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { +// /* PORTxn */ +// _SFR_IO8((row_pins[r] >> 4) + 2) |= _BV(row_pins[r] & 0xF); +// } +// #endif +// } void matrix_init(void) { /* frees PORTF by setting the JTD bit twice within four cycles */ diff --git a/readme.md b/readme.md index a71c3035..6fa67c04 100644 --- a/readme.md +++ b/readme.md @@ -14,8 +14,7 @@ For an easy-to-read version of this document and the repository, check out [http * [Preonic](/keyboards/preonic/) * [Atomic](/keyboards/atomic/) * [ErgoDox EZ](/keyboards/ergodox_ez/) -* [Clueboard rev.1](/keyboards/clueboard1/) -* [Clueboard rev.2](/keyboards/clueboard2/) +* [Clueboard](/keyboards/clueboard/) * [Cluepad](/keyboards/cluepad/) The project also includes community support for [lots of other keyboards](/keyboards/). diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index aaaba1c2..e37ba0f8 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -51,6 +51,13 @@ ifeq ($(COLOR),true) BOLD=\033[1m endif +ifdef quick + QUICK = $(quick) +endif + +QUICK ?= false +AUTOGEN ?= false + ifneq ($(shell awk --version 2>/dev/null),) AWK=awk else @@ -524,7 +531,12 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf @$(SILENT) || printf "$(MSG_FLASH) $@" | $(AWK_CMD) $(eval CMD=$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@) @$(BUILD_CMD) - @$(COPY) $@ $(TARGET).hex + @if $(AUTOGEN); then \ + $(SILENT) || printf "Copying $(TARGET).hex to keymaps/$(KEYMAP)/$(KEYBOARD)_$(KEYMAP).hex\n"; \ + $(COPY) $@ $(KEYMAP_PATH)/$(KEYBOARD)_$(KEYMAP).hex; \ + else \ + $(COPY) $@ $(TARGET).hex; \ + fi %.eep: %.elf @$(SILENT) || printf "$(MSG_EEPROM) $@" | $(AWK_CMD) @@ -570,7 +582,7 @@ $(OBJDIR)/%.o : %.c $(OBJDIR)/%.o : %.cpp @mkdir -p $(@D) @$(SILENT) || printf "$(MSG_COMPILING_CPP) $<" | $(AWK_CMD) - $(CC) -c $(ALL_CPPFLAGS) $< -o $@ + $(eval CMD=$(CC) -c $(ALL_CPPFLAGS) $< -o $@) @$(BUILD_CMD) # Compile: create assembler files from C source files. @@ -600,9 +612,11 @@ $(OBJDIR)/%.o : %.S clean: begin clean_list end clean_list : - $(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR) - $(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR) - $(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR) + @$(REMOVE) -r $(BUILD_DIR) + @$(REMOVE) -r $(TOP_DIR)/$(BUILD_DIR) + @$(REMOVE) -r $(KEYBOARD_PATH)/$(BUILD_DIR) + @if $$SUBPROJECT; then $(REMOVE) -r $(SUBPROJECT_PATH)/$(BUILD_DIR); fi + @$(REMOVE) -r $(KEYMAP_PATH)/$(BUILD_DIR) show_path: @echo VPATH=$(VPATH) diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh new file mode 100644 index 00000000..01317f4b --- /dev/null +++ b/util/travis_compiled_push.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -o errexit -o nounset + +rev=$(git rev-parse --short HEAD) + +git config --global user.name "Travis CI" +git config --global user.email "jack.humb+travis.ci@gmail.com" + +find . -name ".build" | xargs rm -rf +cd .. +git clone https://$GH_TOKEN@github.com/jackhumbert/qmk.fm.git +cd qmk.fm +git submodule update --init --recursive +rm -rf keyboard +rm -rf keyboards +cp -r ../qmk_firmware/keyboards . +cp ../qmk_firmware/readme.md qmk_readme.md +./generate.sh + +git add -A +git commit -m "generated from qmk_firmware/$TRAVIS_BRANCH@${rev}" +git push \ No newline at end of file