summaryrefslogtreecommitdiff
path: root/keyboards/ergodox
diff options
context:
space:
mode:
authorErez Zukerman <bulk@ezuk.org>2016-11-29 08:16:04 -0500
committerGitHub <noreply@github.com>2016-11-29 08:16:04 -0500
commit51ae6da99edd732ccdec6e102bd757e08950d23b (patch)
tree53e316e1fbe468e0b1f65fd11e161ebc74c6ef70 /keyboards/ergodox
parent7b219a7f6016dfe80c1c3db33bcf859e3e355d8d (diff)
parentf946d830f98da0161753d37da9659caa7469cf4f (diff)
downloadqmk_firmware-51ae6da99edd732ccdec6e102bd757e08950d23b.tar.gz
qmk_firmware-51ae6da99edd732ccdec6e102bd757e08950d23b.zip
Merge pull request #918 from jackhumbert/wu5y7
Adds Ergodox EZ RGB lights (both sides using I2C) and implements API base, Midi SysEx API
Diffstat (limited to 'keyboards/ergodox')
-rw-r--r--keyboards/ergodox/ez/Makefile7
-rw-r--r--keyboards/ergodox/ez/config.h13
-rw-r--r--keyboards/ergodox/ez/ez.c10
-rw-r--r--keyboards/ergodox/ez/matrix.c2
-rw-r--r--keyboards/ergodox/ez/rules.mk2
-rw-r--r--keyboards/ergodox/infinity/rules.mk2
-rw-r--r--keyboards/ergodox/keymaps/erez_experimental/Makefile2
-rw-r--r--keyboards/ergodox/keymaps/erez_experimental/config.h1
-rw-r--r--keyboards/ergodox/keymaps/erez_experimental/keymap.c42
-rw-r--r--keyboards/ergodox/keymaps/jack/Makefile6
-rw-r--r--keyboards/ergodox/keymaps/jack/config.h17
-rw-r--r--keyboards/ergodox/keymaps/jack/keymap.c22
-rw-r--r--keyboards/ergodox/rules.mk1
13 files changed, 107 insertions, 20 deletions
diff --git a/keyboards/ergodox/ez/Makefile b/keyboards/ergodox/ez/Makefile
index 191c6bb664..9b6121e2c2 100644
--- a/keyboards/ergodox/ez/Makefile
+++ b/keyboards/ergodox/ez/Makefile
@@ -1,3 +1,8 @@
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+COMMAND_ENABLE = no # Commands for debug and configuration
+RGBLIGHT_ENABLE ?= yes
+MIDI_ENABLE ?= yes
+
ifndef MAKEFILE_INCLUDED
include ../../../Makefile
-endif \ No newline at end of file
+endif
diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
index 084a044ee1..c2750a321f 100644
--- a/keyboards/ergodox/ez/config.h
+++ b/keyboards/ergodox/ez/config.h
@@ -21,6 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../config.h"
+#include "config_common.h"
+
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x1307
@@ -39,6 +41,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LED_BRIGHTNESS_LO 15
#define LED_BRIGHTNESS_HI 255
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D7
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 15 // Number of LEDs
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 255
+#define RGBLIGHT_VAL_STEP 12
+
+#define RGB_MIDI
+#define RGBW_BB_TWI
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/ergodox/ez/ez.c b/keyboards/ergodox/ez/ez.c
index ddb8ff0cf7..039e4c6bb1 100644
--- a/keyboards/ergodox/ez/ez.c
+++ b/keyboards/ergodox/ez/ez.c
@@ -16,10 +16,10 @@ void matrix_init_kb(void) {
// unused pins - C7, D4, D5, D7, E6
// set as input with internal pull-ip enabled
DDRC &= ~(1<<7);
- DDRD &= ~(1<<7 | 1<<5 | 1<<4);
+ DDRD &= ~(1<<5 | 1<<4);
DDRE &= ~(1<<6);
PORTC |= (1<<7);
- PORTD |= (1<<7 | 1<<5 | 1<<4);
+ PORTD |= (1<<5 | 1<<4);
PORTE |= (1<<6);
ergodox_blink_all_leds();
@@ -51,6 +51,10 @@ uint8_t init_mcp23018(void) {
mcp23018_status = 0x20;
// I2C subsystem
+
+ uint8_t sreg_prev;
+ sreg_prev=SREG;
+ cli();
if (i2c_initialized == 0) {
i2c_init(); // on pins D(1,0)
i2c_initialized++;
@@ -79,6 +83,8 @@ uint8_t init_mcp23018(void) {
out:
i2c_stop();
+ SREG=sreg_prev;
+
return mcp23018_status;
}
diff --git a/keyboards/ergodox/ez/matrix.c b/keyboards/ergodox/ez/matrix.c
index a19bab90b2..43f5152591 100644
--- a/keyboards/ergodox/ez/matrix.c
+++ b/keyboards/ergodox/ez/matrix.c
@@ -121,7 +121,7 @@ void matrix_init(void)
matrix_scan_count = 0;
#endif
- matrix_init_kb();
+ matrix_init_quantum();
}
diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk
index a9715beb85..893cfa7a84 100644
--- a/keyboards/ergodox/ez/rules.mk
+++ b/keyboards/ergodox/ez/rules.mk
@@ -72,6 +72,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
#
SLEEP_LED_ENABLE = no
+API_SYSEX_ENABLE ?= yes
+RGBLIGHT_ENABLE ?= yes
ifndef QUANTUM_DIR
include ../../../Makefile
diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk
index ccb735a485..473a6dfec6 100644
--- a/keyboards/ergodox/infinity/rules.mk
+++ b/keyboards/ergodox/infinity/rules.mk
@@ -63,6 +63,8 @@ VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile
LCD_ENABLE ?= yes
LED_ENABLE ?= yes
LCD_BACKLIGHT_ENABLE ?= yes
+MIDI_ENABLE = no
+RGBLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
diff --git a/keyboards/ergodox/keymaps/erez_experimental/Makefile b/keyboards/ergodox/keymaps/erez_experimental/Makefile
index b673c5ce52..51a0c74c54 100644
--- a/keyboards/ergodox/keymaps/erez_experimental/Makefile
+++ b/keyboards/ergodox/keymaps/erez_experimental/Makefile
@@ -3,6 +3,8 @@
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
COMMAND_ENABLE = no # Commands for debug and configuration
+RGBLIGHT_ENABLE ?= yes
+MIDI_ENABLE ?= yes
ifndef QUANTUM_DIR
include ../../../../Makefile
diff --git a/keyboards/ergodox/keymaps/erez_experimental/config.h b/keyboards/ergodox/keymaps/erez_experimental/config.h
index e5d7fe1885..4da18c65aa 100644
--- a/keyboards/ergodox/keymaps/erez_experimental/config.h
+++ b/keyboards/ergodox/keymaps/erez_experimental/config.h
@@ -8,5 +8,6 @@
#undef LEADER_TIMEOUT
#define LEADER_TIMEOUT 300
+
#endif
diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c
index 4804959d63..2963c40e31 100644
--- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c
+++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c
@@ -7,6 +7,12 @@
#define SYMB 1 // symbols
#define MDIA 2 // media keys
+enum custom_keycodes {
+ PLACEHOLDER = SAFE_RANGE, // can always be here
+ RGB_FF00BB // always start with RGB_
+};
+
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
@@ -65,33 +71,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |NxtTab|PrvTab| | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * | | | | | |
+ * | | | |TOG |
* ,------|------|------| |------+------+------.
- * | | | | | | | |
+ * |VAI |VAD |HUI | |SAI |TOG |MOD |
* | | |------| |------| | |
- * | | | | | | | |
+ * | | |HUD | |SAD | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = KEYMAP(
// left hand
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ RGB_FF00BB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5,
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN),
KC_TRNS,KC_TRNS,
- KC_TRNS,
- KC_TRNS,KC_TRNS,KC_TRNS,
+ RGB_HUI,
+ RGB_VAI,RGB_VAD,RGB_HUD,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS,
KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
+ RGB_TOG, KC_TRNS,
+ RGB_SAI,
+ RGB_SAD, KC_TRNS, RGB_MOD
),
/* Keymap 2: Media and mouse keys
*
@@ -152,6 +158,24 @@ void matrix_init_user(void) {
};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ // dynamically generate these.
+ case RGB_FF00BB:
+ if (record->event.pressed) {
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_enable();
+ rgblight_mode(1);
+ rgblight_setrgb(0xff,0x00,0xbb);
+ #endif
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
LEADER_EXTERNS();
// Runs constantly in the background, in a loop.
diff --git a/keyboards/ergodox/keymaps/jack/Makefile b/keyboards/ergodox/keymaps/jack/Makefile
new file mode 100644
index 0000000000..3ca69bb923
--- /dev/null
+++ b/keyboards/ergodox/keymaps/jack/Makefile
@@ -0,0 +1,6 @@
+RGBLIGHT_ENABLE ?= yes
+MIDI_ENABLE ?= yes
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif
diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h
new file mode 100644
index 0000000000..5c11652264
--- /dev/null
+++ b/keyboards/ergodox/keymaps/jack/config.h
@@ -0,0 +1,17 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D7
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 15 // Number of LEDs
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 255
+#define RGBLIGHT_VAL_STEP 12
+
+#define RGB_MIDI
+#define RGBW_BB_TWI
+
+#endif \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c
index dda253fa45..9cb80c59d1 100644
--- a/keyboards/ergodox/keymaps/jack/keymap.c
+++ b/keyboards/ergodox/keymaps/jack/keymap.c
@@ -19,14 +19,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_HOME,
KC_SPC,KC_SPC,KC_END,
// right hand
- KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
- KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
- KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_NO, M(1), KC_7, KC_8, KC_9, KC_0, KC_NO,
+ KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_P, KC_BSPC,
+ RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_SCLN, KC_QUOT,
KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT,
MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,
- KC_NO, KC_NO,
- KC_PGUP,
- KC_PGDN, KC_SPC,KC_SPC
+ RGB_TOG, RGB_HUI,
+ RGB_MOD,
+ M(2), KC_SPC,KC_SPC
),
[SYMB] = KEYMAP(
// left hand
@@ -84,6 +84,16 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
unregister_code(KC_RSFT);
}
break;
+ case 1:
+ if (record->event.pressed) { // For resetting EEPROM
+ eeconfig_init();
+ }
+ break;
+ case 2:
+ if (record->event.pressed) { // For resetting EEPROM
+ api_send_unicode(0x0CA0);
+ }
+ break;
}
return MACRO_NONE;
};
diff --git a/keyboards/ergodox/rules.mk b/keyboards/ergodox/rules.mk
index add64ec76f..2e501e81b2 100644
--- a/keyboards/ergodox/rules.mk
+++ b/keyboards/ergodox/rules.mk
@@ -24,6 +24,5 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-MIDI_ENABLE ?= no # MIDI controls
UNICODE_ENABLE ?= yes # Unicode
ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard